数据库管理-第八十期 Exadata to RAC(x86) ADG(20230605)

news2024/12/23 23:36:02

数据库管理 2023-06-05

  • 第八十期 Exadata to RAC(x86) ADG
    • 1 环境
    • 2 搭建流程
      • 2.1配置静态监听-主库
      • 2.2配置静态监听-备库
      • 2.3配置本地命名-主备库
      • 2.4数据库配置-主库
      • 2.5生成参数文件和密码文件-主库
      • 2.6创建目录并上传密码文件-备库
      • 2.7添加数据库服务-备库
      • 2.8修改参数文件-备库
      • 2.9复制数据库
      • 2.10创建DG_Broker配置
      • 2.11配置ADG
    • 总结

第八十期 Exadata to RAC(x86) ADG

不知不觉又来到了第八个整十期。
上一期就说过,5月底就完成了之前说的Exadata和基于x86服务器RAC间ADG的灾备环境搭建,本次操作其实和一般的ADG没什么区别,主备端的节点数不一样,同时家目录配置也有些不一样。

1 环境

生产库(dbaas)- Exadata X9M-2

主机名主机IPVIPSCANIP
dbadm0110.10.11.20410.10.11.20610.10.11.208
dbadm0210.10.11.20510.10.11.207

灾备库(dbdg)- RAC(x86)

主机名主机IPVIPSCANIP
sv41910.10.10.1610.10.10.2010.10.10.24
sv42010.10.10.1710.10.10.21
sv42110.10.10.1810.10.10.22
sv42210.10.10.1910.10.10.23

2 搭建流程

2.1配置静态监听-主库

注:本步骤均在grid用户下执行
dbadm01:

cd /u01/app/19.0.0.0/grid/network/admin
vim listener.ora #添加以下内容
SID_LIST_LISTENER =
  (SID_LIST =
    (SID_DESC =
      (GLOBAL_DBNAME = dbaas)
      (ORACLE_HOME = /u01/app/oracle/product/19.0.0.0/dbhome_1)
      (SID_NAME = dbaas1)
    )
    (SID_DESC =
      (GLOBAL_DBNAME = dbaas_DGMGRL)
      (ORACLE_HOME = /u01/app/oracle/product/19.0.0.0/dbhome_1)
      (SID_NAME = dbaas1)
    )
    (SID_DESC =
      (program = extproc)
      (ORACLE_HOME = /u01/app/oracle/product/19.0.0.0/dbhome_1)
      (SID_NAME = plsextproc)
    )
  )
SID_LIST_LISTENER_SCAN1 =
  (SID_LIST =
    (SID_DESC =
      (GLOBAL_DBNAME =dbaas)
      (ORACLE_HOME = /u01/app/oracle/product/19.0.0.0/dbhome_1)
      (SID_NAME = dbaas1)
    )
    (SID_DESC =
      (GLOBAL_DBNAME = dbaas_DGMGRL)
      (ORACLE_HOME = /u01/app/oracle/product/19.0.0.0/dbhome_1)
      (SID_NAME = dbaas1)
    )
    (SID_DESC =
      (program = extproc)
      (ORACLE_HOME = /u01/app/oracle/product/19.0.0.0/dbhome_1)
      (SID_NAME = plsextproc)
    )
  )

dbadm02:

cd /u01/app/19.0.0.0/grid/network/admin
vim listener.ora #添加以下内容
SID_LIST_LISTENER =
  (SID_LIST =
    (SID_DESC =
      (GLOBAL_DBNAME = dbaas)
      (ORACLE_HOME = /u01/app/oracle/product/19.0.0.0/dbhome_1)
      (SID_NAME = dbaas2)
    )
    (SID_DESC =
      (GLOBAL_DBNAME = dbaas_DGMGRL)
      (ORACLE_HOME = /u01/app/oracle/product/19.0.0.0/dbhome_1)
      (SID_NAME = dbaas2)
    )
    (SID_DESC =
      (program = extproc)
      (ORACLE_HOME = /u01/app/oracle/product/19.0.0.0/dbhome_1)
      (SID_NAME = plsextproc)
    )
  )
