当前位置: 首页 > news >正文

MySQL Binlog

MySQL Binlog

MySQL Binlog

  • 介绍
  • 查看 Binlog 位点
  • 开启和关闭 Binlog
  • Binlog 的作用
  • Binlog 记录的格式
  • Binlog 的解析
  • Binlog 加密
  • Binlog 的清理
    • 根据Binlog文件名删除
    • 根据时间删除
  • Binlog 保留参数
  • Binlog 的落盘
  • Binlog 相关参数

MySQL主从复制:https://blog.csdn.net/a18792721831/article/details/146117935
MySQL Binlog:https://blog.csdn.net/a18792721831/article/details/146606305
MySQL General Log:https://blog.csdn.net/a18792721831/article/details/146607343

介绍

Binlog 包含描述数据库修改的语句,如 create , update 等数据变更语句,不会记录类似 select , show 等不修改数据的语句。

如果想记录所有的 SQL 语句,可以使用 General Log

查看 Binlog 位点

使用 show master status 查看当前Binlog的位点

image-20250310183401493

创建databases,并创建一张表

create database test;
use test;
create table t(id int, name varchar(256));

然后在查看Binlog的位点信息

image-20250310183551459

其 Position 从2427增加到 2818。

使用 show binlog events in 'mysql-bin.000004' from 2427 \G 查看从 2427 开始发生了什么操作

image-20250310183847224

创建database和table 的sql都被记录到 Binlog 中了。

试着查询一下呢

image-20250310184029054

发现执行了 select 的语句,但是 Position 并没有增加。

开启和关闭 Binlog

开启Binlog ,需要在配置文件中的 [mysqld]中加上如下语句:

log-bin = /data/mysql/binlog/mysql-bin

表示Binlog的存放路径为/data/mysql/binlog 文件名为mysql-bin后接Binlog的序列号

比如 my.cfg文件如下:

[mysqld]
server_id=100
log_bin=/var/lib/mysql-bin/mysql-bin
binlog_format=row
plugin-load-add=mysql_native_password.so
authentication_policy=mysql_native_password

我是使用docker 启动的,挂载如下:

docker run \
--name master \
-e MYSQL_ROOT_PASSWORD=master \
-v /data/mysql/master/log:/var/log/mysql \
-v /data/mysql/master/data:/var/lib/mysql \
-v /data/mysql/master/conf:/etc/mysql/conf.d \
-v /data/mysql/master/binlog:/var/lib/mysql-bin \
-p 3106:3306 \
-d \
mysql:8.0

表示将 容器内的 /var/lib/mysql-bin 目录挂载到/data/mysql/master/binlog目录,在配置文件中指定Binlog日志存储目录是 /var/lib/mysql-bin目录,文件名是 mysql-bin后接序列号

Clipboard_Screenshot_1741603687

为了跟踪使用了那些Binlog文件,mysqld还创建了一个Binlog索引文件,其中包含Binlog文件的名称。默认情况下,该名称与Binlog文件具有相同的基本名称,扩展名为.index。比如上面的 mysql-bin.index

image-20250311142515832

如果没有指定Binlog的文件名和路径,那么在mysqld中的配置为空

log-bin

默认存放在datadir下,Binlog的文件名为主机名后接 Binlog 的序列号。

一般建议指定一个基本名称,防止更改主机名时出现 Binlog 的文件名与之前不一致的现象。

关闭 Binlog, 需要在配置文件中加上

skip_log_bin

或者

disable_log_bin

如果要关闭当前会话的 Binlog,可以执行如下语句

set sql_log_bin=0;

Binlog 的作用

复制:主库的变更先写入Binlog,然后传到从库进行回放。

灾备:当误操作后,可以先把全备导入某个新的实例中,然后通过全备时间点到误操作中间的 Binlog 解析出所有事务(排除误操作的事务),并在新实例中执行这些事务,达到恢复到误操作前一刻的状态。

Binlog 记录的格式

Binlog 可以设置为以下几种日志格式

  • Statement(基于SQL语句的格式):每条会修改数据的SQL语句都会记录在 Binlog 中,不需要记录每行的变化。
  • Row(基于行):会非常清楚地记录每行数据被修改的细节。
  • Mixed(混合模式):以上两种格式的混合采用,默认采用的 statement 格式保存Binlog,statement格式无法准确复制的操作可以使用row格式保存Binlog。
