当前位置: 首页 > news >正文

使用goldengate 迁移Oracle到postgresql

 环境:

--源端:

IP:10.0.4.16

hostname:tencent

Oracle数据库版本:12.2.0.1.0

ogg for oracle版本:19.1.0.0.4

SID:orcl

--目标端:

IP:10.0.4.16

hostname:tencent

postgresql数据库版本:14.6

ogg for postgresql版本:21.3.0.0.0

db:ogg

2、安装和配置OGG软件(源端),以下操作都是在源端操作

2.1创建安装目录

mkdir -p /oracle/ogg

2.2设置oracle环境变量

export ORACLE_BASE=/oracle/app/oracle

export ORACLE_HOME=$ORACLE_BASE/product/12.2.0/db_1

export PATH=$ORACLE_HOME/bin:/oracle/ogg:$PATH

export OGGHOME=/oracle/ogg

export ORACLE_SID=orcl

export LD_LIBRARY_PATH=$ORACLE_HOME/lib:$OGGHOME:$LD_LIBRARY_PATH

export TNS_ADMIN=$ORACLE_HOME/network/admin

2.3建立OGG表空间和用户

create tablespace oggtbs datafile '/oradata/orcl/oggtbs.dbf' size 200M autoextend on;

create user ogg identified by ogg default tablespace ogg;

grant connect, resource TO ogg;

grant select any dictionary, select any table TO ogg;

grant flashback any table TO ogg;

grant execute on dbms_flashback TO ogg;

grant ALTER ANY TABLE to ogg;

grant insert any table to ogg;

grant update any table to ogg;

grant delete any table to ogg;

grant create table,create sequence to ogg;

grant execute on utl_file to ogg;

grant dba to ogg;

alter system set enable_goldengate_replication=true;

2.4添加附加日志和force logging,并切换日志

如果源端不开启归档,需添加多组日志。

alter database force logging;

alter database add SUPPLEMENTAL log data;

SQL>select NAME,OPEN_MODE,FORCE_LOGGING,SUPPLEMENTAL_LOG_DATA_MIN from v$database;

NAME OPEN_MODE FORCE_LOGGING SUPPLEME


ORCL READ WRITE YES YES

2.5 创建OGG的管理工作目录

在配置OGG进程之前,首先需要创建OGG的管理目录,执行以下操作:

GGSCI (tencent) 3> create subdirs

Creating subdirectories under current directory /oracle/ogg

Parameter file /oracle/ogg/dirprm: created.

Report file /oracle/ogg/dirrpt: created.

Checkpoint file /oracle/ogg/dirchk: created.

Process status files /oracle/ogg/dirpcs: created.

SQL script files /oracle/ogg/dirsql: created.

Database definitions files /oracle/ogg/dirdef: created.

Extract data files /oracle/ogg/dirdat: created.

Temporary files /oracle/ogg/dirtmp: created.

Credential store files /oracle/ogg/dircrd: created.

Masterkey wallet files /oracle/ogg/dirwlt: created.

Dump files /oracle/ogg/dirdmp: created.

只有提交事务的record才会被捕获。抽取、投递、应用日志的单位是record,而不是trail文件。

2.6配置MGR参数文件,并启动mgr

mgr进程是这些进程的管理和守护进程,目标端的mgr进程还与源端进行通信

edit params mgr

PORT 7809

GGSCI (tencent) 7> start mgr

Manager started.

GGSCI (tencent) 8> info all

Program Status Group Lag at Chkpt Time Since Chkpt

MANAGER RUNNING

2.7添加extract进程 抽取进程:负责抓取需要传输的数据(添加进程的时候为抽取点,而不是启动进程的时候) 从21开始OGG需要配置tns #查看当前数据库语言 SQL> select userenv('language') from dual; USERENV('LANGUAGE')

AMERICAN_AMERICA.ZHS16GBK

--配置extract进程

#编辑参数

GGSCI (tencent as ogg@orcl) 21> edit params exta

