MySQL二进制日志(binlog)配置、二进制日志binlog查看、mysqlbinlog查看二进制日志、二进制日志binlog清理等详解
提示:MySQL 中的日志比较重要的有 binlog(归档日志)、redo log(重做日志)以及 undo log,那么跟我们本文相关的主要是 binlog,另外两个日志松哥将来有空了再和大家详细介绍。
文章目录
- 1、二进制日志binlong的作用
- 1、1 灾难时恢复数据
- 1、2 主从复制
- 2、查看binlog日志文件
- 2、binlong日志的三种格式
- 2.1.1 Statement
- 2.2.2 Row
- 2.2.3 Mixed
- 3、配置binlong
- 3、1MySQL配置文件my.cnf中配置binlong参数
- 3、2 二进制日志binlog查看工具mysqlbinlog
- 4、测试mysqlbinlog查看二进制文件
- 4、1 更新demp表数据
- 4、2查看二进制文件记录更新
- 5、二进制日志binlog清理
- 手动清理:命令式
- 5、1 reset master命令:
- 5、2 purage master logs to命令
- 自动设置清理
1、二进制日志binlong的作用
mysql中二进制日志记录了数据库的DDL定义操作和DDM操作语言
1、1 灾难时恢复数据
1、2 主从复制
2、查看binlog日志文件
命令:
mysql> show variables like ‘log_bin%’;
±--------------------------------±-----------------------------------+
| Variable_name | Value |
±--------------------------------±-----------------------------------+
| log_bin | ON |
| log_bin_basename | /data/log-bin/mysql-bin-3306 |
| log_bin_index | /data/log-bin/mysql-bin-3306.index |
| log_bin_trust_function_creators | OFF |
| log_bin_use_v1_row_events | OFF |
±--------------------------------±-----------------------------------+
log_bin_basename :二进制日志所在位置
log_bin_index:索引
查看binlong具体信息:
[root@mysql8 ~]# cd /data/log-bin
[root@mysql8 log-bin]# ll
total 28
-rw-r--r-- 1 root root 0 Jul 29 03:53 1.sql
-rw-r----- 1 mysql mysql 179 Jul 28 21:09 mysql-bin-3306.000013
-rw-r----- 1 mysql mysql 179 Jul 29 00:26 mysql-bin-3306.000014
-rw-r----- 1 mysql mysql 179 Jul 29 00:46 mysql-bin-3306.000015
-rw-r----- 1 mysql mysql 179 Jul 29 00:46 mysql-bin-3306.000016
-rw-r----- 1 mysql mysql 179 Jul 29 00:46 mysql-bin-3306.000017
-rw-r----- 1 mysql mysql 1387 Jul 29 04:22 mysql-bin-3306.000018
-rw-r----- 1 mysql mysql 216 Jul 29 00:48 mysql-bin-3306.index
mysql-bin-3306为前缀的都是二进制文件,记录着数据库操作。
2、binlong日志的三种格式
MySQL 中的日志比较重要的有 binlog(归档日志)、redo log(重做日志)以及 undo log,
使用场景:
MySQL 主从复制时:在主机上开启 binlog,主机将 binlog 同步给从机,从机通 过 binlog 来同步数据,进而实现主机和从机的数据同步。
MySQL 数据恢复,通过使用 mysqlbinlog 工具再结合 binlog 文件,可以将数据恢复到过去的某一时刻。
binlog 有三种格式:
Statement(Statement-Based Replication,SBR):每一条会修改数据的 SQL 都会记录在 binlog 中。
Row(Row-Based Replication,RBR):不记录 SQL 语句上下文信息,仅保存哪条记录被修改。
Mixed(Mixed-Based Replication,MBR):Statement 和 Row 的混合体。
2.1.1 Statement
Statement 模式只记录执行的 SQL,不需要记录每一行数据的变化,因此极大的减少了 binlog 的日志量,避免了大量的 IO 操作,提升了系统的性能。
但是,正是由于 Statement 模式只记录 SQL,而如果一些 SQL 中 包含了函数,那么可能会出现执行结果不一致的情况。比如说 uuid() 函数,每次执行的时候都会生成一个随机字符串,在 master 中记录了 uuid,当同步到 slave 之后,再次执行,就得到另外一个结果了。
所以使用 Statement 格式会出现一些数据一致性问题。
2.2.2 Row
从 MySQL5.1.5 版本开始,binlog 引入了 Row 格式,Row 格式不记录 SQL 语句上下文相关信息,仅仅只需要记录某一条记录被修改成什么样子了。
Row 格式的日志内容会非常清楚地记录下每一行数据修改的细节,这样就不会出现 Statement 中存在的那种数据无法被正常复制的情况。
不过 Row 格式也有一个很大的问题,那就是日志量太大了,特别是批量 update、整表 delete、alter 表等操作,由于要记录每一行数据的变化,此时会产生大量的日志,大量的日志也会带来 IO 性能问题。
2.2.3 Mixed
从 MySQL5.1.8 版开始,MySQL 又推出了 Mixed 格式,这种格式实际上就是 Statement 与 Row 的结合。
在 Mixed 模式下,系统会自动判断 该 用 Statement 还是 Row:一般的语句修改使用 Statement 格式保存 binlog;对于一些 Statement 无法准确完成主从复制的操作,则采用 Row 格式保存 binlog。
Mixed 模式中,MySQL 会根据执行的每一条具体的 SQL 语句来区别对待记录的日志格式,也就是在 Statement 和 Row 之间选择一种。
3、配置binlong
3、1MySQL配置文件my.cnf中配置binlong参数
# 这个参数表示启用 binlog 功能,并指定 binlog 的存储目录
log-bin=mysqlbin
# 配置二进制文件存放的位置
log-bin = /data/log-bin/mysql-bin-3306# 二进制日志格式的配置 STATEMENT Mixed row等配置binlog_format=STATEMENT# 设置一个 binlog 文件的最大字节
# 设置最大 100MB
max_binlog_size=104857600# 设置了 binlog 文件的有效期(单位:天)
expire_logs_days = 7# binlog 日志只记录指定库的更新(配置主从复制的时候会用到)
#binlog-do-db=javaboy_db# binlog 日志不记录指定库的更新(配置主从复制的时候会用到)
#binlog-ignore-db=javaboy_no_db# 写缓存多少次,刷一次磁盘,默认 0 表示这个操作由操作系统根据自身负载自行决定多久写一次磁盘
# 1 表示每一条事务提交都会立即写磁盘,n 则表示 n 个事务提交才会写磁盘
sync_binlog=0# 为当前服务取一个唯一的 id(MySQL5.7 之后需要配置)
server-id=1
配置文件配置结束后重启mysql服务即可生效,service mysqld start
3、2 二进制日志binlog查看工具mysqlbinlog
[root@mysql8 log-bin]# cd /data/log-bin/
[root@mysql8 log-bin]# ll
total 28
-rw-r--r-- 1 root root 0 Jul 29 03:53 1.sql
-rw-r----- 1 mysql mysql 179 Jul 28 21:09 mysql-bin-3306.000013
-rw-r----- 1 mysql mysql 179 Jul 29 00:26 mysql-bin-3306.000014
-rw-r----- 1 mysql mysql 179 Jul 29 00:46 mysql-bin-3306.000015
-rw-r----- 1 mysql mysql 179 Jul 29 00:46 mysql-bin-3306.000016
-rw-r----- 1 mysql mysql 179 Jul 29 00:46 mysql-bin-3306.000017
-rw-r----- 1 mysql mysql 1387 Jul 29 04:22 mysql-bin-3306.000018
-rw-r----- 1 mysql mysql 216 Jul 29 00:48 mysql-bin-3306.index
查看binlog二进制日志文件:mysqlbinlog 日志文件
[root@mysql8 log-bin]# mysqlbinlog mysql-bin-3306.000014
mysqlbinlog: [ERROR] unknown variable 'default_character-set=utf8mb4'.
有报错建议修改配置文件中的字符集即可,可有利用第二中方式轻松查看
用mysqlbinlog --no-defaults mysql-bin.3306.000018命令打开
4、测试mysqlbinlog查看二进制文件
4、1 更新demp表数据
更新demp表中所有id
mysql> select * from demp;
+-------------+------------+-----------+----------+--------------------+---------------------+--------+--------+----------------+------------+---------------+
| employee_id | first_name | last_name | email | phone_number | hire_date | job_id | salary | commission_pct | manager_id | department_id |
+-------------+------------+-----------+----------+--------------------+---------------------+--------+--------+----------------+------------+---------------+
| 163 | Danielle | Greene | DGREENE | 011.44.1346.229268 | 1999-03-19 00:00:00 | SA_REP | 9500 | 0.15 | 147 | 80 |
| 164 | Mattea | Marvins | MMARVINS | 011.44.1346.329268 | 2000-01-24 00:00:00 | SA_REP | 7200 | 0.10 | 147 | 80 |
| 166 | Sundar | Ande | SANDE | 011.44.1346.629268 | 2000-03-24 00:00:00 | SA_REP | 6400 | 0.10 | 147 | 80 |
| 167 | Amit | Banda | ABANDA | 011.44.1346.729268 | 2000-04-21 00:00:00 | SA_REP | 6200 | 0.10 | 147 | 80 |
| 168 | Lisa | Ozer | LOZER | 011.44.1343.929268 | 1997-03-11 00:00:00 | SA_REP | 11500 | 0.25 | 148 | 80 |
| 169 | Harrison | Bloom | HBLOOM | 011.44.1343.829268 | 1998-03-23 00:00:00 | SA_REP | 10000 | 0.20 | 148 | 80 |
| 170 | Tayler | Fox | TFOX | 011.44.1343.729268 | 1998-01-24 00:00:00 | SA_REP | 9600 | 0.20 | 148 | 80 |
| 171 | William | Smith | WSMITH | 011.44.1343.629268 | 1999-02-23 00:00:00 | SA_REP | 7400 | 0.15 | 148 | 80 |
| 172 | Elizabeth | Bates | EBATES | 011.44.1343.529268 | 1999-03-24 00:00:00 | SA_REP | 7300 | 0.15 | 148 | 80 |
+-------------+------------+-----------+----------+--------------------+---------------------+--------+--------+----------------+------------+---------------+
9 rows in set (0.00 sec)mysql> update demp set employee_id=100;
Query OK, 9 rows affected (0.00 sec)
Rows matched: 9 Changed: 9 Warnings: 0mysql> commit;
Query OK, 0 rows affected (0.00 sec)mysql> select * from demp;
+-------------+------------+-----------+----------+--------------------+---------------------+--------+--------+----------------+------------+---------------+
| employee_id | first_name | last_name | email | phone_number | hire_date | job_id | salary | commission_pct | manager_id | department_id |
+-------------+------------+-----------+----------+--------------------+---------------------+--------+--------+----------------+------------+---------------+
| 100 | Danielle | Greene | DGREENE | 011.44.1346.229268 | 1999-03-19 00:00:00 | SA_REP | 9500 | 0.15 | 147 | 80 |
| 100 | Mattea | Marvins | MMARVINS | 011.44.1346.329268 | 2000-01-24 00:00:00 | SA_REP | 7200 | 0.10 | 147 | 80 |
| 100 | Sundar | Ande | SANDE | 011.44.1346.629268 | 2000-03-24 00:00:00 | SA_REP | 6400 | 0.10 | 147 | 80 |
| 100 | Amit | Banda | ABANDA | 011.44.1346.729268 | 2000-04-21 00:00:00 | SA_REP | 6200 | 0.10 | 147 | 80 |
| 100 | Lisa | Ozer | LOZER | 011.44.1343.929268 | 1997-03-11 00:00:00 | SA_REP | 11500 | 0.25 | 148 | 80 |
| 100 | Harrison | Bloom | HBLOOM | 011.44.1343.829268 | 1998-03-23 00:00:00 | SA_REP | 10000 | 0.20 | 148 | 80 |
| 100 | Tayler | Fox | TFOX | 011.44.1343.729268 | 1998-01-24 00:00:00 | SA_REP | 9600 | 0.20 | 148 | 80 |
| 100 | William | Smith | WSMITH | 011.44.1343.629268 | 1999-02-23 00:00:00 | SA_REP | 7400 | 0.15 | 148 | 80 |
| 100 | Elizabeth | Bates | EBATES | 011.44.1343.529268 | 1999-03-24 00:00:00 | SA_REP | 7300 | 0.15 | 148 | 80 |
+-------------+------------+-----------+----------+--------------------+---------------------+--------+--------+----------------+------------+---------------+
9 rows in set (0.00 sec)
4、2查看二进制文件记录更新
total 28
-rw-r–r-- 1 root root 0 Jul 29 03:53 1.sql
-rw-r----- 1 mysql mysql 179 Jul 28 21:09 mysql-bin-3306.000013
-rw-r----- 1 mysql mysql 179 Jul 29 00:26 mysql-bin-3306.000014
-rw-r----- 1 mysql mysql 179 Jul 29 00:46 mysql-bin-3306.000015
-rw-r----- 1 mysql mysql 179 Jul 29 00:46 mysql-bin-3306.000016
-rw-r----- 1 mysql mysql 179 Jul 29 00:46 mysql-bin-3306.000017
-rw-r----- 1 mysql mysql 1697 Jul 30 07:29 mysql-bin-3306.000018
-rw-r----- 1 mysql mysql 216 Jul 29 00:48 mysql-bin-3306.index
根据时间显示和追加记录mysql-bin-3306.000018中记录了最新的数据库操作信息,利用mysqlbinlog工具进行查看:
[root@mysql8 log-bin]# mysqlbinlog --no-defaults mysql-bin-3306.000018
文件内容显示如下:
[root@mysql8 log-bin]# mysqlbinlog --no-defaults mysql-bin-3306.000018
/*!50530 SET @@SESSION.PSEUDO_SLAVE_MODE=1*/;
/*!50003 SET @OLD_COMPLETION_TYPE=@@COMPLETION_TYPE,COMPLETION_TYPE=0*/;
DELIMITER /*!*/;
# at 4
#230729 0:48:15 server id 1 end_log_pos 125 CRC32 0x30ea3950 Start: binlog v 4, server v 8.0.24 created 230729 0:48:15 at startup
# Warning: this binlog is either in use or was not closed properly.
ROLLBACK/*!*/;
BINLOG '
T/HDZA8BAAAAeQAAAH0AAAABAAQAOC4wLjI0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAABP8cNkEwANAAgAAAAABAAEAAAAYQAEGggAAAAICAgCAAAACgoKKioAEjQA
CigBUDnqMA==
'/*!*/;
# at 125
#230729 0:48:15 server id 1 end_log_pos 156 CRC32 0xfc28efee Previous-GTIDs
# [empty]
# at 156
#230729 4:13:48 server id 1 end_log_pos 235 CRC32 0x52abd1d5 Anonymous_GTID last_committed=0 sequence_number=1 rbr_only=no original_committed_timestamp=1690575228721727 immediate_commit_timestamp=1690575228721727 transaction_length=299
# original_commit_timestamp=1690575228721727 (2023-07-29 04:13:48.721727 CST)
# immediate_commit_timestamp=1690575228721727 (2023-07-29 04:13:48.721727 CST)
/*!80001 SET @@session.original_commit_timestamp=1690575228721727*//*!*/;
/*!80014 SET @@session.original_server_version=80024*//*!*/;
/*!80014 SET @@session.immediate_server_version=80024*//*!*/;
SET @@SESSION.GTID_NEXT= 'ANONYMOUS'/*!*/;
# at 235
#230729 4:13:36 server id 1 end_log_pos 313 CRC32 0x5ce7bb97 Query thread_id=9 exec_time=0 error_code=0
SET TIMESTAMP=1690575216/*!*/;
SET @@session.pseudo_thread_id=9/*!*/;
SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=0, @@session.unique_checks=1, @@session.autocommit=1/*!*/;
SET @@session.sql_mode=1168113696/*!*/;
SET @@session.auto_increment_increment=1, @@session.auto_increment_offset=1/*!*/;
/*!\C utf8mb4 *//*!*/;
SET @@session.character_set_client=255,@@session.collation_connection=255,@@session.collation_server=45/*!*/;
SET @@session.lc_time_names=0/*!*/;
SET @@session.collation_database=DEFAULT/*!*/;
/*!80011 SET @@session.default_collation_for_utf8mb4=255*//*!*/;
BEGIN
/*!*/;
# at 313
#230729 4:13:36 server id 1 end_log_pos 424 CRC32 0x4c694ced Query thread_id=9 exec_time=0 error_code=0
use `hr`/*!*/;
SET TIMESTAMP=1690575216/*!*/;
delete from demp where employee_id=165
/*!*/;
# at 424
#230729 4:13:48 server id 1 end_log_pos 455 CRC32 0xbf81adbc Xid = 6
COMMIT/*!*/;
# at 455
#230729 4:17:44 server id 1 end_log_pos 534 CRC32 0xde2c6e07 Anonymous_GTID last_committed=1 sequence_number=2 rbr_only=no original_committed_timestamp=1690575464562403 immediate_commit_timestamp=1690575464562403 transaction_length=631
# original_commit_timestamp=1690575464562403 (2023-07-29 04:17:44.562403 CST)
# immediate_commit_timestamp=1690575464562403 (2023-07-29 04:17:44.562403 CST)
/*!80001 SET @@session.original_commit_timestamp=1690575464562403*//*!*/;
/*!80014 SET @@session.original_server_version=80024*//*!*/;
/*!80014 SET @@session.immediate_server_version=80024*//*!*/;
SET @@SESSION.GTID_NEXT= 'ANONYMOUS'/*!*/;
# at 534
#230729 4:17:02 server id 1 end_log_pos 612 CRC32 0xb3c5f7ed Query thread_id=9 exec_time=0 error_code=0
SET TIMESTAMP=1690575422/*!*/;
BEGIN
/*!*/;
# at 612
#230729 4:17:02 server id 1 end_log_pos 722 CRC32 0x883aae6d Query thread_id=9 exec_time=0 error_code=0
SET TIMESTAMP=1690575422/*!*/;
delete from demp where employee_id=18
/*!*/;
# at 722
#230729 4:17:08 server id 1 end_log_pos 833 CRC32 0x22d36194 Query thread_id=9 exec_time=0 error_code=0
SET TIMESTAMP=1690575428/*!*/;
delete from demp where employee_id=180
/*!*/;
# at 833
#230729 4:17:17 server id 1 end_log_pos 944 CRC32 0xb75c1ace Query thread_id=9 exec_time=0 error_code=0
SET TIMESTAMP=1690575437/*!*/;
delete from demp where employee_id=178
/*!*/;
# at 944
#230729 4:17:22 server id 1 end_log_pos 1055 CRC32 0x23c4fb31 Query thread_id=9 exec_time=0 error_code=0
SET TIMESTAMP=1690575442/*!*/;
delete from demp where employee_id=177
/*!*/;
# at 1055
#230729 4:17:44 server id 1 end_log_pos 1086 CRC32 0x0d1db327 Xid = 25
COMMIT/*!*/;
# at 1086
#230729 4:22:49 server id 1 end_log_pos 1165 CRC32 0xb420e324 Anonymous_GTID last_committed=2 sequence_number=3 rbr_only=no original_committed_timestamp=1690575769602803 immediate_commit_timestamp=1690575769602803 transaction_length=301
# original_commit_timestamp=1690575769602803 (2023-07-29 04:22:49.602803 CST)
# immediate_commit_timestamp=1690575769602803 (2023-07-29 04:22:49.602803 CST)
/*!80001 SET @@session.original_commit_timestamp=1690575769602803*//*!*/;
/*!80014 SET @@session.original_server_version=80024*//*!*/;
/*!80014 SET @@session.immediate_server_version=80024*//*!*/;
SET @@SESSION.GTID_NEXT= 'ANONYMOUS'/*!*/;
# at 1165
#230729 4:22:27 server id 1 end_log_pos 1243 CRC32 0x2f5d2059 Query thread_id=9 exec_time=0 error_code=0
SET TIMESTAMP=1690575747/*!*/;
BEGIN
/*!*/;
# at 1243
#230729 4:22:27 server id 1 end_log_pos 1356 CRC32 0x4a403e8b Query thread_id=9 exec_time=0 error_code=0
SET TIMESTAMP=1690575747/*!*/;
delete from tb_cs t where t.order_id='5'
/*!*/;
# at 1356
#230729 4:22:49 server id 1 end_log_pos 1387 CRC32 0x30b73bb0 Xid = 35
COMMIT/*!*/;
# at 1387
#230730 7:29:44 server id 1 end_log_pos 1466 CRC32 0xe43139ec Anonymous_GTID last_committed=3 sequence_number=4 rbr_only=no original_committed_timestamp=1690673384343676 immediate_commit_timestamp=1690673384343676 transaction_length=310
# original_commit_timestamp=1690673384343676 (2023-07-30 07:29:44.343676 CST)
# immediate_commit_timestamp=1690673384343676 (2023-07-30 07:29:44.343676 CST)
/*!80001 SET @@session.original_commit_timestamp=1690673384343676*//*!*/;
/*!80014 SET @@session.original_server_version=80024*//*!*/;
/*!80014 SET @@session.immediate_server_version=80024*//*!*/;
SET @@SESSION.GTID_NEXT= 'ANONYMOUS'/*!*/;
# at 1466
#230730 7:29:39 server id 1 end_log_pos 1553 CRC32 0xfa85f183 Query thread_id=11 exec_time=0 error_code=0
SET TIMESTAMP=1690673379/*!*/;
BEGIN
/*!*/;
# at 1553
#230730 7:29:39 server id 1 end_log_pos 1666 CRC32 0xb0b99617 Query thread_id=11 exec_time=0 error_code=0
SET TIMESTAMP=1690673379/*!*/;
update demp set employee_id=100
/*!*/;
# at 1666
#230730 7:29:44 server id 1 end_log_pos 1697 CRC32 0xe18478e3 Xid = 47
COMMIT/*!*/;
SET @@SESSION.GTID_NEXT= 'AUTOMATIC' /* added by mysqlbinlog */ /*!*/;
DELIMITER ;
# End of log file
/*!50003 SET COMPLETION_TYPE=@OLD_COMPLETION_TYPE*/;
/*!50530 SET @@SESSION.PSEUDO_SLAVE_MODE=0*/;
里面具体描述了表的操作信息和具体时间以及sql语言二进制日志具体信息的获取要根据mysql配置文件中对二进制日志binlog格式的配置。
5、二进制日志binlog清理
手动清理:命令式
5、1 reset master命令:
reset master可以删除所有的日志文件,重置二进制日志文件的索引文件为空,然后产生新的二进制文件(编号还是从000001开始)以及索引文件
mysql> reset master
-> ;
Query OK, 0 rows affected (0.00 sec)
mysql> commit;
Query OK, 0 rows affected (0.00 sec)
5、2 purage master logs to命令
purage master logs to 可以删除指定二进制日志文件名之前的所有二进制日志文件
自动设置清理
在my.ini配置文件的【mysqlId】选项组中设置expire_logs_days参数
expire_logs_days参数定义了二进制日志文件的过期天数,过期的二进制日志文件将被自动删除
expire_logs_days=7;
相关文章:
MySQL二进制日志(binlog)配置、二进制日志binlog查看、mysqlbinlog查看二进制日志、二进制日志binlog清理等详解
提示:MySQL 中的日志比较重要的有 binlog(归档日志)、redo log(重做日志)以及 undo log,那么跟我们本文相关的主要是 binlog,另外两个日志松哥将来有空了再和大家详细介绍。 文章目录 1、二进制…...
Python内存管理解析:高效利用资源的关键
推荐阅读 AI文本 OCR识别最佳实践 AI Gamma一键生成PPT工具直达链接 玩转cloud Studio 在线编码神器 玩转 GPU AI绘画、AI讲话、翻译,GPU点亮AI想象空间 引言 在当今互联网时代,Python已经成为最受欢迎的编程语言之一。它的简洁、灵活和强大的生态系统使其成为…...
解决Debian10乱码以及远程连接ssh的问题
文章目录 解决Debian10乱码Debian10配置ssh 解决Debian10乱码 下载locales apt-get install locales配置语言 dpkg-reconfigure locales输入上述命令后会进入到以下页面【空格为选中,回车下一个页面】 在这个页面里我们按空格选中如图的选项,然后回…...
C# 泛型(Generic)
方法重载:方法名称相同,参数个数和参数类型不同; 优势:可以节约方法名称 劣势:方法过多 语法:public void writeContent(T t) 原理:普通的C#代码他是运行在前端进行编译,所有的类型需…...
Golang之路---02 基础语法——流程控制(if-else , switch-case , for-range , defer)
流程控制 条件语句——if-else if 条件 1 {分支 1 } else if 条件 2 {分支 2 } else if 条件 ... {分支 ... } else {分支 else }注: Golang编译器,对于 { 和 } 的位置有严格的要求,它要求 else if (或 else)和 两边…...
HTTP——HTTP报文内的HTTP信息
HTTP 通信过程包括从客户端发往服务器端的请求及从服务器端返回客户端的响应。本章就让我们来了解一下请求和响应是怎样运作的。 HTTP 一、HTTP报文二、请求报文及响应报文的结构三、编码提升传输速率1、报文主体和实体主题的差异2、压缩传输的内容编码3、分割发送的分块传输编…...
RocketMQ工作原理
文章目录 三.RocketMQ工作原理1.消息的生产消息的生产过程Queue选择算法 2.消息的存储1.commitlog文件目录与文件消息单元 2.consumequeue目录与文件索引条目 3.对文件的读写消息写入消息拉取性能提升 3.indexFile1.索引条目结构2.文件名的作用3.查询流程 4.消息的消费1.推拉消…...
Jenkins+Docker+Docker-Compose自动部署,SpringCloud架构公共包一个任务配置
前言 Jenkins和docker的安装,随便百度吧,实际场景中我们很多微服务的架构,都是有公共包,肯定是希望一个任务能够把公共包的配置加进去,一并构建,ok,直接上干货。 Jenkins 全局环境安装 pwd e…...
spring boot 2 配置上传文件大小限制
一、起因:系统页面上传一个文件超过日志提示的文件最大100M的限制,需要更改配置文件 二、经过: 1、在本地代码中找到配置文件,修改相应数值后交给运维更新生产环境配置,但是运维说生产环境没有这行配置,遂…...
Jmeter —— 录制脚本
1. 第一步:添加http代理服务器,在测试计划--》添加--》非测试元件--》http代理服务器 2. 第二步:添加线程组(这个线程组是用来放录制的脚本,不添加也可以,就直接放在代理服务器下) 测试计划--》…...
从零开始学Docker(一):Docker的安装部署
前述:本次学习与整理来至B站【Python开发_老6哥】老师分享的课程,有兴趣的小伙伴可以去加油啦,附链接 宿主机环境:RockyLinux 9 版本管理 Docker引擎主要有两个版本:企业版(EE)和社区版&#…...
【ROS 02】ROS通信机制
机器人是一种高度复杂的系统性实现,在机器人上可能集成各种传感器(雷达、摄像头、GPS...)以及运动控制实现,为了解耦合,在ROS中每一个功能点都是一个单独的进程,每一个进程都是独立运行的。更确切的讲,ROS是进程&#…...
uniapp 选择城市定位 根据城市首字母分类排序
获取城市首字母排序,按字母顺序排序 <template><view class"address-wrap" id"address"><!-- 搜索输入框-end --><template v-if"!isSearch"><!-- 城市列表-start --><view class"address-sc…...
flex盒子 center排布,有滚动条时,拖动滚动条无法完整显示内容
文章目录 问题示例代码解决问题改进后的效果 问题 最近在开发项目的过程中,发现了一个有趣的事情,与flex盒子有关,不知道算不算是一个bug,不过对于开发者来说,确实有些不方便,感兴趣的同学不妨也去试试。 …...
Workbox使用分享
一、简要介绍 1.1 什么是Workbox 官方文档原文: At this point, service workers may seem tricky. There’s lots of complex interactions that are hard to get right. Network requests! Caching strategies! Cache management! Precaching! It’s a lot to r…...
秋招算法备战第32天 | 122.买卖股票的最佳时机II、55. 跳跃游戏、45.跳跃游戏II
122. 买卖股票的最佳时机 II - 力扣(LeetCode) 通过做差可以得到利润序列,然后只要利润需求的非负数求和就可以,因为这里没有手续费,某天买入之后买出可以等价为这几天连续买入卖出 class Solution:def maxProfit(se…...
Python状态模式介绍、使用
一、Python状态模式介绍 Python状态模式(State Pattern)是一种行为型设计模式,它允许对象在不同的状态下表现不同的行为,从而避免在代码中使用多重条件语句。该模式将状态封装在独立的对象中,并根据当前状态选择不同的…...
Github-Copilot初体验-Pycharm插件的安装与测试
引言: 80%代码秒生成!AI神器Copilot大升级 最近copilot又在众多独角兽公司的合力下,取得了重大升级。GitHub Copilot发布还不到两年, 就已经为100多万的开发者,编写了46%的代码,并提高了55%的编码速度。 …...
Spring AOP API详解
上一章介绍了Spring对AOP的支持,包括AspectJ和基于schema的切面定义。在这一章中,我们将讨论低级别的Spring AOP API。对于普通的应用,我们推荐使用前一章中描述的带有AspectJ pointcuts 的Spring AOP。 6.1. Spring 中的 Pointcut API 这一…...
分治法 Divide and Conquer
1.分治法 分治法(Divide and Conquer)是一种常见的算法设计思想,它将一个大问题分解成若干个子问题,递归地解决每个子问题,最后将子问题的解合并起来得到整个问题的解。分治法通常包含三个步骤: 1. Divid…...
VB.net复制Ntag213卡写入UID
本示例使用的发卡器:https://item.taobao.com/item.htm?ftt&id615391857885 一、读取旧Ntag卡的UID和数据 Private Sub Button15_Click(sender As Object, e As EventArgs) Handles Button15.Click轻松读卡技术支持:网站:Dim i, j As IntegerDim cardidhex, …...
Xshell远程连接Kali(默认 | 私钥)Note版
前言:xshell远程连接,私钥连接和常规默认连接 任务一 开启ssh服务 service ssh status //查看ssh服务状态 service ssh start //开启ssh服务 update-rc.d ssh enable //开启自启动ssh服务 任务二 修改配置文件 vi /etc/ssh/ssh_config //第一…...
8k长序列建模,蛋白质语言模型Prot42仅利用目标蛋白序列即可生成高亲和力结合剂
蛋白质结合剂(如抗体、抑制肽)在疾病诊断、成像分析及靶向药物递送等关键场景中发挥着不可替代的作用。传统上,高特异性蛋白质结合剂的开发高度依赖噬菌体展示、定向进化等实验技术,但这类方法普遍面临资源消耗巨大、研发周期冗长…...
【位运算】消失的两个数字(hard)
消失的两个数字(hard) 题⽬描述:解法(位运算):Java 算法代码:更简便代码 题⽬链接:⾯试题 17.19. 消失的两个数字 题⽬描述: 给定⼀个数组,包含从 1 到 N 所有…...
java调用dll出现unsatisfiedLinkError以及JNA和JNI的区别
UnsatisfiedLinkError 在对接硬件设备中,我们会遇到使用 java 调用 dll文件 的情况,此时大概率出现UnsatisfiedLinkError链接错误,原因可能有如下几种 类名错误包名错误方法名参数错误使用 JNI 协议调用,结果 dll 未实现 JNI 协…...
Java多线程实现之Callable接口深度解析
Java多线程实现之Callable接口深度解析 一、Callable接口概述1.1 接口定义1.2 与Runnable接口的对比1.3 Future接口与FutureTask类 二、Callable接口的基本使用方法2.1 传统方式实现Callable接口2.2 使用Lambda表达式简化Callable实现2.3 使用FutureTask类执行Callable任务 三、…...
从零开始打造 OpenSTLinux 6.6 Yocto 系统(基于STM32CubeMX)(九)
设备树移植 和uboot设备树修改的内容同步到kernel将设备树stm32mp157d-stm32mp157daa1-mx.dts复制到内核源码目录下 源码修改及编译 修改arch/arm/boot/dts/st/Makefile,新增设备树编译 stm32mp157f-ev1-m4-examples.dtb \stm32mp157d-stm32mp157daa1-mx.dtb修改…...
Spring Boot面试题精选汇总
🤟致敬读者 🟩感谢阅读🟦笑口常开🟪生日快乐⬛早点睡觉 📘博主相关 🟧博主信息🟨博客首页🟫专栏推荐🟥活动信息 文章目录 Spring Boot面试题精选汇总⚙️ **一、核心概…...
关键领域软件测试的突围之路:如何破解安全与效率的平衡难题
在数字化浪潮席卷全球的今天,软件系统已成为国家关键领域的核心战斗力。不同于普通商业软件,这些承载着国家安全使命的软件系统面临着前所未有的质量挑战——如何在确保绝对安全的前提下,实现高效测试与快速迭代?这一命题正考验着…...
免费PDF转图片工具
免费PDF转图片工具 一款简单易用的PDF转图片工具,可以将PDF文件快速转换为高质量PNG图片。无需安装复杂的软件,也不需要在线上传文件,保护您的隐私。 工具截图 主要特点 🚀 快速转换:本地转换,无需等待上…...
