Mysql高级篇(下)——数据库备份与恢复

news2024/12/22 19:22:49

Mysql高级篇(下)——数据库备份与恢复

  • 一、物理备份与逻辑备份
    • 1、物理备份
    • 2、逻辑备份
    • 3、对比
    • 4、总结
  • 二、mysqldump实现逻辑备份
    • 1、mysqldump 常用选项
    • 2、mysqldump 逻辑备份语法
      • (1)备份一个数据库
      • (2)备份部分数据库(多个数据库)
      • (3)备份全部数据库
      • (4)备份部分表
      • (5)备份单表的部分数据
      • (6)排除某些表的备份
      • (7)只备份表结构(不包括数据)
      • (8)只备份数据(不包括表结构)
      • (9)备份带有存储过程、触发器和事件的数据库
      • (10)使用 --single-transaction 选项备份
      • (11)压缩备份文件
  • 三、mysql命令恢复数据
      • (1)单库备份中恢复单库
      • (2)全量备份恢复
      • (3)从全量备份中恢复单库
      • (4)从单量备份中恢复单表
  • 四、(了解)物理备份:直接复制整个数据库
  • 五、(了解)物理恢复:直接复制到数据库目录
  • 六、表的导入与导出
    • 1、表的导出方法
    • 2、表的导入方法

一、物理备份与逻辑备份

1、物理备份

物理备份 是对数据库的物理文件进行备份,主要包括数据文件日志文件表空间等。它 不涉及数据 的具体内容,只是对数据库的底层存储文件进行复制。

特点:

  • 速度快:物理备份直接复制数据库文件,相对于逻辑备份,它通常执行得更快,特别是对大数据库。
  • 一致性强:在正确的配置下(如使用锁定机制或结合事务日志),物理备份能够保证数据的完整性和一致性。
  • 备份大小较小:物理备份通常不需要额外的空间来存储表结构,因此备份文件相对较小。
  • 还原速度快:还原时直接复制文件,不需要解析和重建数据,因此还原速度也较快。

常用工具:

  • XtraBackup:开源的物理备份工具,支持热备份,不会锁表,适用于MySQLMariaDB
  • MySQL Enterprise BackupMySQL官方的企业级物理备份工具,提供更多企业级功能。

使用场景:

  • 适用于大规模数据库需要快速备份和还原的场景。
  • 需要保证备份数据的一致性时。

2、逻辑备份

逻辑备份 是将数据库中的结构和数据以SQL脚本或其他格式导出,导出的文件包含SQL语句,如CREATETABLEINSERT等。

特点:

  • 备份灵活:可以选择备份某些表或某些数据库,灵活性较高。
  • 跨平台性强:逻辑备份导出的文件是SQL语句,可以方便地在不同版本或不同架构的MySQL实例间迁移。
  • 备份文件较大:因为包含了大量的SQL语句,逻辑备份生成的文件通常比物理备份大。
  • 速度较慢:备份和还原时需要处理大量的SQL语句,速度相对较慢,尤其是数据量较大的情况下。
  • 易于编辑:备份后的文件是文本文件,可以方便地进行修改。

常用工具:

  • mysqldumpMySQL内置的逻辑备份工具,能导出表结构和数据。
  • mysqlpumpMySQL官方提供的更高效的逻辑备份工具,支持并发导出。

使用场景:

  • 小规模数据库不需要频繁备份的大型数据库
  • 跨平台跨版本的数据库迁移场景。
  • 备份某些特定的表数据库时。

3、对比

特性物理备份逻辑备份
备份速度
还原速度
备份大小较小较大
灵活性较低较高
数据一致性需要额外配置
备份文件格式数据文件SQL文件或文本文件
适用场景大型数据库、频繁备份需求小型数据库、跨平台迁移场景

4、总结

  • 物理备份 更适合大型生产环境,特别是在需要快速备份和恢复的场景中,如企业级部署中。
  • 逻辑备份 则适用于小规模数据库,或需要在不同环境间进行迁移的场景。

