MySQL mydumper工具

目录

1. mydumper介绍

2. mydumper参数解释

3. 备份例子

3.1 备份全库(未包含其他)

3.2 备份全库(包含其他)

3.3 备份指定数据库(-B或--database)

3.4 导出指定表(-T或--tables-list)

3.5 只导出表结构,不导出表数据(-d或--no-data)

3.6 只导出表数据,不导出表结构(-m或者--no-schemas)

3.7 压缩备份(-c或--compress)

3.8 综合备份

3.9 使用正则表达式

4. 备份文件命名

5. 备份原理

6. myloader参数

7. 恢复例子

7.1 恢复指定库

7.2 将源库的zs库导入备库的zs01库

7.3 导入特定的表


1. mydumper介绍

MyDumper是一个MySQL逻辑备份工具。它有2个工具:

  • mydumper负责导出 MySQL 数据库的一致备份
  • myloader从 mydumper 读取备份,连接到目标数据库并导入备份。

这两个工具都使用多线程功能。

mydumper 主要有以下几点特性:

  • 支持多线程导出数据,速度更快。
  • 支持一致性备份。
  • 支持将导出文件压缩,节约空间。
  • 支持多线程恢复。
  • 支持以守护进程模式工作,定时快照和连续二进制日志。
  • 支持按照指定大小将备份文件切割。
  • 数据与建表语句分离。

下载工具

https://github.com/mydumper/mydumper

我下载的是zip包,上传至虚拟机,解压

unzip mydumper-master.zip

安装依赖包(CentOS)

#Install development tools
yum install -y cmake gcc gcc-c++ git make

#Install development versions of GLib, ZLib, PCRE and ZSTD
yum install -y glib2-devel openssl-devel pcre-devel zlib-devel libzstd-devel

添加环境变量(mysql客户端库文件)

export LD_LIBRARY_PATH=/usr/local/mysql/lib

安装mydumper

cd /soft/mydumper-master
cmake .
make
sudo make install

安装完成后生成两个二进制文件mydumper和myloader位于/usr/local/bin目录下

2. mydumper参数解释