extract exta

SETENV (NLS_LANG=AMERICAN_AMERICA.ZHS16GBK)

SETENV (ORACLE_HOME=/oracle/app/oracle/product/12.2.0/db_1)

SETENV (ORACLE_SID=orcl)

USERID ogg@orcl, PASSWORD ogg

DISCARDFILE ./dirrpt/exta.dsc,APPEND,MEGABYTES 1024

EXTTRAIL ./dirdat/ea

table hr.*;

#创建extract组

ADD EXTRACT exta, TRANLOG, BEGIN NOW

#创建本地 trail 文件

ADD EXTTRAIL ./dirdat/ea, EXTRACT exta, MEGABYTES 5

#启动extract进程

GGSCI (tencent as ogg@orcl) 22> start exta

GGSCI (tencent as ogg@orcl) 24> info all

Program Status Group Lag at Chkpt Time Since Chkpt

MANAGER RUNNING

EXTRACT RUNNING EXTA 00:01:45 00:00:03

2.8投递进程

投递进程:

EDIT PARAMS pumpa

#编辑参数

GGSCI (tencent as ogg@orcl) 26> edit param pumpa

EXTRACT pumpa

SETENV (NLS_LANG=AMERICAN_AMERICA.UTF8)

PASSTHRU

RMTHOST 10.0.4.16, MGRPORT 7810

RMTTRAIL ./dirdat/pa

TABLE hr.*;

#用add extract指定本地 trail 文件

ADD EXTRACT pumpa, EXTTRAILSOURCE ./dirdat/ea

#用add rmttrail指定远程 trail 文件

ADD RMTTRAIL ./dirdat/pa, EXTRACT pumpa, MEGABYTES 5

#启动Pump进程

START EXTRACT pumpa

GGSCI (tencent) 13> info all

Program Status Group Lag at Chkpt Time Since Chkpt

MANAGER RUNNING

EXTRACT RUNNING EXTA 00:00:00 00:00:00

EXTRACT RUNNING PUMPA 00:00:00 00:00:01

2.9生成define文件

在异构的同步复制中需要生成define文件。用于数据兼容不同数据库。

edit params defgen

#参数文件内容

defsfile ./dirdef/defgen.def

userid ogg, password ogg

TABLE hr.*;

#退出ggsci命令

GGSCI (tencent) 20> exit

#生成文件

[oracle@tencent ogg]$ defgen paramfile ./dirprm/defgen.prm

Oracle GoldenGate Table Definition Generator for Oracle

Version 19.1.0.0.4 OGGCORE_19.1.0.0.0_PLATFORMS_191017.1054

Linux, x64, 64bit (optimized), Oracle 12c on Oct 17 2019 13:20:56

Copyright (C) 1995, 2019, Oracle and/or its affiliates. All rights reserved.

Starting at 2023-07-25 23:54:08

Operating System Version:

Linux

Version #1 SMP Tue Jun 28 15:37:28 UTC 2022, Release 3.10.0-1160.71.1.el7.x86_64

Node: tencent

Machine: x86_64

soft limit hard limit

Address Space Size : unlimited unlimited

Heap Size : unlimited unlimited

File Size : unlimited unlimited

CPU Time : unlimited unlimited

Process id: 2283

** Running with the following parameters **

defsfile ./dirdef/defgen.def

userid ogg, password ***

TABLE hr.;Expanding wildcard table specification hr.:

Retrieving definition for HR.COUNTRIES.

Retrieving definition for HR.DEPARTMENTS.

Retrieving definition for HR.EMPLOYEES.

Retrieving definition for HR.EMP_DETAILS_VIEW.

2023-07-25 23:54:10 WARNING OGG-06439 No unique key is defined for table EMP_DETAILS_VIEW. All viable columns will be used to represent the key, but may not guarantee uniqueness. KEYCOLS may be used to define the key.

Retrieving definition for HR.JOBS.

Retrieving definition for HR.JOB_HISTORY.