SID_LIST_LISTENER_SCAN1 =
  (SID_LIST =
    (SID_DESC =
      (GLOBAL_DBNAME = dbaas)
      (ORACLE_HOME = /u01/app/oracle/product/19.0.0.0/dbhome_1)
      (SID_NAME = dbaas2)
    )
    (SID_DESC =
      (GLOBAL_DBNAME = dbaas_DGMGRL)
      (ORACLE_HOME = /u01/app/oracle/product/19.0.0.0/dbhome_1)
      (SID_NAME = dbaas2)
    )
    (SID_DESC =
      (program = extproc)
      (ORACLE_HOME = /u01/app/oracle/product/19.0.0.0/dbhome_1)
      (SID_NAME = plsextproc)
    )
  )

静态监听配置完成后需要分节点重新加载监听配置,期间可能出现数据库访问延迟:

lsnrctl reload listener #在每个节点执行
lsnrctl reload listener_scan1 #在运行scan的节点执行

2.2配置静态监听-备库

注:本步骤均在grid用户下执行
sv419:

cd /u01/app/19.0.0/grid/network/admin
vim listener.ora #添加以下内容
SID_LIST_LISTENER =
  (SID_LIST =
    (SID_DESC =
      (GLOBAL_DBNAME = dbdg)
      (ORACLE_HOME = /u01/app/oracle/product/19.0.0/dbhome_1)
      (SID_NAME = dbdg1)
    )
    (SID_DESC =
      (GLOBAL_DBNAME = dbdg_DGMGRL)
      (ORACLE_HOME = /u01/app/oracle/product/19.0.0/dbhome_1)
      (SID_NAME = dbdg1)
    )
    (SID_DESC =
      (program = extproc)
      (ORACLE_HOME = /u01/app/oracle/product/19.0.0/dbhome_1)
      (SID_NAME = plsextproc)
    )
  )
SID_LIST_LISTENER_SCAN1 =
  (SID_LIST =
    (SID_DESC =
      (GLOBAL_DBNAME = dbdg)
      (ORACLE_HOME = /u01/app/oracle/product/19.0.0/dbhome_1)
      (SID_NAME = dbdg1)
    )
    (SID_DESC =
      (GLOBAL_DBNAME = dbdg_DGMGRL)
      (ORACLE_HOME = /u01/app/oracle/product/19.0.0/dbhome_1)
      (SID_NAME = dbdg1)
    )
    (SID_DESC =
      (program = extproc)
      (ORACLE_HOME = /u01/app/oracle/product/19.0.0/dbhome_1)
      (SID_NAME = plsextproc)
    )
  )

sv420:

cd /u01/app/19.0.0/grid/network/admin
vim listener.ora #添加以下内容
SID_LIST_LISTENER =
  (SID_LIST =
    (SID_DESC =
      (GLOBAL_DBNAME = dbdg)
      (ORACLE_HOME = /u01/app/oracle/product/19.0.0/dbhome_1)
      (SID_NAME = dbdg2)
    )
    (SID_DESC =
      (GLOBAL_DBNAME = dbdg_DGMGRL)
      (ORACLE_HOME = /u01/app/oracle/product/19.0.0/dbhome_1)
      (SID_NAME = dbdg2)
    )
    (SID_DESC =
      (program = extproc)
      (ORACLE_HOME = /u01/app/oracle/product/19.0.0/dbhome_1)
      (SID_NAME = plsextproc)
    )
  )
SID_LIST_LISTENER_SCAN1 =
  (SID_LIST =
    (SID_DESC =
      (GLOBAL_DBNAME = dbdg)
      (ORACLE_HOME = /u01/app/oracle/product/19.0.0/dbhome_1)
      (SID_NAME = dbdg2)
    )
    (SID_DESC =
      (GLOBAL_DBNAME = dbdg_DGMGRL)
      (ORACLE_HOME = /u01/app/oracle/product/19.0.0/dbhome_1)
      (SID_NAME = dbdg2)
    )
    (SID_DESC =
      (program = extproc)
      (ORACLE_HOME = /u01/app/oracle/product/19.0.0/dbhome_1)
      (SID_NAME = plsextproc)
    )
  )

