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

news2024/11/26 9:58:13

使用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

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

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

相关文章

【OpenMMLab】AI实战营第二期Day10:底层视觉与MMEditing

Summary 本课程包含底层视觉和MMEditing两个部分。第一部分介绍图像超分、深度学习和网络训练的相关算法&#xff0c;第二部分介绍超像素卷积、无监督学习、卷积网络和空间注意机制&#xff0c;以及这些算法在视觉框架中的实践应用。 Highlights &#x1f4f7;介绍计算机视觉…

ChatGPT 3.5/4 双双升级:更长,更便宜,更开放,更可控

OpenAI 今年早些时候发布了 gpt-3.5-turbo 和 gpt-4&#xff0c;并且在短短几个月内&#xff0c;开发者在这些模型上开发了很多令人印象深刻的应用。 6月13日&#xff0c; OpenAI 官宣了版本更新的内容&#xff1a; Chat Completions API 中新增了函数调用功能。更可控的 gpt-4…

【有奖体验】叮!你有一张 3D 卡通头像请查收

立即体验基于函数计算部署【图生图】一键部署 3D 卡通风格模型&#xff1a;https://developer.aliyun.com/topic/aigc_fc 人工智能生成内容&#xff08;Artificial Intelligence Generated Content&#xff0c;简称 AIGC&#xff09;是当下最火的概念之一。AIGC 被认为是继专业…

MFC .rc文件解析(EXE属性详细信息添加)

文章目录 Windows 资源文件(.rc文件)资源(Resources)类型从文件导入的&#xff08;BITMAP&#xff0c;ICON&#xff0c;HTML&#xff0c;FONT&#xff0c;CURSOR 等&#xff09;对话框资源类型&#xff1a;&#xff08;DIALOG&#xff0c;DIALOGEX 等&#xff09;菜单资源类型字…

【Java项目】使用Nacos实现动态线程池技术以及Nacos配置文件更新监听事件

文章目录 项目源码线程池概念ThreadPoolExecutor介绍Nacos实现对Nacos配置文件更新的事件监听机制定时通知功能邮件发送通知功能开始测试 项目源码 真诚的希望能给我项目一个stars&#xff01;&#xff01;&#xff01; 项目源码 线程池概念 线程池&#xff08;Thread Pool&…

Megatron-LM GPT2

内容 使用原始 Megatron-LM 训练 GPT-2 训练数据设置运行未修改的 Megatron-LM GPT2 模型启用 DeepSpeed 参数解析初始化和训练 初始化使用训练 API 前向传播反向传播更新模型参数损失缩放检查点保存和加载DeepSpeed 激活检查点&#xff08;可选&#xff09;训练脚本使用 GPT-…

拆分代码 + 预加载,减少首屏资源,提升首屏性能及应用体验

route-resource-preload 组件懒加载可以极大地提升我们的应用首屏加载体验, 但我们在进行组件资源拆包后&#xff0c;一旦加载某个组件资源出现以上时间过长的情况&#xff0c;则会出现视图无法正常渲染的问题&#xff08;导致页面白屏/组件出不来/交互卡顿等情况&#xff09;。…

Pytest教程__钩子方法setup、teardown、setup_class、teardown_class(8)

pytest跳过用例执行的用法与unittest跳过用例大致相同。 pytest跳过用例的方法如下&#xff1a; pytest.mark.skip(reason)&#xff1a;无条件用例。reason是跳过原因&#xff0c;下同。pytest.mark.skipIf(condition, reason)&#xff1a;condition为True时跳过用例。 pyte…

代码随想录算法训练营第五十八天|739. 每日温度|496.下一个更大元素 I

LeetCode739. 每日温度 基本思路&#xff1a;什么时候使用单调栈呢&#xff1f;通常是一维数组&#xff0c;要寻找任一个元素的右边或者左边第一个比自己大或者小的元素的位置&#xff0c;此时我们就要想到可以用单调栈了。时间复杂度为O(n)。例如本题其实就是找找到一个元素右…