日志格式优点缺点
statement日志量少,节约IO,性能高在主从复制中可能会导致主从数据不一致,比如使用了不确定函数,UUID()函数等等
row主从数据基本一致,支持闪回日志量多
mixed日志量少,节约IO,性能高,解决了statement格式部分数据不一致的情况不支持闪回,不分高可用架构不支持该格式,不方便将数据同步到其他类型的数据库,

Binlog 记录的格式由参数 binlog_format 控制,如果要设置为 row格式,则在 [mysqld] 中加入如下语句

binlog_format=row

当然也支持动态修改,修改参数binlog_format的全局值

set global binlog_format='row';

修改参数binlog_format的会话级别的方法:

set session binlog_format='row';

image-20250327191714860

image-20250327191823940

image-20250327191906986

image-20250327191937754

image-20250327192021973

Binlog 的解析

Binlog 文件不能直接查看,需要通过 mysqlbinlog 工具解析。

比如在 row 格式下,解析 Binlog 的方法

首先查看binlog_format是否为 row

image-20250327193658060

首先查看位点

image-20250327193729589

文件index=6,pos=157

创建一个表

image-20250327193807721

创建一个表,并且插入一行数据后,binlog的index=6,但是pos=362

接着解析binlog文件

mysqlbinlog --start-position=157 mysql-bin.000006 -vv > ./log

image-20250327194322704

/*!50530 SET @@SESSION.PSEUDO_SLAVE_MODE=1*/;
/*!40019 SET @@session.max_insert_delayed_threads=0*/;
/*!50003 SET @OLD_COMPLETION_TYPE=@@COMPLETION_TYPE,COMPLETION_TYPE=0*/;
DELIMITER /*!*/;
# at 4
#250327 19:36:22 server id 100  end_log_pos 126 CRC32 0xf96205bf        Start: binlog v 4, server v 8.0.41 created 250327 19:36:22 at startup
# Warning: this binlog is either in use or was not closed properly.
ROLLBACK/*!*/;
BINLOG '
NjjlZw9kAAAAegAAAH4AAAABAAQAOC4wLjQxAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAA2OOVnEwANAAgAAAAABAAEAAAAYgAEGggAAAAICAgCAAAACgoKKioAEjQA
CigAAb8FYvk=
'/*!*/;
# at 157
#250327 19:37:52 server id 100  end_log_pos 234 CRC32 0xb65c3b6b        Ignorable
# Ignorable event type 34 (MySQL Anonymous_Gtid)
# at 234
#250327 19:37:52 server id 100  end_log_pos 362 CRC32 0xddef90fd        Query   thread_id=8     exec_time=0     error_code=0
use `mysql`/*!*/;
SET TIMESTAMP=1743075472/*!*/;
SET @@session.pseudo_thread_id=8/*!*/;
SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=0, @@session.unique_checks=1, @@session.autocommit=1, @@session.check_constraint_checks=1/*!*/;
SET @@session.sql_mode=1168113696/*!*/;
SET @@session.auto_increment_increment=1, @@session.auto_increment_offset=1/*!*/;
SET @@session.character_set_client=255,@@session.collation_connection=255,@@session.collation_server=255/*!*/;
SET @@session.lc_time_names=0/*!*/;
SET @@session.collation_database=DEFAULT/*!*/;
create table test_t(name varchar(256))
/*!*/;
DELIMITER ;
# End of log file
ROLLBACK /* added by mysqlbinlog */;
/*!50003 SET COMPLETION_TYPE=@OLD_COMPLETION_TYPE*/;
/*!50530 SET @@SESSION.PSEUDO_SLAVE_MODE=0*/;

也可以直接 mysqlbinlog mysql-bin.000006

image-20250327194456064

Binlog 加密

从Mysql 8.0.14 开始,可以对 Binlog 文件和中继日志文件进行加密,从而保护敏感数据。

可以在配置文件的[mysqld]中加上如下语句开启 Binlog 加密

early-plugin-load=keyring_file.so
keyring_file_data=/var/lib/mysql/keyring
binlog_encryption=on

也可以通过select @@binlog_encryption查看

image-20250327194808777

修改[mysqld]

image-20250327200129300

再次查看

image-20250327200205898

使用 show binary logs; 查看

image-20250327200229356

可以发现最新的 binlog encryption 已经变成yes了

第一次配置过加密的插件后,后面可以通过 set global binlog_encryption='off';关闭或者set global binlog_encryption='on';开启

image-20250327200502553

image-20250327200922428

