Mysql8 主从复制主从切换(超详细)
文章目录
- 1 主从复制
- 1.1 实施前提
- 1.2 主节点配置(在192.168.25.91操作)
- 1.3 从节点配置(在192.168.25.92操作)
- 1.4 创建用于主从同步的用户
- 1.5 开启主从同步
- 1.5 主从同步验证
- 2 主从切换
- 2.1 实施前提
- 2.2 主节点设置只读(在192.168.25.91操作)
- 2.3 检查主从数据是否同步完毕(在192.168.25.92操作)
- 2.4 停止并重置从节点(在192.168.25.92操作)
- 2.5 关闭原从节点的只读配置(在192.168.25.92操作)
- 2.6 主从切换
- 2.7 验证
1 主从复制
1.1 实施前提
需要2台安装了Mysql的服务器,我这边服务器配置如下:
| 操作系统类型 | IP | mysql版本 | 主从类型 |
|---|---|---|---|
| Centos7.9 | 192.168.25.91 | 8.0.34 | 主 |
| Centos7.9 | 192.168.25.92 | 8.0.34 | 从 |
进行mysql主从复制前,需要安装Msql,安装Mysql的过程之前文章已经介绍过,具体参考:Centos7安装MYSQL8(无坑版):https://blog.csdn.net/jianghuchuang/article/details/139117966
这里不再赘叙。
注:我的mysql数据目录是/data/mysql,下文配置中的相关数据目录路径需要结合你们实际数据目录路径(默认是/var/lib/mysql)去进行修改。
1.2 主节点配置(在192.168.25.91操作)
注1:我当前mysql数据目录是/data/mysql,你们需根据自己实际的数据库数据目录去进行修改。
主从节点配置的差异:由于后续需要演示主从切换,所以无论是主从节点,都需要提前开启binlog和relaylog。故而这里主从配置基本一致,具体配置选项差异只有:server_id、read-only选项
编辑/etc/my.conf文件,在[mysqld]下添加以下内容
#==================== 主从同步配置=========================
#节点id编号,各个mysql的server_id需要唯一
server_id=1
#[可选]指定binlog和binglog index的文件名
log_bin=/data/mysql/binlog
log_bin_index=/data/mysql/binlog.index
#[可选]启用中继日志
relay-log=/data/mysql/mysql-relay
#[可选] 单个binlog最大的文件大小,默认是1G
max_binlog_size=500M
#[可选]设置binlog格式.STATEMENT,row,mixed
binlog_format=row
#[可选]0(默认)表示读写(主机),1表示只读(从机)
read-only=0
#[可选]设置日志文件保留的时长,单位是秒(默认不删除文件)
#binlog_expire_logs_seconds=6000
#[可选]设置不要复制的数据库
#binlog-ignore-db=test
#[可选]设置需要复制的数据库,默认全部记录。比如:binlog-do-db=atguigu_master_slave
#binlog-do-db=需要复制的主数据库名字
修改配置后重启数据库:
systemctl restart mysqld
配置文件完整内容如下:
[mysqld]
#数据库数据目录
datadir=/data/mysql
socket=/var/lib/mysql/mysql.sock
#错误日志路径
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
# 服务端默认字符集
character-set-server=utf8mb4
# # 连接层默认字符集
collation-server=utf8mb4_unicode_ci
#忽略表名大小写
lower_case_table_names=1#==================== 主从同步配置=========================
#节点id编号,各个mysql的server_id需要唯一
server_id=1
#指定binlog和binglog index的文件名
log_bin=/data/mysql/binlog
log_bin_index=/data/mysql/binlog.index
#[可选]启用中继日志
relay-log=/data/mysql/mysql-relay
#[可选] 单个binlog最大的文件大小,默认是1G
max_binlog_size=500M
#[可选]设置binlog格式.STATEMENT,row,mixed
binlog_format=row
#[可选]0(默认)表示读写(主机),1表示只读(从机)
read-only=0
#[可选]设置日志文件保留的时长,单位是秒(默认不删除文件)
#binlog_expire_logs_seconds=6000
#[可选]设置不要复制的数据库
#binlog-ignore-db=test
#[可选]设置需要复制的数据库,默认全部记录。比如:binlog-do-db=atguigu_master_slave
#binlog-do-db=需要复制的主数据库名字[mysql]
# 数据库默认字符集
default-character-set=utf8mb4
[client]
# 客户端来源数据的默认字符集
default-character-set=utf8mb4
1.3 从节点配置(在192.168.25.92操作)
主从节点配置的差异:由于后续需要演示主从切换,所以无论是主从节点,都需要提前开启binlog和relaylog。故而这里主从配置基本一致,具体配置选项差异只有:server_id、read-only选项
编辑/etc/my.conf文件,在[mysqld]下配置添加以下内容
##节点id编号,各个mysql的server_id需要唯一
server_id=2
#指定binlog和binglog index的文件名
log_bin=/data/mysql/binlog
log_bin_index=/data/mysql/binlog.index
#[可选]启用中继日志
relay-log=/data/mysql/mysql-relay
#[可选] 单个binlog最大的文件大小,默认是1G
max_binlog_size=500M
#[可选]设置binlog格式.STATEMENT,row,mixed
binlog_format=row
#[可选]0(默认)表示读写(主机),1表示只读(从机)
read-only=1
# #[可选]设置日志文件保留的时长,单位是秒(默认不删除文件)
# #binlog_expire_logs_seconds=6000
# #[可选]设置不要复制的数据库
# #binlog-ignore-db=test
# #[可选]设置需要复制的数据库,默认全部记录。比如:binlog-do-db=atguigu_master_slave
# #binlog-do-db=需要复制的主数据库名字
修改配置后重启数据库:
systemctl restart mysqld
配置文件完整内容如下:
[mysqld]
#数据库数据目录
datadir=/data/mysql
socket=/var/lib/mysql/mysql.sock
#错误日志路径
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
# 服务端默认字符集
character-set-server=utf8mb4
# # 连接层默认字符集
collation-server=utf8mb4_unicode_ci
#忽略表名大小写
lower_case_table_names=1#==================== 主从同步配置=========================
##节点id编号,各个mysql的server_id需要唯一
server_id=2
#指定binlog和binglog index的文件名
log_bin=/data/mysql/binlog
log_bin_index=/data/mysql/binlog.index
#[可选]启用中继日志
relay-log=/data/mysql/mysql-relay
#[可选] 单个binlog最大的文件大小,默认是1G
max_binlog_size=500M
#[可选]设置binlog格式.STATEMENT,row,mixed
binlog_format=row
#[可选]0(默认)表示读写(主机),1表示只读(从机)
read-only=1
# #[可选]设置日志文件保留的时长,单位是秒(默认不删除文件)
# #binlog_expire_logs_seconds=6000
# #[可选]设置不要复制的数据库
# #binlog-ignore-db=test
# #[可选]设置需要复制的数据库,默认全部记录。比如:binlog-do-db=atguigu_master_slave
# #binlog-do-db=需要复制的主数据库名字[mysql]
# # 数据库默认字符集
default-character-set=utf8mb4
[client]
# 客户端来源数据的默认字符集default-character-set=utf8mb4
1.4 创建用于主从同步的用户
主、从节点都需要进行以下操作:
#创建slave1用户
CREATE USER 'slave1'@'%' IDENTIFIED BY '123456';
#给slave1用户授予数据同步的权限
GRANT replication slave on *.* to 'slave1'@'%'
#刷新权限
flush privileges;
1.5 开启主从同步
开启主从同步过程中,就不要再去操作数据了,以免出现数据不一致情况。
1、查看主节点binlog执行位置(主节点192.168.25.91来执行以下命令):
mysql> show master status;
+---------------+----------+--------------+------------------+-------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+---------------+----------+--------------+------------------+-------------------+
| binlog.000007 | 722 | | | |
+---------------+----------+--------------+------------------+-------------------+
1 row in set (0.00 sec)
2、从节点开启主节点同步操作(从节点192.168.25.92来执行以下命令):
#从节点设置主节点信息
mysql> CHANGE MASTER toMASTER_HOST='192.168.25.91',MASTER_USER='slave1',MASTER_PASSWORD='123456',MASTER_LOG_FILE='binlog.000007',MASTER_LOG_POS=722;
Query OK, 0 rows affected, 8 warnings (0.03 sec)
#从节点开启数据同步
mysql> start slave;
Query OK, 0 rows affected, 1 warning (0.03 sec)
#查看主从数据同步情况
mysql> show slave status\G;
*************************** 1. row ***************************Slave_IO_State: Waiting for source to send eventMaster_Host: 192.168.25.91Master_User: slave1Master_Port: 3306Connect_Retry: 60Master_Log_File: binlog.000007Read_Master_Log_Pos: 722Relay_Log_File: mysql-relay.000002Relay_Log_Pos: 323Relay_Master_Log_File: binlog.000007Slave_IO_Running: YesSlave_SQL_Running: YesReplicate_Do_DB: Replicate_Ignore_DB: Replicate_Do_Table: Replicate_Ignore_Table: Replicate_Wild_Do_Table: Replicate_Wild_Ignore_Table: Last_Errno: 0Last_Error: Skip_Counter: 0Exec_Master_Log_Pos: 722Relay_Log_Space: 529Until_Condition: NoneUntil_Log_File: Until_Log_Pos: 0Master_SSL_Allowed: NoMaster_SSL_CA_File: Master_SSL_CA_Path: Master_SSL_Cert: Master_SSL_Cipher: Master_SSL_Key: Seconds_Behind_Master: 0
Master_SSL_Verify_Server_Cert: NoLast_IO_Errno: 0Last_IO_Error: Last_SQL_Errno: 0Last_SQL_Error: Replicate_Ignore_Server_Ids: Master_Server_Id: 1Master_UUID: 38643166-65de-11ef-b398-000c294562daMaster_Info_File: mysql.slave_master_infoSQL_Delay: 0SQL_Remaining_Delay: NULLSlave_SQL_Running_State: Replica has read all relay log; waiting for more updatesMaster_Retry_Count: 86400Master_Bind: Last_IO_Error_Timestamp: Last_SQL_Error_Timestamp: Master_SSL_Crl: Master_SSL_Crlpath: Retrieved_Gtid_Set: Executed_Gtid_Set: Auto_Position: 0Replicate_Rewrite_DB: Channel_Name: Master_TLS_Version: Master_public_key_path: Get_master_public_key: 0Network_Namespace:
1 row in set, 1 warning (0.00 sec)ERROR:
No query specifiedmysql>
注1:从节点使用show slave status;命令检查主从同步时,需要关注控制台打印结果中的“Slave_IO_Running”以及“Slave_SQL_Running”两个选项,两个选项都为yes,说明主从同步以及成功启动~
如果发现其中有存在No的情况,那么检查防火墙是否关闭、主节点的slave1用户是否创建成功(可以在从节点上执行“mysql -h 主节点ip -uslave1 -p123456”看是否能登录到主节点上)
如果发现其中有存在No的情况,进行以下排查:
1、先稍等一下,启动slave后,不一定马上就会变为Yes,可能还需要等一下
2、检查主从节点服务器的防火墙是否关闭
3、主节点的slave1用户是否创建成功(可以在从节点上执行“mysql -h 主节点ip -uslave1 -p123456”看是否能登录到主节点上)
4、如果发现是上面执行"change master to …"命令时参数写错导致的,那么在从节点上,先执行“stop slave”停止主从,接着在主节点上重新执行“show master status”来获取主节点最新binlog日志以及偏移位置,然后在从节点重新执行“change master to …”命令,最后在从节点上执行 “start slave;”

