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

DM8 DSC集群实时主备搭建

1、环境准备

主库DSC集群公网ip:192.168.1.34/35    私有ip:192.168.10.134/135

备库ip:192.168.1.33

2、对DSC集群数据库全备

1)主库做全备

[dmdba@dmdsc01 bin]$ disql sysdba/dameng123

BACKUP DATABASE TO WEEKLY_FULL_BAK BACKUPSET

'/dm/dmbak/db_fullbak_01' DEVICE TYPE DISK BACKUPINFO 'db_fullbak' MAXPIECESIZE 300 COMPRESSED LEVEL 1 PARALLEL 2;

2)检查备份是否有效

cd /dm/dmdbms/bin

./dmrman  dcr_ini=/dm/dsc/config/dmdcr.ini

RMAN> check backupset '/dm/dmbak/db_fullbak_01';

check backupset '/dm/dmbak/db_fullbak_01';

[Percent:100.00%][Speed:0.00M/s][Cost:00:00:00][Remaining:00:00:00]                                 

check backupset successfully.

time used: 264.470(ms)

3)将备份拷贝至备机机器

scp  -r /dm/dmbak/db_fullbak_01 192.168.1.33:/dm/dmbak

3、备机安装数据库

1)在备库安装数据库软件

#创建用户和组

groupadd dinstall

useradd  -g dinstall -m -d /home/dmdba -s /bin/bash  dmdba

passwd dmdba

#创建相关目录并授权

mkdir -p /dm/dmdbms

mkdir -p /dm/dmdata

mkdir -p /dmarch

mkdir -p /dmbak

chown -R dmdba:dinstall /dm

chown -R dmdba:dinstall /dmarch

chown -R dmdba:dinstall  /dmbak

#配置dmdba用户环境变量

su - dmdba

cd ~

vi .bash_profile

export DM_HOME=/dm8/dmdbms

export PATH=$PATH:$DM_HOME/bin

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$DM_HOME/bin

#使环境变量配置生效

source .bash_profile

#安装数据库软件

su - dmdba

cd /mnt

./DMInstall.bin -i

2)在备机初始化数据库

[dmdba@Kylin03 bin]$ dminit path=/dm/dmdata  CASE_SENSITIVE=1 CHARSET=0 db_name=DW01 instance_name=DW01 port_num=5236 LOG_SIZE=512 SYSDBA_PWD=dameng123  PAGE_SIZE=32

initdb V8

db version: 0x7000c

file dm.key not found, use default license!

License will expire on 2024-01-10

Normal of FAST

Normal of DEFAULT

Normal of RECYCLE

Normal of KEEP

Normal of ROLL

 log file path: /dm/dmdata/DW01/DW0101.log

 log file path: /dm/dmdata/DW01/DW0102.log

write to dir [/dm/dmdata/DW01].

create dm database success. 2023-07-30 00:19:53

注意,对比主库dm.ini文件修改备库的dm.ini文件。

4、在备机还原dsc集群备份的数据

1)检查备份集

cd /dm/dmdbms/dm8/bin

./dmrman

RMAN> check backupset '/dm/dmbak/db_fullbak_01';

check backupset '/dm/dmbak/db_fullbak_01';

[Percent:100.00%][Speed:0.00M/s][Cost:00:00:00][Remaining:00:00:00]                                 

check backupset successfully.

time used: 707.058(ms)

2)还原数据库

restore database '/dm/dmdata/DW01/dm.ini' from backupset '/dm/dmbak/db_fullbak_01' TASK THREAD 2;

recover database '/dm/dmdata/DW01/dm.ini' from backupset '/dm/dmbak/db_fullbak_01';

recover database '/dm/dmdata/DW01/dm.ini' update db_magic;

5、修改配置文件

1)主库配置:

修改dm.ini参数如下:

DSC节点一:

INSTANCE_NAME = DSC0 

PORT_NUM = 5236 #数据库实例监听端口

DW_INACTIVE_INTERVAL = 60 #接收守护进程消息超时时间

ALTER_MODE_STATUS = 0 #不允许手工方式修改实例模式/状态/OGUID

ENABLE_OFFLINE_TS = 2 #不允许备库 OFFLINE 表空间

MAL_INI = 1 #打开 MAL 系统

ARCH_INI = 1 #打开归档配置

