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

MySQL备份与恢复

  • MySQL备份与恢复
    • 一、备份
      • 1、数据备份的重要性
      • 2、数据备份分类
        • 2.1 物理备份
        • 2.2 逻辑备份
      • 3、数据库备份策略
      • 4、常用的备份方法和工具
      • 5、数据库上云迁移
    • 二、数据库完全备份
      • 1、简介
      • 2、物理冷备份与恢复
        • 2.1 物理冷备份
        • 2.2 备份恢复
        • 2.3 补充知识date
      • 3、mysqldump备份与恢复
        • 3.1 完全备份一个或多个完整的库(包括其中所有的表)
        • 3.2 完全备份 MySQL 服务器中所有的库
        • 3.3 完全备份指定库中的部分表
        • 3.4 查看备份文件
    • 三、MySQL 完全恢复
      • 1、恢复数据库
        • 1.1 通过source命令恢复
        • 1.2 通过mysql命令恢复
      • 2、恢复数据表
    • 四、MySQL增量备份与恢复
      • 1、简介
      • 2、MySQL增量备份
        • 2.1 开启二进制日志功能
        • 2.2 通过刷新二进制日志文件间接实现增量备份
        • 2.3 查看二进制日志文件的内容
      • 3、MySQL增量恢复
        • 3.1 一般恢复
        • 3.2 断点恢复
          • 3.2.1基于位置恢复
          • 3.2.2 基于时间点恢复
      • 4、备份与恢复实例(完全+增量)
          • 1)录入第一次数据,并进行完全备份
          • 2)录入第二次数据,进行增量备份
          • 3)录入第三次数据,进行增量备份
          • 4)模拟删除表,先进行完全恢复
          • 5)进行增量恢复(通过位置+时间)
    • 五、MySQL日志管理

MySQL备份与恢复

一、备份

1、数据备份的重要性

备份的主要目的是灾难恢复

在生产环境中,数据的安全性至关重要

任何数据的丢失都可能产生严重的后果

造成数据丢失的原因
程序错误
人为操作错误
运算错误
磁盘故障
灾难(如火灾、地震)和盗窃

2、数据备份分类

2.1 物理备份

对数据库操作系统的物理文件(如数据文件、日志文件等)的备份

物理备份的方法

  • 冷备份(脱机备份):是在关闭数据库的时候进行的;
  • 热备份(联机备份):数据库处于运行状态,依赖于数据库的日志文件;
  • 温备份:数据库锁定表格(不可写入但可读)的状态下进行备份操作。
2.2 逻辑备份

对数据库的表或者对象进行备份。

3、数据库备份策略

完全备份:每次备份都备份完整的数据库

差异备份:只备份上一次完全备份后的更新数据

增量备份:每次备份只备份上一次完全备份或增量备份后的更新数据

4、常用的备份方法和工具

物理冷备

  • 备份时数据库处于关闭状态,直接打包数据库文件
  • 备份速度快,恢复时也是最简单的。

专用备份工具mysqldump或mysqlhotcopy

  • mysqldump常用的逻辑备份工具(逻辑热备)

    备份速度较慢(如果数据库超过100G,一般不建议使用mysqldump)

  • mysqlhotcopy仅拥有备份MyISAM和ARCHIVE表

启用二进制日志进行增量备份

  • 进行增量备份,需要刷新二进制日志

第三方工具备份

  • 免费的MySQL热备份软件Percona;XtraBackup
  • XtraBackup(物理热备)

5、数据库上云迁移

冷迁移

热迁移

二、数据库完全备份

1、简介

  • 完全备份是对整个数据库、数据库结构和文件结构的备份
  • 保存的是备份完成时刻的数据库
  • 是差异备份与增量备份的基础
优点:备份与恢复操作简单方便
缺点:数据存在大量的重复
占用大量的备份空间
备份与恢复时间长

2、物理冷备份与恢复

  • 关闭MySQL数据库
  • 使用tar命令直接打包数据库文件夹
  • 直接替换现有MySQL目录即可
2.1 物理冷备份
7-3
#准备数据
create table kkk1 (id int,name varchar(10),age int,sex char(2),hobby varchar(50));
insert into kkk1 values (1,'www',22,'女','java');
insert into kkk1 values (2,'yyy',20,'男','cake');
insert into kkk1 values (3,'xxx',21,'女','shell');
insert into kkk1 values (4,'hhh',23,'男','web');
select * from kkk1;create table kkk2 like kkk1;
insert into kkk2 (select * from kkk1);
select * from kkk2;

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