从上图可以看出,mysql-bin.000009 文件是加密,使用mysqlbinlog解析加密的binlog文件

image-20250327201111292

已经解析不出来结果了。

应该使用MySQL的用户密码进行解析才行

mysqlbinlog --read-from-remote-server \
-hx.x.x.x \
-Px \
-uu \
-pp \
--start-position=157 \
mysql-bin.000009 -vv >./log3

查看log3的内容

# The proper term is pseudo_replica_mode, but we use this compatibility alias
# to make the statement usable on server versions 8.0.24 and older.
/*!50530 SET @@SESSION.PSEUDO_SLAVE_MODE=1*/;
/*!50003 SET @OLD_COMPLETION_TYPE=@@COMPLETION_TYPE,COMPLETION_TYPE=0*/;
DELIMITER /*!*/;
# at 157
#250327 20:08:16 server id 100  end_log_pos 0 CRC32 0x07906a17 	Start: binlog v 4, server v 8.0.41 created 250327 20:08:16
BINLOG '
sD/lZw9kAAAAegAAAAAAAAAAAAQAOC4wLjQxAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAEwANAAgAAAAABAAEAAAAYgAEGggAAAAICAgCAAAACgoKKioAEjQA
CigAARdqkAc=
'/*!*/;
# at 157
#250327 20:08:31 server id 100  end_log_pos 234 CRC32 0x17b798d5 	Anonymous_GTID	last_committed=0	sequence_number=1	rbr_only=no	original_committed_timestamp=1743077311135115	immediate_commit_timestamp=1743077311135115	transaction_length=206
# original_commit_timestamp=1743077311135115 (2025-03-27 20:08:31.135115 CST)
# immediate_commit_timestamp=1743077311135115 (2025-03-27 20:08:31.135115 CST)
/*!80001 SET @@session.original_commit_timestamp=1743077311135115*//*!*/;
/*!80014 SET @@session.original_server_version=80041*//*!*/;
/*!80014 SET @@session.immediate_server_version=80041*//*!*/;
SET @@SESSION.GTID_NEXT= 'ANONYMOUS'/*!*/;
# at 234
#250327 20:08:31 server id 100  end_log_pos 363 CRC32 0x7d250931 	Query	thread_id=10	exec_time=0	error_code=0	Xid = 100
use `mysql`/*!*/;
SET TIMESTAMP=1743077311/*!*/;
SET @@session.pseudo_thread_id=10/*!*/;
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=255/*!*/;
SET @@session.lc_time_names=0/*!*/;
SET @@session.collation_database=DEFAULT/*!*/;
/*!80011 SET @@session.default_collation_for_utf8mb4=255*//*!*/;
/*!80013 SET @@session.sql_require_primary_key=0*//*!*/;
create table test_t1(name varchar(256))
/*!*/;
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*/;

创建表 test1 的sql成功被解析。

Binlog 的清理

对于一个繁忙的MySQL 实例,其 Binlog 增长也是比较快的,因此,需要设置其保留天数,如果磁盘即将满,那么可能还要单独删除历史Binlog。

根据Binlog文件名删除

可以使用purge binary logs 语句来删除指定 Binlog 的文件名或指定时间之前的 Binlog 文件

首先使用show binary logs查看

image-20250328164722647

然后使用 purge binary logs to 'mysql-bin.000004'删除 1~3 的Binlog文件

image-20250328164842418

直接在mysql服务的binlog目录下查看

image-20250328164910321

也是没有了

根据时间删除

直接在mysql的服务端查看Binlog文件的详细信息

image-20250328165017505

假设我们删除 20点之前的Binlog文件,执行purge binary logs before '2025-03-27 20:00:00';

image-20250328165309545

好像和预期有点不符,不过还是可以看到是可以删除的。

Binlog 保留参数

一般不会直接删除Binlog文件,而是通过设置expire_logs_days参数或binlog_expire_logs_seconds参数。

expire_logs_days参数定义了日志保留天数,binlog_expire_logs_seconds参数定义了日志保留秒数。

MySQL 8.0 建议设置binlog_expire_logs_seconds参数,在未来版本中可能会废除expire_logs_days参数。

image-20250328165803855

image-20250328165851969

expire_logs_days为0表示永远不删除,expire_logs_days默认值为0

binlog_expire_logs_seconds默认为 2592000秒,等于30天,也就是默认是保存30天

假设将binlog_expire_logs_seconds设置为1小时,也就是3600s,那么之前保留的Binlog文件会被删除