二、mysqldump实现逻辑备份

1、mysqldump 常用选项

mysqldump 是一个强大的 MySQL 备份工具,它提供了很多选项来定制备份操作。以下是一些常用的 mysqldump 选项及其作用:

在这里插入图片描述


2、mysqldump 逻辑备份语法

mysqldump 是一个灵活的 MySQL 备份工具,可以通过不同的选项来备份整个数据库、多个数据库、部分表或只备份特定表的部分数据。下面我将详细介绍如何使用 mysqldump 备份数据库的不同部分,给出每种情况的完整命令示例。

(1)备份一个数据库

mysqldump -u 用户名 【-h 主机名 -P 端口号】  -p 【密码】 待备份数据库名 > 备份文件名.sql
  • 备份文件后缀并非必须以.sql结尾,后缀名为.txt也是可以的

(2)备份部分数据库(多个数据库)

mysqldump -u 用户名 【-h 主机名 -P 端口号】  -p 【密码】 --databases  db1 db2 db3 > 备份文件名.sql

(3)备份全部数据库

mysqldump -u 用户名 【-h 主机名 -P 端口号】  -p 【密码】 --all-databases > 备份文件名.sql

(4)备份部分表

mysqldump -u 用户名 【-h 主机名 -P 端口号】  -p 【密码】 db tb1 tb2 > 备份文件名.sql
  • 备份数据库 db 中的表 tb1tb2

(5)备份单表的部分数据

mysqldump -u 用户名 【-h 主机名 -P 端口号】  -p 【密码】 db tb --where="id < 100" > 备份文件名.sql
  • 使用 --where 选项可以指定 WHERE 条件,只导出符合条件的数据。例如,备份 tb 表中 id 小于 100 的数据:

(6)排除某些表的备份

mysqldump -u 用户名 【-h 主机名 -P 端口号】  -p 【密码】 --ignore-table=db.tb db > 备份文件名.sql
  • 如果想备份整个数据库,但排除特定的表,可以使用 --ignore-table 选项。例如,要备份 db,但排除 db 中的 tb 表:

(7)只备份表结构(不包括数据)

mysqldump -u 用户名 【-h 主机名 -P 端口号】  -p 【密码】 --no-data db > 备份文件名.sql
  • 使用 --no-data 选项,只备份表结构,而不备份表数据。例如,要备份 db 的表结构:

(8)只备份数据(不包括表结构)

mysqldump -u 用户名 【-h 主机名 -P 端口号】  -p 【密码】 --no-create-info db > 备份文件名.sql
  • 使用 --no-create-info 选项,只备份表数据,而不备份 CREATE TABLE 语句。例如,要备份 db表数据


(9)备份带有存储过程、触发器和事件的数据库

mysqldump -u 用户名 【-h 主机名 -P 端口号】  -p 【密码】 --routines --triggers --events db > 备份文件名.sql
  • --routines:包含存储过程函数
  • --triggers:包含表上的触发器
  • --events:包含事件调度器

(10)使用 --single-transaction 选项备份

如果你正在备份的是一个 支持事务InnoDB 数据库,并且希望在备份时不锁定表(减少对运行中的应用的影响),可以使用 --single-transaction 选项:

--single-transaction 会在备份时启动一个事务,从而确保备份数据的一致性而不需要锁表。

mysqldump -u 用户名 【-h 主机名 -P 端口号】  -p 【密码】 --single-transaction db > 备份文件名.sql

(11)压缩备份文件

如果希望 备份文件体积更小,可以直接将输出通过 gzip 压缩,这样备份文件将会生成压缩文件,体积较小,便于存储和传输。:

mysqldump -u 用户名 【-h 主机名 -P 端口号】  -p 【密码】  db | gzip > 备份文件名.sql.gz

三、mysql命令恢复数据

