使用dmhs veri手动比对ORACLE同步到DM数据

使用dmhs veri手动比对ORACLE同步到DM数据

veri介绍

在进行数据库数据的实时同步的时候,需要了解同步的结果是否正确,因此需要有数据对比工具进行数据的对比,并生成详细的对比报告,提供用户参考。对比工具仅仅生成报告,对数据不一致的情况不做任何操作,仅仅提示用户发生了数据不一致情况,并且告诉用户那些数据不一致。目前对比工具支持对比的数据库有:Oracle、DM6、DM7、DM8、KingBase、MySQL、DB2、PostgreSQL

VERI 产品构成:系统主要分为对比代理服务和对比校验进程。

对比代理服务分源对比代理服务和目的对比代理服务。对比代理服务的作用是从数据服

务器取得数据记录,并取得数据记录的 MD5 值发送到对比校验进程进行校验。对比校验进程对数据进行比对后,直接访问源数据库服务器和目的数据库服务器,生成详细的对比报告。

系统结构如下图所示。

术语解释如下:

1) AGENT

对比工具代理服务,主要用作数据获取,并计算行数据的 MD5,发送给对比模块。

2) VERI

对比校验进程,主要进行模式下对象对比,数据对比,并且生成对比报告。

3) DMHS

达梦数据实时同步工具

本产品包含以下功能:

1) 动态对比

对比工具与 DMHS 协同工作,保证源表与目的表都是执行完相同事务后对查询结果集进行对比。

2) 静态对比

对比工具单独对比,没有 DMHS 的协同。

3) 键值对比

按照主键或者唯一索引值排序进行对比。

4) 非键值对比

按照行数据 MD5 值排序后进行对比。

5) 二次确认对比

在对比过程中,由于 DMHS 同步的时间差,第一次对比会存在不一致,因此需要针对第一次对比的结果,再次进行第二次确认对比,确定 DMHS 同步是否存在延迟或失败。

6) 快速对比 

仅仅对表进行记录行数的对比。

7) 锁表动态对比

动态对比的一种,通过锁表控制源表与 DMHS 同步数据一致。

8) 闪回查询动态对比

动态对比的一种,通过闪回查询直接取得某 SCN 的结果集,仅仅适用 Oracle 库中不包含 LONG, LONG RAW 类型的表。

一、安装veri前环境准备

数据比对环境

数据库类型

IP

操作系统

DB_PORT

dmhs_veri

源端

ORACLE

192.168.1.32

CentOS 6.5

1521

Agent、veri

目的端

达梦8

192.168.1.105

CentOS 7.5

5236

Agent

1.1 Linux 代理连接为Oracle

1.1.1 安装unixODBC

需要声明的是,只有在校验进程dmhs_veri运行的机器才需要安装并配置unixODBC,且unixODBC版本需要使用2.3.0及以上的版本。

获取unixODBC-2.3.0.tar.gz,

执行tar -xzvf unixODBC-2.3.0.tar.gz

然后cd unixODBC-2.3.0/

路径下执行./configure

然后执行make && make install

配置unixODBC的odbc.ini 和odbcinst.ini文件。

1.1.2 环境变量的检查和配置

在oracle根目录下.bash_profile中添加如下两行:

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib:$ORACLE_HOME/lib

使环境变量生效:

source .bash_profile

1.1.3 监听配置和检查

执行lsnrctl status,确保 listener.ora 文件中HOST参数与当前机器hostname一致,如下图所示。

 1.1.4 配置unixODBC源

以root用户进入到/usr/local/etc文件夹下,编辑如下文件odbcinst.ini,其中Driver为oracle的libsqora.so.XX.X文件的路径。