sv421:

cd /u01/app/19.0.0/grid/network/admin
vim listener.ora #添加以下内容
SID_LIST_LISTENER =
  (SID_LIST =
    (SID_DESC =
      (GLOBAL_DBNAME = dbdg)
      (ORACLE_HOME = /u01/app/oracle/product/19.0.0/dbhome_1)
      (SID_NAME = dbdg3)
    )
    (SID_DESC =
      (GLOBAL_DBNAME = dbdg_DGMGRL)
      (ORACLE_HOME = /u01/app/oracle/product/19.0.0/dbhome_1)
      (SID_NAME = dbdg3)
    )
    (SID_DESC =
      (program = extproc)
      (ORACLE_HOME = /u01/app/oracle/product/19.0.0/dbhome_1)
      (SID_NAME = plsextproc)
    )
  )
SID_LIST_LISTENER_SCAN1 =
  (SID_LIST =
    (SID_DESC =
      (GLOBAL_DBNAME = dbdg)
      (ORACLE_HOME = /u01/app/oracle/product/19.0.0/dbhome_1)
      (SID_NAME = dbdg3)
    )
    (SID_DESC =
      (GLOBAL_DBNAME = dbdg_DGMGRL)
      (ORACLE_HOME = /u01/app/oracle/product/19.0.0/dbhome_1)
      (SID_NAME = dbdg3)
    )
    (SID_DESC =
      (program = extproc)
      (ORACLE_HOME = /u01/app/oracle/product/19.0.0/dbhome_1)
      (SID_NAME = plsextproc)
    )
  )

sv422:

cd /u01/app/19.0.0/grid/network/admin
vim listener.ora #添加以下内容
SID_LIST_LISTENER =
  (SID_LIST =
    (SID_DESC =
      (GLOBAL_DBNAME = dbdg)
      (ORACLE_HOME = /u01/app/oracle/product/19.0.0/dbhome_1)
      (SID_NAME = dbdg4)
    )
    (SID_DESC =
      (GLOBAL_DBNAME = dbdg_DGMGRL)
      (ORACLE_HOME = /u01/app/oracle/product/19.0.0/dbhome_1)
      (SID_NAME = dbdg4)
    )
    (SID_DESC =
      (program = extproc)
      (ORACLE_HOME = /u01/app/oracle/product/19.0.0/dbhome_1)
      (SID_NAME = plsextproc)
    )
  )
SID_LIST_LISTENER_SCAN1 =
  (SID_LIST =
    (SID_DESC =
      (GLOBAL_DBNAME = dbdg)
      (ORACLE_HOME = /u01/app/oracle/product/19.0.0/dbhome_1)
      (SID_NAME = dbdg4)
    )
    (SID_DESC =
      (GLOBAL_DBNAME = dbdg_DGMGRL)
      (ORACLE_HOME = /u01/app/oracle/product/19.0.0/dbhome_1)
      (SID_NAME = dbdg4)
    )
    (SID_DESC =
      (program = extproc)
      (ORACLE_HOME = /u01/app/oracle/product/19.0.0/dbhome_1)
      (SID_NAME = plsextproc)
    )
  )

静态监听配置完成后需要分节点重新加载监听配置:

lsnrctl reload listener #在每个节点执行
lsnrctl reload listener_scan1 #在运行scan的节点执行

2.3配置本地命名-主备库

注:本步骤均在oracle用户下执行。
主库:

cd /u01/app/oracle/product/19.0.0.0/dbhome_1/network/admin
vim tnsnames.ora #添加以下内容
dbaas =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = 10.10.11.208)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = dbaas)
    )
  )