7-3
systemctl stop mysqld
#先关闭数据库
mkdir /opt/backup
#建立备份文件存放目录
tar zcvf /opt/backup/mysql_full_$(date -d "-1 day" +%Y%m%d).tar.gz /usr/local/mysql/data/
#压缩备份
#对/usr/local/mysql/下的data目录进行备份,里面包含所有数据库的文件

在这里插入图片描述

2.2 备份恢复

主机1:192.168.210.103

主机2:192.168.210.106

scp /opt/backup/mysql_full_20230922.tar.gz 192.168.210.106:/opt
#将主机1的备份包远程传输到主机2

在这里插入图片描述

主机2:
systemctl stop mysqld
#先关闭数据库
mv /usr/local/mysql/data /usr/local/mysql/data.bak
#先备份数据,防止恢复失败

在这里插入图片描述

cd /opt/
tar xf mysql_full_20230922.tar.gz
#解压
cp -a /opt/usr/local/mysql/data /usr/local/mysql/
#把opt下的data目录移到/usr/local/mysql/目录下
systemctl start mysqld
mysql -u root -p 
#登录到数据库

在这里插入图片描述

2.3 补充知识date
date --help
#命令帮助
date +%F
#完整日期格式
date +%Y%m%d
#年月日
date +%Y/%m/%d
#年/月/日
date +%Y%m01
#当月第一天
date -d "+1 day" +%Y%m%d
#显示明天
date -d "-1 day" +%Y%m%d
date -d "1 day ago" +%Y%m%d
#显示前一天
date -d "$(date +%Y%m01) -3 day" +%Y%m%d
#当月第一天的前三天
date -d "$(date +%Y%m01) -1 day" +%Y%m%d
#上个月的最后一天
date -d "$(date -d "1 mouth" +%Y%m01) -1 day" +%Y%m%d
#当月的最后一天
date -d "-1 day" +%Y%m01
#这个月第一天
date -d "1 mouth" +%Y%m01
#下个月第一天

3、mysqldump备份与恢复

  • MySQL自带的备份工具,可方便实现对MySQL的备份
  • 可以将指定的库、表导出为SQL脚本
  • 使用命令mysql导入备份的数据
3.1 完全备份一个或多个完整的库(包括其中所有的表)
mysqldump -u root -p[密码] --databases 库名1 [库名2]> /备份路径/备份文件名.sql	
#导出的就是数据库脚本文件如果不加 --databases ,只备份库中的表,不会备份库
#举个例子#单个数据库
mysqldump -u root -p --databases www > /opt/backup/www.sql#多个数据库
mysqldump -u root -p --databases www www > /opt/backup/3w.sql

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

3.2 完全备份 MySQL 服务器中所有的库
mysqldump -u root -p[密码] --all-databases > /备份路径/备份文件名.sql
#举个例子
mysqldump -u root -pabc123 --all-databases > /opt/backup/all.sqlcat /opt/all.sql | grep "^CERATE DATABASES"

在这里插入图片描述

3.3 完全备份指定库中的部分表
mysqldump -u root -p[密码] 库名 [表名1] [表名2]> /备份路径/备份文件名.sql
#备份www的kkk1表
mysqldump -u root -p [-d] www kkk1 > /opt/backup/www-kkk1.sql#使用“-d”选项,说明只保存数据库的表结构
#不使用“-d”选项,说明表数据也进行备份

在这里插入图片描述

3.4 查看备份文件
cat xx.sql|grep -v "^--"| grep -v "^/" | grep -v "^$"egrep -v "^--|^/\*|^$" 
#举个例子
cat www-kkk1.sql|grep -v "^--" | grep -v "^/" | grep -v "^$"

在这里插入图片描述

三、MySQL 完全恢复

1、恢复数据库

当备份文件中只包含表的备份,而不包括创建库的语句时,必须指定库名,且目标库必须存在

在生产环境中,可以使用Shell脚本自动实现定时备份

1.1 通过source命令恢复

先使用mysqldump工具,生成备份sql脚本;

然后登录到MySQL数据库;

再执行source 备份sql脚本的路径

MySQL[(none)]> source /backup/all-data.sql
举例
先备份目标数据库,以www数据库为例
mysqldump -u root -pabc123 --databases www > /opt/backup/www.sql

在这里插入图片描述

假设数据库www被删除
drop database www;
show databases;

在这里插入图片描述

source命令执行sql脚本
#先登录到数据库
mysql -u root -p
#执行脚本
source /opt/backup/www.sql 
#查看
show databases;

在这里插入图片描述

1.2 通过mysql命令恢复
输入重定向
mysql -u 用户名 -p[密码] < 库备份脚本的路径
举例
#先模拟数据库删除
mysql -u root -pabc123 -e 'drop database www;'
mysql -u root -pabc123 -e 'show databases;'

