Mysql8 主从复制主从切换(超详细)

news/2024/9/17 7:51:34/ 标签: mysql, linux, 运维

文章目录

  • 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的服务器,我这边服务器配置如下:

操作系统类型IPmysql版本主从类型
Centos7.9192.168.25.918.0.34
Centos7.9192.168.25.928.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 实施前提

要求当前要是主备模式,具体主备搭建见上面章节。
主从切换情况:

操作系统类型IPmysql版本切换前切换后
Centos7.9192.168.25.918.0.34
Centos7.9192.168.25.928.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"命令,查看控制台打印结果,要求参数值要和下面的一致:

  1. Slave_IO_Running: Yes
  2. Slave_SQL_Running: Yes
  3. Seconds_Behind_Master: 0
  4. 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)

http://www.ppmy.cn/news/1521613.html

相关文章

IC 设计前端到后端的流程和 EDA 工具?

IC设计前端也称逻辑设计,后端设计也称物理设计,两者并没有严格的界限,一般涉及到 与工艺有关的设计就是后端设计。 1:规格制定:客户向芯片设计公司提出设计要求。 2:详细设计:芯片设计公司&am…

2024年上海松江启动建筑绿色低碳发展专项检查,共绘城市节能新篇章

2024年9月4日,2024年度松江区建筑工程绿色低碳发展工作专项检查会议正式开展,会议内容主要围绕以下三点, 1、《关于开展 2024年度本市建筑领域绿色低碳发展工作监督检查的通知》宣贯。 2、分项计量、能效测评工作验收要求介绍。 3、专项检…

【初出江湖】分布式之什么是分布式存储?

目录标题 分布式存储分布式存储系统特点分布式存储原理分布式存储的应用场景分布式存储和集中式存储的区别 分布式存储 分布式存储是一种将数据分散存储在多个节点上的存储方式。与传统的集中式存储相比,分布式存储将数据分布在多个节点上,每个节点都可…

2024 年高教社杯全国大学生数学建模竞赛题目-A 题 “板凳龙” 闹元宵

“板凳龙”,又称“盘龙”,是浙闽地区的传统地方民俗文化活动。人们将少则几十条, 多则上百条的板凳首尾相连,形成蜿蜒曲折的板凳龙。盘龙时,龙头在前领头,龙身和龙尾 相随盘旋,整体呈圆盘状。一…

【论文阅读】Single-Stage Visual Query Localization in Egocentric Videos

paper:[2306.09324] Single-Stage Visual Query Localization in Egocentric Videos (arxiv.org) code:hwjiang1510/VQLoC: (NeurIPS 2023) Open-set visual object query search & localization in long-form videos (github.com) 简介 动机&…

Flask中多app应用怎么完成

在Flask中实现多app应用,通常指的是在同一个Flask项目中运行多个相对独立的应用(或称为模块、组件)。这种需求在大型项目中尤为常见,因为它可以帮助开发者更好地组织代码,提高项目的可维护性和可扩展性。以下将详细阐述…

11.2.软件系统分析与设计-数据库分析与设计

数据库分析与设计 数据库分析与设计的步骤

深入了解CSS滤镜属性filter

CSS的filter属性是一个非常强大的工具,它允许你向元素应用各种图形效果,如模糊、亮度、对比度、色彩调整等,而无需使用图像编辑软件或额外的HTML元素。filter属性可以包含多个函数,这些函数通过空格分隔,并可以叠加使用…

HQL || SQL :连续签到领金币

已知一张用户行为日志表tb_user_log,字段包括uid-用户ID、artical_id-文章ID、in_time-进入时间、out_time-离开时间、sign_in-是否签到注意1:只有artical_id为0时sign_in值才有效;注意2:从2021年7月7日0点开始,用户每…

shell脚本—————局域网IP扫描