image-20250328170130371

image-20250328170416098

不管设置为多少,不会自动删除

需要使用flush logs触发生效

image-20250328170521962

Binlog 的落盘

Binlog 同步到磁盘的频率由 sync_binlog 参数控制。sync_binlog参数大致有这几种配置

  • sync_binlog=0:禁用MySQL服务将Binlog 同步到磁盘的功能,是由操作系统控制Binlog的刷盘。在这种情况下,性能比较好,但是当操作系统崩溃时可能会丢失部分事务。
  • sync_binlog=1:每个事务都会同步到磁盘。这是最安全的设置,但是磁盘写入次数的增加可能会导致性能下降
  • sync_binlog=N:表示每N个事物Binlog同步一次到磁盘。当操作系统崩溃时,服务器提交的事务可能没有被刷新到Binlog中,此时可能会丢失部分事务,虽然设置比较大的值可以提高性能,但是数据丢失的风险也会增加。

image-20250328171003002

可以通过 set global sync_binlog=3;调整

image-20250328171107662

Binlog 相关参数

  1. max_binlog_size:单个Binlog文件大小的最大值

    image-20250328171815372

  2. log-slave-update:从库从主库接收的更新是否记录到从库自身的Binlog中,如果从库后面又接了从库,或者在从库上做备份,或者MySQL 5.6 主从复制使用了GTID模式,那么建议开启这个参数

  3. binlog-do-db:后面接库名,表示当前数据库只记录该参数设置的库的 Binlog ,其他库都不记录

  4. binlog-ignore-db:后面接库名,表示当前数据库不记录该参数设置的库的Binlog,其他库都记录

相关文章:

MySQL Binlog

MySQL Binlog MySQL Binlog 介绍查看 Binlog 位点开启和关闭 BinlogBinlog 的作用Binlog 记录的格式Binlog 的解析Binlog 加密Binlog 的清理根据Binlog文件名删除根据时间删除 Binlog 保留参数Binlog 的落盘Binlog 相关参数 MySQL主从复制:https://blog.csdn.net/a…...

SQL中累计求和与滑动求和函数sum() over()的用法

[TOC](SQL中累计求和与滑动求和函数sum() over()的用法) 一、窗口函数功能简介 sum(c) over(partition by a order by b) 按照一定规则汇总c的值,具体规则为以a分组,每组内按照b进行排序,汇总第一行至当前行的c的加和值。 sum()&#xff1a…...

第十四届MathorCup高校数学建模挑战赛-C题:基于 LSTM-ARIMA 和整数规划的货量预测与人员排班模型

目录 摘要 一、 问题重述 1.1 背景知识 1.2 问题描述 二、 问题分析 2.1 对问题一的分析 2.2 对问题二的分析 2.3 对问题三的分析 2.4 对问题四的分析 三、 模型假设 四、 符号说明 五、 问题一模型的建立与求解 5.1 数据预处理 5.2 基于 LSTM 的日货量预测模型 5.3 日货量预测…...

3d pose 指标和数据集

目录 3D姿态估计、3维重建指标: 数据集 EHF数据集 SMPL-X 3D姿态估计、3维重建指标: MVE、PMVE 和 p-MPJPE 都是用于评估3D姿态估计、三维重建等任务中预测结果与真实数据之间误差的指标。 MVE (Mean Vertex Error):是指模型重建过程中每个顶点的预测位置与真实位置之间…...

【MySQL】InnoDB中的MVCC

目录 1、背景2、设置事务的隔离级别3、MVCC【1】版本链【2】ReadView【3】ReadView的生成时机 4、总结 1、背景 MVCC叫做多版本并发控制,通过维护数据的多个历史版本实现读写分离:读操作访问快照版本,无需加锁,避免阻塞写操作&am…...

从DeepSeek到Qwen,AI大模型的移植与交互实战指南

在不久前发布的《技术实战 | OK3588-C开发板上部署DeepSeek-R1大模型的完整指南》一文中,小编为大家介绍了DeepSeek-R1在飞凌嵌入式OK3588-C开发板上的移植部署、效果展示以及性能评测,本篇文章不仅将继续为大家带来关于DeepSeek-R1的干货知识&#xff0…...

蓝桥杯Java组国赛G题(01背包问题的变形)

题目 解题思路 首先,解决此题的前置知识是需要掌握普通的 01 背包问题。当然,这题肯定不可能这么简单。题目相对于 01 背包来说,唯一的区别在于小蓝可以使用 1 次魔法。我们只需要多加一维状态记录是否使用了魔法即可。下面考虑动态规划&…...