在这里插入图片描述

#恢复数据库
mysql -u root -pabc123 < /opt/backup/www.sql
mysql -u root -pabc123 -e 'show databases;'

在这里插入图片描述


管道符
mysql -u root -pabc123 -e 'drop database www;'
mysql -u root -pabc123 -e 'show databases;'cat www.sql | mysql -uroot -pabc123
mysql -u root -pabc123 -e 'show databases;'

在这里插入图片描述

2、恢复数据表

当备份文件中只包含表的备份,而不包含创建的库的语句时,执行导入操作时必须指定库名,且目标库必须存在。

#备份www的kkk1表
mysqldump -u root -pabc123 [-d] www kkk1 > /opt/backup/www-kkk1.sql
#模拟删除数据表
mysql -u root -pabc123 -e 'drop table www.kkk1;'
mysql -u root -pabc123 -e 'show tables from www;'

在这里插入图片描述

#恢复表数据
mysql -uroot -pabc123 www < /opt/backup/www-kkk1.sql
#查看表数据,验证是否成功恢复
mysql -uroot -pabc123 -e "select * from www.kkk1;"

在这里插入图片描述

四、MySQL增量备份与恢复

1、简介

使用mysqldump进行完全备份存在的问题

  • 备份数据中有重复数据
  • 备份时间与恢复时间过长

是自上一次备份后增加/变化的文件能或者内容

特点

  • 没有重复数据,备份量不大,时间短
  • 恢复需要上次完全备份及完全备份之后所有的增量备份才能恢复,而且要对所有增量备份进行逐个反推恢复

MySQL没有提供直接的增量备份方法

可通过MySQL提供的二进制日志间接实现增量备份

MySQL二进制日志对备份的意义

  • 二进制日志保存了所有更新或者可能更新数据库的操作
  • 二进制日志在启动MySQL服务器后开始记录,并在文件达到max_binlog_size所设置的大小或者接收到flush logs命令后重新创建新的日志文件
  • 只需定时执行flush logs方法重新创建新的日志,生成二进制文件序列,并及时把这些日志保存到安全的地方就完成了一个时间段的增量备份

2、MySQL增量备份

2.1 开启二进制日志功能
vim /etc/my.cnf
[mysqld]
log-bin=mysql-bin
binlog_format = MIXED				
#可选,指定二进制日志(binlog)的记录格式为 MIXED
server-id = 1#二进制日志(binlog)有3种不同的记录格式:STATEMENT(基于SQL语句)、ROW(基于行)、MIXED(混合模式),默认格式是STATEMENT

在这里插入图片描述

systemctl start mysqld
ls -l /usr/local/mysql/data/mysql-bin.*

在这里插入图片描述

2.2 通过刷新二进制日志文件间接实现增量备份
mysqladmin -uroot -p[密码] flush-logs

在这里插入图片描述

2.3 查看二进制日志文件的内容
mysqlbinlog --no-defaults --base64-output=decode-rows -v 二进制文件(绝对路径)
#--base64-output=decode-rows:使用64位编码机制去解码并按行读取
#-v:显示详细内容
#举个例子
cp /usr/local/mysql/data/mysql-bin.000001 /opt 
mysqlbinlog --no-defaults --base64-output=decode-rows -v /opt/mysql-bin.000001 

在这里插入图片描述

3、MySQL增量恢复

MySQL没有提供直接的增量备份方法,可通过MySQL提供的二进制日志间接实现增量备份。

3.1 一般恢复
mysqlbinlog --no-defaults 二进制日志文件 | mysql -uXXX -pXXX
mkdir mysql-backup
mkdir /mysql-backup/full
mkdir /mysql-backup/bin 
#full文件夹做完全备份
#bin文件夹做增量备份

1)在www数据库中,有一个kkk1的数据表,对表中的初始数据进行完全备份

#对kkk1表做完全备份
mysqldump -uroot -pabc123 www kkk1 > /root/mysql-backup/full/www_kkk1-$(date +%Y%m%d).sql
#二进制日志文件刷新
mysqladmin -uroot -pabc123 flush-logs
#生成新的二进制日志文件
ls /usr/local/mysql/data/

在这里插入图片描述

2)录入新的数据,进行增量备份

insert into kkk1 values (5,'aaa',23,'男','football');
insert into kkk1 values (6,'bbb',24,'女','dancing');
insert into kkk1 values (7,'ccc',25,'女','singing');

在这里插入图片描述