【发电厂】发电厂模型验证应用于电网事件在线性能监测【相量测量单元 (PMU) 数据对电网事件的在线性能监控】研究(MatlabSimulink实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…

(一文详解!)wrk性能测试

目录 一、简介 二、格式及用法 三、简单压测及结果分析 四、使用lua脚本进行压测 一、简介 wrk 是一款针对 Http 协议的基准测试工具&#xff0c;它能够在单机多核 CPU 的条件下&#xff0c;使用系统自带的高性能 I/O 机制&#xff0c;如 epoll&#xff0c;kqueue 等&#xff0…

华为OD机试真题 JavaScript 实现【报数游戏】【2022Q4 100分】

一、题目描述 100个人围成一圈&#xff0c;每个人有一个编码&#xff0c;编号从1开始到100。他们从1开始依次报数&#xff0c;报到为M的人自动退出圈圈&#xff0c;然后下一个人接着从1开始报数&#xff0c;直到剩余的人数小于M。请问最后剩余的人在原先的编号为多少&#xff…

Ubuntu 更新 CMake 版本

项目中有时候会出现CMake版本小于最低要求的情况,实际上没有有必要这么高的要求,但是在不能改对方代码的情况下,只能去升级自身的版本了. 尝试了网上说的直接update之后再次安装的方式,结果版本号没有改变 sudo apt-get update sudo apt-get remove cmake sudo apt-get ins…

Rust语言从入门到入坑——(3)小谈Cargo工具以及VScode配置Rust

文章目录 0 引入1、Cargo 是什么2、常用Cargo指令3、VScode配置Rust环境3.1.tasks.json3.2.launch.json 4、总结 0 引入 上一节我们谈了在编译工程的时候用到Cargo&#xff08;卡狗&#xff09; 1、Cargo 是什么 Cargo 是 Rust 的构建系统和包管理器。 Rust 开发者常用 Carg…

Metricbeat安装下载,nginx模块使用

目录 MetricbeatMetricbeat组成下载启动Metricbeat Modulesystem module配置内容 Nginx Module开启Nginx Module 配置nginx module测试 Metricbeat 定期收集操作系统或应用服务的指标数据存储到Elasticsearch中&#xff0c;进行实时分析 Metricbeat组成 Metricbeat有2部分组成…

Jmeter性能测试步骤入门

目录 前言&#xff1a; 一、Jmeter简介 1 概述 2 JMeter支持的协议 二、Jmeter实现性能测试 第一步&#xff1a;配置jdk环境 第二步&#xff1a;下载jmeter 第三步&#xff1a;启动Jmeter 四、一个http还除了上述http请求中的请求行和请求体&#xff0c;还包含请求头&#xff…

Android使用AspectJ拦截点击事件

介绍&#xff1a; AspectJ是一种AOP框架&#xff0c;它可以在编译时或运行时拦截指定的方法。在Android开发中&#xff0c;我们可以使用AspectJ来拦截UI事件并执行自己的业务逻辑。本文将说明如何使用AspectJ来拦截Android应用程序中的点击事件&#xff0c;并附有详细的代码注…

存储池和LUN

存储池是什么意思 存储池是为集体存储共享置备的存储卷的集合。这些池建立在物理存储设备的聚合上&#xff0c;根据资源需求进行隔离&#xff0c;然后由共享环境中的各种计算机或系统使用。存储池可以分为三类&#xff0c;每类都有不同的用途;主存储池、副本存储池和活动数据池…

618来了!看图技术如何在物流管理系统大显身手!

导读 近日&#xff0c;随着电商“618”购物节的临近&#xff0c;各大商家纷纷推出各类补贴活动刺激消费者热情。下单后&#xff0c;消费者的心理活动如何呢&#xff1f;蹲点抢到优惠券&#xff0c;精打细算的凑单后&#xff0c;终于完成付款。焦急的等待待发货的小红点跳至待收…

分享三个java低代码开发平台,每个都很能打,建议收藏!

来讲讲近期比较流行的低代码开发平台一词。低代码的目的是将可重复性的编程工作通过平台实现&#xff0c;将开发人员从没有技术含量的增删改查开发中解放出来&#xff0c;让其专注于更有价值的开发工作&#xff0c;例如业务建模、数据库设计、流程设计、API核心开发、业务逻辑开…