mydumper --help
参数简写描述
连接选项
--host-h连接的MySQL数据库服务器
--user-u连接数据库的用户
--password-p连接数据库用户的密码
--ask-password-a提示输入用户的密码
--port-PMySQL数据库端口
--socket-S用于连接的 UNIX 域套接字文件
--protocol用于连接的协议(tcp、socket)
--compress-protocol-C对 MySQL 连接使用压缩
--ssl使用 SSL 连接
--ssl-mode连接到服务器所需的安全状态:DISABLED、PREFERRED、REQUIRED、VERIFY_CA、VERIFY_IDENTITY
--key密钥文件的路径名
--cert证书文件的路径名
--ca证书颁发机构文件的路径名
--capath包含 PEM 格式的受信任 SSL CA 证书的目录的路径名
--cipher用于 SSL 加密的允许密码列表
--tls-version服务器允许哪些协议进行加密连接
过滤选项
--regex-X'db.table' 匹配的正则表达式
--database-B需要备份的数据库
--ignore-engines-i要忽略的存储引擎的列表 ,逗号分隔
--updated-since-U使用 Update_time 仅转储最近 U 天内更新的表
--partition-regex按分区名称过滤的正则表达式
--omit-from-file-O包含要跳过的数据库.表条目列表的文件,每行一个(在应用正则表达式选项之前跳过)
--tables-list-T要备份的表列表,以逗号分隔(不排除正则表达式选项)。 表名必须包含数据库名。 例如:test.t1,test.t2
锁选项
--tidb-snapshot-z使用 TiDB 快照
--no-locks-k不执行临时共享读锁 ,警告:这将会导致非一致性备份
--use-savepoints使用 savepoints 来减少元数据锁的产生,需要 SUPER 权限
--no-backup-locks不使用 Percona 的 backup locks (备份锁)
--lock-all-tables对所有的表 LOCK TABLE,而不是使用FTWRL
--less-locking对于 InnoDB 存储引擎的表最少的锁时间
--trx-consistency-only事务一致性
--skip-ddl-locks跳过DDL锁
PMM选项
--pmm-path默认值为 /usr/local/percona/pmm2/collectors/textfile-collector/high-resolution
--pmm-resolution默认值较高
执行选项
--exec-threads与 --exec 一起使用的线程数量
--exec使用文件作为参数来执行命令
--exec-per-thread设置将由 STDIN 接收并将 STDOUT 写入输出文件的命令
--exec-per-thread-extension使用 --exec-per-thread 时设置 STDOUT 文件的扩展名
长查询选项
--long-query-retries重新检测长查询 ,默认0(不检测)
--long-query-retry-interval长查询检测的间隔时间 ,默认60秒
--long-query-guard-l设置长查询的时间阈值 ,默认60秒
--kill-long-queries-kkill 长查询(替代aborting)
Job选项
--max-threads-per-table每张表的最大线程数
--char-deep定义当主键是字符串时要使用的字符数
--char-chunk定义应将表拆分为多少部分。 默认情况下我们使用线程数量
--rows-r将表拆分为这么多行的块。 它可以是 MIN:START_AT:MAX。 MAX 可以为 0,表示没有限制。 如果查询时间少于 1 秒,则块大小将加倍;如果查询时间超过 2 秒,则块大小减半
--split-partitions将分区转储到单独的文件中。 此选项会覆盖分区表的 --rows 选项
校验选项
--checksum-all-M转储所有对象的校验和
--data-checksums转储表与数据的校验和
--schema-checksums转储模式表和视图创建校验和
--routine-checksums转储触发器、函数和例程的校验和
对象选项
--no-schemas-m不备份表结构,(数据和触发器)
--all-tablespaces-Y备份所有表空间
--no-data-d不备份表的数据
--triggers-G备份触发器,默认情况下不备份
--events-E备份事件,默认情况下不备份
--routines-R备份存储过程和函数,默认情况下不备份
--skip-constraints从CREATE TABLE语句中删除约束。默认情况下,不修改该语句
--skip-indexes从CREATE TABLE语句中删除索引。默认情况下,不修改该语句
--views-as-tables将视图作为表导出
--no-views-W不备份视图
Statement选项
--load-data不创建 INSERT INTO 语句,而是创建 LOAD DATA 语句和 .dat 文件
--csv自动启用--load-data 并设置变量以 CSV 格式导出
--include-header添加列名到头部
--fields-terminated-by定义分割字段的字符
--fields-enclosed-by定义包围字段的字符。 默认: ”
--fields-escaped-by转义字符,默认: '\'
--lines-starting-by在每行的开头添加字符串。 使用 --load-data 时,它会添加到 LOAD DATA 语句中。 当使用它时,它也会影响 INSERT INTO 语句。
--lines-terminated-by在每行末尾添加字符串。 当使用 --load-data 时,它被添加到 LOAD DATA 语句中。 当使用它时,它也会影响 INSERT INTO 语句。
--statement-terminated-by这可能永远不会被使用,除非你知道你在做什么
--insert-ignore-N使用 INSERT IGNORE 备份行
--replace用 REPLACE 替换备份行
--complete-insert使用包含列名的完整 INSERT 语句
--hex-blob使用十六进制表示法转储二进制列
--skip-definer从 CREATE 语句中删除 DEFINER。 默认情况下,语句不被修改
--statement-size-s尝试的 INSERT 语句大小(以字节为单位),默认 1000000
--tz-utcSET TIME_ZONE='+00:00' 在转储顶部,允许在服务器具有不同时区的数据或数据在不同时区的服务器之间移动时转储 TIMESTAMP 数据,默认为使用 - -skip-tz-utc 禁用。
--skip-tz-utc禁用--tz-utc
--set-names设置名称,使用它需要您自担风险,默认二进制文件
Extra选项
--chunk-filesize-F将数据文件分割成以 MB 为单位的多个块
--exit-if-broken-table-found如果发现损坏的表则退出
--success-on-1146如果表不存在,则不增加错误计数并发出警告而不是错误
--build-empty-files-e即使表中没有可用数据也构建转储文件
--no-check-generated-fields与生成字段相关的查询不会被执行。如果您生成了列,则会导致恢复问题
--order-by-primary如果不存在主键,则按主键或唯一键对数据进行排序
--compact提供较少的详细输出。禁用页眉/页脚构造
--compress-c使用 /usr/bin/gzip 和 /usr/bin/zstd 压缩输出文件。 选项:GZIP 和 ZSTD。 默认值:GZIP
--use-defer使用延迟整数分片,直到处理完所有非整数主键表(为大量表保存RSS)
--check-row-count如果导出的行数与select count(*)不一致,则导出失败
Daemon选项
--daemon-D后台运行
--snapshot-interval-I每个转储快照之间的间隔(以分钟为单位),需要 --daemon,默认 60
--snapshot-count-X快照数量,默认2
Application选项
--help-?显示帮助选项
--outputdir-o输出文件的目录
--clear导出前清理输出目录
--dirty覆盖输出目录而不清除(注意左下块)
--stream一旦文件被写入,它将通过 STDOUT 流式传输。 自 v0.12.7-1 起,接受 NO_DELETE、NO_STREAM_AND_NO_DELETE 和 TRADITIONAL(默认值),如果未给出参数则使用
--logfile-L要使用的日志文件名,默认情况下使用 stdout
--disk-limits如果确定没有足够的磁盘空间,则设置暂停和恢复的限制。接受类似以下值:'<resume>:<pause>'(以 MB 为单位)。例如:100:500 将在只有 100MB剩余时暂停,如果有 500MB可用则恢复
--threads-t要使用的线程数,默认 4
--version-V显示程序版本并退出
--verbose-v输出的详细程度,0 = silent, 1 = errors, 2 = warnings, 3 = info, default 2
--debug打开调试输出(自动将verbosity设置为3)
--defaults-file使用特定的默认文件。 默认值:/etc/mydumper.cnf
--defaults-extra-file使用额外的默认文件。 这是在 --defaults-file 之后加载的,替换以前定义的值
--fifodir需要时将在其中创建 FIFO 文件的目录。 默认值:与备份相同