MySQL 中恢复数据通常使用的是 mysql 命令来执行之前使用 mysqldump 导出的 SQL 文件。

(1)单库备份中恢复单库

如果备份文件中 包含创建数据库的语句,则恢复的时候 不需要 指定数据库的名称,否则 要指定数据库名称

# 不指定数据库名称
mysql -u 用户名 【-h 主机名 -P 端口号】  -p 【密码】 < 备份文件名.sql

# 指定数据库名称 db

mysql -u 用户名 【-h 主机名 -P 端口号】  -p 【密码】 db < 备份文件名.sql


(2)全量备份恢复

如果使用了 --all-databases参数备份了所有数据库,那么恢复时不需要指定数据库

# 不指定数据库名称
mysql -u 用户名 【-h 主机名 -P 端口号】  -p 【密码】 < 备份文件名.sql


(3)从全量备份中恢复单库

全量备份文件(即备份了多个数据库的 SQL 文件)中恢复指定的数据库

  • 方法一:使用 sed 提取指定数据库的内容
  1. 检查备份文件:首先,你可以检查备份文件,确认它是否包含多个数据库的内容,并确认你要恢复的数据库的名称。
head -n 50 all_databases_backup.sql
  1. 提取指定数据库: 使用 sed 提取指定数据库的内容。例如,假设备份文件中数据库的名称是 mydatabase,可以用以下命令提取该数据库的 SQL 语句到单独的文件中:
sed -n '/^-- Current Database: `mydatabase`/,/^-- Current Database: `/p' all_databases_backup.sql > mydatabase_backup.sql
  • 这条命令的作用是从备份文件 all_databases_backup.sql 中找到标识数据库 mydatabase 的部分,并将其提取到 mydatabase_backup.sql 文件中。
  1. 恢复提取后的数据库: 提取完成后,可以像正常备份文件一样恢复该数据库:
mysql -u root -p mydatabase < mydatabase_backup.sql

  • 方法二:使用 mysql 客户端中的 --one-database 选项

MySQL 提供了 --one-database 选项,可以 直接 从包含多个数据库的备份文件中恢复指定的数据库。这是更为直接的方法。

mysql -u root -p --one-database mydatabase < all_databases_backup.sql

(4)从单量备份中恢复单表

  1. 提取表结构:使用 sed 从备份文件中提取 table 表的创建语句。
  2. 提取表数据:使用 grep 提取 table 表的所有插入数据的语句。
  3. 恢复表结构和数据:在 MySQL 中先执行 table_structure.sql 来创建表,然后执行 table_data.sql 来插入数据。
# 1. 提取 table 表的表结构
cat db.sql | sed -e '/./{H;$!d;}' -e 'x;/CREATE TABLE class/!d;q' > table_structure.sql  


# 2. 提取 table 表的数据
cat db.sql | grep --ignore-case 'insert into table' > table_data.sql 


# 3. 恢复表结构和数据
use db;

mysql> source table_structure.sql;

mysql> source table_data.sql;

命令解析:

在这里插入图片描述
在这里插入图片描述


四、(了解)物理备份:直接复制整个数据库

物理备份是指 直接复制数据库文件和相关数据存储文件,作为一种备份策略,它与逻辑备份(导出SQL语句等)有所不同。物理备份通过操作系统级别的文件操作,复制数据库数据文件日志文件配置文件,能更快地备份和恢复数据,因为它避免了数据库引擎对数据的解析。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述


在这里插入图片描述


示例:

你在一台 Linux 服务器上运行 MySQL,数据库的目录位于 /var/lib/mysql/,你需要对数据库进行备份,同时保证数据库在备份时的一致性。

备份步骤举例:

1、找到 MySQL 数据库文件目录
首先,你确认数据库的存放路径是 /var/lib/mysql/。

2、执行 FLUSH TABLES WITH READ LOCK
假设你的数据库正在运行,无法停止 MySQL 服务。你可以选择使用 FLUSH TABLES WITH READ LOCK 命令来锁定表,以防止其他客户端在备份时修改数据。