Retrieving definition for HR.LOCATIONS.

Retrieving definition for HR.REGIONS.

Retrieving definition for HR.RSXY_QT_ZRRSBJN_TEMP.

2023-07-25 23:54:10 WARNING OGG-06439 No unique key is defined for table RSXY_QT_ZRRSBJN_TEMP. All viable columns will be used to represent the key, but may not guarantee uniqueness. KEYCOLS may be used to define the key.

Definitions generated for 9 tables in ./dirdef/defgen.def.

#生成文件后传送文件到目标端dirdef目录下

cp /oracle/ogg/dirdef/defgen.def /postgresql/ogg/dirdef

三、安装和配置OGG软件(目标端),以下操作都是在目标端操作

3.1 创建安装目录

mkdir -p /postgresql/ogg

3.2 配置环境变量

export PGHOME=/postgresql/pg14

export PGDATA=/postgresql/pgdata

export PATH=$PGHOME/bin:$OGGHOME:/usr/bin/isql:$PATH

export OGGHOME=/postgresql/ogg

export ODBCINI=$OGGHOME/odbc.ini

export LD_LIBRARY_PATH=$PGHOME/lib:/postgresql/ogg/lib:$LD_LIBRARY_PATH

3.3 创建ogg用户

[postgres@tencent dirdef]$ psql

psql (14.6)

Type "help" for help.

postgres=# create database ogg;

CREATE DATABASE

postgres=# create user ogg superuser password 'ogg';

CREATE ROLE

postgres=# \c ogg ogg

You are now connected to database "ogg" as user "ogg".

ogg=# \c

You are now connected to database "ogg" as user "ogg".

ogg=# create schema ogg;

CREATE SCHEMA

3.4 创建DSN

ogg for postgresql使用的是ODBC来连接数据库,因此需要指明ODBC dirver

--安装UnixODBC

yum install -y unixODBC.x86_64

--安装PostgresqlODBC

yum install -y postgresql-odbc.x86_64

--配置ODBC

cd /etc/ 复制odbcinst.ini到ogg的home目录下,查看odbcinst

(注意该文件不要改动)

[postgres@tencent ogg]$ cat odbcinst.ini

Example driver definitions

Driver from the postgresql-odbc package

Setup from the unixODBC package

[PostgreSQL]

Description = ODBC for PostgreSQL

Driver = /usr/lib/psqlodbcw.so

Setup = /usr/lib/libodbcpsqlS.so

Driver64 = /usr/lib64/psqlodbcw.so

Setup64 = /usr/lib64/libodbcpsqlS.so

FileUsage = 1

Driver from the mysql-connector-odbc package

Setup from the unixODBC package

[MySQL]

Description = ODBC for MySQL

Driver = /usr/lib/libmyodbc5.so

Setup = /usr/lib/libodbcmyS.so

Driver64 = /usr/lib64/libmyodbc5.so

Setup64 = /usr/lib64/libodbcmyS.so

FileUsage = 1

--配置odbc.ini,在该文件中填写

[postgres@tencent ogg]$ vi odbc.ini

[ODBC Data Sources]

gg_pg=DataDirect 14.6 PostgreSQL Wire Protocol #gg_pg数据库别名,与下面gg_pg相同

[ODBC]

IANAAppCodePage=106 #106等价于UTF8

InstallDir=/postgresql/ogg #ogg home目录

[gg_pg]

Driver=/postgresql/ogg/lib/GGpsql25.so #OGG安装目录下有内置ODBC驱动

Description=DataDirect 14.6 PostgreSQL Wire Protocol

Database=ogg

HostName=10.0.4.16

PortNumber=4519

--登录Postgresql数据库

修改profile文件,添加ODBCINI,指定ODBC DRIVER路径

[postgres@tencent ogg]$ vi ~/.bash_profile

export ODBCINI=$OGGHOME/odbc.ini

#添加odbcini访问路径,默认访问/etc目录下的odbc.ini