dbdg =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = 10.10.10.24)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = dbdg)
    )
  )

备库:

cd /u01/app/oracle/product/19.0.0/dbhome_1/network/admin
vim tnsnames.ora #添加以下内容
dbaas =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = 10.10.11.208)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = dbaas)
    )
  )

dbdg =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = 10.10.10.24)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = dbdg)
    )
  )

2.4数据库配置-主库

alter database force logging;

alter system set LOG_ARCHIVE_CONFIG='DG_CONFIG=(dbaas,dbdg)' sid='*';
alter system set fal_client='dbaas' sid='*';    
alter system set FAL_SERVER='dbdg' sid='*';
alter system set dg_broker_config_file1='+DATAC1/dbaas/dr1dbaas.dat' sid='*';
alter system set dg_broker_config_file2='+RECOC1/dbaas/dr2dbaas.dat' sid='*';
alter system set standby_file_management=AUTO scope=both sid='*';

alter database add standby logfile thread 1 group 31 ('+DATAC1') size 10G;
alter database add standby logfile thread 1 group 32 ('+DATAC1') size 10G;
alter database add standby logfile thread 1 group 33 ('+DATAC1') size 10G;
alter database add standby logfile thread 1 group 34 ('+DATAC1') size 10G;
alter database add standby logfile thread 1 group 35 ('+DATAC1') size 10G;
alter database add standby logfile thread 1 group 36 ('+DATAC1') size 10G;
alter database add standby logfile thread 1 group 37 ('+DATAC1') size 10G;
alter database add standby logfile thread 2 group 38 ('+DATAC1') size 10G;
alter database add standby logfile thread 2 group 39 ('+DATAC1') size 10G;
alter database add standby logfile thread 2 group 40 ('+DATAC1') size 10G;
alter database add standby logfile thread 2 group 41 ('+DATAC1') size 10G;
alter database add standby logfile thread 2 group 42 ('+DATAC1') size 10G;
alter database add standby logfile thread 2 group 43 ('+DATAC1') size 10G;
alter database add standby logfile thread 2 group 44 ('+DATAC1') size 10G;
alter database add standby logfile thread 3 group 45 ('+DATAC1') size 10G;
alter database add standby logfile thread 3 group 46 ('+DATAC1') size 10G;
alter database add standby logfile thread 3 group 47 ('+DATAC1') size 10G;
alter database add standby logfile thread 3 group 48 ('+DATAC1') size 10G;
alter database add standby logfile thread 3 group 49 ('+DATAC1') size 10G;
alter database add standby logfile thread 3 group 50 ('+DATAC1') size 10G;
alter database add standby logfile thread 3 group 51 ('+DATAC1') size 10G;
alter database add standby logfile thread 4 group 52 ('+DATAC1') size 10G;
alter database add standby logfile thread 4 group 53 ('+DATAC1') size 10G;
alter database add standby logfile thread 4 group 54 ('+DATAC1') size 10G;
alter database add standby logfile thread 4 group 55 ('+DATAC1') size 10G;
alter database add standby logfile thread 4 group 56 ('+DATAC1') size 10G;
alter database add standby logfile thread 4 group 57 ('+DATAC1') size 10G;
alter database add standby logfile thread 4 group 58 ('+DATAC1') size 10G;

注:因节点数不一样,按照节点数大的一边配置standby logfile,后期主端扩容节点超过4或备端继续增加节点也需要先添加对应的standby logfile

2.5生成参数文件和密码文件-主库

oracle用户执行:

sqlplus /as sysdba
create pfile='/home/oracle/initdbdg.ora' from spfile;
scp initdbdg.ora 10.10.10.16:~

grid用户执行:

asmcmd
asmcmd> pwcopy +DATAC1/DBAAS/PASSWORD/pwdddg.xxx.xxxxxxxxxx /home/grid/pwddbdg
asmcmd> exit
scp pwddbdg 10.10.10.16:~

2.6创建目录并上传密码文件-备库