登录 MySQL 客户端:
mysql -u root -p

输入密码后,执行命令:
FLUSH TABLES WITH READ LOCK;
此命令会将所有表的写入操作锁定,并把活跃的索引数据写入磁盘。

3、备份数据库文件
在一个新终端中(因为 FLUSH TABLES WITH READ LOCK 会锁定当前会话,不能关闭),使用 cp 命令复制整个数据库目录:
cp -r /var/lib/mysql /path/to/backup/
这一步是将数据库文件复制到备份位置。需要确保目标位置有足够的存储空间。


4、解锁表
文件备份完成后,回到之前的 MySQL 会话中,执行 UNLOCK TABLES 命令解锁表:
UNLOCK TABLES;
这一步会允许其他客户端继续对数据库表进行写操作。

5、验证备份是否成功
你可以通过检查 /path/to/backup/ 目录下的文件,确保所有数据文件已经被完整地复制。




恢复步骤(可选):

在需要恢复备份时,可以将备份的文件复制回原始的数据库目录,或在新服务器上安装同样版本的 MySQL,并将备份的文件复制到新的数据库目录下。

恢复的步骤为:
cp -r /path/to/backup/mysql /var/lib/mysql/
确保文件权限和用户与 MySQL 服务匹配,然后重新启动 MySQL 服务。





总结:
通过 FLUSH TABLES WITH READ LOCK 确保数据在备份时保持一致性,然后复制数据库文件,最后解锁表。
整个过程不需要停止服务,保证了系统的高可用性。

1. 冷备份例子

冷备份就是在数据库关闭时复制整个数据库文件,步骤如下:

步骤 1:关闭 MySQL 服务,确保没有活动的读写操作。
sudo systemctl stop mysql


步骤 2:找到 MySQL 数据库的存储位置。通常在 MySQL 的配置文件 my.cnf 中会有 datadir 指定数据库文件的存储路径,比如:
datadir=/var/lib/mysql


步骤 3:使用 cp 命令直接复制整个数据库文件夹到备份目录。
sudo cp -r /var/lib/mysql /backup/mysql_backup_2024-10-07


步骤 4:重新启动 MySQL 服务。
sudo systemctl start mysql



恢复过程:如果需要恢复,只需关闭 MySQL 服务,然后将备份文件复制回原来的路径,并重新启动 MySQL 服务即可。
sudo systemctl stop mysql
sudo cp -r /backup/mysql_backup_2024-10-07 /var/lib/mysql
sudo systemctl start mysql

2. 热备份例子

热备份允许你在数据库运行时进行备份,常见的工具是 Percona XtraBackup,它可以对 MySQL 数据库进行热备份。以下是一个使用 Percona XtraBackup 工具进行物理备份的例子。

步骤 1:安装 Percona XtraBackup(以 Ubuntu 为例)。
sudo apt-get install percona-xtrabackup-80

步骤 2:运行备份命令,在数据库运行的情况下备份数据文件到指定目录。
xtrabackup --backup --target-dir=/backup/mysql_backup_2024-10-07 --datadir=/var/lib/mysql

步骤 3:XtraBackup 生成的备份是非一致性状态的,需要应用日志文件以确保数据一致性。
xtrabackup --prepare --target-dir=/backup/mysql_backup_2024-10-07


恢复过程:停止 MySQL 服务后,将备份文件恢复到 MySQL 的数据目录中。
sudo systemctl stop mysql
sudo cp -r /backup/mysql_backup_2024-10-07 /var/lib/mysql
sudo systemctl start mysql

总结
冷备份:简单直接,通过文件系统复制数据库文件进行备份,适用于小型系统,但需要停机。
热备份:适用于运行中的大型系统,保证备份时数据的一致性,不需要停机,恢复速度也很快。


五、(了解)物理恢复:直接复制到数据库目录

