Oracle 19C Data Guard 单实例1+1部署(Duplicate方式)
环境描述
项目 | 主库 | 备库 |
---|---|---|
操作系统 | CentOS 7.9 | CentOS 7.9 |
数据库版本 | Oracle 19.3.0.0 | Oracle 19.3.0.0 |
ORACLE_UNQNAME | his | hisdg |
IP地址 | 10.172.1.101 | 10.172.1.102 |
Hostname | hisdb01 | hisdb02 |
SID | his | his |
db_name | his | his |
db_unique_name | his | hisdg |
说明
- 主库和备库建议采用相同服务器配置。
- 主库和备库建议采用相同操作系统版本。
- 主库和备库需要采用相同数据库版本(含 PSU)。
注:本次环境中主库和备库文件路径是保持一致的,如果不一致请注意修改。
主库配置
1. 查看是否归档模式
[oracle@hisdb01 dbs]$ sqlplus / as sysdba
SQL> archive log list;
如果没有归档,则执行以下步骤切换为归档模式:
SQL> shutdown immediate;
SQL> startup mount;
SQL> alter database archivelog;
SQL> alter database open;
2. 启动 FORCE_LOGGING 模式
SQL> alter database FORCE LOGGING;
SQL> select FORCE_LOGGING from v$database;
FOR
---
YES
3. 创建参数文件
SQL> create pfile='/home/oracle/pfile.ora' from spfile;
4. 拷贝口令文件到备库
scp -P2222 orapwhis 10.172.1.102:/u01/app/oracle/product/19.3.0/dbhome_1/dbs/
5. 修改 /etc/hosts
主备库都进行配置:
cat >> /etc/hosts <<EOF
10.172.1.101 hisdb01
10.172.1.102 hisdb02
EOF
6. 修改主库参数文件
修改生成的参数文件 /home/oracle/pfile.ora
文件,参考添加以下内容:
*.db_name='his'
*.db_unique_name='his'
*.FAL_SERVER='standby'
*.FAL_CLIENT='primary'
*.log_archive_format='%t_%s_%r.arc'
*.log_archive_config='dg_config=(his,hisdg)'
*.log_archive_DEST_1='location=/u01/archivelog VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=his'
*.LOG_ARCHIVE_DEST_2='SERVICE=standby LGWR ASYNC NOAFFIRM VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=hisdg'
*.db_file_name_convert='/u01/app/oracle/oradata/his','/u01/app/oracle/oradata/his'
*.log_file_name_convert='/u01/app/oracle/oradata/his','/u01/app/oracle/oradata/his'
*.LOG_ARCHIVE_DEST_STATE_1='enable'
*.LOG_ARCHIVE_DEST_STATE_2='enable'
*.standby_file_management='AUTO'
如果不停机在线修改主库参数,参考如下:
alter system set db_unique_name='his' scope=spfile;
alter system set FAL_SERVER='standby' scope=both;
alter system set FAL_CLIENT='primary' scope=both;
alter system set db_file_name_convert='/u01/app/oracle/oradata/his','/u01/app/oracle/oradata/his' scope=spfile;
alter system set log_file_name_convert='/u01/app/oracle/oradata/his','/u01/app/oracle/oradata/his' scope=spfile;
alter system set LOG_ARCHIVE_CONFIG='DG_CONFIG=(his,hisdg)' scope=both;
alter system set log_archive_dest_1='LOCATION=/u01/archivelog VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=his' scope=both;
alter system set log_archive_dest_2='SERVICE=standby LGWR ASYNC NOAFFIRM VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=hisdg' scope=both;
alter system set LOG_ARCHIVE_DEST_STATE_1='enable' scope=both;
alter system set LOG_ARCHIVE_DEST_STATE_2='enable' scope=both;
alter system set STANDBY_FILE_MANAGEMENT='AUTO' scope=both;
7. 修改监听文件
主库编辑 listener.ora
文件,添加以下内容:
vi /u01/app/oracle/product/19.3.0/dbhome_1/network/admin/listener.ora
SID_LIST_LISTENER =(SID_LIST =(SID_DESC =(GLOBAL_DBNAME = his)(ORACLE_HOME = /u01/app/oracle/product/19.3.0/dbhome_1)(SID_NAME = his)))
8. 修改 TNS文件
主库修改tnsnames.ora 追加以下内容:
primary =(DESCRIPTION =(ADDRESS = (PROTOCOL = TCP)(HOST = 10.172.1.101)(PORT = 1521))(CONNECT_DATA =(SERVER = DEDICATED)(SERVICE_NAME = his)))standby =(DESCRIPTION =(ADDRESS = (PROTOCOL = TCP)(HOST = 10.172.1.102)(PORT = 1521))(CONNECT_DATA =(SERVER = DEDICATED)(SERVICE_NAME = his)))
测试TNS:
tnsping primary
tnsping standby
sqlplus sys/oracle@primary as sysdba
sqlplus sys/oracle@standby as sysdba
备库配置
1. 创建必要的文件目录
手动建立以下目录,保持与主库目录一致:
$ cd $ORACLE_BASE
$ mkdir -p /u01/app/oracle/oradata/his
$ mkdir -p /u01/app/oracle/admin/his/adump
$ mkdir -p /u01/app/oracle/fast_recovery_area
2. 创建密码文件
主库和备库的 SYS 密码一致(前面已经从主库拷贝了):
# 方式 1:使用 orapwd 设置相同密码:
orapwd file=orapwhis password=<password># 方式 2:将主库密码文件复制到备库 $ORACLE_HOME/dbs 目录下,并修改密码文件名为 orapwhis:
scp <主库密码文件> <备库用户>@<备库IP>:/u01/app/oracle/product/19.3.0/dbhome_1/dbs/orapwhis
注:参考主库配置中 4.拷贝口令文件到备库
3. 修改监听文件
编辑 /u01/app/oracle/product/19.3.0/dbhome_1/network/admin/listener.ora
文件,添加以下内容:
SID_LIST_LISTENER =(SID_LIST =(SID_DESC =(GLOBAL_DBNAME = his)(ORACLE_HOME = /u01/app/oracle/product/19.3.0/dbhome_1)(SID_NAME = his)))
5. 修改 tnsnames.ora 文件
追加以下内容:
primary =(DESCRIPTION =(ADDRESS = (PROTOCOL = TCP)(HOST = 10.172.1.101)(PORT = 1521))(CONNECT_DATA =(SERVER = DEDICATED)(SERVICE_NAME = his)))standby =(DESCRIPTION =(ADDRESS = (PROTOCOL = TCP)(HOST = 10.172.1.102)(PORT = 1521))(CONNECT_DATA =(SERVER = DEDICATED)(SERVICE_NAME = his)))
测试TNS:
tnsping primary
tnsping standby
sqlplus sys/oracle@primary as sysdba
sqlplus sys/oracle@standby as sysdba
6. 修改备库参数文件并生成 spfile文件
通过从主库拷贝过来的参数文件,修改成备库参数文件,参考如下:
*.audit_file_dest='/u01/app/oracle/admin/his/adump'
*.audit_trail='db'
*.compatible='19.0.0'
*.control_files='/u01/app/oracle/oradata/his/control01.ctl','/u01/app/oracle/oradata/his/control02.ctl'
*.db_block_size=8192
*.db_name='his'
*.db_recovery_file_dest='/u01/app/oracle/fast_recovery_area'
*.db_recovery_file_dest_size=7851m
*.diagnostic_dest='/u01/app/oracle'
*.dispatchers='(PROTOCOL=TCP) (SERVICE=hisXDB)'
*.log_archive_dest_1='LOCATION=/u01/archivelog'
*.log_archive_format='%t_%s_%r.arc'
*.nls_language='SIMPLIFIED CHINESE'
*.nls_territory='CHINA'
*.open_cursors=300
*.pga_aggregate_target=9639m
*.processes=3000
*.remote_login_passwordfile='EXCLUSIVE'
*.sga_target=28917m
*.undo_tablespace='UNDOTBS1'# 添加如下内容
*.db_unique_name='hisdg'
*.service_names='his'
*.log_archive_config='dg_config=(his,hisdg)'
*.FAL_SERVER='primary'
*.FAL_CLIENT='standby'
*.log_archive_DEST_1='location=/u01/archivelog VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=hisdg'
*.LOG_ARCHIVE_DEST_2='SERVICE=primary LGWR ASYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=his'
*.db_file_name_convert='/u01/app/oracle/oradata/his','/u01/app/oracle/oradata/his'
*.log_file_name_convert='/u01/app/oracle/oradata/his','/u01/app/oracle/oradata/his'
*.LOG_ARCHIVE_DEST_STATE_1='enable'
*.LOG_ARCHIVE_DEST_STATE_2='enable'
*.standby_file_management='AUTO'
通过新创建修改的pfile文件生成spfile文件
SQL> startup pfile='/home/oracle/pfile.ora' nomount;
SQL> create spfile from pfile='/home/oracle/pfile.ora';
SQL> shutdown immediate
-- 最后再重新启动到nomount
SQL> startup nomount;
7. 使用 Duplicate 创建物理 Standby
-- 接 RMAN 并连接辅助(auxiliary)实例,备库目前是 nomount 状态:
rman target sys/His#2021@primary auxiliary sys/His#2021@standby-- 执行复制:
duplicate target database for standby from active database nofilenamecheck DORECOVER;
8. 查询备库数据库所有文件
SQL> select status from v$instance;
SQL> select member from v$logfile;
SQL> select name from v$datafile;
SQL> select name from v$tempfile;
SQL> show parameter control
添加standby日志文件
1. 添加主库standby日志文件
新建4个日志组作为standby redolog 日志组,大小与原来的日志组一致:
alter database add standby logfile group 11 '/u01/app/oracle/oradata/his/standby_redo11.log' size 500m;
alter database add standby logfile group 12 '/u01/app/oracle/oradata/his/standby_redo12.log' size 500m;
alter database add standby logfile group 13 '/u01/app/oracle/oradata/his/standby_redo13.log' size 500m;
alter database add standby logfile group 14 '/u01/app/oracle/oradata/his/standby_redo14.log' size 500m;
2. 添加备库standby日志文件
alter database add standby logfile group 11 '/u01/app/oracle/oradata/his/standby_redo11.log' size 500m;
alter database add standby logfile group 12 '/u01/app/oracle/oradata/his/standby_redo12.log' size 500m;
alter database add standby logfile group 13 '/u01/app/oracle/oradata/his/standby_redo13.log' size 500m;
alter database add standby logfile group 14 '/u01/app/oracle/oradata/his/standby_redo14.log' size 500m;
在备库执行
备库打开数据库并实时应用
alter database open read only;
alter database recover managed standby database using current logfile disconnect from session;
alter database recover managed standby database using current logfile disconnect; -- 简写
查看未应用的归档日志
-- 查询未应用的归档日志的最小和最大序列号,以及每个线程未应用的日志数量
select thread#, min(sequence#) no_applied_min, max(sequence#) no_applied_max, count(1) no_applied_all from v$archived_log where applied='NO' and STANDBY_DEST='NO' and deleted<>'YES' group by thread# order by thread#;-- 查询所有未应用的归档日志的详细信息
select thread#, sequence#, applied from v$archived_log where applied='NO' order by thread#, sequence#;
查看进程状态
select process, pid, status, sequence# from v$managed_standby;select name, open_mode, PROTECTION_MODE, DATABASE_ROLE from v$database;
验证主备同步
在主库执行生成一张表:
create table test(a varchar2(2), b date);
insert into test values('1', sysdate);
commit;
在备库查询:
select * from test;
切回主库删除测试表:
drop table test;
然后在主备库执行:
select * from test; -- 应报错则OK.
自动启动DataGuard脚本
创建 /etc/init.d/dataguard
启动脚本
脚本内容如下:
#!/bin/bash
# chkconfig: 2345 98 01
# description: Oracle database dataguard server
# Starts the oracle database dataguard server
# If more than four archive no application will be under the mout synchronization
# make SHELL: MUXINQNG
case $1 in
'start')if [ ! -f /var/lock/subsys/oracle ]; thenprog="listener"echo -n $"Starting $prog: "su - oracle -c "lsnrctl start" >> /var/log/oracle.logRETVAL=$?[ $RETVAL -eq 0 ] && echo "success" || echo "failed"prog="oracle dataguard"echo -n $"Starting $prog: "su - oracle -c "sqlplus /nolog" << EOF >> /var/log/oracle.logconnect / as sysdbastartup mount! sleep 3select name, open_mode, PROTECTION_MODE, DATABASE_ROLE from v\$database;select thread#, min(sequence#) no_applied_min, max(sequence#) no_applied_max, count(1) no_applied_all from v\$archived_log where applied='NO' and STANDBY_DEST='NO' and deleted<>'YES' group by thread# order by thread#;declare wyyn number;beginselect count(1) into wyyn from v\$archived_log where applied='NO' and standby_dest='NO';if wyyn < 5 thenEXECUTE IMMEDIATE 'alter database open';EXECUTE IMMEDIATE 'alter database recover managed standby database using current logfile disconnect';elseEXECUTE IMMEDIATE 'alter database recover managed standby database using current logfile disconnect';end if;end;/select name, open_mode, PROTECTION_MODE, DATABASE_ROLE from v\$database;select applied, count(1) from v\$archived_log where applied='NO' group by applied;exit
EOFRETVAL=$?[ $RETVAL -eq 0 ] && echo "success" || echo "failed"echo[ $RETVAL -eq 0 ] && touch /var/lock/subsys/oracle || RETVAL=1fi;;
'stop')prog="listener"echo -n $"Stopping $prog: "su - oracle -c "lsnrctl stop" >> /var/log/oracle.logRETVAL=$?[ $RETVAL -eq 0 ] && echo "success" || echo "failed"echoprog="oracle dataguard"echo -n $"Stopping $prog: "su - oracle -c "sqlplus /nolog" << EOF >> /var/log/oracle.logconnect / as sysdbaalter database recover managed standby database cancel;shutdown immediateexit
EOFRETVAL=$?[ $RETVAL -eq 0 ] && echo "success" || echo "failed"echo[ $RETVAL -eq 0 ] && rm -f /var/lock/subsys/oracle;;
'restart')prog="oracle dataguard"echo -n $"Stopping $prog: "$0 stopprog="oracle dataguard"echo -n $"Starting $prog: "$0 start;;
'status')su - oracle -c "lsnrctl status"su - oracle -c "sqlplus /nolog" << EOFconnect / as sysdbaselect name, open_mode, PROTECTION_MODE, DATABASE_ROLE from v\$database;select process, status from v\$managed_standby;exit
EOF;;
*)echo $"Usage: $0 {start|stop|restart|status}";;
esac
设置脚本权限:
chmod 775 /etc/init.d/dataguard
将脚本转换为 systemd 服务单元文件
创建一个 systemd 服务单元文件 /etc/systemd/system/dataguard.service
,内容如下:
[Unit]
Description=Oracle database dataguard server
After=network.target[Service]
Type=forking
ExecStart=/etc/init.d/dataguard start
ExecStop=/etc/init.d/dataguard stop
User=root
Group=root
Restart=on-failure[Install]
WantedBy=multi-user.target
重新加载 systemd 配置:
systemctl daemon-reload
启用服务(开机自启):
systemctl enable dataguard
手动启停dataguard服务:
systemctl start dataguard
systemctl stop dataguard
systemctl status dataguard
删除应用归档日志
创建定时任务和脚本:
crontab -l
00 01 * * * /u01/script/del_dg_arch.sh
del_dg_arch.sh
脚本内容:
#!/bin/bash
# delete dataguard applied archive log
# use database v$archived_log get applied archive log in os rmarchive_name=$(su - oracle -c "sqlplus -silent / as sysdba" <<EOF
set pagesize 0 feedback off verify off heading off echo off numwidth 4
select NAME from V\$ARCHIVED_LOG WHERE STATUS='A' AND APPLIED='YES' and registrar='RFS' and name is not null;
exit
EOF
)
result=$?
if [ $result -eq 0 ]; thenrecord=`echo $archive_name | wc -w`if [ $record -gt 0 ]; thenfor arch_list in $archive_namedoecho $arch_listrm -f $arch_list && echo 'delete archive succeed' || echo 'delete archive Failure'donefi
fi
su - oracle -c "rman target /" <<EOF
crosscheck archivelog all;
delete noprompt expired archivelog all;
exit;
EOF
相关文章:
Oracle 19C Data Guard 单实例1+1部署(Duplicate方式)
环境描述 项目主库备库操作系统CentOS 7.9CentOS 7.9数据库版本Oracle 19.3.0.0Oracle 19.3.0.0ORACLE_UNQNAMEhishisdgIP地址10.172.1.10110.172.1.102Hostnamehisdb01hisdb02SIDhishisdb_namehishisdb_unique_namehishisdg 说明 主库和备库建议采用相同服务器配置。主库和…...
网安小白的端口关闭实践
proceeding 扫描 $ nmap --top-ports 10000 10.162.8.227 Starting Nmap 7.94SVN ( https://nmap.org ) at 2024-11-29 17:07 CST Nmap scan report for star (10.162.8.227) Host is up (0.00023s latency). Not shown: 8367 closed tcp ports (conn-refused) PORT ST…...
微软要求 Windows Insider 用户试用备受争议的召回功能
拥有搭载 Qualcomm Snapdragon 处理器的 Copilot PC 的 Windows Insider 计划参与者现在可以试用 Recall,这是一项臭名昭著的快照拍摄 AI 功能,在今年早些时候推出时受到了很多批评。 Windows 营销高级总监 Melissa Grant 上周表示:“我们听…...
nginx反向代理、负载均衡
nginx反向代理、负载均衡 一、反向代理 proxy模块1、作用2、语法3、配置后端服务器记录真实的客户端地址 二、负载均衡 upstream模块2.1 负载均衡作用2.2 调度算法/策略2.3 配置语法 一、反向代理 proxy模块 1、作用 提升业务的性能、并发能力 隐藏后端真实业务服务器的信息&…...
mysql集群NDB方式部署
1. 基本信息 部署机器角色部署路径192.168.0.1管理节点部署目录: /alidata1/mysql-cluster-8.4.3192.168.0.2管理节点192.168.0.3数据/SQL节点数据目录:192.168.0.4数据/SQL节点/alidata1/mysql-cluster-8.4.3/data/ndb-mgmd192.168.0.5数据节点 – 新增/alidata1/mysql-clust…...
Fabric.js 中文文档
Fabric.js 中文文档 基于canvas画布的实用类Fabric.js的使用 4、Fabric.js 常用的方法&事件 Fabric.js 画布 defaultCursor 属性(1) 官网文档地址:http://fabricjs.com/docs/github 地址:https://github.com/fabricjs/fabric.js Demo地址&#x…...
【面试重难点问题】c++中为什么可以函数重载,但是c语言中不可以
本文章是对于“c中为什么可以函数重载,但是c语言中不可以”这个问题的探究: 当然这是一个值得深入探讨的问题。在面对难题时,我们常常会竭尽全力寻找答案,不惜挖掘三尺以探究竟。面对上面这个问题时,理解计算机系统的…...
Elasticsearch优化汇总
文章目录 引言硬件设置优化禁用swap给系统留足够的内存JVM配置使用更快的硬件,使用 SSD 参数优化分片设计增加Buffer大小(增加吞吐量)预热文件系统 cache es查询设计优化预索引数据使用filter代替query字段映射避免使用脚本优化日期搜索为只读索引执行 force-merge预热全局序号…...
【落羽的落羽 C语言篇】指针·之其四
文章目录 一、字符指针变量二、数组指针变量1. 创建2. 数组指针类型3. 二维数组传参的本质 三、函数指针变量1. 创建2. 函数指针类型3. 函数指针的使用4. 分析两句“有趣”的代码(doge)5. typedef关键字 四、函数指针数组1. 创建2. 函数指针数组的用途—…...
十二、正则表达式、元字符、替换修饰符、手势和对话框插件、字符串截取
1. 正则表达式 1.1 基本使用 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>Document</title&g…...
嵌入式的应用领域有哪些
首先给大家介绍一下,STM32是意法半导体(STMicroelectronics)生产的32位微控制器(MCU)系列,采用ARM Cortex-M内核设计,以其高性能、低功耗和广泛的应用而闻名。 那么意法半导体是在…...
git merge :开发分支与主分支的交互
一、开发分支(dev)上的代码达到上线的标准后,要合并到 master 分支 git checkout dev git pull git checkout master git merge dev git push -u origin master 二、当master代码改动了,需要更新开发分支(dev&#x…...
OGRE 3D----4. OGRE和QML共享opengl上下文
在现代图形应用开发中,OGRE(Object-Oriented Graphics Rendering Engine)和QML(Qt Modeling Language)都是非常流行的工具。OGRE提供了强大的3D渲染能力,而QML则用于构建灵活的用户界面。在某些应用场景中,我们需要在同一个应用程序中同时使用OGRE和QML,并且共享OpenGL…...
ArcGIS 软件中路网数据的制作
内容导读 路网数据是进行网络分析的基础,它是建立网络数据集的数据来源。 本文我们以OSM路网数据为例,详细介绍OSM路网数据从下载,到数据处理,添加属性,完成符合网络分析的网络数据集的全部过程。 01 数据获取 比较…...
Milvus 2.5:全文检索上线,标量过滤提速,易用性再突破!
01. 概览 我们很高兴为大家带来 Milvus 2.5 最新版本的介绍。 在 Milvus 2.5 里,最重要的一个更新是我们带来了“全新”的全文检索能力,之所以说“全新”主要是基于以下两点: 第一,对于全文检索基于的 BM25 算法,我们采…...
Windows常用DOS指令(附案例)
文章目录 1.dir 查看当前目录2.cd 进入指定目录3.md 创建指定目录4.cd> 创建指定文件5.rd 删除指定空目录6.del 删除指定文件7.copy 复制文件8.xcopy 批量复制9.ren 改名10.type 在命令行空窗口打开文件11.cls 清空DOS命令窗口12.chkdsk 检查磁盘使用情况13.time 显示和设置…...
搜索二维矩阵 II(java)
题目描述 编写一个高效的算法来搜索 m x n 矩阵 matrix 中的一个目标值 target 。该矩阵具有以下特性: 每行的元素从左到右升序排列。每列的元素从上到下升序排列。 代码思路: 用暴力算法: class Solution {public boolean searchMatrix(…...
Webpack 的构建流程
Webpack 的构建流程可以概括为以下几个步骤: 1. 初始化: Webpack 读取配置文件(webpack.config.js),合并默认配置和命令行参数,初始化Compiler对象。 2. 构建依赖图: 从入口文件开始递归地分…...
Kylin Server V10 下 RocketMQ 主备自动切换模式部署
一、NameServer简介 NameServer 是一个注册中心,提供服务注册和服务发现的功能。NameServer 可以集群部署,集群中每个节点都是对等的关系,节点之间互不通信。 服务注册 Broker 启动的时候会向所有的 NameServer 节点进行注册,注意这里是向集群中所有的 NameServer 节点注册…...
Linux启动中出现“psi: inconsistent task state!”错误可能原因
在Linux系统中,psi: inconsistent task state! 异常日志通常与 PSI(Pressure Stall Information)相关。PSI 是 Linux 内核中的一个特性,用于监控系统资源的压力情况,如 CPU、内存和 I/O 等。该日志信息表明在处理任务状…...
FCBP 认证考试要点摘要
理论知识 数据处理与分析:包括数据的收集、清洗、转换、存储等基础操作,以及数据分析方法,如描述性统计分析、相关性分析、数据挖掘算法等的理解和应用 。数据可视化:涉及图表类型的选择与应用,如柱状图、折线图、饼图…...
ubuntu防火墙入门(一)——设置服务、关闭端口
本机想通过git clone gitgithub.com:skumra/robotic-grasping.git下载代码,firewall-config中需要为当前区域的防火墙开启SSH服务吗 是的,如果你想通过 git clone gitgithub.com:skumra/robotic-grasping.git 使用 SSH 协议从 GitHub 下载代码࿰…...
yt6801 ubuntu有线连接驱动安装
耀世16pro的有线网卡驱动安装 下载地址: YT6801 千兆PCIE以太网控制器芯片 1. 创建安装目录 mkdir yt68012. 解压驱动文件 unzip yt6801-linux-driver-1.0.27.zip -d yt68013. 进入驱动目录 cd yt68014. 安装驱动 以 root 权限运行安装脚本: sudo su ./yt_ni…...
ASP.NET Core Web API 控制器
文章目录 一、基类:ControllerBase二、API 控制器类属性三、使用 Get() 方法提供天气预报结果 在深入探讨如何编写自己的 PizzaController 类之前,让我们先看一下 WeatherController 示例中的代码,了解它的工作原理。 在本单元中,…...
【论文笔记】Tool Learning with Foundation Models 论文笔记
Tool Learning with Foundation Models 论文笔记 文章目录 Tool Learning with Foundation Models 论文笔记摘要背景:工作: 引言工具学习的发展本文工作(大纲&目录) 背景2.1 工具使用的认知起源2.2 工具分类:用户界…...
STM32 + CubeMX + 串口 + IAP升级
这篇文章分享一个简单的串口IAP Demo,实现使用串口更新我们自己的App程序。 目录 一、IAP简介二、Stm32CubeMx配置三、Boot代码及配置1、代码2、配置 四、App代码及配置1、代码2、配置 五、效果展示 一、IAP简介 IAP介绍可以在网上找找,相关资料很多&am…...
Oracle-—系统包使用
文章目录 系统包dbms_redefinition 系统包 dbms_redefinition 功能介绍:该包体可以实现将Oracle库下的表在线改为分区结构或者重新定义; 说明:在检查表是否可以重定义和开始重定义的过程中,按照表是否存在主键,参数 o…...
使用Hugo和GitHub Pages创建静态网站个人博客
不需要服务器,不需要域名,不需要数据库,可以选择模版,内容为Markdown格式。 Hugo:https://gohugo.io 文档:https://gohugo.io/getting-started/quick-start/ 中文文档:https://www.gohugo.or…...
群晖系统证书延期
群晖系统默认证书过期了 接下来操作续期证书 一直下一步会让下载一个压缩包里面包含私钥和签发证书请求 下载后解压出来 在群晖里用证书续期 对以前的证书签署签发请求 选择刚刚解压出来的证书 执行完成后会下载一个压缩包,解压出来就会得到新证书 给群晖新增证书 选…...
android shader gl_Position是几个分量
在Android的OpenGL ES中,gl_Position是顶点着色器(Vertex Shader)的一个内置输出变量,它用于指定顶点在裁剪空间(Clip Space)中的位置。gl_Position是一个四维向量(4-component vectorÿ…...
JAVA练习-ArrayList数组
需求 建立3个Student类的实例 原始数组: public class Student {private String name;private int score;public Student(String name, int score) {this.name name;this.score score;}Overridepublic String toString() {return name "的分数࿱…...
springboot339javaweb的新能源充电系统pf(论文+源码)_kaic
毕 业 设 计(论 文) 题目:新能源充电系统的设计与实现 摘 要 如今社会上各行各业,都喜欢用自己行业的专属软件工作,互联网发展到这个时候,人们已经发现离不开了互联网。新技术的产生,往往能解…...
数据结构——排序第三幕(深究快排(非递归实现)、快排的优化、内省排序,排序总结)超详细!!!!
文章目录 前言一、非递归实现快排二、快排的优化版本三、内省排序四、排序算法复杂度以及稳定性的分析总结 前言 继上一篇博客基于递归的方式学习了快速排序和归并排序 今天我们来深究快速排序,使用栈的数据结构非递归实现快排,优化快排(三路…...
Jackson:Java对象和JSON字符串的转换处理库使用指南
Jackson介绍 Jackson 是一个非常流行的 Java JSON 处理库,它能够将 Java 对象与 JSON 字符串相互转换。 Jackson 工具主要用于将请求的参数(例如前端发送的 JSON 数据)和响应的数据(例如后端返回给前端的数据)转换成…...
mac maven编译出现问题
背景 进行maven install 命令,报错: [ERROR] COMPILATION ERROR : [INFO] ------------------------------------------------------------- [ERROR] No compiler is provided in this environment. Perhaps you are running on a JRE rather than a J…...
深入讲解Spring Boot和Spring Cloud,外加图书管理系统实战!
很抱歉,我的疏忽,说了这么久还没有给大家详细讲解过Spring Boot和Spring Cloud,那今天给大家详细讲解一下。 大家可以和下面这三篇博客一起看: 1、Spring Boot 和 Spring Cloud 微服务开发实践详解https://blog.csdn.net/speaking_me/artic…...
【AIGC】2023-ICCV-用于高保真语音肖像合成的高效区域感知神经辐射场
2023-ICCV-Efficient Region-Aware Neural Radiance Fields for High-Fidelity Talking Portrait Synthesis 用于高保真语音肖像合成的高效区域感知神经辐射场摘要1. 引言2. 相关工作3. 方法3.1 准备工作和问题设置3.2 三平面哈希表示3.3. 区域注意模块3.4 训练细节 4. 实验4.1…...
如何写一份优质技术文档
作者简介: 本文作者拥有区块链创新专利30,是元宇宙标准化工作组成员、香港web3标准工作组成员,参与编写《数据资产确权与交易安全评价标准》、《链接元宇宙:应用与实践》、《香港Web3.0标准化白皮书》等标准,下面提供…...
ML 系列:第 35 节 - 机器学习中的数据可视化
ML 系列:第 35 天 - 机器学习中的数据可视化 文章目录 一、说明二、数据可视化2.1 直方图2.2 箱线图2.3 散点图2.4 条形图2.5 线图2.6 热图 三、结尾 一、说明 描述性统计和数据可视化是理解和解释机器学习数据的基础。它们有助于总结和直观地呈现数据,…...
存储服务器一般做是做什么阵列?详细列举一下
存储服务器通常使用 RAID(Redundant Array of Independent Disks) 阵列技术来管理磁盘,以提高数据的性能、可靠性和可用性。所选择的 RAID 类型取决于存储服务器的具体用途和需求,比如性能要求、容量需求、容错能力等。 以下是存…...
uniapp使用扩展组件uni-data-select出现的问题汇总
前言 不知道大家有没有学习过我的这门课程那,《uniCloud云开发Vue3版本官方推荐用法》,这么课程已经得到了官方推荐,想要快速上手unicloud的小伙伴们,可以学习一下这么课程哦,不要忘了给一键三连呀。 在录制这门课程…...
pdf.js 预览pdf的时候发票数据缺失显示不全:字体加载出错(缺失)导致部分缺失
首先,排除后端返回的PDF文件流是没有问题的: 但是在vue项目中是这样的: 明显是显示不全,F12查看报错信息,有以下警告: pdf.js:2153 Warning: Error during font loading: The CMap “baseUrl” paramet…...
【设计模式】【结构型模式(Structural Patterns)】之外观模式(Facade Pattern)
1. 设计模式原理说明 外观模式(Facade Pattern) 是一种结构型设计模式,它提供了一个统一的接口,用来访问子系统中的一群接口。外观模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。通过隐藏子系统的复杂…...
Redis使用场景-缓存-缓存穿透
前言 之前在针对实习面试的博文中讲到Redis在实际开发中的生产问题,其中缓存穿透、击穿、雪崩在面试中问的最频繁,本文加了图解,希望帮助你更直观的了解缓存穿透😀 (放出之前写的针对实习面试的关于Redis生产问题的博…...
介绍 Apache Spark 的基本概念和在大数据分析中的应用
Apache Spark 是一个开源的大数据处理框架,它提供了快速、通用、可扩展的数据处理能力。Spark可以处理大规模数据集,并且在内存中进行数据操作,从而实现高速的数据处理和分析。 Spark的核心概念是弹性分布式数据集(Resilient Dis…...
OpenCPN-插件之Dashboard Tactics
1:相关链接Dashboard Tactics :: OpenCPN Dashboard Tactics Plugin rgleason/dashboard_tactics_pi: OpenCPN dashboard built-in plugin merger with external tactics_pi plugin NMEAconverter :: OpenCPN 2:显示样式 3:代码 这个插件…...
【LeetCode面试150】——20有效的括号
博客昵称:沈小农学编程 作者简介:一名在读硕士,定期更新相关算法面试题,欢迎关注小弟! PS:哈喽!各位CSDN的uu们,我是你的小弟沈小农,希望我的文章能帮助到你。欢迎大家在…...
JWT介绍和结合springboot项目实践(登录、注销授权认证管理)
目录 一、JWT介绍(一)基本介绍(二)jwt有哪些库1、jjwt(Java JWT)2、nimbus - jwt - jwt - api 和 nimbus - jwt - jwt - impl3、spring - security - jwt(已弃用,但在旧项目中有参考…...
Linux 下安装 Golang环境
Linux 下安装 Golang 获取Golang下载地址 安装 进入终端,登入root来到应用安装目录使用 wget 下载解压文件配置环境变量查看golang版本,测试是否配置成功GO设置代理环境变量 本篇教程 以 centos7 为环境基础 不使用软件包管理器安装,原因&am…...
「Mac畅玩鸿蒙与硬件36」UI互动应用篇13 - 数字滚动抽奖器
本篇将带你实现一个简单的数字滚动抽奖器。用户点击按钮后,屏幕上的数字会以滚动动画的形式随机变动,最终显示一个抽奖数字。这个项目展示了如何结合定时器、状态管理和动画实现一个有趣的互动应用。 关键词 UI互动应用数字滚动动画效果状态管理用户交…...