oracle用户执行,备库所有节点执行:

mkdir -p /u01/app/oracle/audit/dbdg/
mkdir -p /u01/app/oracle/admin/dbdg/adump

grid用户执行,sv416:

asmcmd
asmcmd> mkdir +DATAC1/DBDG
asmcmd> mkdir +DATAC1/DBDG/PASSWORD

asmcmd> pwcopy /home/grid/pwddbdg +DATAC1/DBDG/PASSWORD/pwddbdg
asmcmd> exit

2.7添加数据库服务-备库

oracle用户执行,sv419:

srvctl add database -db dbdg -oraclehome $ORACLE_HOME -dbtype RAC -spfile +DATAC1/DBDG/PARAMETERFILE/spfiledbdg.ora -role PHYSICAL_STANDBY -startoption MOUNT -stopoption IMMEDIATE -dbname dbaas -diskgroup DATAC1,RECOC1
srvctl add instance -db dbdg -i dbdg1 -n sv419
srvctl add instance -db dbdg -i dbdg2 -n sv420
srvctl add instance -db dbdg -i dbdg3 -n sv421
srvctl add instance -db dbdg -i dbdg4 -n sv422

srvctl modify database -d dbdg -pwfile +DATAC1/DBDG/PASSWORD/pwddbdg

2.8修改参数文件-备库

oracle用户执行,sv416:

vim initdbdg.ora #因节点数量不同,主要对一下内容进行调整或新增
dbdg1.__oracle_base='/u01/app/oracle'#ORACLE_BASE set from environment
dbdg2.__oracle_base='/u01/app/oracle'#ORACLE_BASE set from environment
dbdg3.__oracle_base='/u01/app/oracle'#ORACLE_BASE set from environment
dbdg4.__oracle_base='/u01/app/oracle'#ORACLE_BASE set from environment
dbdg1._bct_public_dba_buffer_size=134610432#_bct_public_dba_buffer_size
dbdg2._bct_public_dba_buffer_size=134610432#_bct_public_dba_buffer_size
dbdg3._bct_public_dba_buffer_size=134610432#_bct_public_dba_buffer_size
dbdg4._bct_public_dba_buffer_size=134610432#_bct_public_dba_buffer_size
db_unique_name='dbdg' #新增
*.control_files='+DATAC1/DBDG/CONTROLFILE/current.ctl'
*.db_name='dbaas'
*.db_recovery_file_dest_size=19900G
*.dg_broker_config_file1='+DATAC1/DBDG/dr1dbdg.dat'
*.dg_broker_config_file2='+RECOC1/DBDG/dr2dbdg.dat'
*.diagnostic_dest='/u01/app/oracle'
*.dispatchers='(PROTOCOL=TCP) (SERVICE=dbdgXDB)'
*.fal_client='dbdg'
*.fal_server='dbaas'
dbdg1.instance_number=1
dbdg2.instance_number=2
dbdg3.instance_number=3
dbdg4.instance_number=4
*.log_archive_config='DG_CONFIG=(dbdg,dbaas)'
dbdg1.thread=1
dbdg2.thread=2
dbdg3.thread=3
dbdg4.thread=4
dbdg1.undo_tablespace='UNDOTBS1'
dbdg2.undo_tablespace='UNDOTBS2'
dbdg3.undo_tablespace='UNDOTBS3'
dbdg4.undo_tablespace='UNDOTBS4'

2.9复制数据库

备库所有实例启动到nomount状态:

srvctl start database -db dbdg -o nomount

oracle用户执行:

rman target sys@dbaas auxiliary sys@dbdg
rman> duplicate target database for standby nofilenamecheck from active database;

完成复制后备库所有实例启动到mount状态:

alter database mount standby database;

主备库均执行:

alter system set dg_broker_start=true;

2.10创建DG_Broker配置

