Mysql之数据备份
一.日志
1.MySQL 的日志默认保存位置为
/usr/local/mysql/data
2.修改日志配置文件
vim /etc/my.cnf
[mysqld]
##错误日志,用来记录当MySQL启动、停止或运行时发生的错误信息,默认已开启
log-error=/usr/local/mysql/data/mysql_error.log #指定日志的保存位置和文件名##通用查询日志,用来记录MySQL的所有连接和语句,默认是关闭的
general_log=ON
general_log_file=/usr/local/mysql/data/mysql_general.log##二进制日志(binlog),用来记录所有更新了数据或者已经潜在更新了数据的语句,记录了数据的更改,可用于数据恢复,默认已开启
log-bin=mysql-bin #也可以 log_bin=mysql-bin##慢查询日志,用来记录所有执行时间超过long_query_time秒的语句,可以找到哪些查询语句执行时间长,以便于优化,默认是关闭的
slow_query_log=ON
slow_query_log_file=/usr/local/mysql/data/mysql_slow_query.log
long_query_time=5 #设置超过5秒执行的语句被记录,缺省时为10秒
3.查看通用查询日志是否开启
systemctl restart mysqld
mysql -u root -p
show variables like 'general%';
例:[root@www data]# systemctl restart mysqld
[root@www data]# mysql -u root -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.Your MySQL connection id is 2
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql> show variables like 'general%';
+------------------+-----------------------------------------+
| Variable_name | Value |
+------------------+-----------------------------------------+
| general_log | ON |
| general_log_file | /usr/local/mysql/data/mysql_general.log |
+------------------+-----------------------------------------+
2 rows in set (0.00 sec)
4.查看二进制日志是否开启
show variables like 'log_bin%';
例:mysql> show variables like 'log_bin%';
+---------------------------------+---------------------------------------+
| Variable_name | Value |
+---------------------------------+---------------------------------------+
| log_bin | ON |
| log_bin_basename | /usr/local/mysql/data/mysql-bin |
| log_bin_index | /usr/local/mysql/data/mysql-bin.index |
| log_bin_trust_function_creators | OFF |
| log_bin_use_v1_row_events | OFF |
+---------------------------------+---------------------------------------+
5 rows in set (0.01 sec)
5.查看慢查询日功能是否开启
show variables like '%slow%';
例:mysql> show variables like '%slow%';
+---------------------------+--------------------------------------------+
| Variable_name | Value |
+---------------------------+--------------------------------------------+
| log_slow_admin_statements | OFF |
| log_slow_slave_statements | OFF |
| slow_launch_time | 2 |
| slow_query_log | ON |
| slow_query_log_file | /usr/local/mysql/data/mysql_slow_query.log |
+---------------------------+--------------------------------------------+
5 rows in set (0.00 sec)
6.查看慢查询时间设置
show variables like 'long_query_time';
例:mysql> show variables like 'long_query_time';
+-----------------+----------+
| Variable_name | Value |
+-----------------+----------+
| long_query_time | 5.000000 |
+-----------------+----------+
1 row in set (0.00 sec)
7.在数据库中设置开启慢查询的方法
set global slow_query_log=ON;
例:mysql> set global slow_query_log=ON;
Query OK, 0 rows affected (0.00 sec)
二.日志类型与作用
1.redo 重做日志
- 达到事务一致性(每次重启会重做)
- 确保日志的持久性,防止在发生故障,脏页未写入磁盘。重启数据库会进行redo log执行重做,达到事务一致性
2.undo 回滚日志
- 保证数据的原子性,记录事务发生之前的一个版本,用于回滚,innodb事务可重复读和读取已提交 隔离级别就是通过mvcc+undo实现
3.errorlog 错误日志
- Mysql本身启动,停止,运行期间发生的错误信息
4.slow query log 慢查询日志
- 记录执行时间过长的sql,时间阈值(10s)可以配置,只记录执行成功 另一个作用:在于提醒优化
5.bin log 二进制日志
- 用于主从复制,实现主从同步 记录的内容是:数据库中执行的sql语句
6.relay log 中继日志
- 用于数据库主从同步,将主库发来的bin log保存在本地,然后从库进行回放
7.general log 普通日志
记录数据库的操作明细,默认关闭,开启后会降低数据库性能
三.数据备份的重要性
1.备份的主要目的是灾难恢复
2.在生产环境中,数据的安全性至关重要任何数据的丢失都可能产生严重的后果
3.造成数据丢失的原因
- 程序错误
- 人为操作错误
- 运算错误
- 磁盘故障
- 灾难(如火灾、地震)和盗窃
四.Mysql数据库完全备份
1.从物理与逻辑的角度
- 热备份(联机备份)︰数据库处于运行状态,依赖于数据库的日志文件
- 冷备份:数据库锁定表格(不可写入但可读)的状态下进行备份操作
- 逻辑备份:对数据库逻辑组件(如:表等数据库对象)的备份
2.数据库备份的分类
- 完全备份:每次对数据库进行完整的备份
- 差异备份:备份自从上次完全备份之后被修改过的文件
- 增量备份:只有在上次完全备份或者增量备份后被修改的文件才会被备份
3.常见的备份方法
(1)物理冷备
- 在库中新建表并添加数据
use tour;
create table if not exists info1 (
id int(4) not null auto_increment,
name varchar(10) not null,
sex char(10) not null,
hobby varchar(50),
primary key (id));
insert into info1 values(1,'user1','male','running');
insert into info1 values(2,'user2','female','singing');
例:mysql> use tour;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A
Database changed
mysql> create table if not exists info1 (-> id int(4) not null auto_increment,-> name varchar(10) not null,-> sex char(10) not null,-> hobby varchar(50),-> primary key (id));
Query OK, 0 rows affected (0.02 sec)
mysql> insert into info1 values(1,'user1','male','running');
Query OK, 1 row affected (0.01 sec)
mysql> insert into info1 values(2,'user2','female','singing');
Query OK, 1 row affected (0.00 sec)
- 备份时数据库处于关闭状态,直接打包数据库文件备份速度快,恢复时也是最简单的
systemctl stop mysqld
yum -y install xz
tar Jcvf /opt/mysql_all_$(date +%F).tar.xz /usr/local/mysql/data/
mv /usr/local/mysql/data/ ~
tar Jxvf /opt/mysql_all_2020-11-22.tar.xz
mv /opt/usr/local/mysql/data/ /usr/local/mysql/
例:[root@www data]# systemctl stop mysqld
[root@www data]# yum -y install xz
已加载插件:fastestmirror, langpacks
file:///mnt/repodata/repomd.xml: [Errno 14] curl#37 - "Couldn't open file /mnt/repodata/repomd.xml"
正在尝试其它镜像。
Loading mirror speeds from cached hostfile
软件包 xz-5.2.2-1.el7.x86_64 已安装并且是最新版本
无须任何处理
[root@www data]# tar Jcvf /opt/mysql_all_$(date +%F).tar.xz /usr/local/mysql/data/
[root@www data]# mv /usr/local/mysql/data/ ~
[root@www opt]# tar Jxvf /opt/mysql_all_2023-06-19.tar.xz
[root@www opt]# mv /opt/usr/local/mysql/data/ /usr/local/mysql/
(2)mysqldump专用备份工具
- 完全备份一个或多个完整的库(包括其中所有的表)
mysqldump -u root -p[密码] --databases 库名1 [库名2] … > /备份路径/备份文件名.sql #导出的就是数据库脚本文件
例:[root@www opt]# systemctl restart mysqld.service
[root@www opt]# mysqldump -u root -p --databases tour > /opt/tour.sql
Enter password:
[root@www opt]# mysqldump -u root -p --databases mysql tour > /opt/mysql-tour.sql
Enter password:
- 完全备份 MySQL 服务器中所有的库
mysqldump -u root -p[密码] --all-databases > /备份路径/备份文件名.sql
例:[root@www opt]# mysqldump -u root -p --all-databases > /opt/all.sql
Enter password:
- 完全备份指定库中的部分表
mysqldump -u root -p[密码] 库名 [表名1] [表名2] … > /备份路径/备份文件名.sql
例:[root@www opt]# mysqldump -u root -p -d tour info1 sunset > /opt/tour_info1.sql
Enter password:
- 查看备份文件
grep -v "^--" /opt/kgc_info1.sql | grep -v "^/" | grep -v "^$"
例:[root@www opt]# grep -v "^--" /opt/tour_info1.sql | grep -v "^/" | grep -v "^$"
DROP TABLE IF EXISTS `info1`;
CREATE TABLE `info1` (`id` int(4) NOT NULL AUTO_INCREMENT,`name` varchar(10) NOT NULL,`sex` char(10) NOT NULL,`hobby` varchar(50) DEFAULT NULL,PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8;
DROP TABLE IF EXISTS `sunset`;
CREATE TABLE `sunset` (`id` int(11) DEFAULT NULL,`name` char(4) DEFAULT NULL,`age` int(11) DEFAULT NULL,`sex` char(2) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
(3)启用二进制日志进行增量备份
- 进行增量备份,需要刷新二进制日志
(4)第三方工具备份
- 免费的MySQL热备份软件Percona XtraBackup
4.MySQL完全备份
- 是对整个数据库、数据库结构和文件结构的备份
- 保存的是备份完成时刻的数据库
- 是差异备份与增量备份的基础
5.MySQL完全备份优点
- 备份与恢复操作简单方便
6.MySQL完全备份缺点
- 数据存在大量的重复
- 占用大量的备份空间
- 备份与恢复时间长
7.MySQL完全恢复
(1)恢复数据库
systemctl start mysqld
mysql -u root -p -e 'drop database tour;'
mysql -u root -p -e 'SHOW DATABASES;'
mysql -u root -p < /opt/tour.sql
mysql -u root -p -e 'SHOW DATABASES;'
例:[root@www opt]# systemctl start mysqld
[root@www opt]# mysql -u root -p -e 'drop database tour;'
Enter password:
[root@www opt]# mysql -u root -p -e 'SHOW DATABASES;'
Enter password:
+--------------------+
| Database |
+--------------------+
| information_schema |
| bbs |
| mysql |
| performance_schema |
| sun |
| sys |
+--------------------+
[root@www opt]# mysql -u root -p < /opt/tour.sql
Enter password:
[root@www opt]# mysql -u root -p -e 'SHOW DATABASES;'
Enter password:
+--------------------+
| Database |
+--------------------+
| information_schema |
| bbs |
| mysql |
| performance_schema |
| sun |
| sys |
| tour |
+--------------------+
(2)恢复数据表
当备份文件中只包含表的备份,而不包含创建的库的语句时,执行导入操作时必须指定库名,且目标库必须存在。
mysqldump -u root -p tour info1 > /opt/tour_info1.sql
mysql -u root -p -e 'drop table tour.info1;'
mysql -u root -p -e 'show tables from tour;'
mysql -u root -p tour < /opt/tour_info1.sql
mysql -u root -p -e 'show tables from tour;'
例:[root@www opt]# mysqldump -u root -p tour info1 > /opt/tour_info1.sql
Enter password:
[root@www opt]# mysql -u root -pabc123 -e 'drop table tour.info1;'
mysql: [Warning] Using a password on the command line interface can be insecure.
[root@www opt]# mysql -u root -pabc123 -e 'show tables from tour;'
mysql: [Warning] Using a password on the command line interface can be insecure.
+----------------+
| Tables_in_tour |
+----------------+
| account |
| kiki |
| moon |
| stars |
| sunset |
| t1 |
+----------------+
[root@www opt]# mysql -u root -pabc123 tour < /opt/tour_info1.sql
mysql: [Warning] Using a password on the command line interface can be insecure.
[root@www opt]# mysql -u root -pabc123 -e 'show tables from tour;'
mysql: [Warning] Using a password on the command line interface can be insecure.
+----------------+
| Tables_in_tour |
+----------------+
| account |
| info1 |
| kiki |
| moon |
| stars |
| sunset |
| t1 |
+----------------+
五.Mysql 增量备份
1.开启二进制日志功能
vim /etc/my.cnf
[mysqld]
log-bin=mysql-bin
binlog_format = MIXED #默认格式:STATEMENT(基于SQL语句),ROW(基于行)、MIXED(混合模式)
server-id = 1
systemctl start mysqld
ls -l /usr/local/mysql/data/mysql-bin.*
例:[root@www opt]# systemctl start mysqld
[root@www opt]# ls -l /usr/local/mysql/data/mysql-bin.*
-rw-r----- 1 mysql mysql 1042 6月 19 15:11 /usr/local/mysql/data/mysql-bin.000001
-rw-r----- 1 mysql mysql 177 6月 19 15:52 /usr/local/mysql/data/mysql-bin.000002
-rw-r----- 1 mysql mysql 10154 6月 19 16:07 /usr/local/mysql/data/mysql-bin.000003
-rw-r----- 1 mysql mysql 57 6月 19 15:52 /usr/local/mysql/data/mysql-bin.index
2.可每周对数据库或表进行完全备份
mysqldump -u root -p kgc info1 > /opt/kgc_info1_$(date +%F).sql
mysqldump -u root -p --databases kgc > /opt/kgc_$(date +%F).sql
例:[root@www opt]# mysqldump -u root -p tour info1 > /opt/tour_info1_$(date +%F).sql
Enter password:
[root@www opt]# mysqldump -u root -pabc123 --databases tour > /opt/tour_$(date +%F).sql
mysqldump: [Warning] Using a password on the command line interface can be insecure.
3.可每天进行增量备份操作,生成新的二进制日志文件(例如 mysql-bin.000002)
mysqladmin -u root -p flush-logs
例:[root@www opt]# mysqladmin -u root -pabc123 flush-logs
mysqladmin: [Warning] Using a password on the command line interface can be insecure.
4.插入新数据,以模拟数据的增加或变更
use kgc;
insert into info1 values(3,'user3','male','game');
insert into info1 values(4,'user4','female','reading');
例:[root@www opt]# mysql -troot -pabc123
mysql: [Warning] Using a password on the command line interface can be insecure.
Welcome to the MySQL monitor. Commands end with ; or \g.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql> use tour;
Database changed
mysql> insert into info1 values(3,'user3','male','game');
Ignoring query to other database
mysql> insert into info1 values(4,'user4','female','reading');
Ignoring query to other database
5.再次生成新的二进制日志文件(例如 mysql-bin.000003)
mysqladmin -u root -p flush-logs
例:[root@www opt]# mysqladmin -u root -pabc123 flush-logs
mysqladmin: [Warning] Using a password on the command line interface can be insecure.
6.查看二进制日志文件的内容
cp /usr/local/mysql/data/mysql-bin.000002 /opt/
mysqlbinlog --no-defaults --base64-output=decode-rows -v /opt/mysql-bin.000002
例:[root@www opt]# cp /usr/local/mysql/data/mysql-bin.000002 /opt/
[root@www opt]# mysqlbinlog --no-defaults --base64-output=decode-rows -v /opt/mysql-bin.000002
/*!50530 SET @@SESSION.PSEUDO_SLAVE_MODE=1*/;
/*!50003 SET @OLD_COMPLETION_TYPE=@@COMPLETION_TYPE,COMPLETION_TYPE=0*/;
DELIMITER /*!*/;
# at 4
#230619 15:31:31 server id 1 end_log_pos 123 CRC32 0xcf970784 Start: binlog v 4, server v 5.7.41-log created 230619 15:31:31 at startup
ROLLBACK/*!*/;
# at 123
#230619 15:31:31 server id 1 end_log_pos 154 CRC32 0x519bcca2 Previous-GTIDs
# [empty]
# at 154
#230619 15:52:29 server id 1 end_log_pos 177 CRC32 0xf8dd4e78 Stop
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*/;
六.Mysql 增量恢复
1.一般恢复
- 模拟丢失更改的数据的恢复步骤
use kgc;
delete from info1 where id=3;
delete from info1 where id=4;
mysqlbinlog --no-defaults /opt/mysql-bin.000002 | mysql -u root -p
例:mysql> use tour;
Database changed
mysql> delete from info1 where id=3;
Ignoring query to other database
mysql> delete from info1 where id=4;
Ignoring query to other database
mysql> quit
Bye
[root@www opt]# mysqlbinlog --no-defaults /opt/mysql-bin.000002 | mysql -u root -p
Enter password:
- 模拟丢失所有数据的恢复步骤
use kgc;
drop table info1;
mysql -u root -p kgc < /opt/kgc_info1_2020-11-22.sql
mysqlbinlog --no-defaults /opt/mysql-bin.000002 | mysql -u root -p
例:mysql> use tour;
Database changed
mysql> drop table info1;
Ignoring query to other database
mysql> quit
Bye
[root@www opt]# mysql -u root -p tour < /opt/tour_info1_2023-06-19.sql
Enter password:
[root@www opt]# mysqlbinlog --no-defaults /opt/mysql-bin.000002 | mysql -u root -p
Enter password:
2.断点恢复
mysqlbinlog --no-defaults --base64-output=decode-rows -v /opt/mysql-bin.000002
例:[root@www opt]# mysqlbinlog --no-defaults --base64-output=decode-rows -v /opt/mysql-bin.000002
/*!50530 SET @@SESSION.PSEUDO_SLAVE_MODE=1*/;
/*!50003 SET @OLD_COMPLETION_TYPE=@@COMPLETION_TYPE,COMPLETION_TYPE=0*/;
DELIMITER /*!*/;
# at 4
#230619 15:31:31 server id 1 end_log_pos 123 CRC32 0xcf970784 Start: binlog v 4, server v 5.7.41-log created 230619 15:31:31 at startup
ROLLBACK/*!*/;
# at 123
#230619 15:31:31 server id 1 end_log_pos 154 CRC32 0x519bcca2 Previous-GTIDs
# [empty]
# at 154
#230619 15:52:29 server id 1 end_log_pos 177 CRC32 0xf8dd4e78 Stop
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*/;
- 基于位置恢复
mysqlbinlog --no-defaults --stop-position='623' /opt/mysql-bin.000002 | mysql -uroot -p
mysqlbinlog --no-defaults --start-position='623' /opt/mysql-bin.000002 | mysql -uroot -p
例:[root@www opt]# mysqlbinlog --no-defaults --stop-position='623' /opt/mysql-bin.000002 | mysql -uroot -p
Enter password:
[root@www opt]# mysqlbinlog --no-defaults --start-position='623' /opt/mysql-bin.000002 | mysql -uroot -p
Enter password:
- 基于时间点恢复
mysqlbinlog --no-defaults --stop-datetime='2020-11-22 16:41:24' /opt/mysql-bin.000002 |mysql -uroot -p
mysqlbinlog --no-defaults --start-datetime='2020-11-22 16:41:24' /opt/mysql-bin.000002 |mysql -uroot -p
例:[root@www opt]# mysqlbinlog --no-defaults --stop-datetime='2023-06-19 16:41:24' /opt/mysql-bin.000002 |mysql -uroot -p
Enter password:
[root@www opt]# mysqlbinlog --no-defaults --start-datetime='2023-06-19 16:41:24' /opt/mysql-bin.000002 |mysql -uroot -p
Enter password:
- 如果恢复某条SQL语句之前的所有数据,就stop在这个语句的位置节点或者时间点
- 如果恢复某条SQL语句以及之后的所有数据,就从这个语句的位置节点或者时间点start
相关文章:
Mysql之数据备份
一.日志 1.MySQL 的日志默认保存位置为 /usr/local/mysql/data2.修改日志配置文件 vim /etc/my.cnf [mysqld] ##错误日志,用来记录当MySQL启动、停止或运行时发生的错误信息,默认已开启 log-error/usr/local/mysql/data/mysql_error.log #指定日志的…...

【数据库数据恢复】SQL Server数据表结构损坏的数据恢复案例
数据库故障&分析: SQL server数据库数据无法读取。 经过初检,发现SQL server数据库文件无法被读取的原因是因为底层File Record被截断为0,无法找到文件开头,数据表结构损坏。镜像文件的前面几十M空间和中间一部分空间被覆盖掉…...

C语言/C++ 之 打飞机游戏
【项目简介】 1、设计思想:本项目主要是为了实现打飞机游戏,主要包括5个函数模块,和1个主函数框架。分别是chu_shi_hua();、you_cao_zuo;、wu_cao_zuo();、show();、main();等。项目完成过程中主要运用了C/C中的输入输…...
在 Docker 中部署 Mino 并挂载配置文件
创建本地目录 首先,在主机上创建一个目录,用于存放 Mino 的配置文件。例如,创建一个名为 mino 的目录,用于存放 Mino 的配置文件。 mkdir mino拉取 Mino 镜像 使用以下命令从 Docker Hub 上拉取 Mino 的最新镜像: …...

无限脉动:释放音乐和区块链在音乐领域的力量
音乐是一种永恒的通用语言,它将人们聚集在一起,超越了边界,在我们灵魂深处产生共鸣,创造联系。在当今数字时代,随着区块链技术和去中心化网络的出现,音乐世界正在经历一场深刻的变革。 我们在与艺术家合作&…...

读发布!设计与部署稳定的分布式系统(第2版)笔记09_一窝蜂和容量
1. 停电事故后电力恢复的方式 1.1. 停电后常见的情形是,送电几秒钟后又再次断电 1.2. 数百万台空调和冰箱的用电需求,使刚刚恢复的电力供应发生过载 1.3. 当电力供应不足时,增加的电流很快就到达满负荷,导致过载,触…...
详解java定时任务
在我们编程过程中如果需要执行一些简单的定时任务,无须做复杂的控制,我们可以考虑使用JDK中的Timer定时任务来实现。下面LZ就其原理、实例以及Timer缺陷三个方面来解析java Timer定时器。 一、简介 在java中一个完整定时任务需要由Timer、TimerTask两个…...

PCIe卡设计方案:单路12Gsps 3G 带宽模拟信号源PCIe卡
一、板卡概述 单路3G带宽模拟信号源卡由DA子卡和PCIe底板组成,二者通过标准FMC连接器互联,可以实现将PCIe总线数据转换为一路高速的模拟量输出。北京太速科技板可广泛用于雷达、通信、光电领域的噪声信号、毛刺、脉冲信号模拟产生等领域。 二、 …...
第1章 计算机网络和因特网
1、主机或端系统通过( )接入因特网。 A. ISPB. 调制解调器C. 交换机D. 路由器 P21:端系统(PC、智能手机、Web 服务器、电子邮件服务器等)经过一个接入 ISP 与因特网相连。 2、主机一般被划分为两类:客…...

QT入门基础知识
什么是QT QT是一个跨平台的C图像用户界面应用程序框架QT在1991年由奇趣科技开发QT的优点 跨平台,几乎支持所有平台接口简单,容易上手一定程度上简化了内存回收机制有很好的社区氛围可以进行嵌入式开发 QWidget QT注意事项 命名规范 类名 首字母大写,单…...

Leetcode---350周赛
题目列表 6901. 总行驶距离 6890. 找出分区值 6893. 特别的排列 6447. 给墙壁刷油漆 一、总行驶距离 很显然,这题单纯就是一道数学应用题,我们要明白最关键的一点 :只有当mainTank>5并且additionalTank>0时,才能发生副油…...
Django通过Nginx和uWSGI实现负载均衡
Django是一款非常流行的Web应用程序框架,它允许开发人员以快速、简单和灵活的方式构建可扩展和可维护的Web应用程序。当你的应用程序开始变得越来越受欢迎时,你可能会发现需要使用负载均衡来确保应用程序的可用性和性能。在本文中,我们将介绍…...

单元测试框架——Junit5
文章目录 Junit1. 注解2.断言3.测试用例执行顺序4.测试套件Suite1) 指定多个类2) 指定包 5. 参数化1) 单参数2) 多参数3) 文件注入 6.动态参数 Junit Junit是一个开源的用于Java语言的单元测试框架,也是Java方向使用最广泛的单元测试框架。 在pom.xml中引入Junit5…...
centos 系列添加 yum 源
nginx 首先,安装 EPEL (Extra Packages for Enterprise Linux) 仓库。这是一个由 Fedora 项目提供的免费扩展软件包仓库,其中包含许多有用的软件包。 sudo yum install epel-release 接下来,导入 Nginx 的官方 GPG 密钥,以便验证安…...
[Hive高级特性与 DDL和DML语法]
目录 🎇前言: 🎇 HiveQL语言的基本语法,包括DDL和DML两个方面。 🎇DDL(数据定义语言): 🎇DML(数据操作语言): 🎇 Hive高级特性 多种…...