RLOG_SEND_APPLY_MON = 64 #统计最近 64 次的日志发送信息

DSC节点二:

INSTANCE_NAME = DSC1 

PORT_NUM = 5236 #数据库实例监听端口

DW_INACTIVE_INTERVAL = 60 #接收守护进程消息超时时间

ALTER_MODE_STATUS = 0 #不允许手工方式修改实例模式/状态/OGUID

ENABLE_OFFLINE_TS = 2 #不允许备库 OFFLINE 表空间

MAL_INI = 1 #打开 MAL 系统

ARCH_INI = 1 #打开归档配置

RLOG_SEND_APPLY_MON = 64 #统计最近 64 次的日志发送信息

配置dmmal.ini(dmmal.ini和dm.ini放在同一路径下),两个DSC节点内容必须一致。

cat >>dmmal.ini<<EOF

MAL_CHECK_INTERVAL=87

MAL_CONN_FAIL_INTERVAL=180

MAL_SYS_BUF_SIZE=600

MAL_BUF_SIZE=300

MAL_VPOOL_SIZE=500

MAL_COMPRESS_LEVEL=0

[MAL_INST0]

MAL_INST_NAME=DSC0

MAL_HOST=192.168.1.34

MAL_PORT=5736

MAL_INST_HOST=192.168.10.134

MAL_INST_PORT=5236

MAL_DW_PORT=52141

MAL_INST_DW_PORT=5276

[MAL_INST1]

MAL_INST_NAME=DSC1

MAL_HOST=192.168.1.35

MAL_PORT=5737

MAL_INST_HOST=192.168.10.135

MAL_INST_PORT=5236

MAL_DW_PORT=52141

MAL_INST_DW_PORT=5276

[MAL_INST2]

MAL_INST_NAME=DW01

MAL_HOST=192.168.1.33

MAL_PORT=5738

MAL_INST_HOST=192.168.10.133

MAL_INST_PORT=5236

MAL_DW_PORT=52141

MAL_INST_DW_PORT=5276

EOF

配置dmarch.ini,配置本地归档和实时归档。

DSC节点一:

ARCH_WAIT_APPLY = 0

ARCH_LOCAL_SHARE = 1

ARCH_LOCAL_SHARE_CHECK =0

[ARCHIVE_LOCAL1]

ARCH_TYPE = LOCAL

ARCH_DEST =+DMDATA/DSC0/arch

ARCH_FILE_SIZE = 128

ARCH_SPACE_LIMIT = 0

[ARCH_REMOTE1]

ARCH_TYPE = REMOTE

ARCH_DEST = DSC1

ARCH_INCOMING_PATH =+DMDATA/DSC1/arch

ARCH_FILE_SIZE = 128

ARCH_SPACE_LIMIT = 0

[ARCHIVE_REALTIME]

ARCH_TYPE = REALTIME    #实时归档类型

ARCH_DEST = DW01    #实时归档目标实例名

DSC节点二:

ARCH_WAIT_APPLY = 0

ARCH_LOCAL_SHARE = 1

ARCH_LOCAL_SHARE_CHECK =0

[ARCHIVE_LOCAL1]

ARCH_TYPE = LOCAL

ARCH_DEST =+DMDATA/DSC1/arch

ARCH_FILE_SIZE = 128

ARCH_SPACE_LIMIT = 0

[ARCH_REMOTE1]

ARCH_TYPE = REMOTE

ARCH_DEST = DSC0

ARCH_INCOMING_PATH =+DMDATA/DSC0/arch

ARCH_FILE_SIZE = 128

ARCH_SPACE_LIMIT = 0

[ARCHIVE_REALTIME]

ARCH_TYPE = REALTIME    #实时归档类型

ARCH_DEST = DW01    #实时归档目标实例名

配置 dmwatcher.ini。

DSC节点一:

[GRP1]

DW_TYPE = GLOBAL #全局守护类型

DW_MODE = MANUAL #手动切换模式

DW_ERROR_TIME = 120 #远程守护进程故障认定时间

INST_RECOVER_TIME = 60 #主库守护进程启动恢复的间隔时间

INST_ERROR_TIME = 120 #本地实例故障认定时间

INST_OGUID = 453331 #守护系统唯一OGUID值

INST_INI = /dm/dsc/config/dsc0_config/dm.ini #dm.ini  配置文件路径