#此时isql访问数据库失败,可以忽略,如下

[postgres@tencent ogg]$ isql gg_pg

[ISQL]ERROR: Could not SQLConnect

#ggsci登录postgresql

[postgres@tencent ogg]$ ggsci

Oracle GoldenGate Command Interpreter for PostgreSQL

Version 21.3.0.0.0 OGGCORE_21.3.0.0.0_PLATFORMS_210728.1047

Oracle Linux 7, x64, 64bit (optimized), PostgreSQL on Aug 4 2021 20:27:55

Operating system character set identified as UTF-8.

Copyright (C) 1995, 2021, Oracle and/or its affiliates. All rights reserved.

GGSCI (tencent) 1> dblogin sourcedb gg_pg userid ogg,password ogg

2023-07-26 11:12:21 INFO OGG-03036 Database character set identified as UTF-8. Locale: en_US.utf8.

2023-07-26 11:12:21 INFO OGG-03037 Session character set identified as UTF-8.

Successfully logged into database.

3.5 创建ogg目录

GGSCI (tencent) 1> create subdirs

Creating subdirectories under current directory /postgresql/ogg

Parameter file /postgresql/ogg/dirprm: created.

Report file /postgresql/ogg/dirrpt: created.

Checkpoint file /postgresql/ogg/dirchk: created.

Process status files /postgresql/ogg/dirpcs: created.

SQL script files /postgresql/ogg/dirsql: created.

Database definitions files /postgresql/ogg/dirdef: created.

Extract data files /postgresql/ogg/dirdat: created.

Temporary files /postgresql/ogg/dirtmp: created.

Credential store files /postgresql/ogg/dircrd: created.

Master encryption key wallet files /postgresql/ogg/dirwlt: created.

Dump files /postgresql/ogg/dirdmp: created.

3.6 配置mgr组

edit params mgr

GGSCI (tencent) 2> view param mgr

port 7810

GGSCI (tencent) 3> info all

Program Status Group Lag at Chkpt Time Since Chkpt

MANAGER RUNNING

3.7 添加checkpoint表

为了保证源和目标端在传数据的时候不会重复或者少传,在目标端添加checkpoin表

GGSCI (tencent) 4> dblogin sourcedb gg_pg userid ogg,password ogg

2023-07-26 11:12:21 INFO OGG-03036 Database character set identified as UTF-8. Locale: en_US.utf8.

2023-07-26 11:12:21 INFO OGG-03037 Session character set identified as UTF-8.

Successfully logged into database.

GGSCI (tencent as ogg@gg_pg) 2> add checkpointtable ogg.checkpointtab

Successfully created checkpoint table ogg.checkpointtab.

3.8 配置replicate进程

#编辑参数文件

GGSCI (tencent) 6>edit params repa

REPLICAT repa

SOURCEDEFS ./dirdef/defgen.def

SETENV(ODBCINI=/postgresql/ogg/odbc.ini)

SETENV(NLS_LANG=AMERICAN_AMERICA.ZHS16GBK)

TARGETDB gg_pg,userid ogg,password ogg

DISCARDFILE ./ogg/dirrpt/repa.rpt, append

MAP hr.*, TARGET hr.*;

#添加 Replicat 进程

add replicat repa,exttrail ./dirdat/pa,begin now,checkpointtable ogg.checkpointtab

#启动 Replicat 进程

GGSCI (tencent as ogg@gg_pg) 8> start repa

#查看进程启动情况

GGSCI (tencent as ogg@gg_pg) 9> info all

Program Status Group Lag at Chkpt Time Since Chkpt

MANAGER RUNNING

REPLICAT RUNNING REPA 00:00:00 00:00:00

第四章 数据验证

--创建表结构

1、源端oracle执行

SQL> create table t1 (id int);

Table created.

#添加附加日志

GGSCI (tencent) 12> dblogin userid ogg,password ogg

Successfully logged into database.