dgmgrl sys@dbaas
dgmgrl> create configuration dg as primary database is dbaas connect identifier is dbaas;
dgmgrl> add database dbdg as connect identifier is dbdg;
dgmgrl> enable configuration;
dgmgrl> show configuration; --这里先不做截图展示

2.11配置ADG

备库执行:

alter database open;
alter database recover managed standby database using current logfile disconnect;
dgmgrl sys@dbaass
dgmgrl>
	edit database dbaas set property logxptmode='sync';
	edit database dbdg set property logxptmode='sync';
	disable configuration;
	enable configuration;
	show configuration;
	show database dbaas;
	show database dbdg;

在这里插入图片描述
至此ADG搭建完成。

总结

由于下周休假出去旅游,应该是不能发文,所以本周准备了3篇文章,还有两篇是关于EMCC和其升级的内容。
老规矩,知道写了些啥。

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

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

相关文章

超级智能的治理

原文链接:https://openai.com/blog/governance-of-superintelligence#SamAltman 作者丨Sam Altman,Greg Brockman,Ilya Sutskever 译者 | Ted Liu 审校 | LsssY 编辑丨肖钰雯 现在是开始思考超级智能治理的好时机--未来的人工智能系统甚至比通…

基于SpringBoot+vue的租房网站设计与实现

博主介绍: 大家好,我是一名在Java圈混迹十余年的程序员,精通Java编程语言,同时也熟练掌握微信小程序、Python和Android等技术,能够为大家提供全方位的技术支持和交流。 我擅长在JavaWeb、SSH、SSM、SpringBoot等框架下…

Python中的Time和DateTime

Python在处理与时间相关的操作时有两个重要模块:time和datetime。在本文中,我们介绍这两个模块并为每个场景提供带有代码和输出的说明性示例。 time模块主要用于处理时间相关的操作,例如获取当前时间、时间的计算和格式化等。它提供了一些函数…

老胡的周刊(第093期)

老胡的信息周刊[1],记录这周我看到的有价值的信息,主要针对计算机领域,内容主题极大程度被我个人喜好主导。这个项目核心目的在于记录让自己有印象的信息做一个留存以及共享。 🎯 项目 dm-ticket[2] 大麦网自动购票, 支持 docker …

4、数据库:MySQL部署 - 系统部署系列文章

MySQL数据库在其它博文中有介绍,包括学习规划系列。今天就讲讲MySQL的部署事情。 一、先下载MySQL数据库; 到下面这个网址去下载数据库,这里下载的社区版: https://dev.mysql.com/downloads/installer/ 二、安装数据库&#xff1b…

读改变未来的九大算法笔记04_公钥加密

1. 加密的目的就是传输秘密 2. 分块密码(Block Cipher)的现代加密技术使用了相加把戏的变体 2.1. 加法得出的结果能用于统计分析,这意味着一些人能通过分析你的大量加密消息来得到密钥 2.2. 任何知道密钥的人都能用相反的步骤运行所有操作…

MathType7中文标准版数学公式编辑工具

MathType 是一款专业的数学公式编辑工具,提供交互式编辑器, 让你在编辑数学试卷、书籍、报刊、论文、幻灯演示等文档轻松输入各种复杂的数学公式和符号。当您准备坐下来撰写科学或技术论文,测试,幻灯片演示文稿或任何想要包括数学符号的地方时…

互联网野蛮生长,但金三银四好像消失了!

每次看到程序员字眼,就是秃头,肥胖,宅男、996,程序员,但是耐不住工资高啊!但只有程序员才知道,干IT的,都有一个自己的程序员梦,梦想着能用 “代码改变世界”。 代码能不…

音视频实战开源项目学习第二期!

前言: 大家好,今天继续分享音视频开源学习第二期,在前面的一期里面,我已经给大家演示了如何去跑起这个开源项目,包括源码下载; 音视频实战开源项目学习第一期! 今天继续来讲解这个开源项目。 不…

chatgpt赋能python:Python多行连一行:简便省事的代码优化方法