chown oracle.oinstall /usr/local/etc/*

[Oracle in OraDb11g_home1]

Description = ODBC DRIVER FOR ORACLE

Driver = /mnt/oracle/product/11.2.0/dbhome_1/lib/libsqora.so.11.1

threading = 0

在odbc.ini 配置示例中[XXX]是DSN名称。

示例:

[RACDB_ST]

Description = ORACLE ODBC DSN

Driver = /mnt/oracle/product/11.2.0/dbhome_1/lib/libsqora.so.11.1

SERVER=192.168.1.32

UID = DMHS

PWD = DMHS

SERVERNAME=RACDB_ST

PORT = 1521

注意:SERVERNAME=RACDB_ST配置的是tnsnames.ora 中的tns连接名。

配置完成之后,验证配置是否正确:

su - oracle

 cd /usr/local/bin  

./isql 服务名 用户名 密码

./isql RACDB_ST DMHS DMHS

 如果isql连接成功,则配置成功,如果连接不成功,可以检查如下几处的配置:listener.ora/tnsnames.ora,.bash_profile,/etc/hosts。其中源库机器的hosts文件中应添加源机和目的机器的ip以及其对应主机名。

1.2 Linux 代理连接为DM

1.2.1 环境检查和配置

检查代理服务器运行机器的环境变量LD_LIBRARY_PATH,保证包含dm安装路径下的bin文件夹。比如,dm安装在/dm/dmdbms/dm8下,确保执行export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/dm/dmhs_veri/bin:/dm/dmhs_veri/db/bin:/dm/dmdbms/dm8/bin。

[dmdba@centos-05 ~]$ isql dm8 -v

[01000][unixODBC][Driver Manager]Can't open lib '/dm/dmdbms/dm8/bin/libdodbc.so' : file not found

[ISQL]ERROR: Could not SQLConnect

注意:准备好与数据库版本号匹配的libdmoci.so 并放入$DM_HOME/bin

1.2.2 配置unixODBC源

chown dmdba.dinstall /usr/local/etc/*

Su - dmdba

在/usr/local/etc的odbcinst.ini文件中添加(其中unixODBC安装在/usr/local文件夹下):

[DM8 ODBC DRIVER]

Description = ODBC DRIVER FOR DM8

Driver = /dm/dmdbms/dm8/bin/libdodbc.so

threading = 0

在odbc.ini文件里添加:

[DM8]

Description = DM ODBC DSN

Driver = DM8 ODBC DRIVER

SERVER = 192.168.1.105

UID = SYSDBA

PWD = dameng123

TCP_PORT = 5236

ODBC验证:

二、搭建步骤

2.1 安装DMHS(veri)

[oracle@node32 soft]$ ./dmhs_V4.3.08_oracle_rev126685_rh6_64_veri_20230323_sp5.bin -i

Extract install files..........

1.English(English)

2.Simplified Chinese(简体中文)

Select the language to install[2.Simplified Chinese(简体中文)]:

/tmp/DMHSInstall/install.log

1.免费试用达梦数据实时同步

2.使用已申请的Key文件

验证许可证文件[1.免费试用达梦数据实时同步]:

1.精简版

2.完整版(web客户端)

3.自定义

安装类型[1.精简版]:2

1.实时同步软件服务器

2.远程部署工具

3.实时同步软件客户端

4.内置数据库

5.实时同步软件配置助手

6.手册

所需磁盘空间:869 MB

安装目录: [/home/oracle/dmhs]/dm/dmhs_veri

该路径不为空,是否继续安装?[Y or N]Y

安装路径可能存在覆盖安装

1.统一部署

2.现在初始化

是否初始化达梦数据实时同步系统[1.统一部署]:

正在安装

default start ...    default finished.

server start ...    server finished.

hs_agent start ...    hs_agent finished.

webmanager start ...    webmanager finished.

db start ...    db finished.

hsca start ...    hsca finished.

doc start ...    doc finished.

doc start ...    doc finished.

postinstall start ...    postinstall finished.

正在创建快捷方式

安装成功

ora

rac

远程部署工具配置

远程部署工具名称[HsAgent]:

主机Ip(外网)[192.168.0.201](192.168.0.201,192.168.1.32):192.168.1.32

远程部署工具管理端口[5456](1000-65535):

内置数据库轮询间隔[3](1-60):

内置数据库IP[192.168.0.201]:192.168.1.32

内置数据库端口[15236]:

内置数据库用户名[SYSDBA]:

内置数据库密码[SYSDBA]:dameng123

服务脚本环境变量设置

依赖库路径

提示:此配置项供用户配置源或目的数据库依赖库路径和odbc依赖库路径, 多个路径以":"隔开(例:/opt/dmdbms/bin:/usr/local/lib),此配置项会添加到服务脚本的NEED_LIB_PATH的变量值中。

请配置依赖库路径:

内置数据库服务

1.自动

2.手动

启动方式:[2.手动]

正在创建内置数据库服务

初始化内置数据库

远程控制服务

1.自动

2.手动

启动方式:[2.手动]

正在创建远程控制服务

web服务

1.自动

2.手动

启动方式:[2.手动]

正在创建web服务

达梦数据实时同步V4.0安装完成

更多安装信息,请查看安装日志文件:

/dm/dmhs_veri/log/install.log

查看安装的veri:

[oracle@node32 bin]$ ls -rlt *veri*

-rwxr-xr-x. 1 oracle oinstall 118626 Jun 13 10:01 veri_xml_crt

-rwxr-xr-x. 1 oracle oinstall 831547 Jun 13 10:01 dmhs_veri

-rwxr-xr-x. 1 oracle oinstall 678871 Jun 13 10:01 dmhs_veri_repair

-rwxr-xr-x. 1 oracle oinstall 380116 Jun 13 10:01 dmhs_veri_local_ora

-rwxr-xr-x. 1 oracle oinstall 357438 Jun 13 10:01 dmhs_veri_agent_ora

注意:dmhs软件安装需要安装源端和目的端,确认好同步系统环境版本;准备好与DM数据库版本号匹配的libdmoci.so 并放入$DM_HOME/bin

2.2 ORACLE到DM的数据比对

2.2.1 源端ORACLE配置

2.2.1.1 环境变量配置

必须将libdodbc.so 所在目录或DM bin 目录添加到LD_LIBRARY_PATH中

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/dm/dmhs_veri/bin

2.2.1.2 ODBC 配置

源端oracle服务器需要引入dm  libdodbc.so 动态库以及相关依赖或直接安装达梦数据库软件。

odbc.ini

vi /usr/local/etc/odbc.ini

[RACDB_ST]

Description = ORACLE ODBC DSN

Driver = /mnt/oracle/product/11.2.0/dbhome_1/lib/libsqora.so.11.1

SERVER=192.168.1.32

UID = DMHS

PWD = DMHS

SERVERNAME=RACDB_ST

PORT = 1521

[DM8]

Description = DM ODBC DSN

Driver = /dm/dmhs_veri/db/bin/libdodbc.so

SERVER = 192.168.1.105

UID = SYSDBA

PWD = dameng123

TCP_PORT = 5236

注意此处DM 端口配置为TCP_PORT!!!

odbcinst.ini

vi /usr/local/etc/odbcinst.ini

[Oracle in OraDb11g_home1]

Description = ODBC DRIVER FOR ORACLE

Driver = /mnt/oracle/product/11.2.0/dbhome_1/lib/libsqora.so.11.1

threading = 0

[DM8 ODBC DRIVER]

Description = ODBC DRIVER FOR DM8

Driver = /dm/dmhs_veri/db/bin/libdodbc.so

threading = 0

检查unixODBC配置是否正确

使用oracle用户连接检查unixODBC配置是否正确

isql RACDB_ST DMHS DMHS

isql dm8 -v

该处确保isql 能够成功连通oracle 和 dm 否则后续启动也会报数据库连接错误。

2.2.1.3 Agent组件配置

在AGENT服务启动前必须完成相关配置,agent.xml文件放至/dm/dmhs_veri/bin目录下

<?xml version="1.0" encoding="utf-8"?>

<agent>  <!-- AGENT标识 -->

<port>6347</port> <!-- Agent服务端口号-->

<lang>en</lang> <!--报告和日志语言:en和ch,en是表示英文,ch则表示中文,默认值为en -->

<max_session>50</max_session>  <!—接收VERI消息的最大连接数,范围为[1, 10000] -->

<thr_num>5</thr_num>  <!-- 性能调优参数,仅ORACLE/DM7/DM8生效 -->

<database>  <!-- 数据库连接信息标志 -->

<type>ORACLE11g</type>  <!-- 数据库类型,详见1.1.2 -->

<server>192.168.1.32:1521/RACDB_ST</server> <!-- 数据库连接字符串-->

<uid>DMHS</uid>  <!-- 数据库连接用户名 -->

<psw>DMHS</psw>  <!-- 数据库连接密码 -->

</database>

</agent>

2.2.1.4 VERI组件配置

在VERI执行前必须完成相关配置,veri.xml文件放至/dm/dmhs_veri/bin目录下

<veri>

<lang>en</lang> <!-- language: en or ch, 同AGENT该参数 -->

<max_thr>40</max_thr>

<max_obj_thr>10</max_obj_thr>

<report_left_num>20000</report_left_num>

<max_out_sync>100000</max_out_sync>

<col_opt>1</col_opt>

<src>

<agent_server>192.168.1.32</agent_server>

<port>6347</port>

<db_type>ORACLE11g</db_type>

<odbc_str>

<driver>dsn=RACDB_ST</driver>

<db_server>192.168.1.32:1521/RACDB_ST</db_server>

<db_user>DMHS</db_user>

<db_pwd>DMHS</db_pwd>

</odbc_str>

</src>

<dest>

<agent_server>192.168.1.105</agent_server>

<port>5350</port>

<db_type>DM8</db_type>

<odbc_str>

<driver>dsn=DM8</driver>

<db_server>192.168.1.105</db_server>

<db_user>sysdba</db_user>

<db_pwd>dameng123</db_pwd>

<db_port>5236</db_port>

<char_code>PG_GB18030</char_code>

</odbc_str>

</dest>

</veri>

2.2.2目的端DM配置

2.2.2.1 Agent组件配置

在AGENT服务启动前必须完成相关配置,agent.xml文件放至dmhs bin目录下

<?xml version="1.0" encoding="utf-8"?>

<agent>  

<port>5350</port>

<lang>en</lang>

<max_session>50</max_session>  

<database>

<type>DM8</type>

<server>192.168.1.105</server>

<port>5236</port>

<uid>sysdba</uid>  

<psw>dameng123</psw>  

</database>

</agent>

VERI作业配置

在执行dmhs_veri时除了必带参数conf=veri.xml用于获取VERI组件配置文件位置外,还必须携带table=(源端表==目的端表)或者指定作业文件jobfile=job_scott.xml来确定源端到目的端的比对对象。job_scott.xml放至源端dmhs bin目录下

dmhs_veri conf=veri.xml jobfile=job_scott.xml

job_scott.xml

<?xml version="1.0" encoding="GB2312" ?>

<job>

<name>job</name>

<table_list>

<table_info>

<table_name>SCOTT.EMP==SCOTT.EMP</table_name>

</table_info>

<table_info>

<table_name>SCOTT.TEST==SCOTT.TEST</table_name>

</table_info>

    </table_list>

</job>

四、对比执行命令

步骤一:启动源端AGENT

./dmhs_veri_agent_ora agent.xml

或配置服务启动:

cd /dm/dmhs_oracle/bin/service_template

[oracle@node32 service_template]$ cp AgentOraService ../

[oracle@node32 bin]$ grep "/dm/dmhs_oracle" AgentOraService

DMHS_HOME=/dm/dmhs_oracle

PROG_DIR=/dm/dmhs_oracle/bin

CONF_PATH=/dm/dmhs_oracle/bin/agent.xml

[oracle@node32 bin]$ AgentOraService start

_REPLACE_SELF_NLS_LANG(ORACLE NLS_LANG) is not set in this script, starting failed!!!

[oracle@node32 bin]$ grep "HS_NLS_LANG" AgentOraService

HS_NLS_LANG="american_america.AL32UTF8"

[oracle@node32 bin]$  AgentOraService start

Starting AgentOraService: [ OK ]

步骤二:启动目的端AGENT

./dmhs_veri_agent_dm8 agent.xml

或配置服务启动:

[dmdba@centos-05 service_template]$ cd /dm/dmhs_ora_dm/bin/service_template

[dmdba@centos-05 service_template]$ cp AgentDm8Service ../

[dmdba@centos-05 bin]$ grep "/dm/dmhs_ora_dm" AgentDm8Service

DMHS_HOME=/dm/dmhs_ora_dm

PROG_DIR=/dm/dmhs_ora_dm/bin

CONF_PATH=/dm/dmhs_ora_dm/bin/agent.xml

[dmdba@centos-05 bin]$ grep "HS_NLS_LANG" AgentDm8Service

HS_NLS_LANG="american_america.ZHS16GBK"

[dmdba@centos-05 bin]$ AgentDm8Service start

Starting AgentDm8Service: [ OK ]

步骤三:在源端服务器运行对比执行命令

./dmhs_veri conf=veri.xml jobfile=job_scott.xml use_key=0

use_key为0时执行非主键比对,当use_key为1时执行主键比对。不使用此参数时,默认使用非主键比对;当use_key为1时,对比的表无主键则自动选择非主键比对。

比对结果:

[oracle@node32 bin]$ ./dmhs_veri conf=veri.xml jobfile=job_scott.xml use_key=0

VERI[INFO]: VERI start up, current version: V1.3.08-Build(2023.03.23-126685trunc)_64_2303_sp5

PUB[WARN]: NLS_LANG user env:american_america.AL32UTF8 conflicts with char_code:PG_GB18030, set NLS_LANG to AMERICAN_AMERICA.ZHS32GB18030

VERI[INFO]: CONNECT: DSN=RACDB_ST;UID=DMHS;PWD=******

PUB[WARN]: user env lang:PG_UTF8 is conflict with char_code:PG_GB18030

PUB[WARN]: use char_code:PG_GB18030

VERI[INFO]: CONNECT: DSN=DM8;UID=SYSDBA;PWD=******

VERI[INFO]: file dmhs.key not found, use default license!

MGR[WARN]: License will expire in 10 day(s) on 2023-06-23

VERI[INFO]: veri odbc connect str: DSN=RACDB_ST;UID=DMHS;

VERI[INFO]: veri odbc connect str: DSN=DM8;UID=SYSDBA;

VERI[INFO]: jobfile: job_scott.xml, configuration total number of need compared table: 2

VERI[INFO]: jobfile: job_scott.xml, real total number of need compared table: 2, org_conf: 2

VERI[INFO]: the job begin

VERI[INFO]: the execute mode is NORMAL

VERI[INFO]: source agent ip 192.168.1.32:6347

VERI[INFO]: destination agent is 192.168.1.105:5350

VERI[INFO]: the veri of pair tables is starting (1/2 : SCOTT.EMP==SCOTT.EMP)...

VERI[INFO]: veri odbc connect str: DSN=RACDB_ST;UID=DMHS;

VERI[INFO]: Report job thread start ...

VERI[INFO]: the veri of pair tables is starting (2/2 : SCOTT.TEST==SCOTT.TEST)...

VERI[INFO]: veri odbc connect str: DSN=RACDB_ST;UID=DMHS;

VERI[INFO]: veri odbc connect str: DSN=DM8;UID=SYSDBA;

VERI[INFO]: veri odbc connect str: DSN=DM8;UID=SYSDBA;

VERI[INFO]: veri get dst agent bulk data (SCOTT.EMP, 2, 14)

VERI[INFO]: table sort: (SCOTT.EMP)

VERI[INFO]: veri get dst agent bulk data (SCOTT.TEST, 4, 2)

VERI[INFO]: table sort: (SCOTT.TEST)

VERI[INFO]: veri get dst agent bulk data (SCOTT.EMP, 2, 14)

VERI[INFO]: veri get dst agent bulk data (SCOTT.TEST, 4, 2)

VERI[INFO]: veri get src agent bulk data (SCOTT.EMP, 1, 14)

VERI[INFO]: veri get src agent bulk data (SCOTT.TEST, 3, 3)

VERI[INFO]: veri get src agent bulk data (SCOTT.EMP, 1, 14)

VERI[INFO]: veri get src agent bulk data (SCOTT.TEST, 3, 3)

VERI[INFO]: no-key compare start: (SCOTT.EMP==SCOTT.EMP)

VERI[INFO]: (SCOTT.EMP==SCOTT.EMP) compare over, out_sync: 0, in_sync: 14, used time : 212.152(ms)

VERI[INFO]: no-key compare start: (SCOTT.TEST==SCOTT.TEST)

VERI[INFO]: (SCOTT.TEST==SCOTT.TEST) compare over, out_sync: 1, in_sync: 2, used time : 00:00:01.174

VERI[INFO]: Detail report : SCOTT.TEST=SCOTT.TEST (Total print: 1)

VERI[INFO]: Report job thread exit.

VERI[INFO]: Report folder path          : /dm/dmhs_veri/bin/report/job_20230621_001

VERI[INFO]: Summary report file path    : /dm/dmhs_veri/bin/report/job_20230621_001/veri_report_job.txt

VERI[INFO]: Detail report folder path   : /dm/dmhs_veri/bin/report/job_20230621_001/detail_job

VERI[INFO]: Exit the Verify tool

[oracle@node32 bin]$ cat /dm/dmhs_veri/bin/report/job_20230621_001/veri_report_job.txt

******************************************************

      DM Verify Data Tool

version  : V1.3.08-Build(2023.03.23-126685trunc)_64_2303_sp5

start    : 2023-06-21 23:56:28

end      : 2023-06-21 23:56:43                  

******************************************************

source tables or views more than dest as follow:

dest tables or views more than source as follow:

******************************************************

No rowid file table pair as follow:

******************************************************

Job Name                        : job

execute mode                    : NORMAL

source agent ip                 : 192.168.1.32:6347

source agent database type      : ORACLE11g

destination agent ip            : 192.168.1.105:5350

destination agent database type : DM8

******************************************************

Notice:When nonkey compare, update show as insert and delete, so the sum of same and diff may be over total

Total compared 2 tables, list as follow:

[OK] SCOTT.EMP == SCOTT.EMP

in sync         : 14

out sync        : 0

[NO] SCOTT.TEST == SCOTT.TEST

in sync         : 2

out sync        : 1  --有一条记录不一致

detail file     : /dm/dmhs_veri/bin/report/job_20230621_001/detail_job/SCOTT.TEST=SCOTT.TEST.txt

******************************************************

[oracle@node32 bin]$ cat /dm/dmhs_veri/bin/report/job_20230621_001/detail_job/SCOTT.TEST=SCOTT.TEST.txt

Configuration veri agent information(ORACLE11g 192.168.1.32:6347== DM8 192.168.1.105:5350)

Total information(SCOTT.TEST==SCOTT.TEST):

KEY_MODE:ROWID

AGENT FROM SELECT SQL: SELECT rowid ,"ID","NAME" FROM "SCOTT"."TEST"  

AGENT TO SELECT SQL: SELECT rowid ,"ID","NAME" FROM "SCOTT"."TEST"  

there are 2 in sync, 1 out sync

******************************************************

INSERT(exist in source database but not in dest: ORACLE11g) :

下面记录在源端oracle库中有,但是在目的端达梦库中没有

ROWID(20):'AAAVaJAAEAAAACrAAB',RAWDATA:'3','test03',

达梦在线服务平台:https://eco.dameng.com

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Qt下面窗口嵌套,嵌套窗口中包含:QGraphicsView、QGraphicsScene、QGraphicsIte

Qt系列文章目录 文章目录 Qt系列文章目录前言一、嵌套窗口二、注意事项 前言 我们有一个主窗口mainwindow,需要向其中放入新的界面&#xff0c;你可以自己定义里面内容。 Qt的嵌套布局由QDockWidget完成&#xff0c;用Qt Creator拖界面得到的dock布置形式比较固定&#xff0c;…

人工智能(pytorch)搭建模型12-pytorch搭建BiGRU模型,利用正态分布数据训练该模型

大家好&#xff0c;我是微学AI&#xff0c;今天给大家介绍一下人工智能(pytorch)搭建模型12-pytorch搭建BiGRU模型&#xff0c;利用正态分布数据训练该模型。本文将介绍一种基于PyTorch的BiGRU模型应用项目。我们将首先解释BiGRU模型的原理&#xff0c;然后使用PyTorch搭建模型…

在Nginx服务器如何安装SSL证书

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言提示&#xff1a;我用的是阿里云的产品&#xff0c;就以阿里云进行的&#xff1a; 一、下载SSL证书二、安装SSL证书 前言 提示&#xff1a;我用的是阿里云的产…

二叉树及其链式结构

目录 一&#xff1a;树概念及结构 1.树的概念 2.树的相关概念 3.树的表示 二&#xff1a;二叉树的概念及结构 1.概念 2.特殊的二叉树 <1>. 满二叉树&#xff1a; <2>. 完全二叉树&#xff1a; 3.二叉树的性质 4.二叉树的存储结构 <1>.顺序结构 <…

渗透专题丨web Top10 漏洞简述(2)

文件包含漏洞 1、漏洞简述 程序在引用文件的时&#xff0c;引用的文件名&#xff0c;用户可控的情况&#xff0c;传入的文件名校验不严&#xff0c;从而操作了预想之外的文件&#xff0c;就有可能导致文件泄漏和恶意的代码注入。这是因为程序开发时候会把重复使用的函数写到归…

[笔记]pg常用命令

数据库版本 &#xff1a;9.6.6 注意 &#xff1a;PostgreSQL中的不同类型的权限有SELECT,INSERT,UPDATE,DELETE,TRUNCATE,REFERENCES,TRIGGER,CREATE,CONNECT,TEMPORARY,EXECUTE 和 USAGE。 1. 登录PG数据库 以管理员身份 postgres 登陆&#xff0c;然后通过 #psql -U postg…

新世界-旧世界

以下内容是这两天朋友问答形成的一些观点&#xff0c;堆成一篇文章。看似没有关联性&#xff0c;但你仔细品味&#xff0c;你会感觉到它们其实讲的是一个事。至于是一个啥事&#xff0c;我不说&#xff0c;你们自己猜。 &#xff08;1&#xff09; 今年年初看见篇文章&#xff…

mdBook介绍及使用——使用 Markdown 创建你自己的博客和电子书

目录 介绍一、下载与创建项目1.下载2.初始化3.结构说明 二、编写文章与启动1.编写文章2.构建3.启动 mdbook 服务 三、其他配置 介绍 mdBook 是一个使用 Markdown 创建书籍的命令行工具。它非常适合创建产品或 API 文档、教程、课程材料或任何需要清晰、易于导航和可定制的演示…

Spring中如何获取Bean方法上的自定义注解

文章目录 背景描述场景复现问题追踪解决方案扩展思考 背景描述 项目中需要扫描出来所有 标注了自定义注解A的Service里面标注了自定义注解B的方法 来做后续处理。 基本的思路就是通过Spring提供的ApplicationContext#getBeansWithAnnotation反射 来实现。 但是&#xff0c;随…

QT C++入门学习(2) QT Creator写一个简单的上位机控制LED

上位机和下位机的概念 上位机&#xff1a;指的是可以直接发送操作指令的计算机或者单片机&#xff0c;一般提供用户操作交互界面并向用户展示反馈数据。 典型设备&#xff1a;电脑、平板、手机、面板、触摸屏 下位机&#xff1a;指的是与机器相连接的计算机或者单片机&#…

SpringBoot+Vue 车辆充电桩系统

文章目录 1、效果演示效果图技术栈 2、 前言介绍&#xff08;完整源码请私聊&#xff09;3、主要技术3.4.1 数据库概念结构设计3.4.2 数据库具体设计 4 系统功能的具体实现4.1 前台功能模块4.1.1 首页功能4.1.2 用户后台管理 4.2 后台功能模块4.2.1 管理员功能4.2.2 维修员功能…

SciencePub学术 | 计算机类重点SCIEI征稿中

SciencePub学术 刊源推荐: 计算机类重点SCI&EI征稿中&#xff01;影响因子高&#xff0c;对国人非常友好。信息如下&#xff0c;录满为止&#xff1a; 一、期刊概况&#xff1a; 计算机类重点SCI&EI &#x1f4cc;【期刊简介】IF&#xff1a;7.5-8.0&#xff0c;JCR…

前端vue仿京东天猫简单好用的瀑布流瀑布流式布局列表组件waterfall

前端vue仿京东天猫简单好用的瀑布流瀑布流式布局列表组件waterfall&#xff0c; 下载完整代码请访问uni-app插件市场址:https://ext.dcloud.net.cn/plugin?id13046 效果图如下&#xff1a; #### 使用方法 使用方法 <!-- proList: 条目数组数据 goProDetail:条目点击事…

微信小程序基础使用

微信小程序的基本使用 微信小程序文件类型 微信小程序主要提供了 4 种文件类型&#xff1a; 类型名称作用是否必须存在.wxml用于页面的布局结构&#xff0c;相当于网页中 .html 文件是.wxss用于页面的样式&#xff0c;相当于网页中的 .css 文件否.js用于页面的逻辑是.json用…

1.8C++流提取运算符重载

C流提取运算符重载 在 C中&#xff0c;流提取运算符&#xff08;>>&#xff09;是用于从流中提取数据的运算符。 C中的流提取运算符可以被重载&#xff0c;使得程序员可以自定义输入对象的方式&#xff0c;更方便地输入自定义的数据类型&#xff0c;也可以使得输入更加…

数字中国,开鸿见日

讲个小故事&#xff0c;《晋书乐广传》记载&#xff0c;西晋名士乐广&#xff0c;请大文学家潘岳替自己写一篇文章。潘岳让乐广把意思完完整整告诉他&#xff0c;再由他来动笔&#xff0c;最终写成了名扬当时的《呈太尉辞河南尹表》。时人看过这篇文章&#xff0c;评价乐广是“…

传输平台太多?难以管理?看这款跨网传输系统怎样解决

传输作为企业正常运行中最日常的行为&#xff0c;也意味着出现频率最高。微信、QQ、邮件、或是钉钉等办公软件&#xff0c;每天大家上班时开着各种软件&#xff0c;进行着不同的信息交互与传输。很多员工在工作时往往是哪个软件方便顺手就用哪个传输&#xff0c;但是这样也意味…

python打包后报错,无法启动,电脑缺少api-ms-win-core-path-11-1-0.dll

参考&#xff1a;《运行打包python程序时报&#xff1a;无法启动此程序&#xff0c;因为计算机中丢失 api-ms-win-core-path-l1-1-0.dll 尝试重新安装该程序以解决此问题。》 原因&#xff1a;python版本较高&#xff0c;打包时的python版本是python3.10&#xff0c;而运行打包…

xxl-job核心源码解析

xxl-job源码解析 如何自研一个xxljob 注册服务调度服务RPC组件(基建&#xff0c;底层严重依赖)日志服务告警服务 系统架构 执行流程 各大调度中心对比 1&#xff09;服务端启动流程 首先找到配置类 XxlJobAdminConfig 可以发现该类实现 InitializingBean接口&#xff0c;…

批量生成,本地推理,人工智能声音克隆框架PaddleSpeech本地批量克隆实践(Python3.10)

云端炼丹固然是极好的&#xff0c;但不能否认的是&#xff0c;成本要比本地高得多&#xff0c;同时考虑到深度学习的训练相对于推理来说成本也更高&#xff0c;这主要是因为它需要大量的数据、计算资源和时间等资源&#xff0c;并且对超参数的调整也要求较高&#xff0c;更适合…