GGSCI (tencent as ogg@orcl) 13> add trandata hr.*

2、目标端postgresql执行

ogg=# create user hr with password 'hr';

CREATE ROLE

ogg=# grant all on database ogg to hr;

GRANT

ogg=# create schema hr;

CREATE SCHEMA

ogg=# alter schema hr owner to hr;

ALTER SCHEMA

ogg=> create table hr.t1 (id int);

CREATE TABLE

ogg=> \d

List of relations

Schema | Name | Type | Owner

--------+------+-------+-------

hr | t1 | table | hr

(1 row)

--源端oracle插入数据

SQL> insert into t1 values(1);

1 row created.

SQL> commit;

Commit complete.

#查看数据插入情况

GGSCI (tencent) 10> stats exta

Sending STATS request to EXTRACT EXTA ...

Start of Statistics at 2023-07-26 11:35:09.

Output to /oracle/ogg/dirdat/ea:

Extracting from HR.T1 to HR.T1:

*** Total statistics since 2023-07-26 11:35:07 ***

Total inserts 1.00

Total updates 0.00

Total deletes 0.00

Total upserts 0.00

Total discards 0.00

Total operations 1.00

*** Daily statistics since 2023-07-26 11:35:07 ***

Total inserts 1.00

Total updates 0.00

Total deletes 0.00

Total upserts 0.00

Total discards 0.00

Total operations 1.00

*** Hourly statistics since 2023-07-26 11:35:07 ***

Total inserts 1.00

Total updates 0.00

Total deletes 0.00

Total upserts 0.00

Total discards 0.00

Total operations 1.00

*** Latest statistics since 2023-07-26 11:35:07 ***

Total inserts 1.00

Total updates 0.00

Total deletes 0.00

Total upserts 0.00

Total discards 0.00

Total operations 1.00

End of Statistics.

#捕获进程正常,捕获一条数据

GGSCI (tencent) 11> stats pumpa

Sending STATS request to EXTRACT PUMPA ...

Start of Statistics at 2023-07-26 11:35:15.

Output to ./dirdat/pa:

Extracting from HR.T1 to HR.T1:

*** Total statistics since 2023-07-26 11:35:07 ***

Total inserts 1.00

Total updates 0.00

Total deletes 0.00

Total upserts 0.00

Total discards 0.00

Total operations 1.00

*** Daily statistics since 2023-07-26 11:35:07 ***

Total inserts 1.00

Total updates 0.00

Total deletes 0.00

Total upserts 0.00

Total discards 0.00

Total operations 1.00

*** Hourly statistics since 2023-07-26 11:35:07 ***

Total inserts 1.00

Total updates 0.00

Total deletes 0.00

Total upserts 0.00

Total discards 0.00

Total operations 1.00

*** Latest statistics since 2023-07-26 11:35:07 ***

Total inserts 1.00

Total updates 0.00

Total deletes 0.00

Total upserts 0.00

Total discards 0.00

Total operations 1.00

End of Statistics.

#传输进程正常,传输一条数据

--目标端postgresql查看数据 [postgres@tencent ogg]$ psql ogg hr psql (14.6) Type "help" for help. ogg=> \c You are now connected to database "ogg" as user "hr". ogg=> select * from t1; id

1

(1 rows)

GGSCI (tencent as ogg@gg_pg) 35> stats repa

Sending STATS request to Replicat group REPA ...

Start of statistics at 2023-07-26 11:46:17.

Replicating from HR.T1 to hr.t1:

*** Total statistics since 2023-07-26 11:46:09 ***

Total inserts 1.00

Total updates 0.00

Total deletes 0.00

Total upserts 0.00

Total discards 0.00

Total operations 1.00

*** Daily statistics since 2023-07-26 11:46:09 ***

Total inserts 1.00

Total updates 0.00

Total deletes 0.00

Total upserts 0.00

Total discards 0.00

Total operations 1.00

*** Hourly statistics since 2023-07-26 11:46:09 ***

Total inserts 1.00