QCW模式:准连续波驱动在VCSEL激光器中的技术解析与应用价值

点击下面图片,为您提供全新的嵌入式学习路线 文章目录 一、QCW模式的定义与工作原理二、QCW模式的技术优势三、典型应用场景分析四、PLD850-5mW-MV的QCW性能亮点五、总结 一、QCW模式的定义与工作原理 QCW(Quasi-Continuous Wave)&#xf…...

C++List模拟实现|细节|难点|易错点|全面解析|类型转换|

目录 1.模拟代码全部 2.四大块代码理解 1.最底层&#xff1a;ListNode部分 2.第二层&#xff1a;ListIterator部分 3.第三层&#xff1a;ReserveListIterator部分 4最终层&#xff1a;List 1.模拟代码全部 using namespace std; template<class T> struct ListNode …...

【安全】记录钓鱼邮件中木马病毒的分析溯源

转载请注明出处&#xff1a;小锋学长生活大爆炸[xfxuezhagn.cn] 如果本文帮助到了你&#xff0c;欢迎[点赞、收藏、关注]哦~ 1、收到一封邮件&#xff0c;与以往钓鱼网站形式不同&#xff0c;这次是给了一个exe可执行文件。毫无疑问&#xff0c;肯定是植入木马用的。 下载后&am…...

三数之和

给你一个整数数组 nums &#xff0c;判断是否存在三元组 [nums[i], nums[j], nums[k]] 满足 i ! j、i ! k 且 j ! k &#xff0c;同时还满足 nums[i] nums[j] nums[k] 0 。请你返回所有和为 0 且不重复的三元组。 注意&#xff1a;答案中不可以包含重复的三元组。 示例 1&…...

AI 与 IT 从业者:共舞还是取代?

在当今数字化浪潮的汹涌冲击下&#xff0c;AI 的出现犹如一颗划破夜空的璀璨星辰&#xff0c;照亮了科技发展的新方向&#xff0c;也引发了无数关于未来职业走向的讨论。尤其是对于 IT 从业者而言&#xff0c;仿佛站在了一个十字路口&#xff0c;前方是机遇与挑战交织的未知旅程…...

【计算机网络中的奈氏准则与香农定理】

文章目录 一、前言二、奈氏准则1. 概念2. 奈氏准则公式3. 奈氏准则的意义 三、香农定理1. 概念2. 香农定理公式3. 香农定理的意义 四、奈氏准则与香农定理的对比五、应用示例1. 奈氏准则示例2. 香农定理示例 六、总结 一、前言 在计算机网络中&#xff0c;数据的传输速率与信道…...

湖南(源点咨询)市场调研 商业综合体定位调研分享(上篇)

​ 该项目位于某新一线城市的城市副中心区域&#xff0c;系一个正在发展中的中央居住区&#xff0c;项目本身是一个涵盖社区综合服务中心、商业、文体活动中心、卫生服务、社区养老等多功能复合的公共配套项目&#xff0c;本次调研主要针对其商业&#xff08;及其他可商用的&a…...

鸿蒙ArkTs/c++/RepalcePioneer/base64.us之Base64编码解码的是非

狗血现象&#xff1a; 同一字符串原文使用 1、RepalcePioneer&#xff08;一款Windows平台的字符串工具&#xff09; 2、鸿蒙ArkTs自带base64编码方法 3、https://base64.us&#xff08;一款在线base64工具&#xff09; 来编码&#xff0c;得到编码串不一样&#xff0c;后…...

《Linux运维实战:Ubuntu 22.04使用pam_faillock实现登录失败处理策略》

总结&#xff1a;整理不易&#xff0c;如果对你有帮助&#xff0c;可否点赞关注一下&#xff1f; 更多详细内容请参考&#xff1a;Linux运维实战总结 一、背景信息 在ubuntu 22.04中&#xff0c;pam_tally2模块已被弃用&#xff0c;取而代之的是pam_faillock模块。因此&#xf…...

如何让DeepSeek-R1在内网稳定运行并实现随时随地远程在线调用

前言&#xff1a;最近&#xff0c;国产AI圈里的新星——Deepseek&#xff0c;简直是火到不行。但是&#xff0c;你是不是已经对那些千篇一律的手机APP和网页版体验感到腻味了&#xff1f;别急&#xff0c;今天就带你解锁一个超炫的操作&#xff1a;在你的Windows电脑上本地部署…...

