运维开发 解决 Centos 的 yum 源失效问题 Centos7 已经在 7 月 1 日彻底停止维护了,所以使用 yum 进行安装时会提示 404,只需要更换 yum 源就好使了。 首先备份配置文件,虽然这个文件以后也用不到了,但是养成好习惯。 sudo mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.bak # 第三方库源 #sudo wget -O …
运维开发 使用 mtr 命令排查网络问题 一、简介 常用的 Ping,Traceroute,nslookup 一般用来判断主机的网络连通性,其实有一个更好用的网络联通性判断工具,这个命令就是 MTR。MTR 结合了 Traceroute 和 Ping 的功能,提供了更为丰富的信息,包括实时的网络状态和统计数据。 Traceroute 默认使用 UDP 数据包探测,而 MTR 默认使用 ICMP 报文探测,ICMP 在某些路由节点的优先级要…
运维开发 Linux 磁盘加密和自动挂载 1. 描述 LUKS(Linux Unified Key Setup)是一个标准,定义了在 Linux 系统上进行磁盘加密的格式和规范。 而 cryptsetup 是一个实现了 LUKS 标准的工具,用于在 linux 系统上管理磁盘加密。它能够创建、管理和解锁加密的磁盘分区或整个硬盘。主要功能包括设置加密选项、创建加密设备映射、打开和关闭加密设备等。 使用 cryptsetup 对分区进行加密后…
程序开发 Mysql 左连接、右连接与全连接的区别 创建表并插入数据 1. 创建 employees 表 CREATE TABLE employees ( employee_id INT PRIMARY KEY, name VARCHAR(50), department_id INT ); 2. 创建 departments 表 CREATE TABLE departments ( department_id INT PRIMARY KEY, de…
运维开发 Ubuntu 在线更新内核 之前想着离线更新内核,但是根据网上下载了内核的安装包,发现安装新的内核会牵扯到其他软件的更新问题,比如说安装新版本的内核需要 libc6 版本 >= 2.38 等等,确实有点麻烦。 后来了解到 Mainline, 它是一个用于在 Ubuntu 系统上安装最新 Linux 内核的工具。并且,它由 Ubuntu 的主线内核团队维护,使用户能够轻松地获取和安装由 Ubuntu 内核团队构建和测试的…
运维开发 Linux 创建和释放 swap 分区 1. 创建swap分区 创建 swap 文件: mkdir /.swap dd if=/dev/zero of=/.swap/swapfile bs=1M count=2048 把这个文件变成Swap文件并激活: mkswap /.swap/swapfile && swapon /.swap/swapfile 编辑 /etc/fstab 设置开机启用: /.swap/swapfil…
经验教程 APScheduler 官方文档 安装 APScheduler $ pip install apscheduler 快速开始 from apscheduler.schedulers.blocking import BlockingScheduler scheduler = BlockingScheduler() @scheduler.scheduled_job('cron', hour='8-23&#…
程序开发 可重入锁 ReentrantLock 使用 ReentrantLock(可重入锁)是 Java 中的一种同步机制,它提供了与synchronized关键字相似的功能,但具有更灵活的特性。在多线程编程中,ReentrantLock允许线程在获取锁之后再次获取同一把锁,而不会导致死锁。 ReentrantLock 具有以下特点: 可重入性: ReentrantLock是可重入的,这意味着一个线程可以多次获取同一把锁而不会产生死锁。当线程重复获取…
经验教程 Mysql 中几种索引失效场景分析 表结构以及数据: CREATE TABLE `t1` ( `a` INT PRIMARY KEY, `b` INT, `c` INT, `d` INT, `e` VARCHAR(20) ) ENGINE=InnoDB; CREATE INDEX idx_bcd ON `t1` (`b`, `c`, `d`); CREATE INDEX idx_e ON `t1` (`e`); insert int…
程序开发 Java 类的生命周期 一个类完整的生命周期,会经历五个阶段,分别为:加载、连接、初始化、使用、和卸载。其中的连接又分为验证、准备和解析三个步骤。如下图所示: 1. 加载(Loading) 简单一句话概括,类的加载阶段就是:找到需要加载的类并把类的信息加载到 jvm 的方法区中,然后在堆区中实例化一个 java.lang.Class 对象,作为方法区中这个类的信息的入口。结合 jvm 的内存结构会比较好理解。 这里的加载…
程序开发 Java 中 volatile 关键字 并发编程中,有三个非常重要的概念: 原子性:提供了一种互斥访问,同一时刻只能有一个线程对它进行操作 可见性:一个线程对主内存对修改可以及时的被其他线程观察到 有序性:一个线程观察其他线程的指令行执行顺序,由于指令重新排序的存在,该观察结果一般杂乱无序 而 volatile 关键字能够保证以下两点: 可见性(Visibility): 当一个线程修改了一个volatile变量的值时,这个新值会立即被写…
程序开发 Java 值传递与引用传递 Java 中方法调用参数传递类型无非两种,一种是基本数据类型、另一种是引用数据类型。受到这两种数据类型的影响,让人误以为,参数传递方式是和数据类型有关的,其实不然。无论是基本数据类型还是引用数据类型。下面我将分类阐述基本类型变量,与引用类型变量传递过程。 基本数据类型传递 public class Test1 { public static void main(String[] args) { T…
程序开发 Axios 基本使用教程 1. 简介 Axios 是一个基于 promise 的网络请求库,作用于 node.js 和浏览器中。它提供了许多强大的特性,比如拦截器、请求和响应转换、取消请求等。 具有如下特性: 从浏览器发出 XMLHttpRequests 从 node.js 发出 http 请求 支持 Promise API 拦截请求和响应 转换请求和响应数据 取消请求 JSON 数据的自动转换 自动将数据对象序列化为正文…