Total updates 0.00

Total deletes 0.00

Total upserts 0.00

Total discards 0.00

Total operations 1.00

*** Latest statistics since 2023-07-26 11:46:09 ***

Total inserts 1.00

Total updates 0.00

Total deletes 0.00

Total upserts 0.00

Total discards 0.00

Total operations 1.00

End of statistics.

#数据应用正常,目标库插入一条数据。

相关文章:

使用goldengate 迁移Oracle到postgresql

环境: --源端: IP:10.0.4.16 hostname:tencent Oracle数据库版本:12.2.0.1.0 ogg for oracle版本:19.1.0.0.4 SID:orcl --目标端: IP:10.0.4.16 hostname&#…...

ESP-C3入门20. CentOS开发环境及Jenkins流水线

一、准备环境 CentOS8已经正常安装Jenkins 二、升级 cmake cmake 升到 3.16以上。 cmake --version # 安装 g sudo yum install gcc-c export CXXg# 安装 CMake 的依赖项 sudo yum install -y openssl-devel# 下载 CMake 源码并进行编译安装 wget https://github.com/Kitwa…...

服务器被爬虫恶意攻击怎么办?

在有预算的情况可以采购第三方服务防火墙,没钱就使用开源的WAF进行防护。 # WAF防火墙的基本防护原理 WAF(Web 应用防火墙)可以使用多种技术来防止恶意爬虫攻击,例如: 1. 黑名单:WAF 可以使用黑名单技术来…...

JavaScript正则表达式之座机号/手机号验证校验规则

引用:https://www.bilibili.com/read/cv18300539/ 本文对利用正则表达式对手机号码进行了验证 支持格式: 座机 :xxx-xxxxxxxx、xxxxxxxxxxxx …座机区号的横杠可有可无 手机:xxxxxxxxxxx JavaScript: var: checkPhone (rule,…...

黑客学习手册(自学网络安全)

一、首先,什么是黑客? 黑客泛指IT技术主攻渗透窃取攻击技术的电脑高手,现阶段黑客所需要掌握的远远不止这些。 二、为什么要学习黑客技术? 其实,网络信息空间安全已经成为海陆空之外的第四大战场,除了国…...

获取非叶子节点的grad(retain_grad()、hook)【为了解决grad值是None的问题】

在调试过程中, 有时候我们需要对中间变量梯度进行监控, 以确保网络的有效性, 这个时候我们需要打印出非叶节点的梯度, 为了实现这个目的, 我们可以通过两种手段进行, 分别是: retain_grad()hook 不过我感觉“hook”比“retain_grad()”要麻烦.....,所以我感觉还是…...

JMeter(八):响应断言详解

响应断言 :对服务器的响应进行断言校验 (1)应用范围: main sample and sub sample, main sample only , sub-sample only , jmeter variable 关于应用范围,我们大多数勾选“main sample only” 就足够了,因为我们一个请求,实质上只有一个请求。但是当我们发一个请求时,…...

【网络编程】IO复用的应用一:非阻塞connect

在connect连接中,若socket以非阻塞的方式进行连接,则系统内设置的TCP三次握手超时时间为0,所以它不会等待TCP三次握手完成,直接返回,错误为EINPROGRESS。   所以,我们可以通过判断connect时返回的错误码是…...

Spring注解开发,bean的作用范围及生命周期、Spring注解开发依赖注入

🐌个人主页: 🐌 叶落闲庭 💨我的专栏:💨 c语言 数据结构 javaweb 石可破也,而不可夺坚;丹可磨也,而不可夺赤。 Spring注解开发 一、注解开发定义Bean二、纯注解开发Bean三…...

C#设计模式之---原型模式

原型模式(Prototype Pattern) 原型模式(Prototype Pattern) 是用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。原型模式是一种创建型设计模式。也就是用一个已经创建的实例作为原型,通过…...

STM32入门学习之外部中断