2.1-WAF\CDN\OSS\反向代理\负载均衡

WAF&#xff1a;就是网站应用防火墙&#xff0c;有硬件类、软件类、云WAF&#xff1b; 还有网站内置的WAF&#xff0c;内置的WAF就是直接嵌在代码中的安全防护代码 硬件类&#xff1a;Imperva、天清WAG 软件&#xff1a;安全狗、D盾、云锁 云&#xff1a;阿里云盾、腾讯云WA…...

matplotlib学习

开始学习Python数据可视化 一.基础绘图函数 1.创建画布与坐标轴 import matplotlib.pyplot as plt# 创建画布和坐标轴 fig, ax plt.subplots() # 默认1行1列&#xff0c;返回Figure对象和Axes对象 2.绘制线图 x [1, 2, 3, 4] y [10, 20, 15, 25]# 绘制线图 ax.plot(x,…...

Go 语言标准库中math模块详细功能介绍与示例

Go语言的 math 模块提供了丰富的数学函数和常量&#xff0c;涵盖基本运算、三角函数、指数、对数、取整、特殊值等。以下是核心方法及示例说明&#xff1a; 1. 基本数学运算 math.Abs 取绝对值&#xff08;仅 float64&#xff09;。 fmt.Println(math.Abs(-3.5)) // 输出:…...

RabbitMQ三种队列深度解析:区别、场景与未来趋势

嗯&#xff0c;用户让我分析RabbitMQ三种队列的区别、应用场景、技术原理和未来趋势&#xff0c;还要写一篇三千字的文章。首先&#xff0c;我需要回顾一下搜索结果&#xff0c;看看有哪些资料可用。 根据搜索结果&#xff0c;RabbitMQ的三种队列是经典队列&#xff08;Classi…...

15. 三数之和

给你一个整数数组 nums &#xff0c;判断是否存在三元组 [nums[i], nums[j], nums[k]] 满足 i ! j、i ! k 且 j ! k &#xff0c;同时还满足 nums[i] nums[j] nums[k] 0 。请你返回所有和为 0 且不重复的三元组。 注意&#xff1a;答案中不可以包含重复的三元组。 示例 1&…...

0328-内存图2

是否正确待定&#xff1a; Perso类 package com.qc.内存图2;public class Perso {public int age;public String name;public static int flag;public void m1() {}public static void m2() {}Overridepublic String toString() {return "Perso [age" age "…...

最接近的三数之和

给你一个长度为 n 的整数数组 nums 和 一个目标值 target。请你从 nums 中选出三个整数&#xff0c;使它们的和与 target 最接近。 返回这三个数的和。 假定每组输入只存在恰好一个解。 示例 1&#xff1a; 输入&#xff1a;nums [-1,2,1,-4], target 1 输出&#xff1a;…...

d2025328

一、sql-判断三角形 610. 判断三角形 - 力扣&#xff08;LeetCode&#xff09; 用一下if加上判断条件 select x,y,z,if(xy > z and xz > y and yz > x and x-y < z and x-z < y and y-z < x,Yes,No) as triangle from Triangle 二、按照分类统计薪水 190…...

初识MySQl · 内置函数

目录 前言&#xff1a; 日期类函数 字符串函数 数学类函数 其他函数 前言&#xff1a; 在前文的学习我们已经简单了解了部分函数&#xff0c;比如count()函数什么的&#xff0c;今天我们主要是笼统的学习一下MySQL中的函数&#xff0c;仅仅从使用的角度来学习&#xff0c…...

(C语言)指针运算 习题练习1.2(压轴难题)

在上一张已经练习了三道习题&#xff0c;小试牛刀了&#xff0c;那么在本章在来几题&#xff0c;练练手。&#xff08;习题三是压轴难题&#xff09; 习题一 int main() {int aa[2][5] { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };int* ptr1 (int*)(&aa 1);int* ptr2 (int*)…...

视频AI赋能水利行业生态治理,水电站大坝漂浮物实时监测与智能预警方案

水电站大坝周边水域垃圾漂浮物不仅影响水质&#xff0c;还可能对大坝设施运行、水生态环境造成威胁。传统依靠人工巡检的方式效率低、存在监测盲区&#xff0c;难以实时全面地掌握漂浮物情况。借助EasyCVR视频汇聚平台与TSINGSEE青犀AI算法中台构建智能化监测方案&#xff0c;能…...