3. 备份例子

3.1 备份全库(未包含其他)

mydumper -u root -p 123456 -o /backup

3.2 备份全库(包含其他)

包含触发器(-G)、事件(-E)、存储过程和函数(-R)

mydumper -u root -p 123456 -G -R -E -o /backup

3.3 备份指定数据库(-B或--database)

mydumper -u root -p 123456 -G -R -E -B zs,python -o /backup

3.4 导出指定表(-T或--tables-list)

mydumper -u root -p 123456  -T zs.aa,python.y -o /backup

3.5 只导出表结构,不导出表数据(-d或--no-data)

mydumper -u root -p 123456 -B zs -d -o /backup

3.6 只导出表数据,不导出表结构(-m或者--no-schemas)

mydumper -u root -p 123456 -m -B zs -o /backup

3.7 压缩备份(-c或--compress)

mydumper -u root -p 123456 -B zs,python -c --clear -o /backup

3.8 综合备份

事务一致性、压缩、4线程、备份前清理备份目录、备份包含触发器、事件、存储过程和函数,备份前清理目录

mydumper -u root -p 123456 -G -E -R --trx-consistency-only -t 4 -c --clear -o /backup

3.9 使用正则表达式

排除某些表或者数据库,使用--regex参数

# 可以使用--regex功能,例如不备份zs和mysql数据库: 
mydumper --regex '^(?!(zs\.|mysql\.))'
 
# 仅备份zs和python数据库:
mydumper --regex '^(zs\.|python\.)'
 
# 不备份以zs开头的所有数据库:
mydumper --regex '^(?!(zs))'
 
# 转储不同数据库中的指定表
mydumper --regex '^(db1\.table1$|db2\.table2$)'
 
# 备份几个数据库但丢弃一些表:
mydumper --regex '^(?=(?:(db1\.|db2\.)))(?!(?:(db1\.table1$|db2\.table2$)))'

4. 备份文件命名