Web服务器群集:Web基础与HTTP协议
目录 一、理论 1.Web基础 2.HTTP协议 二、实验 1.浏览本地HTML页面 三、总结 一、理论 1.Web基础 (1)域名和DNS ① 域名 网络是基于TCP/IP 协议进行通信和连接的,每一台主机都有一个唯一的标识(固定的IP地 址࿰…...
cmd命令常用速记
cmd命令大全 常见的appwiz.cpl control calc 等,各类功能、设置、甚至是文件属性和系统版本,都可以通过命令的方式快速查看和操作,有助于我们的提高工作效率,具体见下文。 cmd命令:开始->运行->键入…...

Python网络爬虫基础进阶到实战教程
文章目录 认识网络爬虫HTML页面组成Requests模块get请求与实战效果图代码解析 Post请求与实战代码解析 发送JSON格式的POST请求使用代理服务器发送POST请求发送带文件的POST请求 Xpath解析XPath语法的规则集:XPath解析的代码案例及其详细讲解:使用XPath解…...

树莓派使用VNC、SSH、Xrdp等方式进行远程控制的方法和注意事项
下面来总结一下远程操控树莓派用到的三种方式及其注意事项,其实这三种方式对于所有的Linux系统来说都是适用的。 目录 一、ssh控制树莓派 1.开启 ssh服务方法一 2.开启 ssh服务方法二 二、VNC远程连接 三、xrdp远程连接 四、其他注意事项 一、ssh控制树莓派 S…...
C++ 第二弹封装-类和对象
目录 1.类的引入 2.类的定义方式 3.访问权限 4.封装 5.类也是作用域 6.类的实例化 7.如何求一个类的大小 8.this指针 9.默认成员函数 10.构造函数 11.析构函数 12.拷贝构造函数 13.赋值运算符重载 14.const的类成员 15初始化列表 16.static的类成员 17.友元 …...

网络编程(Modbus进阶)
思维导图 Modbus RTU(先学一点理论) 概念 Modbus RTU 是工业自动化领域 最广泛应用的串行通信协议,由 Modicon 公司(现施耐德电气)于 1979 年推出。它以 高效率、强健性、易实现的特点成为工业控制系统的通信标准。 包…...

eNSP-Cloud(实现本地电脑与eNSP内设备之间通信)
说明: 想象一下,你正在用eNSP搭建一个虚拟的网络世界,里面有虚拟的路由器、交换机、电脑(PC)等等。这些设备都在你的电脑里面“运行”,它们之间可以互相通信,就像一个封闭的小王国。 但是&#…...
HTML 语义化
目录 HTML 语义化HTML5 新特性HTML 语义化的好处语义化标签的使用场景最佳实践 HTML 语义化 HTML5 新特性 标准答案: 语义化标签: <header>:页头<nav>:导航<main>:主要内容<article>&#x…...

iOS 26 携众系统重磅更新,但“苹果智能”仍与国行无缘
美国西海岸的夏天,再次被苹果点燃。一年一度的全球开发者大会 WWDC25 如期而至,这不仅是开发者的盛宴,更是全球数亿苹果用户翘首以盼的科技春晚。今年,苹果依旧为我们带来了全家桶式的系统更新,包括 iOS 26、iPadOS 26…...

React第五十七节 Router中RouterProvider使用详解及注意事项
前言 在 React Router v6.4 中,RouterProvider 是一个核心组件,用于提供基于数据路由(data routers)的新型路由方案。 它替代了传统的 <BrowserRouter>,支持更强大的数据加载和操作功能(如 loader 和…...

通过Wrangler CLI在worker中创建数据库和表
官方使用文档:Getting started Cloudflare D1 docs 创建数据库 在命令行中执行完成之后,会在本地和远程创建数据库: npx wranglerlatest d1 create prod-d1-tutorial 在cf中就可以看到数据库: 现在,您的Cloudfla…...

视频字幕质量评估的大规模细粒度基准
大家读完觉得有帮助记得关注和点赞!!! 摘要 视频字幕在文本到视频生成任务中起着至关重要的作用,因为它们的质量直接影响所生成视频的语义连贯性和视觉保真度。尽管大型视觉-语言模型(VLMs)在字幕生成方面…...
基于matlab策略迭代和值迭代法的动态规划
经典的基于策略迭代和值迭代法的动态规划matlab代码,实现机器人的最优运输 Dynamic-Programming-master/Environment.pdf , 104724 Dynamic-Programming-master/README.md , 506 Dynamic-Programming-master/generalizedPolicyIteration.m , 1970 Dynamic-Programm…...

C# 求圆面积的程序(Program to find area of a circle)
给定半径r,求圆的面积。圆的面积应精确到小数点后5位。 例子: 输入:r 5 输出:78.53982 解释:由于面积 PI * r * r 3.14159265358979323846 * 5 * 5 78.53982,因为我们只保留小数点后 5 位数字。 输…...
MySQL JOIN 表过多的优化思路
当 MySQL 查询涉及大量表 JOIN 时,性能会显著下降。以下是优化思路和简易实现方法: 一、核心优化思路 减少 JOIN 数量 数据冗余:添加必要的冗余字段(如订单表直接存储用户名)合并表:将频繁关联的小表合并成…...