#二进制日志文件刷新
mysqladmin -uroot -pabc123 flush-logs
#生成新的二进制日志文件
ls /usr/local/mysql/data/

在这里插入图片描述

#进行增量备份,备份的不是最新的那一个,备份的是倒数第二个
mv -f /usr/local/mysql/data/mysql-bin.000002 /root/mysql-backup/bin/mysql-bin.00000 -$(date -d '1 day' +%Y%m%d)ls /mysql-backup/bin 

在这里插入图片描述

3)模拟删除库,先进行表的完全恢复

show databases;
drop database www;
#因为只对表做了备份,没有对库做备份,所以要先建一个数据库
create database www;
show databases;
quit
#先完全恢复数据表里的初始数据
mysql -uroot -pabc123 www < /mysql-backup/full/www_kkk1-20230923.sql

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

4)进行增量恢复

#通过管道符导入的方式
mysqlbinlog --no-defaults /mysql-backup/bin/mysql-bin.000002-20230924 | mysql -uroot -pabc123

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

3.2 断点恢复
#查看二进制文件 
mysqlbinlog --no-defaults --base64-output=decode-rows -v /mysql-backup/bin/mysql-bin.000002-20230924
#重定向输出到文件里方便查看
mysqlbinlog --no-defaults --base64-output=decode-rows -v mysql-bin.000002-20230924 > mysql-bin-20230924

在这里插入图片描述

#删除id>=5的数据
delete from kkk1 where id>=5;
select * from kkk1;

在这里插入图片描述

3.2.1基于位置恢复
#仅恢复id=5和6的数据,即不恢复“id=7”的数据
mysqlbinlog --no-defaults --start-position='296' --stop-position='891' /mysql-backup/bin/mysql-bin.000002-20230924 | mysql -uroot -pabc123

在这里插入图片描述

#仅恢复“id=7”的数据
mysqlbinlog --no-defaults --start-position='891' /mysql-backup/bin/mysql-bin.000002-20230924 | mysql -uroot -pabc123

在这里插入图片描述

3.2.2 基于时间点恢复
#仅恢复id=5和6的数据
mysqlbinlog --no-defaults --start-datetime='2023-09-23 14:24:05' --stop-datetime='2023-09-23 14:24:32' /mysql-backup/bin/mysql-bin.000002-20230924 | mysql -uroot -pabc123

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

#仅恢复id=6和7的数据
mysqlbinlog --no-defaults --start-datetime='2023-09-23 14:24:27' /mysql-backup/bin/mysql-bin.000002-20230924 | mysql -uroot -pabc123

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

如果恢复某条SQL语句之前的所有数据,就stop在这个语句的位置节点或者时间点
如果恢复某条SQL语句以及之后的所有数据,就从这个语句的位置节点或者时间点start

4、备份与恢复实例(完全+增量)

为了测试备份数据是否可用,模拟数据丢失故障,进行数据还原。
在数据库表中,分三次录入学生考试成绩。
首次录入成绩后,做该表的完全备份。
后两次成绩的录入之后,分别作增量备份。
模拟数据丢失,并使用增量备份分别基于位置和时间点恢复一班所有学生成绩与二班陈铭与付杰的成绩。

在这里插入图片描述

1)录入第一次数据,并进行完全备份

在这里插入图片描述

mysql -u root -pabc123
create database score;
use score;
create table student ("姓名" varchar(10),"班级" varchar(10),"学号" int,"语文" int,"数学" int,"英语" int,"理综" int);
insert into student values ('张三','一班',20170822,110,105,92,235);
insert into student values ('李四','一班',20170820,95,115,110,260);
insert into student values ('王五','一班',20170818,95,103,108,270);
insert into student values ('赵六','一班',20170816,100,109,112,265);
select * from student;

在这里插入图片描述

#通过mysqldump工具完全备份
mysqldump -u root -pabc123 score student > /mysql-backup/full/score-student.sql

在这里插入图片描述

2)录入第二次数据,进行增量备份
vim /etc/my.cnf
[mysqld]
log-bin=mysql-bin
binlog_format = MIXED				
#可选,指定二进制日志(binlog)的记录格式为 MIXED
server-id = 1
#刷新日志文件
mysqladmin -uroot -pabc123 flush-logs

在这里插入图片描述

insert into student values ('李宁','二班',20170824,92,98,105,235);
insert into student values ('陈铭','二班',20170826,111,107,96,204);
select * from student;

在这里插入图片描述

#通过刷新日志文件,实现增量备份
mysqladmin -uroot -pabc123 flush-logs
#查看二进制日志文件,不是看最新的,看倒数第二个
mysqlbinlog --no-defaults --base64-output=decode-rows -v /usr/local/mysql/data/mysql-bin.000002

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