DCR_INI = /dm/dsc/config/dmdcr.ini

INST_AUTO_RESTART = 0 #打开实例的自动启动功能

INST_STARTUP_CMD = /dm/dmdbms/dm8/bin/DmServiceDSC start #命令行方式启动

RLOG_SEND_THRESHOLD = 0 #指定主库发送日志到备库的时间阀值,默认关闭

RLOG_APPLY_THRESHOLD = 0 #指定备库重演日志的时间阀值,默认关闭

DSC节点二:

[GRP1]

DW_TYPE = GLOBAL #全局守护类型

DW_MODE = MANUAL #手动切换模式

DW_ERROR_TIME = 120 #远程守护进程故障认定时间

INST_RECOVER_TIME = 60 #主库守护进程启动恢复的间隔时间

INST_ERROR_TIME = 120 #本地实例故障认定时间

INST_OGUID = 453331 #守护系统唯一OGUID值

INST_INI = /dm/dsc/config/dsc1_config/dm.ini #dm.ini  配置文件路径

DCR_INI = /dm/dsc/config/dmdcr.ini

INST_AUTO_RESTART = 0 #打开实例的自动启动功能

INST_STARTUP_CMD = /dm/dmdbms/dm8/bin/DmServiceDSC start #命令行方式启动

RLOG_SEND_THRESHOLD = 0 #指定主库发送日志到备库的时间阀值,默认关闭

RLOG_APPLY_THRESHOLD = 0 #指定备库重演日志的时间阀值,默认关闭

2)备库配置:

配置dm.ini,修改参数如下:

INSTANCE_NAME = DW01 

PORT_NUM = 5236 #数据库实例监听端口

DW_INACTIVE_INTERVAL = 60 #接收守护进程消息超时时间

ALTER_MODE_STATUS = 0 #不允许手工方式修改实例模式/状态/OGUID

ENABLE_OFFLINE_TS = 2 #不允许备库 OFFLINE 表空间

MAL_INI = 1 #打开 MAL 系统

ARCH_INI = 1 #打开归档配置

RLOG_SEND_APPLY_MON = 64 #统计最近 64 次的日志发送信息

配置dmmal.ini(dmmal.ini和dm.ini放在同一路径下)

MAL_CHECK_INTERVAL=87

MAL_CONN_FAIL_INTERVAL=180

MAL_SYS_BUF_SIZE=600

MAL_BUF_SIZE=300

MAL_VPOOL_SIZE=500

MAL_COMPRESS_LEVEL=0

[MAL_INST0]

MAL_INST_NAME=DSC0

MAL_HOST=192.168.1.34

MAL_PORT=5736

MAL_INST_HOST=192.168.10.134

MAL_INST_PORT=5236

MAL_DW_PORT=52141

MAL_INST_DW_PORT=5276

[MAL_INST1]

MAL_INST_NAME=DSC1

MAL_HOST=192.168.1.35

MAL_PORT=5737

MAL_INST_HOST=192.168.10.135

MAL_INST_PORT=5236

MAL_DW_PORT=52141

MAL_INST_DW_PORT=5276

[MAL_INST2]

MAL_INST_NAME=DW01

MAL_HOST=192.168.1.33

MAL_PORT=5738

MAL_INST_HOST=192.168.10.133

MAL_INST_PORT=5236

MAL_DW_PORT=52141

MAL_INST_DW_PORT=5276

配置dmarch.ini

[ARCHIVE_REALTIME]

ARCH_TYPE = REALTIME    #实时归档类型

ARCH_DEST = DSC0/DSC1    #实时归档目标实例名

[ARCHIVE_LOCAL1]

ARCH_TYPE = LOCAL #本地归档类型

ARCH_DEST = /dm/dmarch #本地归档文件存放路径

ARCH_FILE_SIZE = 2048       #单位 Mb ,本地单个归档文件最大值

ARCH_SPACE_LIMIT = 204800    #单位 Mb ,0  表示无限制,范围 1024~4294967294M

配置 dmwatcher.ini

[GRP1]

DW_TYPE = GLOBAL #全局守护类型

DW_MODE = MANUAL #手动切换模式

DW_ERROR_TIME = 120 #远程守护进程故障认定时间

INST_RECOVER_TIME = 60 #主库守护进程启动恢复的间隔时间