1.STM32的IO口可以作为外部中断输入口。本文通过按键按下作为外部中断的输入,点亮LED灯。在STM32的19个外部中断中,0-15为外部IO口的中断输入口。STM32的引脚分别对应着0-15的外部中断线。比如,外部中断线0对应着GPIOA.0-GPIOG.0,…...

Jenkins 配置maven和jdk

前提:服务器已经安装maven和jdk 一、在Jenkins中添加全局变量 系统管理–>系统配置–>全局属性–>环境变量 添加三个全局变量 JAVA_HOME、MAVEN_HOME、PATH 二、配置maven 系统管理–>全局工具配置–>maven–>新增 新增配置 三、配置JDK 在系统管…...

Leetcode | Binary search | 22. 74. 162. 33. 34. 153.

22. Generate Parentheses 要意识到只要还有左括号,就可以放到path里。只要右括号数量小于左括号,也可以放进去。就是valid的组合。recurse两次 74. Search a 2D Matrix 看成sorted list就好。直接用m*n表示最后一位的index,并且每次只需要 …...

生命在于折腾——面试问题汇总

这里面的问题都是我参加面试时候遇到的问题,大家就这样看吧。 一、个人情况 1、自我介绍 2、为什么离开上一家公司 3、有没有参加过HVV 4、介绍一下上家公司的项目 5、小程序和公众号渗透测试做过么 6、实习工资多少 7、有挖过漏洞么 二、基础知识 1、信息收集的…...

<Java>Map<String,Object>中解析Object类型数据为数组格式

背景&#xff1a; 前端&#xff1a;入参为字符串和数组类型&#xff1b;通过json字符串传给后台&#xff0c; 后台&#xff1a;后台通过工具解析为Map<String&#xff0c;Object>&#xff0c;然后需要解析出Map里面的数组值做操作&#xff1b; 需求&#xff1a; 入参&…...

别再分库分表了,试试TiDB!

什么是NewSQL 传统SQL的问题 升级服务器硬件 数据分片 NoSQL 的问题 优点 缺点 NewSQL 特性 NewSQL 的主要特性 三种SQL的对比 TiDB怎么来的 TiDB社区版和企业版 TIDB核心特性 水平弹性扩展 分布式事务支持 金融级高可用 实时 HTAP 云原生的分布式数据库 高度兼…...

Java进阶之Dump文件初体验

视频地址&#xff1a;https://www.bilibili.com/video/BV1Ak4y137oh 学习文章&#xff1a;https://d9bp4nr5ye.feishu.cn/wiki/VQoAwlzrXiLFZekuLIyc1uK5nqc 最近线上频繁的内存告警&#xff0c;同事A通过分析dump文件解决了这个问题&#xff0c;我当然是不会放过这种学习的机…...

基于扩展(EKF)和无迹卡尔曼滤波(UKF)的电力系统动态状态估计(Matlab代码实现)

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

曲线拟合(MATLAB拟合工具箱)位置前馈量计算(压力闭环控制应用)

利用PLC进行压力闭环控制的项目背景介绍请查看下面文章链接,这里不再赘述。 信捷PLC压力闭环控制应用(C语言完整PD、PID源代码)_RXXW_Dor的博客-CSDN博客闭环控制的系列文章,可以查看PID专栏的的系列文章,链接如下:张力控制之速度闭环(速度前馈量计算)_RXXW_Dor的博客-CSD…...

小程序使用echarts

参考文档&#xff1a;echarts官网、echarts-for-weixin 第一步引入组件库&#xff0c;可直接从echarts-for-weixin下载&#xff0c;也可以从echarts官网自定义生成&#xff0c;这里我们就不贴了组件库引入好后&#xff0c;就是页面引用啦&#xff0c;废话不多说&#xff0c;直…...

调用支付宝接口响应40004 SYSTEM_ERROR问题排查

在对接支付宝API的时候&#xff0c;遇到了一些问题&#xff0c;记录一下排查过程。 Body:{"datadigital_fincloud_generalsaas_face_certify_initialize_response":{"msg":"Business Failed","code":"40004","sub_msg…...