#!/bin/bash #该脚本用于采集某个C类网络存活主机的MAC地址 #使用方法:bash 脚本名字网卡名字网段前三位.10.144.100. #ETH$(ifconfig | grep eth | awk {print $1})for ip in {1..254} do { arping -c 2 -w 1 -I $1 $2$ip| grep "reply from" > /dev/…

read()和readlines()的区别

首先,感谢大家的观看,谢谢大家的关注和点赞, 今天给大家讲一下,Python二级中常常出现的一个问题(read和readlines的区别)。不仅是选择题会问到区别,在实操题中,也会涉及到文件的读取…

ffmpeg安装测试(支持cuda支持SRT)

文章目录 背景安装ffmpeg直接下载可执行文件选择版本选择对应系统版本下载测试Linux下安装 查看支持协议以及编码格式 常见错误缺少 libmvec.so.1LD_LIBRARY_PATH 错误 GPU加速测试SRT服务器搭建下载srs5.0源码解压安装配置启动 SRT推流测试SRT播放测试 背景 在音视频开发测试中…

Simulink:循环计数器 Counter Free-Running

原文:Matlab生成stm32代码_matlab stm32-CSDN博客 使用“Counter Free-Running”模块进行计数,参数配置如下 此配置的意思为每0.5秒计数一次,计数的最大值为2^Nbits – 1,其中Nbits为所填的2,所以这里最大值为3。 示波…

2024 数学建模高教社杯 国赛(A题)| “板凳龙”舞龙队 | 建模秘籍文章代码思路大全

铛铛!小秘籍来咯! 小秘籍团队独辟蹊径,运用等距螺线,多目标规划等强大工具,构建了这一题的详细解答哦! 为大家量身打造创新解决方案。小秘籍团队,始终引领着建模问题求解的风潮。 抓紧小秘籍&am…

【mac】MAC命令快速模糊查找文件

【mac】MAC命令快速模糊查找文件 一、find命令 描述:通过 find命令查找 语法:find ~ -iname “文件名*” /** * 比如我要查找一个以‘vue-’开头的.zip文件, * 但是你忘了它的全名也忘了在那个文件夹, * 查找范围是‘~’节点以…

Behind the Code:与 Rakic 和 Todorovic 对话 OriginTrail 如何实现 AI 去中心化

原文:https://www.youtube.com/watch?vZMuLyLCtE3s&listPLtyd7v_I7PGnko80O0LCwQQsvhwAMu9cv&index12 作者:The Kusamarian 编译:OneBlock 随着人工智能技术的飞速发展,一系列前所未有的挑战随之而来:模型的…

Carla自动驾驶仿真十:Carlaviz三维可视化平台搭建

文章目录 前言一、环境准备1、docker安装2、websocket-client安装3、carlaviz代码下载 二、carlaviz使用1、打开carla客户端2、输入启动命令3、进入carlaviz4、修改manual_control.py脚本5、运行manual_control.py脚本6、运行carlaviz官方脚本(推荐) 前言…

【Go - 10分钟,快速搭建一个简易日志回传系统】

上周一个平凡的工作日傍晚,快要下班的时候,客户端新产品线负责人突然火急火燎的找到我 ,说新的APP马上要release了,发现还少个APP异常崩溃时,用户上报日志的功能 ,需要后端支持,提供个日志回传接…

中新赛克嵌入式面试题及参考答案

目录 在编码中使用过的数据结构 描述如何实现链表 当发生哈希冲突时的解决策略 在调用 malloc 分配内存后确保分配成功的操作 解释 TCP 的三次握手过程及说明两次握手不可行的原因 优化多个客户端同时连接到服务器的连接管理 设计和实现心跳检测机制 在项目中是否使用了…

【数据结构】【java】leetcode刷题记录--链表

简介 链表是一种常见的基础数据结构,它由一系列节点组成,每个节点包含数据域和指向下一个节点的指针。在Java中,链表通常用于实现动态数据结构,因为它可以根据需要动态地增加或减少节点。 链表简介: 节点结构&#…