INST_ERROR_TIME = 120 #本地实例故障认定时间

INST_OGUID = 453331 #守护系统唯一OGUID值

INST_INI = /dm/dmdata/DW01/dm.ini #dm.ini  配置文件路径

INST_AUTO_RESTART = 0 #打开实例的自动启动功能

INST_STARTUP_CMD = /dm/dmdbms/dm8/bin/dmserver #命令行方式启动

RLOG_SEND_THRESHOLD = 0 #指定主库发送日志到备库的时间阀值,默认关闭

RLOG_APPLY_THRESHOLD = 0 #指定备库重演日志的时间阀值,默认关闭

6、搭建主备

1)修改数据库服务默认启动到mount状态并启动(主备库所有节点修改)

[dmdba@dmdsc01 bin]$ grep "START_MODE=mount" DmServiceDSC

START_MODE=mount

#以mount方式分别启动DSC及备库

DmServiceDSC start

2)修改数据库主备模式

使用disql连接dsc数据库执行(在dsc其中一个节点执行):

SQL> sp_set_oguid(453331);

SQL> alter database primary;

使用disql连接备库数据库执行:

SQL> sp_set_oguid(453331);

SQL> alter database standby;

3)注册守护进程服务并启动:

#主库节点1

/dm/dmdbms/dm8/script/root/dm_service_installer.sh -t dmwatcher -watcher_ini /dm/dsc/config/dsc0_config/dmwatcher.ini -p DSC0

#主库节点2:

/dm/dmdbms/dm8/script/root/dm_service_installer.sh -t dmwatcher -watcher_ini /dm/dsc/config/dsc1_config/dmwatcher.ini -p DSC1

#备库

/dm/dmdbms/dm8/script/root/dm_service_installer.sh -t dmwatcher -watcher_ini /dm/dmdata/DW01/dmwatcher.ini -p DW01

#主备分别启动守护进程

./DmWatcherService start

4)配置监视器

vi /dm/dmdata/DW01/dmmonitor_manual.ini

MON_DW_CONFIRM = 1 #确认监视器模式

MON_LOG_PATH = /dm/dmdbms/dm8/log/ #监视器日志文件存放路径

MON_LOG_INTERVAL = 0 #每隔xxs 定时记录系统信息到日志文件

MON_LOG_FILE_SIZE = 32 #每个日志文件最大 32M

MON_LOG_SPACE_LIMIT = 0 #不限定日志文件总占用空间

[GRP1]

MON_INST_OGUID = 453331    #组 GRP1的唯一OGUID值

MON_DW_IP = 192.168.1.34:52141/192.168.1.35:52141

MON_DW_IP = 192.168.1.33:52141

#登录监视器,查看主备运行情况

[dmdba@Kylin03 ~]$ dmmonitor /dm/dmdata/DW01/dmmonitor_manual.ini

[monitor]         2023-07-30 17:54:34: DMMONITOR[4.0] V8

[monitor]         2023-07-30 17:54:35: DMMONITOR[4.0] IS READY.

[monitor]         2023-07-30 17:54:35: 收到守护进程(DSC0)消息

                  WTIME                WSTATUS        INST_OK   INAME            ISTATUS     IMODE     RSTAT    N_OPEN   FLSN            CLSN            

                  2023-07-30 23:54:35  OPEN           OK        DSC0             OPEN        PRIMARY   VALID    38       179718          179718          

[monitor]         2023-07-30 17:54:35:

#--------------------------------------------------------------------------------#

GET MONITOR CONNECT INFO FROM DMWATCHER(DSC0), THE FIRST LINE IS SELF INFO.

DW_CONN_TIME         MON_CONFIRM    MID            MON_IP                   MON_VERSION                                                     

2023-07-30 23:54:35  FALSE          114541909      ::ffff:192.168.1.33      DMMONITOR[4.0] V8

                                              

#--------------------------------------------------------------------------------#

[monitor]         2023-07-30 17:54:35: 收到守护进程(DW01)消息

                  WTIME                WSTATUS        INST_OK   INAME            ISTATUS     IMODE     RSTAT    N_OPEN   FLSN            CLSN            

                  2023-07-30 17:54:35  OPEN           OK        DW01             OPEN        STANDBY   VALID    38       179717          179717          