Zustand 状态管理库:极简而强大的解决方案

Zustand 是一个轻量级、快速和可扩展的状态管理库&#xff0c;特别适合 React 应用。它以简洁的 API 和高效的性能解决了 Redux 等状态管理方案中的繁琐问题。 核心优势对比 基本使用指南 1. 创建 Store // store.js import create from zustandconst useStore create((set)…...

线程与协程

1. 线程与协程 1.1. “函数调用级别”的切换、上下文切换 1. 函数调用级别的切换 “函数调用级别的切换”是指&#xff1a;像函数调用/返回一样轻量地完成任务切换。 举例说明&#xff1a; 当你在程序中写一个函数调用&#xff1a; funcA() 然后 funcA 执行完后返回&…...

智能在线客服平台:数字化时代企业连接用户的 AI 中枢

随着互联网技术的飞速发展&#xff0c;消费者期望能够随时随地与企业进行交流。在线客服平台作为连接企业与客户的重要桥梁&#xff0c;不仅优化了客户体验&#xff0c;还提升了企业的服务效率和市场竞争力。本文将探讨在线客服平台的重要性、技术进展、实际应用&#xff0c;并…...

【ROS】Nav2源码之nav2_behavior_tree-行为树节点列表

1、行为树节点分类 在 Nav2(Navigation2)的行为树框架中,行为树节点插件按照功能分为 Action(动作节点)、Condition(条件节点)、Control(控制节点) 和 Decorator(装饰节点) 四类。 1.1 动作节点 Action 执行具体的机器人操作或任务,直接与硬件、传感器或外部系统…...

Neo4j 集群管理:原理、技术与最佳实践深度解析

Neo4j 的集群技术是其企业级高可用性、可扩展性和容错能力的核心。通过深入分析官方文档,本文将系统阐述其集群管理的核心原理、关键技术、实用技巧和行业最佳实践。 Neo4j 的 Causal Clustering 架构提供了一个强大而灵活的基石,用于构建高可用、可扩展且一致的图数据库服务…...

C# 类和继承(抽象类)

抽象类 抽象类是指设计为被继承的类。抽象类只能被用作其他类的基类。 不能创建抽象类的实例。抽象类使用abstract修饰符声明。 抽象类可以包含抽象成员或普通的非抽象成员。抽象类的成员可以是抽象成员和普通带 实现的成员的任意组合。抽象类自己可以派生自另一个抽象类。例…...

12.找到字符串中所有字母异位词

&#x1f9e0; 题目解析 题目描述&#xff1a; 给定两个字符串 s 和 p&#xff0c;找出 s 中所有 p 的字母异位词的起始索引。 返回的答案以数组形式表示。 字母异位词定义&#xff1a; 若两个字符串包含的字符种类和出现次数完全相同&#xff0c;顺序无所谓&#xff0c;则互为…...

【碎碎念】宝可梦 Mesh GO : 基于MESH网络的口袋妖怪 宝可梦GO游戏自组网系统

目录 游戏说明《宝可梦 Mesh GO》 —— 局域宝可梦探索Pokmon GO 类游戏核心理念应用场景Mesh 特性 宝可梦玩法融合设计游戏构想要素1. 地图探索&#xff08;基于物理空间 广播范围&#xff09;2. 野生宝可梦生成与广播3. 对战系统4. 道具与通信5. 延伸玩法 安全性设计 技术选…...

Unity | AmplifyShaderEditor插件基础(第七集:平面波动shader)

目录 一、&#x1f44b;&#x1f3fb;前言 二、&#x1f608;sinx波动的基本原理 三、&#x1f608;波动起来 1.sinx节点介绍 2.vertexPosition 3.集成Vector3 a.节点Append b.连起来 4.波动起来 a.波动的原理 b.时间节点 c.sinx的处理 四、&#x1f30a;波动优化…...