3)录入第三次数据,进行增量备份

在这里插入图片描述

#再次插入数据
insert into student values ('付杰','二班',20170828,115,118,116,268);
insert into student values ('郭尚','二班',20170830,111,99,80,259);

在这里插入图片描述

#通过刷新日志文件,实现增量备份
mysqladmin -uroot -pabc123 flush-logs
#查看二进制日志文件,不是看最新的,看倒数第二个
mysqlbinlog --no-defaults --base64-output=decode-rows -v
/usr/local/mysql/data/mysql-bin.000003

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

4)模拟删除表,先进行完全恢复
#删除表
drop table student from score;

在这里插入图片描述

#先完全恢复,一班所有学生的成绩
mysql -uroot -pabc123 score < /mysql-backup/full/score-student.sql

在这里插入图片描述

5)进行增量恢复(通过位置+时间)
#通过位置恢复二班陈铭的成绩
#先查看二进制日志文件 
mysqlbinlog --no-defaults --base64-output=decode-rows -v /usr/local/mysql/data/mysql-bin.000002

在这里插入图片描述

#根据位置恢复
mysqlbinlog --no-defaults --start-position='622' /usr/local/mysql/data/mysql-bin.000002 | mysql -uroot -pabc123

在这里插入图片描述

#通过时间恢复二班付杰的成绩
#先查看二进制日志文件 
mysqlbinlog --no-defaults --base64-output=decode-rows -v /usr/local/mysql/data/mysql-bin.000003

在这里插入图片描述

#根据时间恢复
mysqlbinlog --no-defaults --start-datetime='23-09-24 14:36:13' --stop-datetime='23-09-24 14:36:18' /usr/local/mysql/data/mysql-bin.000003 | mysql -uroot -pabc123

在这里插入图片描述

五、MySQL日志管理