在这里插入图片描述

演示过程

假设有一个备份的 MySQL 数据库,文件名为 mydb_backup,你需要恢复到 /var/lib/mysql/ 目录下。

1、停止 MySQL 服务: 在恢复数据之前,需要先停止 MySQL 服务以确保数据不会被访问或修改:
sudo systemctl stop mysql

2、清理旧数据: 如果已经存在相同数据库的旧数据,你可以删除旧的数据库文件:
sudo rm -rf /var/lib/mysql/mydb

3、复制备份文件: 将备份的数据库文件复制到 MySQL 数据目录下:
sudo cp -r /path/to/mydb_backup /var/lib/mysql/mydb

4、设置文件权限: 使用 chown 命令修改文件权限,确保 MySQL 能够正确访问数据库文件:
sudo chown -R mysql:mysql /var/lib/mysql/mydb

5、启动 MySQL 服务: 恢复完成后,重新启动 MySQL 服务:
sudo systemctl start mysql

6、验证恢复结果: 登录 MySQL 查看是否能够访问和使用恢复的数据库:
mysql -u root -p
SHOW DATABASES;


通过这几个步骤,你就完成了 MySQL 数据库的物理文件恢复操作。
在这个过程中,最重要的是确保备份与恢复环境的 MySQL 版本号一致,并正确设置文件权限。

六、表的导入与导出

1、表的导出方法

1. 使用 SELECT... INTO OUTFILE 导出文本文件:

  • 该方法将查询结果直接写入服务器的一个文件中。
  • 示例:
SELECT * FROM your_table
INTO OUTFILE '/path/to/output/file.txt'
FIELDS TERMINATED BY ','
LINES TERMINATED BY '\n';

这种方法生成的文件保存在数据库服务器上,注意使用相应的文件路径权限


2. 使用 mysqldump 命令导出文本文件:

  • mysqldump 是一个实用工具,用于导出数据库的结构和数据到文件。
  • 示例:
mysqldump -u root -p your_database your_table > /path/to/output/file.sql

该命令会将 your_table 导出到指定的 .sql 文件中,通常用于备份。


3. 使用 mysql 命令导出文本文件:

  • 这个方法常常结合导出查询结果为文本文件。
  • 示例:
mysql -u root -p -e "SELECT * FROM your_table" > /path/to/output/file.txt

通过这种方式,你可以使用 mysql 命令直接输出查询结果到指定文件。


2、表的导入方法

1. 使用 LOAD DATA INFILE 导入文本文件:

  • 该命令将文本文件的数据直接加载到表中。
  • 示例:
LOAD DATA INFILE '/path/to/input/file.txt'
INTO TABLE your_table
FIELDS TERMINATED BY ','
LINES TERMINATED BY '\n';


这种方式要求导入的文件与表的结构相匹配,并且文件必须位于数据库服务器上。


2. 使用 mysqlimport 方式导入文本文件:

  • mysqlimport 是导入数据到表的命令行工具。
  • 示例:
mysqlimport --local -u root -p your_database /path/to/input/file.txt

这条命令会将文件中的数据导入到表中,要求文件格式与表结构相符


总结
这些方法在数据导入和导出时各有不同的应用场景,像 SELECT INTO OUTFILE 适合于 简单的数据导出,而 mysqldumpmysqlimport 更适合 做备份和还原

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

linux自动挂载tf卡

本人使用的是armbian系统&#xff0c;ssh工具使用的是finalshell&#xff0c;挂载的是一张64G TF卡。 1.查看系统所检测到的磁盘&#xff0c;这里的 sda1检测到的硬盘但是没有被挂载 lsblk //查看信息 2.在根目录新建一个目录tfcard用于挂载硬盘&#xff0c;命令如下&#xf…

【万字长文】Word2Vec计算详解(一)