如果使用了 --rows(-r),每个表的备份文件都会被分割成多个文件,文件后会有5个数字填充(该表总数据),5个数字后再跟5个数字(分割后的数据),格式如下 

database.table.chunk.sql(.gz|.zst)

sbtest.sbtest2.00000.00001.sql
sbtest.sbtest2.00000.00003.sql
sbtest.sbtest2.00000.00004.sql
sbtest.sbtest2.00000.00006.sql
sbtest.sbtest2.00000.00007.sql
sbtest.sbtest2.00000.00009.sql
sbtest.sbtest2.00000.00010.sql
sbtest.sbtest2.00000.sql

每个表的文件都会写到单独的文件中(没有使用--no-schemas才会有表结构文件)

#建库文件
database-schema-create.sql(.gz|.zst)

#表结构文件
database.table-schema.sql(.gz|.zst)

#表数据文件
database.table.sql(.gz|.zst)

可能各个版本备份出来的文件命名稍有不同,从文件命名可以较为明显的看出该文件的内容,大致总结下文件命名规则如下:

  • metadata:记录开始及结束备份的时间,二进制日志位置和表名以及行数
  • dbname-schema-create.sql:建库语句。
  • dbname.tbname-schema.sql:此表的表结构创建语句。
  • dbname.tbname.sql:该表的插入数据语句(若该表为空 则不存在此文件)。
  • dbname.viewname-schema.sql:创建视图的表(列举出视图字段,然后创建表)。
  • dbname.viewname-schema-view.sql:创建视图的真正语句。
  • dbname.tbname-schema-triggers.sql:创建触发器语句。
  • dbname-schema-post.sql:包含事件、存储过程及函数创建语句(若存在则有该文件)。

5. 备份原理

备份流程

主要步骤概括

  1. 主线程 FLUSH TABLES WITH READ LOCK , 施加全局只读锁,以阻止 DML 语句写入,保证数据的一致性;
  2. 读取当前时间点的二进制日志文件名和日志写入的位置并记录在 metadata 文件中,以供即时点恢复使用;
  3. N 个(线程数可以指定,默认是 4个)dump 线程 START TRANSACTION WITH CONSISTENT SNAPSHOT ; 开启读一致的事物;
  4. dump non-InnoDB tables , 首先导出非事物引擎的表;
  5. 主线程 UNLOCK TABLES 非事物引擎备份完后,释放全局只读锁;
  6. dump InnoDB tables , 基于事物导出 InnoDB 表;
  7. 事物结束。

6. myloader参数