[monitor]         2023-07-30 17:54:36: 收到守护进程(DSC1)消息

                  WTIME                WSTATUS        INST_OK   INAME            ISTATUS     IMODE     RSTAT    N_OPEN   FLSN            CLSN            

                  2023-07-30 17:54:35  STARTUP        OK        DSC0             OPEN        PRIMARY   VALID    38       179718          179719          

show

2023-07-30 17:55:05

#================================================================================#

GROUP            OGUID       MON_CONFIRM     MODE            MPP_FLAG  

GRP1             453331      FALSE           MANUAL          FALSE     

<<DATABASE GLOBAL INFO:>>

DW_IP               MAL_DW_PORT  WTIME                WTYPE     WCTLSTAT  WSTATUS        INAME            INST_OK   N_EP  N_OK  ISTATUS     IMODE     DSC_STATUS     RTYPE     RSTAT    

192.168.1.34        52141        2023-07-30 23:55:05  GLOBAL    VALID     OPEN           DSC0             OK        2     2     OPEN        PRIMARY   DSC_OPEN       REALTIME  VALID    

EP INFO:

INST_IP             INST_PORT  INST_OK   INAME            ISTATUS     IMODE     DSC_SEQNO  DSC_CTL_NODE RTYPE     RSTAT    FSEQ            FLSN            CSEQ            CLSN            DW_STAT_FLAG          

192.168.10.134      5236       OK        DSC0             OPEN        PRIMARY   0          0            REALTIME  VALID    102945          179727          102946          179728          NONE                  

192.168.10.135      5236       OK        DSC1             OPEN        PRIMARY   1          0            REALTIME  VALID    94431           179728          94431           179728          NONE                  

<<DATABASE GLOBAL INFO:>>

DW_IP               MAL_DW_PORT  WTIME                WTYPE     WCTLSTAT  WSTATUS        INAME            INST_OK   N_EP  N_OK  ISTATUS     IMODE     DSC_STATUS     RTYPE     RSTAT    

192.168.1.33        52141        2023-07-30 17:55:05  GLOBAL    VALID     OPEN           DW01             OK        1     1     OPEN        STANDBY   DSC_OPEN       REALTIME  VALID    

EP INFO:

INST_IP             INST_PORT  INST_OK   INAME            ISTATUS     IMODE     DSC_SEQNO  DSC_CTL_NODE RTYPE     RSTAT    FSEQ            FLSN            CSEQ            CLSN            DW_STAT_FLAG          

192.168.10.133      5236       OK        DW01             OPEN        STANDBY   0          0            REALTIME  VALID    97715           179727          97715           179727          NONE                  

DATABASE(DW01) APPLY INFO FROM (DSC0), REDOS_PARALLEL_NUM (1), WAIT_APPLY[FALSE]:

DSC_SEQNO[0], (RSEQ, SSEQ, KSEQ)[102945, 102945, 102946], (RLSN, SLSN, KLSN)[179727, 179727, 179728], N_TSK[0], TSK_MEM_USE[512]

REDO_LSN_ARR: (179727)

DSC_SEQNO[1], (RSEQ, SSEQ, KSEQ)[94430, 94430, 94431], (RLSN, SLSN, KLSN)[179727, 179727, 179728], N_TSK[0], TSK_MEM_USE[512]

REDO_LSN_ARR: (179727)

#================================================================================#

5)验证

主库创建表:

[dmdba@dmdsc01 bin]$ disql sysdba/dameng123

服务器[LOCALHOST:5236]:处于主库打开状态

登录使用时间 : 10.071(ms)

disql V8

SQL> create table test2 as select * from dba_tables;

SQL> select count(*) from test2;

行号     COUNT(*)            

---------- --------------------

1          103

备库验证:

[dmdba@Kylin03 ~]$ disql sysdba/dameng123

服务器[LOCALHOST:5236]:处于备库打开状态

登录使用时间 : 3.697(ms)

disql V8

SQL> select count(*) from test2;

行号     COUNT(*)            

---------- --------------------

1          103

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

相关文章:

DM8 DSC集群实时主备搭建

1、环境准备 主库DSC集群公网ip&#xff1a;192.168.1.34/35 私有ip&#xff1a;192.168.10.134/135 备库ip&#xff1a;192.168.1.33 2、对DSC集群数据库全备 1)主库做全备 [dmdbadmdsc01 bin]$ disql sysdba/dameng123 BACKUP DATABASE TO WEEKLY_FULL_BAK BACKUPSE…...