Python多行连一行:简便省事的代码优化方法 在Python编程中,经常会遇到多行代码的情况,这不仅降低了代码的可读性,也增加了调试的难度。为了解决这个问题,Python提供了多行连一行(以反斜杠\结尾&#xff09…

Mocha AE:工具栏

Mocha AE 工具栏(经典模式)中的工具及视图选项。 保存 Save the project 保存项目 快捷键:Ctrl S 选取类工具 Pick Tool 选取工具 --Marquee Selection 矩形框选 --Lasso Selection 套索选取 Move inner and edge points 移动内部点和边缘…

YOLOv8 训练自己的数据集

本范例我们使用 ultralytics中的YOLOv8目标检测模型训练自己的数据集,从而能够检测气球。 #安装 !pip install -U ultralytics -i https://pypi.tuna.tsinghua.edu.cn/simple import ultralytics ultralytics.checks() 一,准备数据 公众号算法美食屋后…

JavaScript之DOM(九)

JavaScript之DOM 1、节点类型2、常用的属性与方法2.1、访问节点的常用方法2.2、增删改节点的常用方法2.3、class的常用方法2.4、css相关操作 DOM – Document Object Model (文档对象模型),是 JS 操作 HTML 文档的接口,它最大的特点就是将文档表示为节点…

CloudQuery一体化数据库SQL操作安全管控平台

💗wei_shuo的个人主页 💫wei_shuo的学习社区 🌐Hello World ! CloudQuery一体化数据库SQL操作安全管控平台 导读 CloudQuery作为业界领先的面向企业的数据库安全解决方案,CloudQuery致力于打造一站式安全可靠的数据操…

【C++】右值引用和移动语义

1.左值和右值 在C中,每个表达式或者是左值,或者是右值。 左值(lvalue):可以出现在赋值表达式左侧的值,例如变量名a、数据成员a.m、下标表达式a[n]、解引用表达式*p等。左值可以被赋值和取地址。右值(rvalue):只能出现…

jdk动态代理源码分析

jdk动态代理源码分析 前言动态代理----demo 案例jdk动态代理源码创建代理对象获取类把二进制流生成文件 jdk 动态代理的原理 前言 上一篇中我们知道动态代理的使用, Javase 专题之 静态代理和动态代理 我们只知道其中的使用,但是原理是什么? 不明白原理只知皮毛不是我们的目的…

chatgpt赋能python:Python在原图上继续画的SEO

Python在原图上继续画的SEO Python是一种高级的多范式编程语言,它使用简单、易于阅读的语法以及丰富和强大的数据结构使其成为工程师的首选。Python已经成为了一种非常流行的编程语言,它用于多种应用领域,包括Web开发、数据科学、机器学习、…

区间预测 | MATLAB实现基于QRCNN-LSTM卷积长短期记忆神经网络多变量时间序列区间预测

区间预测 | MATLAB实现基于QRCNN-LSTM卷积长短期记忆神经网络多变量时间序列区间预测 目录 区间预测 | MATLAB实现基于QRCNN-LSTM卷积长短期记忆神经网络多变量时间序列区间预测效果一览基本介绍模型描述程序设计参考资料 效果一览 基本介绍 1.Matlab实现基于QRCNN-LSTM卷积神经…

注解、原生Spring、SchemaBased三种方式实现AOP【附详细案例】

目录 一、注解配置AOP 1. 开启注解支持 2. 在类和方法加入注解 3. 测试 4. 为一个类下的所有方法统一配置切点 二、原生Spring实现AOP 1. 引入依赖 2. 编写SpringAOP通知类 3. 编写配置类bean2.xml 4 测试 三、SchemaBased实现AOP 1. 配置切面 2. 测试 往期专栏…

音视频技术开发周刊 | 296

每周一期,纵览音视频技术领域的干货。 新闻投稿:contributelivevideostack.com。 22字声明、近400名专家签署、AI教父Hinton与OpenAI CEO领头预警:AI可能灭绝人类! 这份声明一经发布,便迅速得到了多伦多大学计算机科学…