【万字长文】Word2Vec计算详解&#xff08;一&#xff09; 写在前面 本文用于记录本人学习NLP过程中&#xff0c;学习Word2Vec部分时的详细过程&#xff0c;本文与本人写的其他文章一样&#xff0c;旨在给出Word2Vec模型中的详细计算过程&#xff0c;包括每个模块的计算过程&a…

电商选品/跟卖| 亚马逊商品类爬取

电商跟卖,最重要是了解哪些商品可以卖, 哪些商品不能卖, 为了更好了解商品信息,我们会经常爬取商品类目的信息. 需求 亚马逊类目信息链接爬虫 打开亚马逊类目信息地址 https://www.amazon.com/gp/new-releases/automotive/refzg_bsnr_nav_automotive_0 一直递归下去&#x…

云原生(四十七) | PHP软件安装部署

文章目录 PHP软件安装部署 一、PHP软件部署步骤 二、安装与配置PHP PHP软件安装部署 一、PHP软件部署步骤 第一步&#xff1a;安装 EPEL 仓库 与 Remi仓库 第二步&#xff1a;启用 Remi 仓库 第三步&#xff1a;安装 PHP、PHP-FPM 第四步&#xff1a;启动并开机启用 PH…

10.8 sql语句查询(未知的)

1.查询结果去重 关键字:distinct (放在查询的后面) AC: select distinct university from user_profile 2.查询结果限制返回行数 关键字:limit AC: select device_id from user_profile limit 0,2 3.将查询后的列重新命名 关键字:as AC: select device_id as user_infos…

wildcard使用教程,解决绝大多数普通人的海外支付难题

许多人可能已经注意到,国外的一些先进AI工具对国内用户并不开放。而想要使用这些工具,我们通常会面临两个主要障碍:一是网络访问的限制,二是支付问题。网络问题很容易解决&#xff0c;难的是如何解决在国内充值海外软件。 今天给大家推荐一个工具——wildcard&#xff0c;用它…

【CSS in Depth 2 精译_046】7.1 CSS 响应式设计中的移动端优先设计原则(下)

当前内容所在位置&#xff08;可进入专栏查看其他译好的章节内容&#xff09; 第一章 层叠、优先级与继承&#xff08;已完结&#xff09; 1.1 层叠1.2 继承1.3 特殊值1.4 简写属性1.5 CSS 渐进式增强技术1.6 本章小结 第二章 相对单位&#xff08;已完结&#xff09; 2.1 相对…

StoryMaker: Towards Holistic Consistent Characters in Text-to-image Generation

https://arxiv.org/pdf/2409.12576v1https://github.com/RedAIGC/StoryMaker 问题引入 针对的是文生图的模型&#xff0c;现在已经有方法可以实现指定人物id的情况下进行生成&#xff0c;但是还没有办法保持包括服装、发型等整体&#xff0c;本文主要解决这个问题&#xff1b…

时间卷积网络(TCN)原理+代码详解

目录 一、TCN原理1.1 因果卷积&#xff08;Causal Convolution&#xff09;1.2 扩张卷积&#xff08;Dilated Convolution&#xff09; 二、代码实现2.1 Chomp1d 模块2.2 TemporalBlock 模块2.3 TemporalConvNet 模块2.4 完整代码示例 参考文献 在理解 TCN 的原理之前&#xff…

GIS后端工程师岗位职责、技术要求和常见面试题

GIS 后端工程师负责设计、开发与维护地理信息系统的后端服务&#xff0c;包括数据存储、处理、分析以及与前端的交互接口等&#xff0c;以实现高效的地理数据管理和功能支持。 GIS 后端工程师岗位职责 一、系统设计与开发 参与地理信息系统&#xff08;GIS&#xff09;项目的…

安装 Petalinux

资料准备 ubuntu 22.04: 运行内存8G 存储空间500G Petalinux&#xff1a;2024.1 安装流程 安装依赖 sudo apt-get update sudo apt-get upgrade sudo apt-get install iproute2 sudo apt-get install gawk sudo apt-get install build-essential sudo apt-ge…

