Oracle RMAN 备份恢复
Oracle RMAN 备份恢复
1.什么是RMAN
RMAN在数据库服务器的帮助下实现数据库文件、控制文件、数据库文件和控制文件的映像副本,以及归档日志文件,数据库服务器参数文件的备份。RMAN也允许使用脚本文件实现数据的备份与恢复,而且这些脚本保存在数据库内,而不需要编写基于OS的脚本文件。RMAN备份的文件自动保存在一个系统指定的目录下,文件的名称也由RMAN自己维护。当实现数据库恢复操作时,恢复指令简洁,RMAN自动寻找需要的文件实现数据恢复。减少了传统的导出程序中人为错误的发生。
2.RMAN有什么优点
· 支持增量备份:RMAN采用备份级别实现增量备份,在一个完整备份的基础上,采用增量备份,和传统的备份方式相比,减少了备份的数据量。
· 自动管理备份文件:RMAN备份的数据是RMAN自动管理的,包括文件名字,备份文件存储目录,以及识别最近的备份文件,搜索恢复时需要的表空间、模式或数据文件等备份文件。
· 自动化备份与恢复:在备份和恢复操作时,使用简单的指令就可以实现备份与恢复,且执行过程完全由RMAN自己维护。
· 不产生重复信息:使用RMAN的联机备份不产生重做信息。
· 恢复目录:RMAN的自动化备份与恢复功能应该归功于恢复目录的使用,RMAN直接在其中保存了备份和恢复脚本。
· 支持映像复制:使用RMAN也可以实现映像复制,映像是以操作系统上的文件格式存在,这种复制方式类似于用户管理的联机备份方式。
· 新块的比较特性:这是RMAN支持增量备份的基础,该特性使得备份时,跳过数据文件中从未使用过的数据块的备份,备份数据量的减少直接导致了备份存储空间需求和备份时间的较少。
· 备份的数据文件压缩处理:RMAN提供了一个参数说明是否对文件进行压缩,压缩的备份文件以二进制格式存在,可以减少占用的存储空间。
· 备份文件有效性检查功能:在恢复前往往需要验证备份文件的有效性。
3.快闪恢复区
快闪恢复区是存储与备份和恢复数据文件以及相关信息的存储区。快闪恢复区保存了每个数据文件的备份、增量备份、控制文件备份以及归档重做日志备份。Oracle也允许在快闪恢复区中保存联机重做日志的冗余副本以及当前控制文件的冗余副本,还有Oracle中闪回特性中的闪回日志也保存在快闪恢复区中。
· 快闪恢复区的优点:实现了备份文件的自动管理,是备份和恢复数据库更简单,并且可以几种管理磁盘空间,但要求恢复区的空间足够大,以容纳备份的数据。
4.相关参数设置
查看快闪恢复区的参数信息:
SQL> show parameter db_recovery_file_dest;
修改快闪恢复区的参数:
SQL> alter system set db_recovery_file_dest_size=2G
查看快闪恢复区的位置以及空间使用信息:
SQL> select name, space_limit, space_used, number_of_files from v$recovery_file_dest;
解决快闪恢复区的空间不足问题:
Method1:SQL> alter system set db_recovery_file_dest_size=4G
Method2:SQL> alter system set db_reocvery_file = '/u01/backup'
5.RMAN相关参数配置
rman配置参数RMAN configuration parameters for database with db_unique_name PROD are:① 保留策略(窗口时间、冗余级别)CONFIGURE RETENTION POLICY TO RECOVERY WINDOW OF 7 DAYS;② 备份优化CONFIGURE BACKUP OPTIMIZATION ON;③ 默认设备类型CONFIGURE DEFAULT DEVICE TYPE TO DISK; # default④ 自动备份策略CONFIGURE CONTROLFILE AUTOBACKUP ON;⑤ 自动备份路径CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO '/home/oracle/backup/control/%F';⑥ 备份级并行度CONFIGURE DEVICE TYPE DISK PARALLELISM 1 BACKUP TYPE TO BACKUPSET; # default⑦ 备份映像路径CONFIGURE DATAFILE BACKUP COPIES FOR DEVICE TYPE DISK TO 1; # default⑧ 归档日志文件路径CONFIGURE ARCHIVELOG BACKUP COPIES FOR DEVICE TYPE DISK TO 1; # default⑨ 配置通道CONFIGURE CHANNEL 1 DEVICE TYPE DISK FORMAT '/home/oracle/backup/%d_%T_%U.bak';CONFIGURE MAXSETSIZE TO UNLIMITED; # defaultCONFIGURE ENCRYPTION FOR DATABASE OFF; # defaultCONFIGURE ENCRYPTION ALGORITHM 'AES128'; # defaultCONFIGURE COMPRESSION ALGORITHM 'BASIC' AS OF RELEASE 'DEFAULT' OPTIMIZE FOR LOAD TRUE ; # defaultCONFIGURE ARCHIVELOG DELETION POLICY TO NONE; # defaultCONFIGURE SNAPSHOT CONTROLFILE NAME TO '/u01/app/oracle/product/19.3.0/dbhome_1/dbs/snapcf_PROD.f'; # default
实践环节
1.快闪恢复区
【1】无启用快闪恢复区时,要指定路径,下面以备份控制文件为例:
RMAN> connect target /
RMAN> backup current controlfile format '/u01/app/oracle/backup_ctl_%u.dbf';【2】启用快闪恢复区时,无需指定路径,下面以备份控制文件为例:
RMAN> connect target /
RMAN> backup current controlfile;【3】压缩备份数据库
RMAN> connect target
RMAN> backup as compressed backupset database;
2.联机备份
RMAN联机备份需要的准备工作:SQL>shutdown immediate;
SQL>startup mount;
SQL>alter database archivelog;
SQL>archive log list;
联机备份整个数据库·
RMAN> backup as compress backupset database plus archivelog delete all input;
觉得速度太慢了,怎么办?可以配多几个通道
RMAN> run {allocate channel ch1 device type disk;allocate channel ch2 device type disk;backup as backupset format '/u01/backup/%U'(datafile 1,4 channel ch1)(datafile 2,3,5 channel ch2);sql 'alter system archive log current';
}
3.备份语句
备份语句:
备份数据库:backup database;
备份表空间:backup tablespace users;
备份数据文件:
mkdir /u01/app
backup as backupset datafile 1 format '/u01/backup/datafile_1_%U';
备份控制文件:backup current controlfile;
4.增量备份
RMAN增量备份:
0级备份
RMAN> backup incremental level 0 database;
1级备份
RMAN> backup incremental level 1 database;
5.快速增量备份
快速增量备份:前提:开启块跟踪
SQL> alter database enable block change tracking using file '/u01/app/oracle/oradata/chtrack.log';检查:查看是否开启了快跟踪
SQL> select filename, status, bytes from v$block_change_tracking更改:更改块跟踪文件的存储位置
SQL> alter database rename file '/u01/app/oracle/oradata/chtrack.log' to '/u01/app/oracle/oradata/chtrack1.log';设定:禁用快跟踪特性
SQL> alter database disable block change tracking;
6.在映像副本上应用增量备份
RMAN> run {backup incremental level 1 for recover of copy with tag 'incr_copy_backup' database;recover copy of database with tag 'incr_copy_backup'
}
第一次执行:
语句1表示生成级别为1的tag值为incr_copy_backup,针对整个数据库并且应用于增量备份的映像副本。
语句2由于没有增量备份,因此不会执行,也不会报错。第二次执行:
由于有了第一次的0级备份,因此会生成一个1级别的增量备份,执行第二条语句时,会将第一条语句生成的增量备份应用到第一次所生成的映像副本上,以后的每一次都会生成一个增量备份,并将生成的增量备份应用到映像副本上。若需要恢复,先恢复映像副本,然后再应用最近一次增量备份以来的所有归档日志,就可以实现数据库的完全恢复。
创建和维护恢复目录
恢复目录保存了RMAN信息库的信息,Oracle建议使用恢复目录保存RMAN信息库,再信息库中保存了数据文件备份集或映像复制。表空间和数据文件信息以及RMAN的配置信息,使用恢复目录RMAN在一定条件下读取目标库的控制文件来更新恢复目录中保存的关于控制文件、数据文件等信息。
Step1:创建一个表空间(prod数据库)
SQL> create tablespace rcat_tbs temporary datafile '/u01/app/oracle/oradata/rcat_tbs01.dbf' size 100m;Step2:创建恢复目录用户
SQL> create user rcat_owner identified by oracle default tablespace rcat_tbs temporary tablespace temp;
SQL> alter user rcat_owner quota unlimited on rcat_tbs;Step3:为恢复目录用户授权
SQL> grant recovery_catalog_owner to rcat_owner;
SQL> grant connect, resource to rcat_owner;Step4:连接到目录数据库并创建恢复目录
[oracle@ocm ~]$ rman catalog rcat_owner/oracle@prod
RMAN> create catalog tablespace rcat_tbs;Step5:在恢复目录中注册目标数据库
[oracle@ocm ~]$ rman target system/oracle@oracle catalog rcat_owner/oracle@prod
RMAN> register database;
RMAN> resync catalog;
RMAN脚本管理
Step1:创建RMAN备份脚本
RMAN> create script rman_backup {sql 'alter system checkpoint';backup database format'/u01/backup/offline_backup/back_%u.dbf';backup current controlfile format'/u01/backup/offline_backup/back_ctl_%u.dbf';
}Step2:执行脚本
RMAN> run {execute script rman_backup;}Step3:调用操作系统文件执行RMAN指令
[oracle@ocm ~]$ rman target system/oracle@oracle catalog rcat_owner/oracle@prod cmdfile 'rman_backup.rcv'Step4:将脚本文件转换为操作系统文件RMAN> print script rman_backup to file 'rman_backup.txt';
RMAN非归档模式下的完全恢复
1、控制文件、数据文件、重做日志文件丢失的恢复
SQL> startup mount;[oracle@ocm ~]$ rman target system/oracle
RMAN> backup as compressed backupset database;
SQL> create table test1 as select * from dba_segments;
2.模拟删除所有控制文件、数据文件、重做日志文件
[oracle@ocm ~]$ rm -rf u01/app/oracle/oradata/orcl/*.*恢复控制文件:
RMAN> restore controlfile from '/u01/app/c-201919196718-20190401'
启动数据库到mount状态:
SQL> alter database mount;
恢复数据库
RMAN> restore database;
RMAN> recover database noredo;
检验:创建的表是否存在
SQL> select count(*) from test1;
注意:此时表的数据已经全部丢失。也就是说自上次备份以来的所有数据全部丢失。
3、只有数据文件丢失
模拟丢失数据文件
[oracle@ocm ~]$ rm -rf users01.dbf
SQL> startup; //报错
使用RMAN恢复该数据文件
RMAN> restore datafile 4;
恢复数据文件
RMAN> recover datafile 4;【注】以上过程没有覆盖日志文件,当日志文件被覆盖之时,需要使用一下命令实现不完全恢复。
RMAN> recover datafile 4 until cancel;
根据提示,直接输入cancel,在介质恢复完成后,使用resetlogs打开数据库。
4、联机重做日志文件和数据文件损坏的恢复
模拟丢失日志文件和数据文件
[oracle@ocm ~]$ rm -rf *.dbf
[oracle@ocm ~]$ rm -rf *.log
SQL> startup force //开启到mount状态
RMAN> restore database;
RMAN> recover database until cancel;
SQL> alter database open resetlogs;
问:数据文件如何恢复到其他磁盘目录下?
RMAN> run {set newname for datafile '/u01/app/oracle/oradata/orcl/system01.dbf' to '/u02/app/oracle/oradata/orcl/system01.dbf';set newname for datafile '/u01/app/oracle/oradata/orcl/users01.dbf' to '/u02/app/oracle/oradata/orcl/users01.dbf';restore database from tag = TAG20180401t131419;switch datafile all;
}
RMAN归档模式下的完全恢复
1、丢失一个系统表空间对应的数据文件的恢复
需求:先为system表空间添加一个数据文件system02.dbf,存放至/newdata/orcl目录下,文件大小100m,使用sys用户在system表空间上创建表t1,表内容和u01用户的 t1表一致。故障模拟:system02.dbf数据文件丢失请解决故障,并找回sys.t1表SQL> alter tablespace system add datafile '/newdata/orcl/system02.dbf' size 100m;
SQL> create table t1 tablespace system as select * from u01.t1;
[oracle@orcl orcl]$ rm system02.dbf
SQL> startup force(报错)
RMAN> run {
sql 'alter database datafile 7 offline';
restore tablespace system;
recover tablespace system;
sql ' alter database datafile 7 online';
sql ' alter database open';
}
2、丢失一个非系统表空间的数据文件的恢复
问题描述:u01用户在data01表空间上创建一张t2表,表内容和u01用户的t1表一致故障模拟:data01.dbf数据文件丢失请解决故障,并找回u01.t2SQL> conn u01/oracle;
SQL> create table t2 tablespace data01 as select * from t1;[oracle@orcl orcl]$ rm data01*.dbf
SQL> conn as sysdba
SQL> alter system flush buffer_cache;
SQL> conn u01/oracle
SQL> select * from t2;(报错)RMAN> run {
sql 'alter database datafile 5,6 offline';
restore tablespace data01;
recover tablespace data01;
sql 'alter database datafile 5,6 online';
}
3、丢失一个非系统表空间的数据文件的恢复
问题描述:u01用户在data01表空间上创建一张t3表,表内容和u01用户的t1表一致故障模拟:data01.dbf数据文件丢失,并且由于磁盘损坏,原路径已经不能恢复,文件需要恢复至其他路径(自拟)请解决故障,并找回u01.t3SQL> conn u01/oracle;SQL> create table t3 tablespace data01 as select * from t1;[oracle@orcl orcl]$ rm data01*.dbfSQL> conn as sysdbaSQL> alter system flush buffer_cache;SQL> conn u01/oracleSQL> select * from t3;(报错)RMAN> run {
sql 'alter database datafile 5,6 offline';
set newname for datafile 5 to ‘/newdata/orcl/data01/data01a.dbf’;
set newname for datafile 6 to ‘/newdata/orcl/data01/data01b.dbf’;
restore tablespace data01;
switch datafile all;
recover tablespace data01;
sql 'alter database datafile 5,6 online';
}
4、丢失多个数据文件的恢复
问题描述:自行在system,data01表空间上模拟数据故障模拟:system01.dbf,data01.dbf,temp1表空间对应的数据文件丢失请解决故障,并找回丢失的数据(请在第一时间恢复数据库对外服务提供,并且确保所有文件状态正常)SQL> create table data tablespace system as select * from u01.t1;SQL> create table data2 tablespace data01 as select * from u01.t1;[oracle@orcl orcl]$ rm system01.dbf[oracle@orcl orcl]$ rm temp01.dbf[oracle@orcl data01]$ rm data01a.dbfSQL> alter system flush buffer_cache;SQL> select * from data; (强制弹出nolog)[oracle@orcl dbs]$ kill -9 26993[oracle@orcl dbs]$ sqlplus as sysdbaSQL> startup mount;[oracle@orcl ~]$ rman target /
RMAN> run {
sql 'alter database datafile 1,3,5 offline';
restore database;
recover database;
sql 'alter database datafile 1,3,5 online';
sql 'alter database open';
}
5、丢失没有备份的数据文件的恢复
问题描述:在备份后创建新表空间data02,对应数据文件/newdata/orcl/data02.dbf,数据文件大小20m在该表空间上自行创建表,模拟数据故障模拟:data02.dbf丢失请解决故障,并找回丢失的数据 SQL> create tablespace data02 datafile '/newdata/orcl/data02.dbf' size 20m;SQL> create table test(id int) tablespace data02;SQL> insert into test values(1);[oracle@orcl orcl]$ rm data02.dbf切换一个会话,然后刷新,查询报错
SQL> alter system flush buffer_cache;RMAN> run {
sql 'alter database datafile 7 offline';
restore datafile 7;
recover datafile 7;
sql 'alter database datafile 7 online';
}
6、丢失所有日志文件的恢复
故障模拟:丢失所有联机在线日志
请解决故障,并确保数据库恢复正常服务。
SQL> select * from v$logfile;SQL> select * from v$log; 当前日志组为1[oracle@orcl orcl]$ rm redo*SQL> alter system switch logfile;SQL> 数据库夯住了SQL> select * from v$log; 当前日志组为3SQL> alter database clear unarchived logfile group 1;SQL> alter database clear unarchived logfile group 2;SQL> shutdown immediate;SQL> startup mount;SQL> recover database until cancel;SQL> alter database open resetlogs;
7、丢失所有控制文件和spfile的恢复
故障模拟:删除所有控制文件和spfile
请解决故障,并确保数据库恢复正常服务。
1.catalog模式下同时丢失所有控制文件和参数文件:
SQL> select dbid from v$database;DBID
----------
1528042952SQL> show parameter control;SQL> show parameter spfile;[oracle@orcl dbs]$ rm spfileorcl.ora[oracle@orcl orcl]$ rm ora_control*SQL> startup force;
RMAN> run {
2> set dbid=1528042952;
3> restore spfile from autobackup;
4> shutdown immediate;
5> restore controlfile from autobackup;
6> startup mount;
7> recover database;
8> alter database open resetlogs;
9> }nocatalog模式下同时丢失所有控制文件和参数文件:SQL> select dbid from v$database;DBID
----------
1528042952SQL> show parameter control;SQL> show parameter spfile;[oracle@orcl dbs]$ rm spfileorcl.ora
[oracle@orcl orcl]$ rm ora_control*
SQL> startup force;
RMAN> run {
2> set dbid=1528042952;
3> restore spfile from '/newdata/orcl/backup/control/c-1528042952-20190218-09';
4> shutdown immediate;
5> restore controlfile from '/newdata/orcl/backup/control/c-1528042952-20190218-09';
6> startup mount;
7> recover database;
8> alter database open resetlogs;
9> }
8、基于时间点的不完全恢复
问题描述:u01用户在data02表空间上创建一张t4表,表内容和u01用户的t1表一致故障模拟:彻底删除t4表使用基于时间点的不完全恢复找回t4表,将数据库以open resetlogs方式打开。
SQL> conn u01/oracle
SQL> create table t4 tablespace data02 as select * from t1;
SQL> alter session set nls_date_format = 'yyyy-mm-dd hh24:mi:ss';
SQL> select sysdate from dual;
SQL> drop table t4 purge;RMAN> run {
2> startup force mount;
3> set until time =”to_date(‘2019-02-19 12:42:02',’yyyy-mm-dd hh24:mi:ss’)";
4> restore database;
5> recover database;
6> sql 'alter database open resetlogs';
7> }
9、删除所有备份,重新对数据库做0级备份。
RMAN> run {
2> delete backupset;
3> backup incremental level 0 database tag 'levle0' format '/newdata/orcl/backup/%U';
4> }
相关文章:
Oracle RMAN 备份恢复
Oracle RMAN 备份恢复 1.什么是RMAN RMAN在数据库服务器的帮助下实现数据库文件、控制文件、数据库文件和控制文件的映像副本,以及归档日志文件,数据库服务器参数文件的备份。RMAN也允许使用脚本文件实现数据的备份与恢复,而且这些脚本保存…...

【MySQL】学习和总结联合查询
🌈个人主页: Aileen_0v0 🔥热门专栏: 华为鸿蒙系统学习|计算机网络|数据结构与算法 💫个人格言:“没有罗马,那就自己创造罗马~” #mermaid-svg-OPj5g6evbkm5ol0U {font-family:"trebuchet ms",verdana,arial,sans-serif;font-siz…...

Flink应用场景
1、介绍 (1) Apache Flink 功能强大,支持开发和运行多种不同种类的应用程序。它的主要特性包括:批流一体化、精密的状态管理、事件时间支持以及精确一次的状态一致性保障等。Flink 不仅可以运行在包括 YARN、 Mesos、Kubernetes 在内的多种资源管理框架…...

产品渲染3D效果图一张多少钱,哪个平台更有性价比?
产品渲染3D效果图的价格受到多方面因素的影响,包括但不限于产品类型、渲染难度以及输出尺寸等。如果效果图需要后期处理,还有可能增加其他费用。接下来,我们来了解一下产品渲染效果图的费用情况。 1.产品渲染3D效果图一张多少钱? …...

云原生之容器编排实践-ruoyi-cloud项目部署到K8S:MySQL8
背景 前面搭建好了 Kubernetes 集群与私有镜像仓库,终于要进入服务编排的实践环节了。本系列拿 ruoyi-cloud 项目进行练手,按照 MySQL , Nacos , Redis , Nginx , Gateway , Auth ,…...

go interface{} 和string的转换问题
1.遇到的问题 问题来源于,我sql模版拼接遇到的问题。 首先,这样是没有问题的。 var qhx interface{} "qhx"s : qhx.(string)fmt.Println(s) 但是当我在这段代码里用:1.类型断言 var sqlStr "select * from tx_user where username %s" join…...

【Git教程】(三)提交详解 —— add、commit、status、stach命令的说明,提交散列值与历史,多次提交及忽略 ~
Git教程 提交详解 1️⃣ 访问权限与时间戳2️⃣ add命令与 commit 命令3️⃣ 提交散列值4️⃣ 提交历史5️⃣ 一种特别的提交查看方法6️⃣ 同一项目的多部不同历史6.1 部分输出:-n6.2 格式化输出:--format、--oneline6.3 统计修改信息:--st…...

vue3个人网站电子宠物
预览 具体代码 Attack.gif Attacked.gif Static.gif Walk.gif Attack.gif Static.gif Attacked.gif Walk.gif <template><div class"pet-container" ref"petContainer"><p class"pet-msg">{{ pet.msg }}</p><img re…...

2.22 作业
顺序表 运行结果 fun.c #include "fun.h" seq_p create_seq_list() {seq_p L (seq_p)malloc(sizeof(seq_list));if(LNULL){printf("空间申请失败\n");return NULL;}L->len 0; bzero(L,sizeof(L->data)); return L; } int seq_empty(seq_p L) {i…...

office word保存pdf高质量设置
1 采用第三方pdf功能生成 分辨率越大质量越好...

微服务设计模式
微服务在过去十年中已经发展到现在非常成熟的水平。许多模式被演变以适应不同的需求。 架构模式 分层图案 2层三层n层客户端服务器 一个服务器和多个客户端大多数在线应用程序,例如电子邮件、银行应用程序等。分开演示 模型-视图-控制器 (MVC) 模型——包含核心功能和数据查看…...

10.网络游戏逆向分析与漏洞攻防-游戏网络架构逆向分析-接管游戏发送数据的操作
内容参考于:易道云信息技术研究院VIP课 上一个内容:接管游戏连接服务器的操作 码云地址(master 分支):染指/titan 码云版本号:00820853d5492fa7b6e32407d46b5f9c01930ec6 代码下载地址,在 ti…...

将SU模型导入ARCGIS,并获取高度信息,多面体转SHP文件(ARCMAP)
问题:将Sketchup中导出的su模型,导入arcgis并得到面shp文件,进而获取各建筑的高度、面积等信息。 思路: (1)导入arcgis得到多面体 (2)转为面shp文件 (3)计算高度/面积等 1、【3D Analyst工具】【转换】【由文件转出】【导入3D文件】(在此步骤之间,建议先建立一个…...

【电子通识】为什么单片机芯片上会有多组VDD电源?
在单片机芯片规格书中,我们经常能看到多个组VDD的设计,如下红框所示管脚都是VDD管脚。 为什么需要这样设计?只设置一个VDD管脚,把其他的VDD管脚让出来多做几个IO或是其他复用功能不好吗?接下来我们从单片机内部的电路结…...
跟我学C++中级篇——单实例和静态化
一、单实例模式 在设计模式中,单实例模式几乎是所有语言中都非常常用的一种设计模式。它在实际的应用中也非常广泛,在很多的开源框架中,都可以看到单实例的影子。单实例,简单的就可以看做在整个应用周期中,只有一个对…...

下载 axios.js 文件到本地【linux】
方式一 npm install axios在$NODE_PATH/node_modules/axios/dist路径下即可找到axios.js。 方式二 1、百度搜索 GitHub 官网:https://github.com/ 2、搜索 axios 3、点击 axios/axios 4、下载到本地 5、解压,进入到 dist 文件夹** 参考&#x…...
一些matlab的常用用法。在MATLAB中,如何实现数据的导入和导出?
一些matlab的常用用法。 MATLAB(Matrix Laboratory)是一款广泛使用的数值计算环境和编程语言,主要用于算法开发、数据可视化、数据分析以及数值计算等。以下是一些MATLAB的常用用法: 创建矩阵: 使用方括号 [] 创建矩阵…...

数学建模【插值与拟合】
一、插值与拟合简介 在数学建模过程中,通常要处理由试验、测量得到的大量数据或一些过于复杂而不便于计算的函数表达式,针对此情况,很自然的想法就是,构造一个简单的函数作为要考察数据或复杂函数的近似。插值和拟合就可以解决这…...

汽修专用产品---选型介绍 汽修示波器 汽车示波器 汽车电子 汽修波形 汽车传感器波形 汽车检测
为了满足汽车电子用户的测量需求,我司特推出汽修专用版示波器,一键测量,轻松找出汽车问题。 LOTO各种型号的示波器其实都可以用作汽车传感器信号波形的检测。汽修应用中,工程师对示波器的性能要求对于LOTO产品来说不算高。 在我们…...

如何将简历项目部署到自己的域名下
通过上一篇文章我们得知如何在Github上Fork项目到自己账号下,还有学会配置好简历项目并部署上线,接下来我们就来看一下该项目是如何部署到自己的域名下的 👇 在项目文档中可以看到该简历项目是部署在Vercel上的,首先打开Vercel的官…...
Python爬虫实战:研究MechanicalSoup库相关技术
一、MechanicalSoup 库概述 1.1 库简介 MechanicalSoup 是一个 Python 库,专为自动化交互网站而设计。它结合了 requests 的 HTTP 请求能力和 BeautifulSoup 的 HTML 解析能力,提供了直观的 API,让我们可以像人类用户一样浏览网页、填写表单和提交请求。 1.2 主要功能特点…...

渗透实战PortSwigger靶场-XSS Lab 14:大多数标签和属性被阻止
<script>标签被拦截 我们需要把全部可用的 tag 和 event 进行暴力破解 XSS cheat sheet: https://portswigger.net/web-security/cross-site-scripting/cheat-sheet 通过爆破发现body可以用 再把全部 events 放进去爆破 这些 event 全部可用 <body onres…...
TRS收益互换:跨境资本流动的金融创新工具与系统化解决方案
一、TRS收益互换的本质与业务逻辑 (一)概念解析 TRS(Total Return Swap)收益互换是一种金融衍生工具,指交易双方约定在未来一定期限内,基于特定资产或指数的表现进行现金流交换的协议。其核心特征包括&am…...
CSS设置元素的宽度根据其内容自动调整
width: fit-content 是 CSS 中的一个属性值,用于设置元素的宽度根据其内容自动调整,确保宽度刚好容纳内容而不会超出。 效果对比 默认情况(width: auto): 块级元素(如 <div>)会占满父容器…...

【网络安全】开源系统getshell漏洞挖掘
审计过程: 在入口文件admin/index.php中: 用户可以通过m,c,a等参数控制加载的文件和方法,在app/system/entrance.php中存在重点代码: 当M_TYPE system并且M_MODULE include时,会设置常量PATH_OWN_FILE为PATH_APP.M_T…...
根目录0xa0属性对应的Ntfs!_SCB中的FileObject是什么时候被建立的----NTFS源代码分析--重要
根目录0xa0属性对应的Ntfs!_SCB中的FileObject是什么时候被建立的 第一部分: 0: kd> g Breakpoint 9 hit Ntfs!ReadIndexBuffer: f7173886 55 push ebp 0: kd> kc # 00 Ntfs!ReadIndexBuffer 01 Ntfs!FindFirstIndexEntry 02 Ntfs!NtfsUpda…...
Qt 事件处理中 return 的深入解析
Qt 事件处理中 return 的深入解析 在 Qt 事件处理中,return 语句的使用是另一个关键概念,它与 event->accept()/event->ignore() 密切相关但作用不同。让我们详细分析一下它们之间的关系和工作原理。 核心区别:不同层级的事件处理 方…...

消息队列系统设计与实践全解析
文章目录 🚀 消息队列系统设计与实践全解析🔍 一、消息队列选型1.1 业务场景匹配矩阵1.2 吞吐量/延迟/可靠性权衡💡 权衡决策框架 1.3 运维复杂度评估🔧 运维成本降低策略 🏗️ 二、典型架构设计2.1 分布式事务最终一致…...
简单介绍C++中 string与wstring
在C中,string和wstring是两种用于处理不同字符编码的字符串类型,分别基于char和wchar_t字符类型。以下是它们的详细说明和对比: 1. 基础定义 string 类型:std::string 字符类型:char(通常为8位)…...
STL 2迭代器
文章目录 1.迭代器2.输入迭代器3.输出迭代器1.插入迭代器 4.前向迭代器5.双向迭代器6.随机访问迭代器7.不同容器返回的迭代器类型1.输入 / 输出迭代器2.前向迭代器3.双向迭代器4.随机访问迭代器5.特殊迭代器适配器6.为什么 unordered_set 只提供前向迭代器? 1.迭代器…...