方阵幂次(矩阵快速幂)

#include <bits/stdc.h> using namespace std;int n; vector<vector<int>> fuc(vector<vector<int>> a,vector<vector<int>> b){ // 矩阵乘法函数vector<vector<int>> f(n,vector<int>(n));for(int i0;i<n;i){…...

【Uni-App】嵌入悬浮球全局组件的详细教程和防踩坑点

一、前言 近期接到一个业务需求是为为h5页面嵌入悬浮球&#xff0c;而且还得是全局化&#xff08;这样所有页面就可以看见了&#xff09;&#xff0c;在开发的过程中也遇到一些坑&#xff0c;在此和大家一起学习、讨论。 二、准备工作 下载悬浮球组件代码 悬浮球 - DCloud …...

第十六章 图

1.为什么要有图 前面学了线性表和树 线性表局限于一个直接前驱和一个直接后继的关系 树也只能有一个直接前驱也就是父节点 当我们需要表示多对多的关系时,这里我们就用到了图 import java.util.ArrayList; import java.util.Arrays;public class Graph {private int[][]edg…...

Ubuntu 系统无法远程连接?完整排查指南与解决方案

远程连接 Ubuntu 系统是服务器管理和开发中的常见需求,但有时会遇到无法连接的问题。本文整理常见原因及解决方法,涵盖 SSH 服务配置、防火墙规则、网络设置等关键环节,助您快速定位问题。 检查 SSH 服务状态 SSH(Secure Shell) 是远程连接的核心服务。若未安装或未运行,…...

将网络安全和第三方风险管理与业务目标相结合

在网络安全风险领域&#xff0c;我们经常遇到与企业语言不通的问题。这可能导致网络安全风险管理计划得不到支持。当发现网络安全风险时&#xff0c;困难在于以符合组织语言和目标的方式来表达它。 第三方风险属于另一个灰色地带。在组织内部&#xff0c;许多利益相关者&#…...

加油站小程序实战教程02宫格导航

目录 引言1 应用创建2 搭建页面布局3 大模型生成图标最终效果 引言 在《加油站小程序实战教程01》中我们详细介绍了站点基本信息数据维护功能的搭建。有了数据之后就需要考虑小程序展示部分该如何搭建&#xff0c;本篇我们介绍一下应用的创建、页面布局以及数据绑定的过程。 …...

es6的箭头函数与普通函数的区别,箭头函数的this通常指向哪里,箭头函数可以用作构造函数吗?

ES6 的箭头函数与普通函数的区别 箭头函数&#xff08;Arrow Function&#xff09;和普通函数有一些重要的区别&#xff0c;主要体现在以下几个方面&#xff1a; 1. 语法简洁性 - 箭头函数的语法更简洁&#xff0c;不需要使用 function 关键字。 - 普通函数需要使用 functi…...

工作记录 2017-03-10

工作记录 2017-03-10 序号 工作 相关人员 1 修改邮件上的问题。 更新RD服务器。 郝 更新的问题 1、修改了payment detail和patient insurance的health plan的输入方式。 2、new payment detail时&#xff0c;增加了allowable的处理。 3、选择payer的窗体&#xff0c;增…...

如何一键安装所有Python项目的依赖!

在开发项目时&#xff0c;常常需要在多个环境中安装各种依赖。对开发者来说&#xff0c;每次手动一个个安装这些依赖是不是很麻烦&#xff1f;&#x1f605; 其实有个超简单的办法&#xff01;只需要一个脚本&#xff0c;就能快速解决问题&#xff01;&#x1f4a1; 这就是我们…...

linux的基础命令

目录 1. 文件和目录操作 ls ls -l ls -a pwd touch haha.txt mkdir 113 cd . 和 cd .. cd ~ echo "hello world" >> test.c cat test.txt mv rm 2. 压缩与解压 zip test.zip test.c unzip test.zip -d /root/113 tar czf lesson4.tgz less…...

Redis数据持久化机制 + Go语言读写Redis各种类型值

Redis&#xff08;Remote Dictionary Server&#xff09;作为高性能的键值存储系统&#xff0c;凭借其丰富的数据类型和原子性操作&#xff0c;成为现代分布式系统中不可或缺的组件。 1、Redis支持的数据类型 Redis支持的数据类型可归纳为以下9类&#xff1a; String&#x…...

HackMyVM-Demons

目录 信息搜集漏洞利用提权 信息搜集 主机发现 ┌──(kali㉿kali)-[~] └─$ nmap -sn 192.168.21.0/24 Starting Nmap 7.94SVN ( https://nmap.org ) at 2025-03-27 23:38 EDT Nmap scan report for 192.168.21.1 (192.168.21.1) Host is up (0.0016s latency). MAC Add…...

Python Random 模块使用完全指南

一、模块基础与核心功能 1. 模块导入与初始化 所有随机操作需先导入模块&#xff1a; import random # 标准导入方式 import random as rd # 别名导入&#xff08;推荐&#xff09;核心原理&#xff1a;默认基于梅森旋转算法生成伪随机数&#xff0c;可通过random.seed()设…...

前端技术有哪些

一、基础技术 HTML 页面结构标记语言&#xff0c;最新版本为 HTML5。 CSS 样式设计语言&#xff0c;扩展技术包括&#xff1a; CSS 预处理器&#xff1a;Sass、Less、Stylus。CSS 框架&#xff1a;Bootstrap、Tailwind CSS、Bulma。原子化 CSS&#xff1a;Windi CSS、UnoCSS。…...

Python二分查找【清晰易懂】

1. 二分查找是什么&#xff1f; 想象你在玩“猜数字”游戏&#xff1a; 对方心里想一个 1~100 的数字&#xff0c;你每次猜一个数&#xff0c;对方会告诉你是“大了”还是“小了”。 最快的方法&#xff1a;每次都猜中间的数&#xff01;比如第一次猜50&#xff0c;如果大了&…...

【数据分享】基于联合国城市化程度框架的全球城市边界数据集(免费获取/Shp格式)

在全球城市化进程不断加快的今天&#xff0c;如何精准定义和测量“城市”成为关键问题。不同国家和机构采用不同的标准&#xff0c;导致全球城市化水平的统计结果存在较大差异。同时&#xff0c;由于数据来源分散、标准不统一&#xff0c;获取一套完整、可比的全球城市边界数据…...

ExpTimerApcRoutine函数分析之作用是ActiveTimerListHead里面移除定时器_etimer

第一部分&#xff1a; VOID ExpTimerApcRoutine ( IN PKAPC Apc, IN PKNORMAL_ROUTINE *NormalRoutine, IN PVOID *NormalContext, IN PVOID *SystemArgument1, IN PVOID *SystemArgument2 ) /* Routine Description: This function is the special …...

Linux环境下安装部署Docker

windows下连接Linux&#xff1a; 打开终端&#xff1a; //ssh远程连接 ssh root192.168.xx.xx//输入账号密码 root192.168.xx.xxs password: ssh连接成功&#xff01; 安装Docker&#xff1a; //安装Docker yum install -y yum-utils device-mapper-persistent-data lvm2 …...

深度赋能!北京智和信通融合DeepSeek,解锁智能运维无限可能

在数字化飞速发展的今天&#xff0c;传统运维模式面临着设备规模激增、故障复杂度攀升、人工响应滞后等多重挑战。随着DeepSeek、腾讯元宝等AI大模型的兴起&#xff0c;为传统运维模式带来了新的变革。 北京智和信通基于DeepSeek大模型技术&#xff0c;将AI和运维场景深度融合&…...

mysql死锁排查解决

今天数据库突然报错[40001][1213] Deadlock found when trying to get lock; try restarting transaction 一看就是死锁 阿里实列会显示类似sql:UPDATE goods SET num num - 1 WHERE id2 AND num > 1; 一看sql这不是扣减库存操作吗&#xff1f; 为什么这sql会出现死锁??…...

Linux | i.MX6ULL 终结者学习指南(1)

01 一 光盘资料介绍 跟我一起成为嵌入式Linux大佬&#xff0c;开干 02 接下来我们一起学习。 01_开发及烧写工具 &#xff08;Linux 镜像烧写工具、交叉编译器、裸机镜像制作工具&#xff09; 1.交叉编译器 &#xff08;ARM 交叉编译器&#xff09; 2.裸机镜像制作…...

NX二次开发刻字功能——布尔运算

刻字功能在经历、创建文本、拉伸功能以后就剩下布尔运算了。布尔运算的目的就是实现文本时凸还是凹。这部分内容很简单。 1、首先识别布尔运算的类型&#xff0c;我这里用到一个枚举类型的选项&#xff0c;凸就是布尔求和&#xff0c;凹就是布尔求差。 2、其放置位置为创建拉伸…...