MySQL 的日志默认保存位置为 /usr/local/mysql/data

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秒
systemctl restart mysqldmysql -u root -p
show variables like 'general%';									
#查看通用查询日志是否开启show variables like 'log_bin%';									
#查看二进制日志是否开启show variables like '%slow%';									
#查看慢查询日功能是否开启
show variables like 'long_query_time';							
#查看慢查询时间设置set global slow_query_log=ON;				
#在数据库中设置开启慢查询的方法
#!/bin/bash
#增量备份Mysql数据库
TODAY=$(date +%Y%m%d)
YESTERDAY=$(date -d "-1 day!+%Y%m%d)MYSQL 
HOME=/usr/local/mysglDATA HOME=SMYSQL HOME/data
USERNAME=root
PASSWORD=abc123#备份二进制日志索弓文件 mysgl-bin.index
/usr/bin/cp -f $DATA_HOME/mysgl-bin.index /opt/backup/mysgl-bin-$TODAY.index
#判断是否存在前一天的日志索引文件,如果存在则通过反向查询获取今天生成的二进制日志文件
if [ -f /opt/backup/mysgl-bin-$YESTERDAY.index ] 
then
COUNT=$(cat /opt/backup/mysgl-bin-$TODAY.index|grep -v "`cat /opt/backup/mysgl-bin-$YESTERDAY.index`"|awk -F '/' '{print $2}')
else
COUNT=$(cat /opt/backup/mysgl-bin-$TODAY.index | awk -F '/' '{print $2}')
fi
#刷新二进制日志文件
$MYSQL_HOME/bin/mysqladmin -u"$USERNAME"-p"$PASSWORD" flush-logs &> /dev/null
#使用循环备份当天的二进制日志
for BINLOG in $COUNT
/usr/bin/mv -f "$DATA_HOME/$BINLOG" "/opt/backup/$BINLOG-$TODAY"
done

相关文章:

MySQL备份与恢复

MySQL备份与恢复一、备份1、数据备份的重要性2、数据备份分类2.1 物理备份2.2 逻辑备份 3、数据库备份策略4、常用的备份方法和工具5、数据库上云迁移 二、数据库完全备份1、简介2、物理冷备份与恢复2.1 物理冷备份2.2 备份恢复2.3 补充知识date 3、mysqldump备份与恢复3.1 完全…...

【RTOS学习】单片机中的C语言

&#x1f431;作者&#xff1a;一只大喵咪1201 &#x1f431;专栏&#xff1a;《RTOS学习》 &#x1f525;格言&#xff1a;你只管努力&#xff0c;剩下的交给时间&#xff01; 本喵默认各位小伙伴都会C语言&#xff0c;我们平时学习C语言都是在Windows环境下学习的&#xff0…...

确知波束形成matlab仿真

阵列信号处理中的导向矢量 假设一均匀线性阵列&#xff0c;有N个阵元组成&#xff0c;满足&#xff1a;远场、窄带假设。 图1. 均匀线性阵模型 假设信源发射信号&#xff0c;来波方向为 θ \theta θ&#xff0c;第一个阵元接收到的信号为 x ( t ) x(t) x(t)&#xff0c;则第…...

并发编程相关面试题

线程基础 线程和进程的区别&#xff1a; ----------------------------------------------------------------------- 创建线程的方式&#xff1a; 1 继承Thread类 2 实现runnable接口 3 实现callable 接口&#xff08;有返回值的&#xff09; 4 线程池创建线程 ------…...

Cpp/Qt-day050921Qt

目录 实现使用数据库的登录注册功能 头文件&#xff1a; registrwidget.h: widget.h: 源文件&#xff1a; registrwidget.c: widget.h: 效果图&#xff1a; 思维导图 实现使用数据库的登录注册功能 头文件&#xff1a; registrwidget.h: #ifndef REGISTRWIDGET_H #de…...

视频汇聚/视频云存储/视频监控管理平台EasyCVR分发rtsp流起播慢优化步骤详解

安防视频监控/视频集中存储/云存储/磁盘阵列EasyCVR平台可拓展性强、视频能力灵活、部署轻快&#xff0c;可支持的主流标准协议有国标GB28181、RTSP/Onvif、RTMP等&#xff0c;以及支持厂家私有协议与SDK接入&#xff0c;包括海康Ehome、海大宇等设备的SDK等。平台既具备传统安…...

ElementUI之登陆+注册->饿了吗完成用户登录界面搭建,axios之get请求,axios之post请求,跨域,注册界面

饿了吗完成用户注册登录界面搭建axios之get请求axios之post请求跨域 1.饿了吗完成用户注册登录界面搭建 将端口号8080改为8081 导入依赖&#xff0c;在项目根目录使用命令npm install element-ui -S&#xff0c;添加Element-UI模块 -g&#xff1a;将依赖下载node_glodal全局依…...

2023华为杯研究生数学建模研赛E题出血脑卒中完整论文(含28个详细预处理数据及结果表格)

大家好呀&#xff0c;从发布赛题一直到现在&#xff0c;总算完成了全国研究生数学建模竞赛&#xff08;数模研赛&#xff09;E题完整的成品论文。 本论文可以保证原创&#xff0c;保证高质量。绝不是随便引用一大堆模型和代码复制粘贴进来完全没有应用糊弄人的垃圾半成品论文。…...

Java中的继承是什么?

在Java中&#xff0c;继承是一种面向对象编程的概念&#xff0c;它允许一个类&#xff08;称为子类或派生类&#xff09;继承另一个类&#xff08;称为父类或基类&#xff09;的属性和方法。通过继承&#xff0c;子类可以获得父类的属性和方法&#xff0c;并且可以添加自己的特…...

Python - flask后端开发笔记

​ Flask入门 有一篇很全面的博客可以参考&#xff1a;Python Flask Web 框架入门 跨域问题处理 from flask_cors import CORS CORS(app,supports_credentialsTrue,origins[url], # 前端url列表 ) 文件发送 from flask import send_from_directory app.route(/download) …...

Flutter实现PS钢笔工具,实现高精度抠图的效果。

演示&#xff1a; 代码&#xff1a; import dart:ui;import package:flutter/material.dart hide Image; import package:flutter/services.dart; import package:flutter_screenutil/flutter_screenutil.dart; import package:kq_flutter_widgets/widgets/animate/stack.dart…...

苏宁滑块验证

网址&#xff1a;https://passport.suning.com/ids/login总结一下&#xff0c;别被他的表面现象给骗了&#xff0c;这玩意儿&#xff0c;个人认为&#xff0c;腾讯的都没法跟他比&#xff01;&#xff01;&#xff01; 难点&#xff1a;动态混淆&#xff0c;vmp&#xff0c;图片…...

c语言。。。

gcc thread.c -lpthread -o app -fexec-charsetgbkthread.c为当前目录下编写的c代码 代码中引入了<pthread.h>线程库&#xff0c;所以要加上-lpthread -o app 输出.exe的c可执行文件&#xff0c;文件名为app -fexec-charsetgbk 设置编码方式&#xff0c;防止控制台输出中…...

vue-cli创建项目、vue项目目录结(运行vue项目)、ES6导入导出语法、vue项目编写规范

vue-cli创建项目、vue项目目录结构、 ES6导入导出语法、vue项目编写规范 1 vue-cli创建项目 1.1 vue-cli 命令行创建项目 1.2 使用vue-cli-ui创建 2 vue项目目录结构 2.1 运行vue项目 2.2 vue项目的目录结构 3 es6导入导出语法 4 vue项目编写规范 4.1 修改项目 4.2 以后…...

QT读取DLL加载算法

有这样一个场景&#xff0c;我有一个GUI软件&#xff0c;把他想象成PS软件&#xff0c;集成了很多工具。现在我要添加新算法(PS工具)&#xff0c;该怎么办&#xff1f; 有三种办法&#xff1a; 第一种我把新算法代码加到项目中&#xff0c;编译整个项目。 第二种&#xff0c;新…...

HTTPX-用于Python的下一代HTTP客户端

1、前言 在使用 Python 进行接口自动化时&#xff0c;大多数都会使用 requests 模块&#xff0c;requests 是一个常用的 HTTP 请求库&#xff0c;可以方便地向网站发送 HTTP 请求&#xff0c;并获取响应结果。 本篇将介绍 Python 的下一代 HTTP 客户端 - HTTPX 2、简介 HTT…...

[LLM+AIGC] 01.应用篇之中文ChatGPT初探及利用ChatGPT润色论文对比浅析(文心一言 | 讯飞星火)

近年来&#xff0c;人工智能技术火热发展&#xff0c;尤其是OpenAI在2022年11月30日发布ChatGPT聊天机器人程序&#xff0c;其使用了Transformer神经网络架构&#xff08;GPT-3.5&#xff09;&#xff0c;能够基于在预训练阶段所见的模式、统计规律和知识来生成回答&#xff0c…...

OCR -- 文本检测

目标检测&#xff1a; 不仅要解决定位问题&#xff0c;还要解决目标分类问题&#xff0c;给定图像或者视频&#xff0c;找出目标的位置&#xff08;box&#xff09;&#xff0c;并给出目标的类别&#xff1b; 文本检测&#xff1a; 给定输入图像或者视频&#xff0c;找出文本的…...

【系统架构】软件可靠性基础知识

导读&#xff1a;本文整理关于软件可靠性基础知识构建系统架构知识体系。完整和扎实的系统架构知识体系是作为架构设计的理论支撑&#xff0c;基于大量项目实践经验基础上&#xff0c;不断加深理论体系的理解&#xff0c;从而能够创造新解决系统相关问题。 目录 1、软件可靠性…...

相机Camera

Camera需与SurfaceView配合使用 Camera类常用方法&#xff1a; Camera.open() 创建Camera实例&#xff0c;打开相机 getParameters() 获取相机参数 release() 释放相机资源 setParameters(Camera.Parameters parameters) 设置相机参数 setPreviewDisplay(SurfaceHolder holde…...

洛谷P8815:逻辑表达式 ← CSP-J 2022 复赛第3题

【题目来源】https://www.luogu.com.cn/problem/P8815https://www.acwing.com/problem/content/4733/【题目描述】 逻辑表达式是计算机科学中的重要概念和工具&#xff0c;包含逻辑值、逻辑运算、逻辑运算优先级等内容。 在一个逻辑表达式中&#xff0c;元素的值只有两种可能&a…...

ElementUI实现登录注册+axios全局配置+CORS跨域

一、搭建项目 1.1 安装 Element-UI 先确保是否安装了vue-cli脚手架工具 !!! 安装vue脚手架可以看看我的上一篇博客 构建好项目后通过npm安装element-ui cd 项目根路径 #进入新建项目的根目录 npm install element-ui -S #安装…...

Vue 07 Vue中的数据代理

通过数据代理&#xff0c;我可以方便的使用vm.属性&#xff0c;修改data中的属性 什么是数据代理 数据代理&#xff1a;通过一个对象代理对另一个对象中属性的操作&#xff08;读/写&#xff09; 我们修改obj2的x属性&#xff0c;其实修改的是obj的x属性 <!DOCTYPE html&…...

Foxit PDF SDK Windows 9.1 Crack

Foxit PDF SDK 变更日志 Windows/Linux/Mac 2023 年 8 月 新功能/增强功能 在开始签名之前设置外观。支持使用共享字典添加签名。允许在调用 Signature::StartSign() 之前增量保存文档。在签名前修改现有未签名分页印章签名的外观。支持使用共享字典添加分页签名。忽略全角…...

UG NX二次开发(C++)-采用NXOpen方法计算体的质心

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 1、前言2、创建一个part文件3、测量质心的NXOpen方法3.1 方法说明3.2 质心测量的代码3.3 测试结果1、前言 在UG NX二次开发过程中,测量是一个很必要的功能,比如测量距离、角度、面的体积、边长、…...

Java代码审计17之fastjson反序列化漏洞(2)

文章目录 1、类加载与反射调用1.1、类加载1.2、测试代码1.3、通过类的加载和反射调用evil类 2、Fastjson TemplatesImpl链调试2.1、链路总览2.2、调试构造利用链 3、fastjson反序列化TemplatesImpl 利⽤3.1、开启 Feature.SupportNonPublicField 得作用3.2、构造利用payload3.3…...

Fork/Join 框架是干什么的?

Fork/Join框架是Java中用于并行计算的一个重要工具,它旨在简化多线程编程,特别适用于分治任务的并行执行。Fork/Join框架的主要目标是提高多核处理器上任务的并行性,从而加速计算。 Fork/Join框架的核心概念包括以下几个要点: 分治策略:Fork/Join框架基于分治策略,将一个…...

电子信息工程专业课复习知识点总结:(五)通信原理

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 第一章通信系统概述——通信系统的构成、各部分性质、性能指标1.通信系统的组成&#xff1f;2.通信系统的分类&#xff1f;3.调制、解调是什么&#xff1f;有什么用…...

LeetCode算法二叉树—二叉树的中序遍历

目录 94. 二叉树的中序遍历 - 力扣&#xff08;LeetCode&#xff09; 代码&#xff1a; 运行结果&#xff1a; 给定一个二叉树的根节点 root &#xff0c;返回 它的 中序 遍历 。 示例 1&#xff1a; 输入&#xff1a;root [1,null,2,3] 输出&#xff1a;[1,3,2]示例 2&am…...

ubuntu 18.04 中 eBPF samples/bpf 编译

1. history 信息 一次成功编译 bpf 后执行 history 得到的信息&#xff1a; yingzhiyingzhi-Host:~/ex/ex_kernel/linux-5.4$ history1 ls2 mkdir ex3 cd ex4 mkdir ex_kernel5 ls /boot/6 sudo apt install linux-source7 ls /usr/src/8 uname -r9 cd ex_kernel/10…...

网站制作机构/如何做市场调研和分析

我的新书《Android App开发入门与实战》已于2020年8月由人民邮电出版社出版&#xff0c;欢迎购买。点击进入详情 文章目录layoutlayout中的idanimdrawablevalues中的idlayout 全部小写&#xff0c;采用下划线命名法&#xff0c;使用名词或名词词组。 所有Activity或Fragment的…...

电商网站运营建设的目标/朋友圈推广一天30元

IS-IS和OSPF一样&#xff0c;都是一种基于链路状态并使用最短路径优先算法进行路由计算的一种IGP协议。IS-IS最初是国际化标准组织ISO为它的无连接网络协议CLNP设计的一种动态路由协议。 一、应用场景不同&#xff1a; OSPF&#xff1a;适用于区域多样、策略多变、调度精细 …...

百度蜘蛛网站排名/网络营销方案设计范文

我们常用的在a标签中有点击事件&#xff1a; 1. a href"javascript:js_method();" 这是我们平台上常用的方法&#xff0c;但是这种方法在传递this等参数的时候很容易出问题&#xff0c;而且javascript:协议作为a的href属性的时候不仅会导致不必要的触发window.onbef…...

网站链接加密/枸橼酸西地那非片是什么

2019独角兽企业重金招聘Python工程师标准>>> ThinkSNS是国内知名的开源系统&#xff0c;主要功能有&#xff1a;微博&#xff08;朋友圈&#xff09;、即时聊天、直播、论坛、资讯、CMS、活动、频道、圈子、问答、打赏等主流社交功能应有尽有。 我们的服务包括 快速…...

在家建设一个网站需要什么/软文价格

启动及关闭 MySQL 服务器 首先&#xff0c;我们需要通过以下命令来检查MySQL服务器是否启动&#xff1a; ps -ef | grep mysqld 如果MySql已经启动&#xff0c;以上命令将输出mysql进程列表&#xff0c; 如果mysql未启动&#xff0c;你可以使用以下命令来启动mysql服务器: root…...

怎么自己做歌曲网站/石家庄抖音seo

来源&#xff1a;广东自然资源8月29日是第17个全国测绘法宣传日&#xff0c;广东省自然资源厅全面开展测绘法宣传日暨国家版图意识宣传周活动。通过一系列主题活动&#xff0c;宣传倡导正确使用地图&#xff0c;呼吁公众“规范使用地图 一点都不能错”(☞ 具体内容&#xff0c;…...