配置IPv4 over IPv6隧道示例

IPv4 over IPv6隧道&#xff1a; 在IPv4 Internet向IPv6 Internet过渡后期&#xff0c;IPv6网络被大量部署后&#xff0c;而IPv4网络只是散布在世界各地的一些孤岛。利用隧道技术可以在IPv6网络上创建隧道&#xff0c;从而实现IPv4孤岛的互联&#xff0c;IPv4孤岛能通过IPv6公…...

在中国区部署日志通2.0

前提条件 一个域名&#xff1a;使用此域名来访问日志通控制台提供aws iam 的ssl证书 &#xff0c;而且必须跟域名相关联具有四个子网&#xff08;两个公有子网和两个私有子网&#xff09;和NAT网关的VPC 步骤 1.创建ACM证书 1.1 请求公有证书 1.2 配置域名 1.3 新申请的证书记…...

centos下安装jdk

环境:centos7/openjdk-8u40-b25 openJDK页面 java二进制包下载页面 华为jdk镜像 1.下载安装包后上传到服务器上&#xff0c;运行命令解压到/opt/目录下 tar cxvf server-jre-8u271-linux-x64.tar.gz -C /opt/2.配置环境变量 vi /etc/profile source /etc/profile添加下面的…...

【HDFS】LocatedBlocks、LocatedBlock、LocatedStripedBlock、ExtendedBlock类分析

本文主要介绍如下内容: 1、 介绍标题中类的功能及相关字段 2、 与字段初始化相关的一些细节 一、ExtendedBlock类 在Block Pools之间唯一标识一个块。 直白点就是一个Block再加一个块池id。 块池的概念是HDFS联邦集群之后产生的,因为一台DataNode的主机可以作为多个HDFS集群…...

Oracle 19c 报ORA-704 ORA-01555故障处理---惜分飞

异常断电导致数据库无法启动,尝试对数据文件进行recover操作,报ORA-00283 ORA-00742 ORA-00312错误,由于redo写丢失无法正常应用 D:\check_db>sqlplus / as sysdba SQL*Plus: Release 19.0.0.0.0 - Production on 星期日 7月 30 07:49:19 2023 Version 19.3.0.0.0 Copyrig…...

D356周赛复盘:滑动窗口+三元问题思路

文章目录 2798.满足目标工作时长的员工数目完整版 2799.统计完全子数组的数目&#xff08;滑动窗口&#xff09;思路完整版 2800.包含三个字符的最短字符串&#xff08;复用思路与三元问题思想&#xff09;思路复用减少字符串长度的思路为什么一次性操作两个字符串 完整版进一步…...

ETHERNET/IP 转ETHERCAT连接倍福和欧姆龙PLC的配置方法

ETHERNET/IP和ETHERCAT是两种不同的协议&#xff0c;它们在工业生产中都有广泛的应用。然而&#xff0c;由于协议不同&#xff0c;这两种设备之间无法通讯&#xff0c;这给工业生产带来了很大的麻烦。而捷米JM-EIP-ECAT网关应运而生&#xff0c;它能够连接到ETHERNET/IP总线和E…...

Git分布式版本控制工具和GitHub(一)--简介

一.Git概述 1.Git简介 【1】什么是Git? Git就是代码版本管理工具。 【2】为什么要使用Git &#xff08;1&#xff09;版本控制 写代码就是不断写BUG的过程&#xff08;当然我们是不会这么说的&#xff09;&#xff0c;很多时候你写了100行代码之后&#xff0c;突然醒悟&…...

【Terraform学习】Terraform-AWS部署快速入门(快速入门)

Terraform-AWS部署快速入门 实验步骤 连接到 Terraform 环境 SSH 连接到Terraform 环境(名为MyEC2Instance的实例) 在 Amazon Web Services &#xff08;AWS&#xff09; 上预置 EC2 实例 用于描述 Terraform 中基础结构的文件集称为 Terraform 配置。您将编写一个配置来定义…...

力扣75——深度优先搜索

