Ubuntu 24.04 服务器调整MySQL 8.0.42 三节点集群(一主两从架构)安装部署配置教程
Ubuntu 24.04 服务器部署 MySQL 8.0.42 三节点集群(一主两从架构)安装部署配置教程
一、文档说明
1. 适用场景
本文档适用于在 Ubuntu 24.04 LTS 服务器 环境下,部署 MySQL 8.0.42 一主两从复制集群,满足中小规模业务的高可用、读写分离需求(如电商订单系统、内容管理平台等),从节点可分担读请求,提升整体系统并发能力。
mysql数据库安装参考 Ubuntu 24.04.2 LTS 安装mysql8.0.36保姆级教程(从安装到远程连接)
2. 集群架构
采用 MySQL 异步主从复制 模式,架构包含1个主节点和2个从节点,核心逻辑如下:
- 主节点(Master):处理所有写入操作(INSERT/UPDATE/DELETE),开启二进制日志(binlog)记录数据变更,作为复制源向从节点同步日志;
- 从节点1(Slave1)/从节点2(Slave2):仅处理读操作(SELECT),通过IO线程拉取主节点的binlog并写入本地中继日志(relay log),再通过SQL线程重放中继日志,确保与主节点数据一致。
3. 环境准备
3.1 服务器硬件要求(最小配置)
节点角色 | CPU | 内存 | 硬盘 | 网络 | 操作系统 |
---|---|---|---|---|---|
主节点 | 2核及以上 | 4GB及以上 | 50GB SSD(数据分区) | 千兆网卡(固定IP) | Ubuntu 24.04 LTS 64位 |
从节点1 | 2核及以上 | 4GB及以上 | 50GB SSD(数据分区) | 千兆网卡(固定IP) | Ubuntu 24.04 LTS 64位 |
从节点2 | 2核及以上 | 4GB及以上 | 50GB SSD(数据分区) | 千兆网卡(固定IP) | Ubuntu 24.04 LTS 64位 |
3.2 服务器网络规划(示例)
节点角色 | 主机名 | 固定IP地址 | 子网掩码 | 网关 | DNS服务器 |
---|---|---|---|---|---|
主节点 | mysql-master | 192.168.1.100 | 255.255.255.0 | 192.168.1.1 | 8.8.8.8, 114.114.114.114 |
从节点1 | mysql-slave1 | 192.168.1.101 | 255.255.255.0 | 192.168.1.1 | 8.8.8.8, 114.114.114.114 |
从节点2 | mysql-slave2 | 192.168.1.102 | 255.255.255.0 | 192.168.1.1 | 8.8.8.8, 114.114.114.114 |
3.3 前置依赖检查
所有节点需执行以下命令,确保系统环境满足安装要求:
# 1. 更新系统软件包
sudo apt update &&
sudo apt upgrade -y
# 2. 安装依赖工具(如wget、vim、net-tools)
sudo apt install -y wget vim net-tools
# 3. 关闭防火墙(或开放MySQL端口,二选一)
# 方式1:关闭防火墙(测试环境推荐)
sudo ufw disable
# 方式2:开放MySQL默认端口3306(生产环境推荐)
sudo ufw allow 3306/tcp
sudo ufw reload
# 4. 关闭SELinux(Ubuntu默认未启用,如需检查执行)
sudo setenforce 0 # 临时关闭
sudo sed -i 's/^SELINUX=enforcing$/SELINUX=disabled/' /etc/selinux/config # 永久关闭(需重启生效)
# 5. 检查时间同步(确保所有节点时间一致)
sudo apt install -y chrony
sudo systemctl enable --now chronyd
timedatectl set-timezone Asia/Shanghai # 设置时区为上海
sudo chronyc sources # 验证时间同步状态
二、所有节点:MySQL 8.0.42 基础安装
mysql安装教程
三、主节点(mysql-master)配置
1. 修改MySQL配置文件(my.cnf)
# 编辑MySQL主配置文件
sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf
在文件末尾添加以下主节点专属配置(需替换server-id
和log-bin
路径为实际环境):
[mysqld]
# 主库唯一 ID(1-2^32-1,不可与从库重复)
server-id = 1
# 启用二进制日志(核心,记录数据变更)
log_bin = /var/log/mysql/mysql-bin.log
# 二进制日志格式(推荐 ROW 模式,基于行复制,兼容性好)
binlog_format = ROW
# 仅同步指定数据库(可选,若不配置则同步所有数据库)
binlog_do_db = test_db
# 忽略同步的数据库(可选)
binlog_ignore_db = mysql
binlog_ignore_db = information_schema
# 二进制日志过期时间(避免日志过大,单位天)
expire_logs_days = 7
# 禁止从库写入(主库专用,可选)
read_only = 0
# 允许超级用户在 read_only 模式下写入(必须)
super_read_only = 0
2. 重启MySQL服务使配置生效
sudo systemctl restart mysql
# 验证配置是否生效(查看binlog是否开启)
sudo mysql -u root -p -e "show variables like 'log_bin%';"
# 输出中"log_bin"值为"ON"即表示配置生效
3. 创建主从复制专用账号
# 登录MySQL(输入root密码)
sudo mysql -u root -p
# 1. 创建复制账号(允许从节点192.168.1.0/24网段访问)
CREATE USER 'repl'@'192.168.1.%' IDENTIFIED BY 'Repl@123456';
# 密码建议复杂
# 2. 授予复制权限(仅授予REPLICATION SLAVE权限,最小权限原则)
GRANT REPLICATION SLAVE ON *.* TO 'repl'@'192.168.1.%';
# 3. 刷新权限
FLUSH PRIVILEGES;
# 4. 查看主节点状态(记录File和Position值,后续从节点配置需用到)
SHOW MASTER STATUS;
记录关键信息(示例,实际以命令输出为准):
四、从节点(mysql-slave1、mysql-slave2)配置
1. 修改MySQL配置文件(my.cnf)
两个从节点配置完全一致,执行以下命令编辑配置文件:
sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf
在文件末尾添加从节点专属配置(注意server-id
与主节点、另一从节点不重复):
[mysqld]
# 从库唯一 ID(不可与主库及其他从库重复)
server-id = 2 # Slave2 此处改为 3
# 启用中继日志(核心,存储主库二进制日志的副本)
relay_log = /var/log/mysql/relay-bin.log
# 中继日志索引文件
relay_log_index = /var/log/mysql/relay-bin.index
# 从库只读(禁止写入,仅允许超级用户操作)
read_only = 1
# 超级用户也只读(可选,进一步加强只读限制)
super_read_only = 1
# 启用从库二进制日志(可选,若需要从库作为其他从库的主库,需开启)
log_bin = /var/log/mysql/mysql-bin.log
# 中继日志自动恢复(重启后自动继续同步)
relay_log_recovery = 1
2. 重启MySQL服务使配置生效
sudo systemctl restart mysql
# 验证从节点配置(查看read-only状态)
sudo mysql -u root -p -e "show variables like 'read_only';"
# 输出中"read_only"值为"ON"即表示配置生效
3. 配置主从复制关系
两个从节点执行相同操作,步骤如下:
# 1. 登录从节点MySQL
sudo mysql -u root -p
# 2. 停止从节点复制进程(首次配置可跳过,但建议执行)
STOP SLAVE;
# 3. 配置主节点信息(替换以下参数为实际主节点信息)
CHANGE MASTER TO
MASTER_HOST='192.168.1.100', # 主节点IP
MASTER_USER='repl', # 主节点创建的复制账号
MASTER_PASSWORD='Repl@123456', # 复制账号密码
MASTER_LOG_FILE='mysql-bin.000001', # 主节点SHOW MASTER STATUS输出的File值
MASTER_LOG_POS=156;
# 主节点SHOW MASTER STATUS输出的Position值
# 4. 启动从节点复制进程
START SLAVE;
# 5. 查看从节点复制状态(关键看Slave_IO_Running和Slave_SQL_Running是否均为Yes)
SHOW SLAVE STATUS\G;
4. 验证从节点复制状态
执行SHOW SLAVE STATUS\G;
后,重点检查以下字段:
Slave_IO_Running
: Yes(IO线程正常,能拉取主节点binlog)Slave_SQL_Running
: Yes(SQL线程正常,能重放中继日志)Last_IO_Error
: 无错误信息(如有错误,需根据提示排查,如网络、账号密码、binlog文件名/位置是否正确)Last_SQL_Error
: 无错误信息(如有错误,需排查数据一致性或SQL兼容性问题)
五、集群功能验证
1. 数据同步验证(主节点写入,从节点读取)
步骤1:主节点创建测试数据库和表
# 登录主节点MySQL
sudo mysql -u root -p
# 创建测试数据库(与主从配置中replicate-do-db一致)
CREATE DATABASE IF NOT EXISTS test_db;
USE test_db;
# 创建测试表
CREATE TABLE IF NOT EXISTS user (
id INT PRIMARY KEY AUTO_INCREMENT,
name VARCHAR(50) NOT NULL,
age INT NOT NULL,
create_time DATETIME DEFAULT CURRENT_TIMESTAMP
);
# 插入测试数据
INSERT INTO user (name, age) VALUES ('Alice', 25), ('Bob', 30);
步骤2:从节点验证数据同步
分别在slave1和slave2执行:
# 登录从节点MySQL
sudo mysql -u root -p
# 查看test_db数据库是否存在
SHOW DATABASES LIKE 'test_db';
# 查看user表数据(应与主节点一致)
USE test_db;
SELECT * FROM user;
若输出结果与主节点一致,说明数据同步正常。
2. 读写分离验证(从节点只读)
步骤1:从节点尝试写入数据
# 登录从节点MySQL
sudo mysql -u root -p
USE test_db;
# 尝试插入数据(因从节点开启super-read-only,会报错)
INSERT INTO user (name, age) VALUES ('Charlie', 35);
预期结果:报错The MySQL server is running with the --super-read-only option so it cannot execute this statement
,说明从节点只读限制生效。
步骤2:主节点更新数据,从节点验证
# 主节点执行更新
sudo mysql -u root -p -e "USE test_db; UPDATE user SET age=26 WHERE name='Alice';"
# 从节点验证更新结果(slave1和slave2均执行)
sudo mysql -u root -p -e "USE test_db; SELECT * FROM user WHERE name='Alice';"
若从节点输出age=26
,说明更新同步正常。
六、集群运维与监控
1. 查看主节点binlog信息
# 主节点查看binlog列表
sudo mysql -u root -p -e "SHOW BINARY LOGS;"
# 查看指定binlog内容(示例:查看mysql-bin.000001)
sudo mysqlbinlog /var/lib/mysql/mysql-bin.000001
2. 查看从节点中继日志信息
# 从节点查看中继日志列表
sudo ls -l /var/lib/mysql/relay-bin*
# 查看中继日志内容(示例:查看relay-bin.000001)
sudo mysqlbinlog /var/lib/mysql/relay-bin.000001
3. 配置MySQL监控(可选,使用prometheus+grafana)
步骤1:安装mysqld_exporter(所有节点)
# 下载mysqld_exporter(对应MySQL 8.0版本)
wget https://github.com/prometheus/mysqld_exporter/releases/download/v0.15.1/mysqld_exporter-0.15.1.linux-amd64.tar.gz
# 解压并移动到指定目录
tar -zxvf mysqld_exporter-0.15.1.linux-amd64.tar.gz
sudo mv mysqld_exporter-0.15.1.linux-amd64/mysqld_exporter /usr/local/bin/
# 给MySQL创建监控账号(主节点执行,从节点自动同步)
sudo mysql -u root -p
CREATE USER 'exporter'@'localhost' IDENTIFIED BY 'Exporter@123';
GRANT PROCESS, REPLICATION CLIENT, SELECT ON *.* TO 'exporter'@'localhost';
FLUSH PRIVILEGES;
EXIT;
# 创建mysqld_exporter配置文件
sudo vim /etc/mysql/exporter.cnf
配置文件内容:
[client]
user=exporter
password=Exporter@123
host=localhost
port=3306
步骤2:配置systemd服务(所有节点)
sudo vim /etc/systemd/system/mysqld_exporter.service
服务文件内容:
[Unit]
Description=MySQL Exporter for Prometheus
After=mysql.service
[Service]
User=mysql
Group=mysql
Environment="DATA_SOURCE_NAME=--config.my-cnf=/etc/mysql/exporter.cnf"
ExecStart=/usr/local/bin/mysqld_exporter $DATA_SOURCE_NAME
[Install]
WantedBy=multi-user.target
步骤3:启动并验证mysqld_exporter
sudo systemctl daemon-reload
sudo systemctl enable --now mysqld_exporter
# 验证端口(默认9104)
netstat -tulnp | grep 9104
后续可在Prometheus中添加节点监控配置,通过Grafana导入MySQL监控模板(如模板ID:7362)实现可视化监控。
七、常见问题排查
1. 从节点Slave_IO_Running为Connecting
可能原因:
- 主节点防火墙未开放3306端口;
- 复制账号密码错误;
- 主节点IP或binlog文件名/位置错误;
- 主节点binlog已被清理(expire_logs_days设置过小)。
排查步骤:
- 测试从节点到主节点3306端口连通性:
telnet 192.168.1.100 3306 # 或 nc -zv 192.168.1.100 3306
- 验证复制账号权限(主节点执行):
sudo mysql -u root -p -e "SELECT user,host FROM mysql.user WHERE user='repl';" sudo mysql -u root -p -e "SHOW GRANTS FOR 'repl'@'192.168.1.%';"
- 检查主节点binlog是否存在:
sudo ls -l /var/lib/mysql/mysql-bin.000001 # 替换为实际File值
2. 从节点Slave_SQL_Running为No
可能原因:
- 主从节点数据不一致(如从节点已存在主节点要创建的表);
- 从节点执行中继日志时遇到SQL错误(如主节点使用了从节点不支持的函数)。
排查步骤:
- 查看错误日志(从节点执行):
sudo cat /var/log/mysql/error.log | grep -i "error"
- 若数据不一致,可重新初始化从节点(需停止复制,删除从节点数据,重新同步主节点全量数据):
# 主节点导出全量数据 sudo mysqldump -u root -p --all-databases --master-data=2 --single-transaction > master_full.sql # 复制数据到从节点 scp master_full.sql root@192.168.1.101:/tmp/ # slave1 # 从节点导入数据 sudo mysql -u root -p < /tmp/master_full.sql # 重新配置主从复制(参考步骤四.3,无需修改MASTER_LOG_FILE和MASTER_LOG_POS,dump文件已包含)
八、注意事项
- 数据安全:
- 定期备份主节点数据(使用mysqldump或xtrabackup);
- 二进制日志保留时间不宜过短(建议7-15天),避免从节点同步时binlog已被清理。
- 性能优化:
- 主节点避免开启不必要的日志(如general log);
- 从节点可根据读请求压力调整配置(如增大innodb_buffer_pool_size)。
- 高可用扩展:
- 若需更高可用性,可在主节点故障时手动将从节点提升为主节点(执行
STOP SLAVE; RESET MASTER;
); - 生产环境建议搭配MHA(Master High Availability)或Orchestrator实现主从自动切换。
- 若需更高可用性,可在主节点故障时手动将从节点提升为主节点(执行
- 版本一致性:
- 所有节点MySQL版本必须一致(本文均为8.0.42),避免因版本差异导致复制异常。
相关文章:
Ubuntu 24.04 服务器调整MySQL 8.0.42 三节点集群(一主两从架构)安装部署配置教程
Ubuntu 24.04 服务器调整MySQL 8.0.42 三节点集群(一主两从架构)安装部署配置教程pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", &q…...
使用almalinux基础镜像创建nginx镜像
前言 使用almalinux:latest镜像构建nginx镜像,启动容器时,nginx自动启动 创建基本文件 cd ~ mkdir nginxtest cd nginxtest/ echo nginx s running!!! >> index.html vi Dockerfile编辑dockerfile文件内容 FROM almalinux:latest MAINTAINER "smartaiops<smar…...
docke容器版Nessus登录+破解+激活+特征库更新
docke容器版Nessus登录+破解+激活+特征库更新 安装Nessus docker run -itd --name=ramisec_nessus -p 8834:8834 ramisec/nessus 重置账号密码1. 进入容器 docker exec -it ramisec_nessus bash2. 查看用户 /opt/nessus/sbin/nessuscli lsuser3. 修改指定用户的密码(以admin为…...
我把Cursor当磁盘清理工具用,非常棒! - ukyo-
我来帮您删除这个Colima虚拟磁盘镜像文件: [2 tools called] ✅ **文件删除成功!** **文件信息**:- **文件名**: basedisk- **位置**: ~/.colima/_lima/colima/- **大小**: 456MB- **类型**: Colima 虚拟磁盘镜像文件 **释放的磁盘空间**: **456MB** **删除后的影响**:- Co…...
vue项目
新建文件夹,然后用vscode打开这个文件然后在终端新建vue文件...
第九篇:数据库服务克隆应用
数据库克隆概念介绍 在数据库MySQL 8.0(8.0.17+)版本中,引入了数据库的克隆功能,主要是借助clone-plugin实现的,是对数据页底层克隆; 克隆的数据是InnoDB存储引擎中的物理快照信息,包括schemas, tables, tablespaces, and data dictionary metadata; 在数据库中出现克隆…...
Anti-Proxy Attendance 题解
CF1924F 题解题目传送门:CF1924F 还是第一次见这种势能题。 先把交互库的回答转成 \(0,1\) 表示答案是否在这个区间中。 首先把题目转化一下,对每个位置 \(i\) 维护一个 01 串 \(S_i\) 表示:如果 \(i\) 是答案,那么当前交互库的每个回答是否是真话。即如果当前询问 \([l,r]…...
【2024-2025第二学期】助教工作总结
一、助教工作的具体职责和任务 路由交换技术的助教的具体职责在于课前配合老师发布预习任务,在同学预习存在困难时给予问题解答;课中主要帮助同学解决实验遇到的卡壳问题,帮助同学们更快更全面的掌握实验内容和相应的理论知识;课后批改同学的作业、实验报告,并且对课中未完…...
开始每小时记录日程
每小时记录一次做的事,公开 20250914_155401 看b站视频,吃东西...
5【鸿蒙/OpenHarmony/NDK】使用Node-API进行异步任务开发
各位码友们好!今天这篇干货主要聚焦实操细节,希望能帮大家少踩坑。 要是过程中遇到哪块没看懂、有疑问,或者你有更优的实现思路,评论区尽管聊!发现文档里有疏漏或错误也尽管指出来 —— 技术这东西就得互相挑刺才能越磨越精,咱们一起把这些知识点吃透~是什么?与同步处…...
控制器指令
cpu中有控制器和运算器 这里就要开始学控制器 指令 指令分为两个部分: 操作码 做什么事情 地址码 对谁做 当cpu检测到操作码为000110的时候,就要执行停机操作 指令是计算机的最小功能单位 计算机智能执行自己指令系统中的指令,不能执行其他系统的指令 比如说inter芯片一般都…...
题解:AT_abc421_c [ABC421C] Alternated
题面 思路 似乎有很多大神用类似逆序对的方法 \(O(n\log n)\) 通过了此题,不过此题是有贪心 \(O(n)\) 做法的。 我们可以从结果推导,每一个 A 和 B 都相邻的情况只有两种:AB...AB 和 BA...BA,以下称这两个结果串为 \(t\),题目给出的串为 \(s\)。 考虑怎样使得其消耗代价最…...
MySQL数据库:SQL数据类型
SQL数据类型 数值类型 字符类型 时间日期类型...
Ubuntu 安装
太好了!系统已经安装完成了! 您现在看到的是安装成功的最终界面。这意味着所有步骤,包括分区、复制文件、安装更新和配置引导程序,都已全部顺利完成。您现在有两个选择:立即重启 (推荐)点击这个按钮,计算机将会重启。重启后,它会从硬盘启动,您将进入刚刚安装好的全新 U…...
幼等数论
整除 T1-1. Propose that \(m > n \geqslant 0\), Prove that \( (2{2n} + 1) \mid (2{2m} - 1) \) . Since we have:\[x^n - y^n = (x - y)(x^{n-1} + x^{n-2}y + \cdots + xy^{n-2} + y^{n-1})\] Therefore, we can rewrite:\[ 2{2m} - 1 = (2{2{n+1}}){2{m-n-1}} - 1{2{…...
搭建rocketmq的三主三从遇到的坑
1、机器配置cat /etc/hosts 192.168.224.128 worker1 192.168.224.129 worker2 192.168.224.130 worker3 2、broker配置 128机器 a-master#所属集群名字,名字⼀样的节点就在同⼀个集群内 brokerClusterName=rocketmq-cluster #broker名字,名字⼀样的节点就是⼀组主从节点。 …...
深入解析:轻松Linux-9.进程间通信
深入解析:轻松Linux-9.进程间通信pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", monospace !important; f…...
2025.9.14——1黄1绿
普及/提高- P2278 [HNOI2003] 操作系统 就是模拟,但是机房噪音太大调了好久…… 普及+/提高 P2233 [HNOI2002] 公交车路线 该说果然是老题吗……好简单的DP啊,应该只有黄的水平。...
Ubuntu 中改图片大小
在 Ubuntu 中,可以使用 ImageMagick 工具来调整图片的大小。ImageMagick 是一个强大的图像处理工具,支持多种图像格式和操作。 安装 ImageMagick 首先,您需要安装 ImageMagick。打开终端并输入以下命令: sudo apt-get install imagemagick使用 ImageMagick 缩放图片 安装完…...
认识眼图和眼图的参数
认识眼图 眼图(Eye Diagram)是用余辉方式累积叠加显示采集到的串行信号的比特位的结果,叠加后的图形形状看起来和眼睛很像,故名眼图。眼图的分析是数字系统信号完整性分析的关键之一。 眼图的形成 由于眼图是示波器用余辉方式将采集到的一系列串行信号的多个单位间隔(UI)…...
【芯片设计-信号完整性 SI 学习 1.2 -- loopback 回环测试】 - 实践
【芯片设计-信号完整性 SI 学习 1.2 -- loopback 回环测试】 - 实践pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New…...
【科研绘图系列】R语言绘制地图和散点图 - 指南
【科研绘图系列】R语言绘制地图和散点图 - 指南pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", monospace !…...
Java NIO 学习小记
Java NIO 学习小记 :Buffer、Channel 与 Selector 在 Java 的 I/O 体系中,NIO(New Input/Output)是对传统 BIO(Blocking I/O)的优化。NIO 提供了更高效的 面向缓冲区、基于通道 的数据处理方式,并且通过 多路复用器(Selector) 实现了单线程处理多个连接的能力。本文简…...
扩展欧几里得算法求乘法逆元
之前学过用快速幂求逆元,条件是当模数 \(p\) 为质数的时候,\(a\) 的逆元就是 \(a^{p - 2}\)。 但相较于扩展欧几里得算法求逆元,适用的范围是比较小的,因为扩展欧几里得算法适用于所有逆元存在的情况。在以下的式子中,模数为 \(m\) 的情况下,\(x\) 就是 \(a\) 的逆元 \[a…...
redis实现缓存3-封装redis工具类
具体实现: CacheClient package com.hmdp.utils;import cn.hutool.core.util.BooleanUtil; import cn.hutool.core.util.StrUtil; import cn.hutool.json.JSONObject; import cn.hutool.json.JSONUtil; import lombok.extern.slf4j.Slf4j; import org.springframework.data.re…...
高阻态
高阻态高阻态(High Impedance State,简称 Hi-Z 或 Hi-Z State)是指电路中的某个输出引脚或信号处于一种“关闭”状态,既不提供电流,也不吸收电流。这个状态通常用于三态逻辑(Tri-state Logic)系统中,目的是让该引脚既不会对电路中的其他部分产生影响,也不会消耗功率。…...
鸿蒙应用开发从入门到实战(四):ArkTS 语言概述
ArkTS是HarmonyOS优选的主力应用开发语言。ArkTS围绕应用开发在TypeScript(简称TS)生态基础上做了进一步扩展,继承了TS的所有特性,是TS的超集。 大家好,我是潘Sir,持续分享IT技术,帮你少走弯路。《鸿蒙应用开发从入门到项目实战》系列文章持续更新中,欢迎关注! 一…...
命令模式的深度解析:从标准实现到TPL Dataflow高性能架构
命令模式是对一类对象公共操作的抽象,它们具有相同的方法签名,所以具有类似的操作,可以被抽象出来,成为一个抽象的命令对象。实际操作的调用者就不是和一组对象打交道,它是需要以来这个命令对象的方法签名,并根据这个签名调用相关的方法。 以上是命令模式的大概含义,这里…...
ORA-01555系列:二、ORA-01555的场景分析与解决方案
我们的文章会在微信公众号IT民工的龙马人生和博客网站( www.htz.pw )同步更新 ,欢迎关注收藏,也欢迎大家转载,但是请在文章开始地方标注文章出处,谢谢! 由于博客中有大量代码,通过页面浏览效果更佳。本章将深入探讨ORA-01555的四种核心触发场景,为每种场景提供两个详细的…...
PySimpleGUI常用控件
PySimpleGUI常用控件序号 控件类型 控件函数1 文本控件 1-1:sg.Text() 或者 sg.T()1-2:sg.Input() 或 sg.In() 或 sg.InputText()(文本输入框)1-3:sg.Listbox()(多行列表文本框)1-4:sg.Multiline()(大文本框)2 按键控件 2-1:sg.Button() 或 sg.B()(按键)2-2:sg.E…...
202312_QQ_DNS流量
流量分析,DNS流量,pysharkTags:流量分析,DNS流量,pyshark 0x00. 题目 附件路径:https://pan.baidu.com/s/1GyH7kitkMYywGC9YJeQLJA?pwd=Zmxh#list/path=/CTF附件 附件名称:202312_QQ_packet1.zip 小张发现公司某台服务器被入侵,经过在服务器上抓包后得到流量文件,请帮忙分…...
读书笔记:为什么数据在磁盘上的存放顺序如此重要?
我们的文章会在微信公众号IT民工的龙马人生和博客网站( www.htz.pw )同步更新 ,欢迎关注收藏,也欢迎大家转载,但是请在文章开始地方标注文章出处,谢谢! 由于博客中有大量代码,通过页面浏览效果更佳。本文为个人学习《Expert Oracle Database Architecture Techniques and…...
Rcc_APBPeriphClockCmd()
Rcc_APBPeriphClockCmd()启用时钟后,外设能工作,而禁用时钟时外设无法工作的原因,主要是因为 时钟系统 是微控制器中控制所有硬件模块运行的基础。外设时钟负责为外设提供必要的运行时钟信号,没有时钟信号,外设就无法进行正常的操作。下面是一些具体的原因: 1. 时钟是外设…...
故障处理:ORA-19809: limit exceeded for recovery files
我们的文章会在微信公众号IT民工的龙马人生和博客网站( www.htz.pw )同步更新 ,欢迎关注收藏,也欢迎大家转载,但是请在文章开始地方标注文章出处,谢谢! 由于博客中有大量代码,通过页面浏览效果更佳。故障处理:ORA-19809: limit exceeded for recovery files 欢迎大家加入…...
25.09.14 与其感慨路难行,不如马上出发
从2025年9月14日起,我将在此博客网站记录本人对于后端开发路线的每日学习进度与感悟。未来有可能学习其他技术栈,同样将保持记录。 目前规划如下,每天做一道leetcode hot100,前期主要目标在于快速学习java技术栈:JavaWeb、Spring、SpringMVC、Mybatis、Redis、SpringBoot、…...
GCC工具链应用学习笔记
GCC工具链应用学习笔记pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", monospace !important; font-size: 1…...
初始化 MCP 环境 创建 MCP Server (一)
1、进入 python3 的 Miniconda 虚拟环境创建及进入方法,参见: https://www.cnblogs.com/rslai/p/18741276 2、安装 fastmcp 库pip install fastmcp安装成功后执行 pip list | grep fastmcp 可以查看已经安装 fastmcp 。如下图 3、创建 server 项目 A)新建一个目录,例如 m…...
博客园格式设置
一级标题 1 正文 zhengwen 正文 zhengwen 二级标题 1.1 正文 zhengwen 正文 zhengwen print("hello worldhello world"hello world"hello world"hello world"hello world"hello world"hello world"hello world"hello world&q…...
[总结/备赛]备战 CSP-S 2025 初赛总结
被拉到dl24jp集训一整天(我的作业啊啊啊啊啊) 1.排序算法 主要考察稳定性,时间复杂度,原理 1.1.插入排序最佳时间复杂度:\(O(n)\) 最差时间复杂度:\(O(n^2)\) 平均时间复杂度:\(O(n^2)\) 是否稳定:是 1.2.希尔排序(优化插入排序) 就是把元素分组,每组gap个,对gap中的元…...
win11 系统如何进行硬盘分区?固态硬盘怎么分区?SSD 固态硬盘是分区好还是不分区好?
win11 系统如何进行硬盘分区?固态硬盘怎么分区?SSD 固态硬盘是分区好还是不分区好?电脑硬盘分区教程 win11本身就有自带的分区功能,所以不用借肋第三方软件也能分区,下面开始分享分区方法。 win11其实和win10差不多,功能也差不多,如果分区过win10可能都不用学就会。 理解…...
逆序数及其应用
刷手机的时候看到一个逆序数的算法题,刚好又在复习矩阵论,行列式里也有用到逆序数,想到大二时学的逆序数计算算法,回顾了一下,并写下这篇文章记录。 1. 定义 假设有一个排列\(a_1,a_2,\dots,a_n\),如果下标对\(\langle i,j \rangle\)满足\(i \lt j\)而\(a_i > a_j\),…...
豆豆守护如何下载?
豆豆守护是一款保护隐私数据工具软件,为开发者提供完善的测试环境。其每个安卓版本都会进行适配,作为开发者的我们如何对豆豆守护进行下载呢? 传送门:豆豆守护助手...
Java运行时jar时终端输出的中文日志是乱码
运行Jar时在控制台输出的中文日志全是乱码,这是因为cmd/bash默认的编码是GBK,只要把cmd的编码改成UTF-8即可两种方式修改:临时修改和注册表永久修改 临时修改 只对当前的cmd页面有效,关闭后重新打开都会恢复成GBK, 打开cmd,输入以下命令 chcp 65001AI写代码这样既可以更改…...
ZK2真空发生器日常清理
“过滤器”的拆卸方法 1.手拧或者内六角塞进去(不要用圆头,会打滑),顺着箭头方向顺时针旋转90,即可将连接器抽出2.更换滤芯 确保严丝合缝真空发生器滤芯 ZK2-FE1-3-A(1套10个) 产线零件盒3.装回时,逆着箭头旋转至横线与“LOCK”标记重合...
Nacos服务注册与发现
一、前提条件 你已经安装好Nacos客户端 二、添加对于的依赖到pom文件 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency><groupId>com.…...
马的遍历
2025.9.14 曹立 题目内容 有一个 \(n \times m\) 的棋盘,在某个点 \((x,y)\) 上有一个马,要求你计算出马到达棋盘上任意一个点最少要走几步 输入描述 输入只有一行四个整数,分别为 \(n,m,x,y\) 输出描述 一个 \(n \times m\) 的矩阵,代表马到达某个点最少要走几步(不能到达…...
20231310王宏邦《密码系统设计》第1周
20231310王宏邦《密码系统设计》第1周 学习内容《Windows C/C++加密解密实战》第 1,2 章:1、第⼀章概念复习; 2、第⼆章主要在 Linux(Ubuntu,openEuler)上把软件更新到最新版(3.0版本以上)。bang@LAPTOP-74GS6JSR:~$ openssl version OpenSSL 3.0.2 15 Mar 2022 (Library: …...
新学期第一次随笔:慢慢学,总会有进步
一、关于我:爱游戏也想学好知识的普通学生 大家好,我是一名大三学生,平时最大的爱好是打《CS:GO》,空闲时也会玩《我的世界》(MC)。打《CS:GO》时喜欢和队友配合冲锋,既是无畏的冲锋手也是冷静的狙击手,每次赢下对局都特别有成就感;玩MC时总爱研究怎么用指令搭一些自动…...
详细介绍:【C语言】第四课 指针与内存管理
详细介绍:【C语言】第四课 指针与内存管理pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", monospace !impo…...
知识点错题整理
1:【子串里面包含空串】12+1=13【一个字符串中任意个连续的字符组成的子序列称为该字符串的子串,则字符串 abcab 有(13 )个内容互不相同的子串】...