7.3 物联网平台-Thingsboard使用教程

物联网平台-Thingsboard使用教程 目录概述需求&#xff1a; 设计思路实现思路分析 免费下载参考资料和推荐阅读 Survive by day and develop by night. talk for import biz , show your perfect code,full busy&#xff0c;skip hardness,make a better result,wait for chang…

如何使用ssm实现基于web技术的税务门户网站的实现+vue

TOC ssm820基于web技术的税务门户网站的实现vue 绪论 1.1 研究背景 当前社会各行业领域竞争压力非常大&#xff0c;随着当前时代的信息化&#xff0c;科学化发展&#xff0c;让社会各行业领域都争相使用新的信息技术&#xff0c;对行业内的各种相关数据进行科学化&#xff…

基于matlab的语音信号处理

摘要 利用所学习的数字信号处理知识&#xff0c;设计了一个有趣的音效处理系统&#xff0c;首先设计了几种不同的滤波器对声音进行滤波处理&#xff0c;分析了时域和频域的变化&#xff0c;比较了经过滤波处理后的声音与原来的声音有何变化。同时设计实现了语音的倒放&#xf…

从0开始linux(9)——进程(1)进程管理

欢迎来到博主的专栏&#xff1a;从0开始linux 博主ID&#xff1a;代码小豪 文章目录 查看进程进程管理PID与PPIDfork函数 在上一篇中我们了解到&#xff1a;当运行程序时&#xff0c;操作系统会将磁盘中的二进制文件读取到内存当中&#xff0c;程序运行到结束的过程称为进程&am…

【C++ 11】auto 自动类型推导

文章目录 【 1. 基本用法 】【 2. auto 的 应用 】2.0 auto 的限制2.1 简单实例2.2 auto 与指针、引用、const2.4 auto 定义迭代器2.5 auto 用于泛型编程 问题背景 在 C11 之前的版本&#xff08;C98 和 C 03&#xff09;中&#xff0c;定义变量或者声明变量之前都必须指明它的…

目标检测YOLO实战应用案例100讲-【目标检测】YOLOV11

目录 前言 算法原理 YOLO发展历程 什么是 YOLO11 YOLOv11 的主要特点 YOLO各版本概览 核心优势: YOLOv11改进方向 YOLOv11功能介绍 YOLOv11关键创新 YOLOv11 指标展示 YOLOV11实验 环境设置 准备数据集 训练模型 验证模型 应用领域 一、智慧交通与自动驾…

【Linux实践】实验八:Shell程序的创建及变量

文章目录 实验八&#xff1a;Shell程序的创建及变量实验目的&#xff1a;实验内容&#xff1a;操作步骤&#xff1a;1. 查看环境变量2. 定义变量AK3. 定义变量AM并比较4. 创建Shell程序 实验八&#xff1a;Shell程序的创建及变量 实验目的&#xff1a; 掌握Shell程序的创建过…

【C++】AVL树的底层以及实现

个人主页 文章目录 ⭐一、AVL树的概念&#x1f389;二、AVL树的性质&#x1f3dd;️三、AVL树的实现1. 树的基本结构2. 树的插入3. 树的旋转• 左单旋• 右单旋• 左右双旋• 右左双旋 &#x1f3a1;四、AVL树的其它功能1. 树的查找2. 树的遍历3. 树的高度4. 树的大小 &#x…

RK3568平台开发系列讲解(I2C篇)i2c 总线驱动介绍

🚀返回专栏总目录 文章目录 一、i2c 总线定义二、i2c 总线注册三、i2c 设备和 i2c 驱动匹配规则沉淀、分享、成长,让自己和他人都能有所收获!😄 i2c 总线驱动由芯片厂商提供,如果我们使用 ST 官方提供的 Linux 内核, i2c 总线驱动已经保存在内核中,并且默认情况下已经…