总结leetcode75中深度优先搜索的算法题解题思路。 上一篇&#xff1a;力扣75——链表 以下代码部分为本人所写&#xff0c;部分为官方示例代码。 力扣75——深度优先搜索 1 二叉树的最大深度2 叶子相似的树3 统计二叉树中好节点的数目4 路径总和 III5 二叉树中的最长交错路径6 …...

【C++初阶】C++基础(上)——C++关键字、命名空间、C++输入输出、缺省参数、函数重载

目录 1. C关键字 2. 命名空间 2.1 命名空间的定义 2.2 命名空间的使用 3. C输入&输出 4. 缺省参数 4.1 缺省参数概念 4.2 缺省参数分类 5. 函数重载 5.1 函数重载概念 5.2 C支持函数重载的原理——名字修饰&#xff08;name Mingling&#xff09; 5.3 extern &…...

代码随想录训练营Day55动态规划part15|392.判断子序列|115.不同的子序列

392.判断子序列 编辑距离问题目前能够很简单的做出来&#xff0c;注意两个细节 s为空&#xff0c;直接输出true在break时&#xff0c;j不会再&#xff0c;因此在break前要手动 Carl用了二维数组&#xff0c;dp[i][j] 由dp[i-1][j-1]1dp[i][j-1]递推 115.不同的子序列 dp[i][…...

Linux下安装RabbitMQ教程

官方安装指南&#xff1a;https://www.rabbitmq.com/install-rpm.html 我们将要安装的RabbitMQ的版本是3.8.2 el/7/rabbitmq-server-3.8.2-1.el7.noarch.rpm - rabbitmq/rabbitmq-server packagecloud 不需要单独安装Erlang环境。 2. 环境配置&#xff1a; 前提&#xff…...

如何加强Mysql安全,请给出可行的具体措施

如何加强Mysql安全&#xff0c;请给出可行的具体措施 数据库对于公司而言是一个非常重要的资产。它在数据存储和管理、业务应用支持、决策和分析、数据安全和合规性、业务连续性以及客户关系管理等方面都发挥着关键作用。因此&#xff0c;公司应该高度重视数据库的建设、管理和…...

创造自己的宠物医院预约服务小程序,步骤详解

在现代社会&#xff0c;越来越多的人开始养宠物&#xff0c;而宠物的健康管理也成为了一个重要的话题。为了方便宠物主人随时随地进行宠物医院的管理和服务&#xff0c;开发一个宠物医院管理小程序是很有必要的。今天我们将分享一些制作宠物医院管理小程序的技巧&#xff0c;帮…...

MACOM EDI 需求分析

MACOM 是一家全球性半导体公司&#xff0c;专注于设计和制造高性能射频、微波和光电元件&#xff0c;其产品被广泛应用于通信、航空航天、国防、工业和医疗等领域。随着 MACOM 的不断发展&#xff0c;传统数据传输方式效率较低&#xff0c;无法满足 MACOM 的需求。为了提高企业…...

使用Spring Boot AOP实现日志记录

目录 介绍 1.1 什么是AOP 1.2 AOP体系与概念 AOP简单实现 2.1 新建一个SpringBoot项目&#xff0c;无需选择依赖 2.2 设置好本地Maven配置后&#xff0c;在pom.xml文件里添加添加maven依赖 2.3 创建一个业务类接口 2.4 在实体类实现接口业务 2.5 在单元测试运行结果 …...

图像中不规则物体的长轴与短轴:OpenCV实现指南

1.首先&#xff0c;读取图像并将其转换为灰度图像。 2.进行图像预处理&#xff0c;包括使用高斯模糊和阈值化&#xff0c;以便更好地处理图像。 3.通过使用OpenCV的cv2.findContours()函数&#xff0c;找到图像中的所有轮廓。 4.遍历所有轮廓&#xff0c;如果轮廓点的数量大…...

C/C++开发,opencv与qt结合播放视频

目录 一、qt_ui创建 1.1 ui设置 1.2 ui及代码输出保存 二、创建工程 2.1 工程目录及编译设置 2.2 源码设计 三、编译及测试 3.1 程序编译 3.2 程序运行 首先声明&#xff0c;这是一个OpenCV 3学习文档的案例&#xff0c;但是说明有些过于省略&#xff0c;只有一些简短的代码…...

磁共振图像处理中 fft1c 和 ifft1c 函数的 Python 实现