参数简写描述
连接参数
--host-h连接的MySQL数据库服务器
--user-u连接数据库的用户
--password-p连接数据库用户的密码
--ask-password-a提示输入用户的密码
--port-PMySQL数据库端口
--socket-S用于连接的 UNIX 域套接字文件
--protocol用于连接的协议(tcp、socket)
--compress-protocol-C对 MySQL 连接使用压缩
--ssl使用 SSL 连接
--ssl-mode连接到服务器所需的安全状态:DISABLED、PREFERRED、REQUIRED、VERIFY_CA、VERIFY_IDENTITY
--key密钥文件的路径名
--cert证书文件的路径名
--ca证书颁发机构文件的路径名
--capath包含 PEM 格式的受信任 SSL CA 证书的目录的路径名
--cipher用于 SSL 加密的允许密码列表
--tls-version服务器允许哪些协议进行加密连接
过滤选项
--regex-x'db.table' 匹配的正则表达式
--source-db-s要还原的数据库,-s db1 -B db2,表示源库中的db1数据库,导入到db2数据库中。
--skip-triggers不导入触发器,默认导入
--skip-post不导入事件、存储过程和函数,默认都导入
--skip-constraints不导入约束,默认导入
--skip-indexes不导入innodb表的二级索引,默认导入
--no-data不导入表数据
--omit-from-file-O包含要跳过的数据库.表条目列表的文件,每行一个(在应用正则表达式选项之前跳过)
--tables-list-T要备份的表列表,以逗号分隔(不排除正则表达式选项)。 表名必须包含数据库名。 例如:test.t1,test.t2
PMM选项
--pmm-path默认值为 /usr/local/percona/pmm2/collectors/textfile-collector/high-resolution
--pmm-resolution默认值较高
Execution选项
--enable-binlog-e启用恢复数据的二进制日志记录
--innodb-optimize-keys创建不包含索引的表,并在末尾添加索引。选项:AFTER_IMPORT_PER_TABLE和AFTER_IMPORT_ALL_TABLES。默认值:AFTER_IMPORT_PER_TABLE
--no-schema不导入表结构和触发器
--purge-mode这指定了截断模式,可以是:FAIL、NONE、DROP、truncate和DELETE。未设置默认值:FAIL
--disable-redo-log禁用REDO_LOG并在之后启用它,不检查初始状态
--checksum校验和:skip, fail, warn(默认)。
--overwrite-tables-o如果表存在则删除表
--overwrite-unsafe与--overwrite-tables相同,但尽量快速数据加载。可能导致外键的InnoDB死锁
--retry-count锁等待超时超过重试计数,默认为10(当前仅适用于DROP TABLE)
--serialized-table-creation表的重新创建将以串行方式执行,每次执行一个线程。这意味着架构创建的最大线程数=1。此选项将在以后的版本中删除
--stream它将从STDIN接收流,并在开始处理之前在磁盘中创建文件。自v0.12.7-1起,接受NO_DELETE、NO_STREAM_AND_NO_DELETE和TRADICTIONAL(这是默认值,在未给定参数的情况下使用)
Threads选项
--max-threads-per-table每张表要使用的最大线程数,默认为--threads
--max-threads-for-index-creation用于创建索引的最大线程数,默认为4
--max-threads-for-post-actions操作后的最大线程数,如:约束、过程、视图和触发器,默认为1
--max-threads-for-schema-creation用于创建schema的最大线程数。当它设置为1时,与序列化表创建相同,默认为4
--exec-per-thread设置STDIN将从输入文件接收的命令,并写入STDOUT
--exec-per-thread-extension当使用--exec-per-thread时,设置输入文件扩展名。否则将被忽略
Statement选项
--rows-r将INSERT语句拆分成多行
--queries-per-transaction-q每个事务的查询数,默认为1000
--append-if-not-exist将IF NOT EXISTS追加到创建表语句中。当https://bugs.mysql.com/bug.php?id=103791已实施
--set-names设置名称,使用风险自负,默认二进制
--skip-definer从CREATE语句中删除DEFINER。默认情况下,不修改语句
Application选项
--help-?帮助选项
--directory-d导入的目录
--logfile-L要使用的日志文件名,默认情况下使用stdout
--database-B要恢复到的备用数据库
--quote-character-QINSERT语句中使用的标识符引号字符,可以是`或者",默认从导出的文件中读取
--resume期望在备份目录中找到恢复文件,并且只处理这些文件
--threads-t要使用的线程数,默认 4
--version-V显示程序版本并退出
--verbose-v输出的详细程度,0 = silent, 1 = errors, 2 = warnings, 3 = info, default 2
--debug打开调试输出(自动将verbosity设置为3)
--defaults-file使用特定的默认文件。 默认值:/etc/mydumper.cnf
--defaults-extra-file使用额外的默认文件。 这是在 --defaults-file 之后加载的,替换以前定义的值
--fifodir需要时将在其中创建 FIFO 文件的目录。 默认值:与备份相同

7. 恢复例子

7.1 恢复指定库

myloader -u root -p 123456 -s zs,python -d /backup

7.2 将源库的zs库导入备库的zs01库

myloader -u root -p 123456 -B zs01 -s zs -d /backup

7.3 导入特定的表

在导出的目录中选择metadata文件和需要单独导入的表的结构文件和数据文件移到一个新目录下,最好提前建好库表,否则需要把建库表的文件一起移动到新目录,移动到新目录后可以使用myloader指定新目录进行恢复数据。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/603201.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

计算机毕业设计 | springboot+vue凌云在线阅读平台 线上读书系统(附源码)

1&#xff0c;绪论 随着社会和网络技术的发展&#xff0c;网络小说成为人们茶钱饭后的休闲方式&#xff0c;但是现在很多网络小说的网站都是收费的&#xff0c;高额的收费制度是很多人接受不了的&#xff0c;另外就是很多小说网站都会有大量的弹窗和广告&#xff0c;这极大的影…

YOLO组件之C2f模块介绍

C2F类是yolo算法中的组件之一&#xff0c;该类是一个继承自 nn.Module 的神经网络模块。 1. C2f 类的前向传播过程 首先将输入数据经过第一个卷积层 cv1&#xff0c;然后将输出分为两个部分。其中一个部分直接传递给输出&#xff0c;另一个部分经过多个 Bottleneck 模块的处理…

Xinstall助力推广结算统计,让数据一目了然

在当今数字化营销的时代&#xff0c;推广活动的成功与否往往取决于精准的数据统计和分析。然而&#xff0c;对于许多广告主和开发者来说&#xff0c;推广结算统计却是一个令人头疼的问题。数据分散、渠道繁多、统计口径不一&#xff0c;这些问题都给推广效果的衡量带来了极大的…

Unity图文混排EmojiText的使用方式和注意事项

​​​​​​​ 效果演示&#xff1a; 使用方式&#xff1a; 1、导入表情 2、设置图片格式 3、生成表情图集 4、创建/修改目标材质球 5、测试 修复换行问题 修复前&#xff1a; 修复后&#xff1a; 修复代码&#xff1a; 组件扩展 1、右键扩展 2、组件归类&#…

LINUX 入门 4

LINUX 入门 4 day6 7 20240429 20240504 耗时&#xff1a;240min 课程链接地址 第4章 LINUX环境编程——实现线程池 C基础 第3节 #define里面的行不能乱空行&#xff0c;要换行就打\ typedef 是 C 和 C 中的一个关键字&#xff0c;用于为已有的数据类型定义一个新的名字。…

新书速览|图神经网络基础、模型与应用实战

掌握PyTorch图神经网络基础与模型&#xff0c;实战自然语言处理、计算机视觉、推荐系统、社交网络应用开发 01 本书内容 图神经网络不仅能够解决传统机器学习方法无法解决的图数据问题&#xff0c;而且能够应用于许多实际场景&#xff0c;例如社交网络、药物发现、网络安全、…

新手向的s2-046漏洞复现

一、前期准备 1.docker容器 作为第一次接触struts2漏洞类型的小白&#xff0c;第一步从搭建环境开始。首先我们需要准备一个服务器或者本地系统&#xff0c;我这里是使用本地的kali&#xff0c;kali里面需要有docker容器&#xff0c;docker容器的安装教程请自行搜索&#xff0c…

女性名字有孤寡数,易离婚

丁老师&#xff1a;您好&#xff01;我孩子&#xff08;女孩&#xff09;准备取名&#xff1a;周小程&#xff0c;宝宝出生于阳历2016年8月13号16时30分左右&#xff0c;准备给孩子取个名字&#xff0c;在网上查询了哈&#xff0c;这个名字的分数还蛮高的&#xff0c;99分&…

韦东山嵌入式Liunx驱动大全二

文章目录 一、LCD1-1 不同接口的LCD硬件操作原理1-2 LCD驱动程序框架1-3 结合APP分析LCD驱动程序框架1-4 LCD硬件时序图1-5 分析内核自带的LCD驱动程序1-6 编程LCD驱动程序框架_使用设备树1-7 LCD驱动程序框架_引脚配置1-8 LCD驱动程序框架_时钟配置1-9 LCD驱动程序框架_LCD控制…

1069 微博转发抽奖

solution #include<iostream> #include<string> #include<map> using namespace std; int main(){int n, m, s, loop 0, have 0;string id;map<string, int> mp;cin >> m >> n >> s;for(int i 1; i < m; i){//编号从1开始cin…

专题五_位运算(3)

目录 137. 只出现一次的数字 II 解析 题解 面试题 17.19. 消失的两个数字 解析 题解 137. 只出现一次的数字 II 137. 只出现一次的数字 II - 力扣&#xff08;LeetCode&#xff09; 解析 注意这里指的是比特位上的01来进行统计的 题解 class Solution { public:int sin…

Unity与C#的关系

第一&#xff0c;我们首先需要知道Unity与C#的关系是什么&#xff1f; 第二&#xff0c;我们要明白为什么Unity会使用C#&#xff0c;而不是C&#xff1f; 第三&#xff0c;我们需要知道Unity是怎么使用C#的&#xff1f; 第一点&#xff1a; 先说结论&#xff1a;C#是Unity用…

windows如何安装python框架

windows如何安装Python框架&#xff1f;以安装Django框架为例&#xff0c;具体如下&#xff1a; 在idea上运行Python项目时&#xff0c;出现了如下错误&#xff0c;这是因为系统中只安装了Python&#xff0c;没有安装Django。 既然报错的原因就是缺少Django&#xff0c;那我们…

深度解析 Spring 源码:揭秘 AbstractAutowireCapableBeanFactory 的 Bean 生命周期处理

文章目录 一、AbstractAutowireCapableBeanFactory 概述1.1 详细分析1.2 设计思想 二、深入解析AbstractAutowireCapableBeanFactory 的实现细节2.1 Bean 实例化过程分析2.1.1 createBean()2.1.2 createBeanInstance() 2.2 Bean 属性注入的实现机制2.2.1 populateBean()2.2.2 a…

560. 和为 K 的子数组 974. 和可被 K 整除的子数组 【前缀和】

题目链接 ​​​​​​​974. 和可被 K 整除的子数组 560. 和为 K 的子数组 今天刷题的时候&#xff0c;刷了这两题&#xff0c;感觉挺有意思的。代码写起来挺简单的&#xff0c;但是思路和其中的细节以及涉及到的知识点确实让我挺意外的。这里写个博客解析一波&#xff0c;也是…

Charles抓包工具

Charles是一个HTTP代理工具&#xff0c;使开发人员能够查看客服端和服务器之间的所有HTTP/ HTTPS/SSL网络请求。 Charles是在PC环境下常用的网络抓包截取工具&#xff0c;在做移动开发时&#xff0c;我们为了调试客户端与服务端的网络通讯协议&#xff0c;常常需要截取网络请求…

MCP3008-I/SL 模数转换器ADC SPI接口 模拟信号采集

MCP3008-I/SL 模数转换器ADC 贴片SOIC16 MCP3008-I/SL 是一款模数转换器&#xff08;ADC&#xff09;&#xff0c;属于 SAR&#xff08;逐次逼近寄存器&#xff09;架构的 ADC。它具有以下特点&#xff1a; 8 通道单 ADC 最大采样率&#xff1a;200ksps&#xff08;千样点每秒…

鸿蒙内核源码分析(编译环境篇) | 编译鸿蒙防掉坑指南

几点说明 kernel_liteos_a_note | 中文注解鸿蒙内核 是在 OpenHarmony 的 kernel_liteos_a 基础上给内核源码加上中文注解的版本.与官方源码按月保持同步,同步历史如下: 2021/10/09 – 增加性能优化模块perf,优化了文件映射模块2021/09/14 – common,extended等几个目录结构和M…

文献速递:深度学习医学影像心脏疾病检测与诊断--基于深度学习的低剂量SPECT心肌灌注图像去噪:定量评估与临床表现

Title 题目 Deep learning–based denoising of low‑dose SPECT myocardialperfusion images: quantitative assessment and clinical performance 基于深度学习的低剂量SPECT心肌灌注图像去噪&#xff1a;定量评估与临床表现 01 文献速递介绍 单光子发射计算机断层扫描&a…

uniapp + vue3 设置 axios proxy 代理,并重写路径

uniapp vue2 设置代理如下&#xff1a; 已生成的项目架构里面找到manifest.json文件&#xff0c;通过源码视图的方式打开文件&#xff0c;在文件中添加一下代码即可完成代理&#xff1a; "h5": {"devServer": {"disableHostCheck": true, //禁…
最新文章