1.5 主从同步验证
在主节点192.168.25.92上建库、建表、插入表数据:
#创建数据库
mysql> create database test_db;
Query OK, 1 row affected (0.03 sec)
#查看数据库
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| sys |
| test_db |
+--------------------+
5 rows in set (0.06 sec)
#切换数据库
mysql> use test_db;
Database changed
#创建表
mysql> CREATE TABLE `t_test` (-> `id` int(11) NOT NULL,-> `age` int(11) DEFAULT NULL,-> `score` int(11) DEFAULT NULL,-> PRIMARY KEY (`id`)-> ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC;
Query OK, 0 rows affected, 3 warnings (0.10 sec)#插入表数据
mysql> INSERT INTO `t_test` VALUES (1, 2, 1);
Query OK, 1 row affected (0.01 sec)
#插入表数据
mysql> INSERT INTO `t_test` VALUES (222, 22, 19);
Query OK, 1 row affected (0.01 sec)
#查看表
mysql> show tables;
+-------------------+
| Tables_in_test_db |
+-------------------+
| t_test |
+-------------------+
1 row in set (0.00 sec)
#查看表数据
mysql> select * from t_test;
+-----+------+-------+
| id | age | score |
+-----+------+-------+
| 1 | 2 | 1 |
| 222 | 22 | 19 |
+-----+------+-------+
2 rows in set (0.00 sec)
检查从节点192.168.25.92是否也都同步成功:
如下所示,从节点也都自动完成了主节点上所进行的相关操作~
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| sys |
| test_db |
+--------------------+
5 rows in set (0.00 sec)
#切换数据库
mysql> use test_db;
Database changed
#查看表
mysql> show tables;
+-------------------+
| Tables_in_test_db |
+-------------------+
| t_test |
+-------------------+
1 row in set (0.00 sec)
#查询表数据
mysql> select * from t_test;
+-----+------+-------+
| id | age | score |
+-----+------+-------+
| 1 | 2 | 1 |
| 222 | 22 | 19 |
+-----+------+-------+
2 rows in set (0.00 sec)
至此,主从同步就完成~
2 主从切换
2.1 实施前提
要求当前要是主备模式,具体主备搭建见上面章节。
主从切换情况:
| 操作系统类型 | IP | mysql版本 | 切换前 | 切换后 |
|---|---|---|---|---|
| Centos7.9 | 192.168.25.91 | 8.0.34 | 主 | 从 |
| Centos7.9 | 192.168.25.92 | 8.0.34 | 从 | 主 |
2.2 主节点设置只读(在192.168.25.91操作)
主节点设置只读模式,避免进行主从切换过程中还有写操作,导致切换后主从数据不一致问题。
注:用命令设置的只读模式是临时的,重启后失效。如果想让mysql重启后也能生效,可以将read_only相关选项配置到my.conf文件里面。
#查看只读相关配置
show VARIABLES like '%read_only%';
#开启全局只读(包括普通用户、超级管理员root也都不能写)
set global super_read_only='on';
#开启全局只读(普通用户不能写),理论来说开启了super_read_only后,就无需设置当前参数
set global read_only='on';
#查看只读相关配置
show VARIABLES like '%read_only%';
具体操作如下:
mysql> show VARIABLES like '%read_only%';
+-----------------------+-------+
| Variable_name | Value |
+-----------------------+-------+
| innodb_read_only | OFF |
| read_only | OFF |
| super_read_only | OFF |
| transaction_read_only | OFF |
+-----------------------+-------+
4 rows in set (0.00 sec)mysql> set global super_read_only='on';
Query OK, 0 rows affected (0.00 sec)mysql> set global read_only='on';
Query OK, 0 rows affected (0.00 sec)mysql> show VARIABLES like '%read_only%';
+-----------------------+-------+
| Variable_name | Value |
+-----------------------+-------+
| innodb_read_only | OFF |
| read_only | ON |
| super_read_only | ON |
| transaction_read_only | OFF |
+-----------------------+-------+
4 rows in set (0.00 sec)
2.3 检查主从数据是否同步完毕(在192.168.25.92操作)
在从节点上执行"show slave status"命令,查看控制台打印结果,要求参数值要和下面的一致:
- Slave_IO_Running: Yes
- Slave_SQL_Running: Yes
- Seconds_Behind_Master: 0
- Slave_SQL_Running_State: Replica has read all relay log; waiting for more updates
注:Slave_IO_Running和Slave_SQL_Running都为true代表主、从是正常同步,其次Seconds_Behind_Master为0代表当前主、从节点数据一致。
具体操作如下:
mysql> show slave status\G;
*************************** 1. row ***************************Slave_IO_State: Waiting for source to send eventMaster_Host: 192.168.25.91Master_User: slave1Master_Port: 3306Connect_Retry: 60Master_Log_File: binlog.000007Read_Master_Log_Pos: 1865Relay_Log_File: mysql-relay.000002Relay_Log_Pos: 1466Relay_Master_Log_File: binlog.000007Slave_IO_Running: YesSlave_SQL_Running: YesReplicate_Do_DB: Replicate_Ignore_DB: Replicate_Do_Table: Replicate_Ignore_Table: Replicate_Wild_Do_Table: Replicate_Wild_Ignore_Table: Last_Errno: 0Last_Error: Skip_Counter: 0Exec_Master_Log_Pos: 1865Relay_Log_Space: 1672Until_Condition: NoneUntil_Log_File: Until_Log_Pos: 0Master_SSL_Allowed: NoMaster_SSL_CA_File: Master_SSL_CA_Path: Master_SSL_Cert: Master_SSL_Cipher: Master_SSL_Key: Seconds_Behind_Master: 0
Master_SSL_Verify_Server_Cert: NoLast_IO_Errno: 0Last_IO_Error: Last_SQL_Errno: 0Last_SQL_Error: Replicate_Ignore_Server_Ids: Master_Server_Id: 1Master_UUID: 38643166-65de-11ef-b398-000c294562daMaster_Info_File: mysql.slave_master_infoSQL_Delay: 0SQL_Remaining_Delay: NULLSlave_SQL_Running_State: Replica has read all relay log; waiting for more updatesMaster_Retry_Count: 86400Master_Bind: Last_IO_Error_Timestamp: Last_SQL_Error_Timestamp: Master_SSL_Crl: Master_SSL_Crlpath: Retrieved_Gtid_Set: Executed_Gtid_Set: Auto_Position: 0Replicate_Rewrite_DB: Channel_Name: Master_TLS_Version: Master_public_key_path: Get_master_public_key: 0Network_Namespace:
1 row in set, 1 warning (0.01 sec)
2.4 停止并重置从节点(在192.168.25.92操作)
#停止从节点
stop slave;
#重置掉从节点的相关主从同步信息,同时将relaylog文件进行删除重置
reset slave all;
2.5 关闭原从节点的只读配置(在192.168.25.92操作)
注:用命令设置的只读模式是临时的,重启后失效。如果想让mysql重启后也能生效,可以将read_only相关选项配置到my.conf文件里面或者从my.conf进行删除,以为默认就是只读关闭。
#查看只读相关配置
show VARIABLES like '%read_only%';
#关闭全局只读(让超级管理员root能进行写操作)
set global super_read_only='off';
#关闭全局只读(让普通用户也能写操作)
set global read_only='off';
#查看只读相关配置
show VARIABLES like '%read_only%';
2.6 主从切换
进行主从同步的过程不要任何写操作,避免导致切换后主从数据不一致。
1、查看原从节点的最新日志以及偏移量(在192.168.25.92操作)。
mysql> show master status;
+---------------+----------+--------------+------------------+-------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+---------------+----------+--------------+------------------+-------------------+
| binlog.000004 | 2267 | | | |
+---------------+----------+--------------+------------------+-------------------+
1 row in set (0.00 sec)
2、将原主节点 的主节点 设置为原从节点(在192.168.25.91操作)
#设置主节点信息
CHANGE MASTER to MASTER_HOST='192.168.25.92',MASTER_USER='slave1',MASTER_PASSWORD='123456',MASTER_LOG_FILE='binlog.000004',MASTER_LOG_POS=2267;
#开启slave
start slave;
#查看主从同步信息
show slave status\G;
注:当Slave_IO_Running和Slave_SQL_Running都为Yes时,代表切换成功。
具体操作如下:
mysql> CHANGE MASTER to -> MASTER_HOST='192.168.25.92',-> MASTER_USER='slave1',-> MASTER_PASSWORD='123456',-> MASTER_LOG_FILE='binlog.000004',-> MASTER_LOG_POS=2267;
Query OK, 0 rows affected, 8 warnings (0.17 sec)mysql> start slave;
Query OK, 0 rows affected, 1 warning (0.00 sec)mysql> show slave status\G;
*************************** 1. row ***************************Slave_IO_State: Waiting for source to send eventMaster_Host: 192.168.25.92Master_User: slave1Master_Port: 3306Connect_Retry: 60Master_Log_File: binlog.000004Read_Master_Log_Pos: 2267Relay_Log_File: mysql-relay.000002Relay_Log_Pos: 323Relay_Master_Log_File: binlog.000004Slave_IO_Running: YesSlave_SQL_Running: YesReplicate_Do_DB: Replicate_Ignore_DB: Replicate_Do_Table: Replicate_Ignore_Table: Replicate_Wild_Do_Table: Replicate_Wild_Ignore_Table: Last_Errno: 0Last_Error: Skip_Counter: 0Exec_Master_Log_Pos: 2267Relay_Log_Space: 529Until_Condition: NoneUntil_Log_File: Until_Log_Pos: 0Master_SSL_Allowed: NoMaster_SSL_CA_File: Master_SSL_CA_Path: Master_SSL_Cert: Master_SSL_Cipher: Master_SSL_Key: Seconds_Behind_Master: 0
Master_SSL_Verify_Server_Cert: NoLast_IO_Errno: 0Last_IO_Error: Last_SQL_Errno: 0Last_SQL_Error: Replicate_Ignore_Server_Ids: Master_Server_Id: 2Master_UUID: 151c4ed2-65e2-11ef-89a3-000c29b00378Master_Info_File: mysql.slave_master_infoSQL_Delay: 0SQL_Remaining_Delay: NULLSlave_SQL_Running_State: Replica has read all relay log; waiting for more updatesMaster_Retry_Count: 86400Master_Bind: Last_IO_Error_Timestamp: Last_SQL_Error_Timestamp: Master_SSL_Crl: Master_SSL_Crlpath: Retrieved_Gtid_Set: Executed_Gtid_Set: Auto_Position: 0Replicate_Rewrite_DB: Channel_Name: Master_TLS_Version: Master_public_key_path: Get_master_public_key: 0Network_Namespace:
1 row in set, 1 warning (0.00 sec)
2.7 验证
1、在新主节点(192.168.25.92)插入表数据
mysql> INSERT INTO `t_test` VALUES (300, 3, 1);
Query OK, 1 row affected (0.00 sec)mysql> select * from t_test;
+-----+------+-------+
| id | age | score |
+-----+------+-------+
| 1 | 2 | 1 |
| 222 | 22 | 19 |
| 300 | 3 | 1 |
+-----+------+-------+
3 rows in set (0.00 sec)
2、在新从节点(192.168.25.91)查看表数据,发现在新主节点插入的数据已经自动同步到新从节点上了。
mysql> select * from t_test;
+-----+------+-------+
| id | age | score |
+-----+------+-------+
| 1 | 2 | 1 |
| 222 | 22 | 19 |
| 300 | 3 | 1 |
+-----+------+-------+
3 rows in set (0.00 sec)
相关文章:
Mysql8 主从复制主从切换(超详细)
文章目录 1 主从复制1.1 实施前提1.2 主节点配置(在192.168.25.91操作)1.3 从节点配置(在192.168.25.92操作)1.4 创建用于主从同步的用户1.5 开启主从同步1.5 主从同步验证 2 主从切换2.1 实施前提2.2 主节点设置只读(在192.168.25.91操作)2.3 检查主从数据是否同步完毕(在192.…...
8月29日wpf
小语 折磨我们的往往是想象,而不是真实。 学wpf 7.07 1.vs如何创建新项目? 退出,创建新项目,点c#,windows,进入界面 2.app.config在哪里? 好像只有这个。。。 试一下,不是 我…...
Android经典实战之SurfaceView原理和实践
本文首发于公众号“AntDream”,欢迎微信搜索“AntDream”或扫描文章底部二维码关注,和我一起每天进步一点点 SurfaceView 是一个非常强大但也相对复杂的 UI 组件,特别适用于对性能要求较高的绘制任务,如视频播放、游戏等。 1. Su…...
蜜罐的识别
蜜罐技术本质上是对网络攻击方欺骗的一项技术,通过在服务上布置一些仿真的系统、网络服务、或是模拟一些物联网设备来诱惑攻击方对其实施攻击从而捕获攻击行为,分析攻击手段与方式,或是收集一些攻击者的个人信息来进行分析画像达到精准溯源的…...
传感与检测技术
感知技术 传感器基本特性 静态特性 动态特性 传感器分类 电阻式传感器 通常情况下,电阻应变传感器的灵敏系数为常数 根据测量对象不同可分为...
监控平台之nodejs模拟后端接口
github:可以下载进行实验 https://github.com/Mr-Shi-root/sdk-platform/tree/master 1.配置node环境,安装express cors body-parser babel/cors body-parser - node.js 中间件,用于处理 JSON, Raw, Text 和 URL 编码的数据。cookie-parse…...
TCP 协议详解
目录 一.定义 二.TCP 协议报文格式 三.确认应答(ACK)机制 四.捎带应答 五.连接管理机制 六.滑动窗口 七.快重传 八.拥塞控制 九.延时应答 十.面向字节流 十一.粘包问题 十二.异常情况 十三.TCP 小结 一.定义 传输控制协议(TCP,Transmissio…...
【转载】golang内存分配
Go 的分配采用了类似 tcmalloc 的结构.特点: 使用一小块一小块的连续内存页, 进行分配某个范围大小的内存需求. 比如某个连续 8KB 专门用于分配 17-24 字节,以此减少内存碎片. 线程拥有一定的 cache, 可用于无锁分配. 同时 Go 对于 GC 后回收的内存页, 并不是马上归还给操作系…...
TPM管理培训:学以致用,才是硬道理
全面生产维护(TotalProductiveMaintenance,TPM)作为一种先进的管理体系,正被越来越多的企业所采用,以期通过全员参与、全系统改善的方式,实现设备综合效率的最大化。然而,理论学习与实践应用之间往往存在鸿…...
2024年六月英语四级真题及解析PDF共9页
2024年六月英语四级真题及解析PDF共9页,真题就是最好的复习资料,希望对大家有所帮助。...
自闭症儿童语言干预
自闭症儿童的语言发展往往面临独特挑战,这不仅影响了他们的日常交流能力,也制约了其社交与认知的全面发展。因此,实施科学有效的语言干预对于促进自闭症儿童的语言能力至关重要。 语言干预应基于个性化原则,充分考虑每个孩子的兴…...
webpack基本使用(基础配置)
文章目录 概要理解 一、使用示例1.引入库2.创建config/webpack.dev.js 测试环境3.创建config/webpack.prod.js 正式环境3.创建eslintrc.js4.创建babel.config.js5.package.json5.main.js 总结 概要理解 vue或者react 通常用webpack作为打包工具,打包成浏览器识别的…...
在js渲染的dom中的事件中传递对象
在某些情况下,可能需要将整个对象或部分对象嵌入到 HTML 元素的属性中,可以将对象数据序列化为 JSON 字符串,存储在 data-* 自定义属性中。这样可以在事件中取出并解析对象数据: <!DOCTYPE html> <html lang"en&qu…...
服务器加速器如何应对大规模并行计算需求
服务器加速器,如GPU(图形处理单元)、FPGA(现场可编程门阵列)和TPU(张量处理单元),在大规模并行计算需求中发挥着重要作用。它们通过提供高效的并行处理能力,大幅提升了计算性能,满足了许多领域对大规模并行计算的需求。下面详细介…...
C++/Qt 多媒体(续四)
一、前言 前边讲述到了Qt的两项独特的模块编程支持的另一项内容——多媒体编程,上篇文章具体讲述的包括采集和播放原始音频相关类的概述,而本章开始主要概述多媒体编程实现的功能中的最后两项:播放视频文件和通过摄像头拍照和录像。 对于上篇内容的示例全部代码,可…...
怎样把flv转换成mp4格式?8种可以推荐的视频转换方法
怎样把flv转换成mp4格式?MP4格式因其广泛的兼容性,几乎可以在所有设备和媒体播放器上顺畅播放,这极大地方便了用户的观看体验。与flv文件相比,MP4通常能更有效地压缩视频文件,既能保持较高的画质,又能显著减…...
【2024数学建模国赛赛题解析已出】原创免费分享
2024数模国赛赛题已正式发布 数模加油站初步分析评估了此次竞赛题目: A题:偏数学仿真建模,难度偏难,适合数学专业背景的同学 B题:评价决策类,自由度大,容易水,适合基础不太好的同…...
Windows安装使用Docker
配置Dorker环境 启用或关闭windows功能 安装wsl 以管理员身份打开windows PowerShell,安装相关配置 下载docker应用程序 Releases tech-shrimp/docker_installer (github.com) 安装Docker 指定安装位置 默认双击程序就开始安装了,要安装在指定位置…...
【wsl2】从C盘迁移到G盘
参考大神 C盘的ubuntu22.04 非常大,高达30g 迁移后就只有几百M了: 右键有一个move没有敢尝试 迁移过程 Windows PowerShell Copyright (C) Microsoft Corporation. All rights reserved.Install the latest PowerShell for new features and improveme…...
低代码技术新趋势——逆向工程
低代码的下一个趋势,应该是“逆向工程”,用户可以通过 可视化界面,逆向输出全栈工程代码。而标准的工程代码同样可以编译为支持可视化分析、编辑、调整的“无代码”程序。前一个是解释性语言向编译性语言的逆向工程。后者则是一个理论实践应用…...
世界第一个开源可商用 .NET Office 转 PDF 工具/库 - MiniPdf淳
1. 智能软件工程的范式转移:从库集成到原生框架演进 在生成式人工智能(Generative AI)从单纯的文本生成向具备自主规划与执行能力的“代理化(Agentic)”系统跨越的过程中,.NET 生态系统正在经历一场自该平台…...
ArcGIS JS 基础教程(1):地图初始化(含AMD/ESM两种引入方式)
ArcGIS JS 系列基础教程(100个项目常用热门功能) 一、地图基础操作 1. ArcGIS JS 基础教程(1):地图初始化(含AMD/ESM两种引入方式) 功能介绍:ArcGIS JS 开发的基础,实…...
C# 实现异步非阻塞式定时关闭消息弹窗
1. 为什么需要异步非阻塞式消息弹窗 在日常开发中,MessageBox.Show()可能是我们最先接触到的弹窗方式。但用过几次就会发现,这个看似方便的方法存在两个致命缺陷:一是必须等待用户点击确认按钮,二是会阻塞当前线程的执行。想象一下…...
深入解析C99中函数隐式声明无效警告的根源与解决方案
1. 为什么C99标准对函数隐式声明如此严格? 我第一次在嵌入式项目里遇到这个警告时,整个人都是懵的。当时正在调试STM32的定时器初始化代码,编译时突然蹦出"Warning: implicit declaration of function TIM2_Int_Init is invalid in C99&…...
深度解析Blender3mfFormat插件:3MF格式导入导出实战指南
深度解析Blender3mfFormat插件:3MF格式导入导出实战指南 【免费下载链接】Blender3mfFormat Blender add-on to import/export 3MF files 项目地址: https://gitcode.com/gh_mirrors/bl/Blender3mfFormat Blender3mfFormat是一款专为Blender设计的3MF文件导入…...
营销自动化数据驱动 - 多源数据 OLAP 架构演进诖
1. 流图:数据的河流 如果把传统的堆叠面积图想象成一块块整齐堆叠的积木,那么流图就像一条蜿蜒流淌的河流,河道的宽窄变化自然流畅,波峰波谷过渡平滑。 它特别适合展示多个类别数据随时间的变化趋势,尤其是当你想强调整…...
ArcGIS新手必看:用‘镶嵌至新栅格’搞定不同分辨率DEM的无缝拼接(附像素类型避坑点)
ArcGIS DEM融合实战:从参数原理到完美拼接的完整指南 当你第一次尝试将不同分辨率的DEM数据拼接在一起时,那种"平地起高楼"的突兀感可能让你抓狂——低分辨率区域像模糊的马赛克,而高精度部分则像孤岛般突兀隆起。这不是你操作的问…...
AI agent 学习笔记
最近在自学AI agent,突然感觉自己像是断网了两年,AI咋发展这么快啊我去,2年前还不兴这个啊,神了,真就两年一个风口啊。 提示工程(Prompt Engineering) 学习资料:ChatGPT Prompt En…...
【AI智能体实战】Dify与MCP服务深度集成:从零构建企业级智能问答系统
1. 为什么选择DifyMCP搭建企业级问答系统 最近两年,企业知识库智能化改造的需求呈现爆发式增长。我经手过的十几个项目中,客户普遍反映传统问答系统存在三个痛点:第一是模型效果不稳定,简单问题能回答但复杂业务逻辑就出错&#x…...
Midscene.js:AI视觉驱动自动化,三分钟告别重复浏览器操作
Midscene.js:AI视觉驱动自动化,三分钟告别重复浏览器操作 【免费下载链接】midscene AI-powered, vision-driven UI automation for every platform. 项目地址: https://gitcode.com/GitHub_Trending/mid/midscene 你是否还在为每天重复的浏览器操…...