fft1c 和 ifft1c 是 MRI 图像处理的常用函数。通常使用如下的 Matlab 实现 &#xff08;Michael Lustig&#xff0c;2005&#xff09; function res ifft1c(x,dim)% res fft1c(x) % % orthonormal forward 1D FFT %nsize(x,dim); shftzeros(1,5); shft(dim)ceil(n/2);xcirc…...

阿里云国际站香港地域服务器访问延迟丢包的原因及解决方法

阿里云百科有2台香港地域的轻量应用服务器&#xff0c;国内使用发现Ping值延迟丢包严重&#xff0c;从大陆到香港访问是经过国际链路和运营商国际路由节点&#xff0c;会受到到国际链路拥塞&#xff0c;以及运营商出境路由限制&#xff0c;导致无法正常连接或访问某些网站&…...

GULI PART.1

文章目录 1、尚硅谷-谷粒学院1.1、系统功能模块介绍1.2、系统开发方式 2、Mybatis-Plus2.1、什么是 MyBatis&#xff1f;2.2、什么是Mybatis-Plus&#xff1f;2.3、Mybatis-plus 的特性2.4、支持的数据库 3、Mybatis-Plus入门3.1、创建表和数据3.2、创建SpringBoot工程3.3、安装…...

NetApp FAS2750 和 FAS2820:适用于分布式企业和从远程到核心的 FAS

NetApp FAS2750 和 FAS2820&#xff1a;适用于分布式企业和从远程到核心的 FAS 拥有分布式企业和多个办公位置的客户希望使用这些系统进行虚拟化&#xff0c;以及为大型 FAS 和 AFF 系统提供简单且经济高效的备份和灾难恢复。 为什么要从 NetApp FAS 系列中选择一个型号&…...

剑指YOLOv8改进最新MPDIoU损失函数:超越现有多种G/D/C/EIoU,23年7月首发论文,高效准确的边界框回归的损失

💡本篇内容:剑指YOLOv8改进最新MPDIoU损失函数:超越现有多种G/D/C/EIoU,23年7月首发论文,高效准确的边界框回归的损失 💡🚀🚀🚀本博客 改进源代码改进 适用于 YOLOv8 按步骤操作运行改进后的代码即可 💡:重点:该专栏《剑指YOLOv8原创改进》只更新改进 YOLO…...

SQL-每日一题【1070. 产品销售分析 III】

题目 销售表 Sales&#xff1a; 产品表 Product&#xff1a; 编写一个 SQL 查询&#xff0c;选出每个销售产品 第一年 销售的 产品 id、年份、数量 和 价格。 结果表中的条目可以按 任意顺序 排列。 查询结果格式如下例所示&#xff1a; 示例 1&#xff1a; 解题思路 前置知…...

为何押注AI大模型的微软云,业绩增速反而不如谷歌云?

科技云报道原创。 上周微软、谷歌、Meta等国外科技公司相继发布最新财报。作为与人工智能、云计算和数字广告等领域相关的巨头&#xff0c;它们的一举一动都将对市场产生影响&#xff0c;同时也吸引着众多从业者的关注。 在国外三大云巨头中&#xff0c;谷歌云的市场份额长期…...

CDN加速服务的工作原理

CDN&#xff08;内容分发网络&#xff09;加速服务是一种用于提高网站和应用性能的技术&#xff0c;通过将内容分发到全球多个节点&#xff0c;使用户可以从就近的节点获取所需内容&#xff0c;从而实现更快的加载速度和更稳定的访问体验。下面详细介绍CDN加速服务的工作原理&a…...

在CSDN学Golang云原生(Kubernetes Service)

一&#xff0c;service的定义与基本用法 在 Kubernetes 中&#xff0c;Service 是一种抽象概念&#xff0c;用于定义一组 Pod 并为它们提供访问入口。通过 Service&#xff0c;您可以将多个 Pod 组合成一个逻辑单元&#xff0c;并使用标签选择器来确定哪些 Pod 属于该 Service…...

【数据结构篇C++实现】- 图

友情链接&#xff1a;C/C系列系统学习目录 文章目录 &#x1f680;一、图的基本概念和术语1、有向图和无向图3、基本图和多重图4、完全图5、子图6、连通、连通图和连通分量7、强连通图、强连通分量8、生成树、生成森林9、顶点的度、入度和出度10、边的权和网11、稠密图、稀疏图…...