达梦数据库dsc集群动态添加节点

news2024/9/23 5:22:27

前提条件:在安装好的的dsc集群:达梦数据库dsc集群保姆级部署文档_达梦数据库文档-CSDN博客上动态添加节点

1、环境信息

扩展节点信息:

操作环境:VMware Workstation 16 Pro

dmdsc集群

机器ip

主机名

操作系统

资源配置

实例名

达梦软件安装目录

数据存储目录

dmdsc2

192.168.58.43

dmdsc2

kylin-v10

4核4G,磁盘20g

DMDSC2

/dm8/dminstall

/dm8/data

存储规划:

保持跟之前的dsc集群的一致

ASM磁盘名

大小

用途

DCR

1G

存放DCR配置信息

VOTE

1G

存放表决文件

LOG0

3G

存放在线日志文件

DATA0

9.6G

存放数据文件

扩展节点同样的需要添加裸设备磁盘,按照之前dsc节点方式划分,对划分出的磁盘目录进行赋权,同样需要安装达梦数据库软件:

1、配置dmdsc2虚拟机文件

dmdsc2虚拟机目录下的.vmx查看是否末尾有以下参数,如果没有的手动加入

disk.locking="FALSE" 
scsi0:1.SharedBus="Virtual" 
scsi1:1.SharedBus="Virtual"

# disk.locking="FALSE" 参数是设置虚拟磁盘的锁定行为。FALSE 表示禁用磁盘锁定,禁用磁盘锁定允许多个虚拟机同时访问同一个虚拟磁盘,这在一些特定的配置(例如共享磁盘集群)中是有用的。
# scsi0:1.SharedBus="Virtual" 这个参数设置 SCSI 控制器 0 上的第 1 个设备(通常是虚拟磁盘)的共享总线行为。SharedBus="Virtual" 表示 SCSI 总线处于虚拟共享模式,使多个虚拟机可以共享同一个 SCSI 总线上的设备。
# scsi1:1.SharedBus="Virtual" 这个参数设置 SCSI 控制器 1 上的第 1 个设备(通常是虚拟磁盘)的共享总线行为。SharedBus="Virtual" 表示 SCSI 总线处于虚拟共享模式,使多个虚拟机可以共享同一个 SCSI 总线上的设备。

2、dmdsc2虚拟机添加永久磁盘

dmdsc2虚拟机新增永久磁盘,两台虚拟机操作步骤相同,步骤如下:

1、点击编辑虚拟机设置

2、选择硬盘,点击添加

3、点击硬盘,点击下一步

4、选择磁盘类型,选择SCSI,点击下一步

5、选择使用现有虚拟磁盘,点击下一步

6、选择之前创建好的虚拟磁盘文件:D:\share\sharedisk.vmdk ,点击完成,最后选择保持现有格式

7、点击高级按钮

8、选择新添加的磁盘设置成独立+永久模式,最后点击确定、确定,完成操作

3、启动dmdsc2虚拟机,查看磁盘状态

fdisk -l

4、关闭防火墙并安装达梦数据库软件

关闭防火墙:

systemctl stop firewalld
systemctl disable firewalld
sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config

创建用户组、用户、安装目录:

# 创建用户组和用户
groupadd dinstall
useradd -g dinstall dmdba
echo "Dameng123" |passwd --stdin dmdba

# dminstall是达梦数据库软件安装的位置,dmdata是达梦数据库实例存放位置,dmarch是达梦数据库归档日志存放位置,dmbak是达梦数据库备份文件存放位置
mkdir -p /dm8/{dminstall,dmdata,dmarch,dmbak}
chown -R dmdba:dinstall /dm8
chmod -R 755 /dm8

调整系统资源限制:

# 在/etc/security/limits.conf文件里面追加下面的内容

vim /etc/security/limits.conf

# 内容如下:
dmdba   soft    nofile  65536
dmdba   hard    nofile  65536
dmdba   soft    nproc   65536
dmdba   hard    nproc   65536

下载或者上传达梦的安装包:

在官网选择好自己的cpu平台和操作系统版本,开放版这里没有银河麒麟v10,选择redhat7代替

 
# 下载dm8
wget https://download.dameng.com/eco/adapter/DM8/202401END/dm8_20240408_x86_rh7_64.zip
# 解压dm8
unzip dm8_20240408_x86_rh7_64.zip

挂载iso镜像:

mount -o loop dm8_20240408_x86_rh7_64.iso /mnt

切换到dmdba用户下安装达梦数据库产品:

su - dmdba
/mnt/DMInstall.bin -i

根据实际情况去配置:

根据上面执行结果的要求,新开一个窗口登录root用户执行上述root_installer.sh脚本注册数据库服务:

/dm8/dminstall/script/root/root_installer.sh

到这里,dm8软件就安装完成了

麒麟操作系统需要修改 RemoveIPC 参数,防止关闭asm服务时,进程还在,导致重新起来报错:

vim /etc/systemd/logind.conf
设置 RemoveIPC 参数为 no保存后重启服务
systemctl daemon-reload
systemctl restart systemd-logind
##检查验证
grep RemoveIPC /etc/systemd/logind.conf
# RemoveIPC=no
#结果验证确认
loginctl show-session|grep RemoveIPC
systemctl show systemd-logind|grep RemoveIPC

5、dmdsc2机器修改udev规则文件并授权

# 如果没有70-persistent-ipoib.rules这个文件,新创建一个就可以
vim /etc/udev/rules.d/70-persistent-ipoib.rules

# 内容如下:
ACTION=="add", KERNEL=="sdb1", RUN+="/bin/raw /dev/raw/raw1 %N"
ACTION=="add", KERNEL=="sdb2", RUN+="/bin/raw /dev/raw/raw2 %N" 
ACTION=="add", KERNEL=="sdb3", RUN+="/bin/raw /dev/raw/raw3 %N" 
ACTION=="add", KERNEL=="sdb4", RUN+="/bin/raw /dev/raw/raw4 %N" 
ACTION=="add", KERNEL=="raw[1-4]", OWNER="dmdba", GROUP="dinstall", MODE="660"

执行下面的命令,使 udev 生效:

udevadm trigger --type=devices --action=change

# 重启dmdsc2机器
reboot

# 查看dmdsc2配置的udev是否生效并对磁盘目录赋权
ll /dev/raw/raw*
chown -R dmdba:dinstall /dev/raw
ll /dev/raw/raw*

2、扩展流程

1、dsc集群控制节点(dmdsc0)导出dmdcr_cfg.ini配置文件

选择控制节点(dmdsc0)192.168.58.40,使用DMASMCMD工具export出备份文件dmdcr_cfg_bak.ini,命令:

su - dmdba
cd /dm8/dminstall/bin
./dmasmcmd

# 指定导出命令
export dcrdisk '/dev/raw/raw1' to '/dm8/dmdata/dmdcr_cfg_bak.ini'

2、为新增节点准备日志文件(dmdsc0节点操作)

可选择任意节点操作,这里选择控制节点(dmdsc0)192.168.58.40

1、使用disql登陆数据库,执行添加日志文件命令,至少两个日志文件,路径不必须是ASM文件格式,大小可以参考其他活动节点,命令:

su - dmdba
cd /dm8/dminstall/bin
./disql

# 指定添加日志文件命令
alter database add node logfile '+DMLOG/log/DSC2_log01.log' size 256, '+DMLOG/log/DSC2_log02.log' size 256;

2、使用dmctlcvt工具将dm.ctl转换为文本文件dmctl.txt,查看目录/dm8/dmdata目录下的dmctl.txt文件,新增节点的日志文件信息已经添加进dm.ctl,命令:

su - dmdba
cd /dm8/dminstall/bin
./dmctlcvt TYPE=1 SRC=+DMDATA/data/dsc/dm.ctl DEST=/dm8/dmdata/dmctl.txt DCR_INI=/dm8/dmdata/dmdcr.ini
cat /dm8/dmdata/dmctl.txt |grep log

3、使用dmasmtool工具登陆ASM文件系统,可以看到新增的节点日志文件,命令:

su - dmdba
cd /dm8/dminstall/bin
./dmasmtool DCR_INI=/dm8/dmdata/dmdcr.ini
# 执行命令,查看log目录中是否有新增节点日志文件
ls +DMLOG/log

3、为新增节点准备配置文件路径

控制节点(dmdsc0)192.168.58.40节点/dm8/dmdata/dsc0目录拷贝到dmdsc2新增节点的192.168.58.43的/dm8/dmdata目录下,dsc0修改名字为dsc2。

# 在dmdsc0节点操作
su - dmdba
cd /dm8/dmdata
scp -r dsc0 dmdba@192.168.58.43:/dm8/dmdata/dsc2

修改新增节点(dmdsc2)192.168.58.43的dsc2中的dm.ini文件:

 # dmdsc2节点操作
 su - dmdba
 cd /dm8/dmdata/dsc2
 vim dm.ini
 # 修改配置文件存放路径和实例名

如果之前有打开了归档参数,也要修改 dmarch.ini,就参考其它节点去配置,要根据自己的实际情况去修改,这里是示范操作,如下: 

ARCH_WAIT_APPLY = 0
ARCH_LOCAL_SHARE = 1
ARCH_LOCAL_SHARE_CHECK=0
[ARCHIVE_LOCAL1]
ARCH_TYPE = LOCAL
ARCH_DEST = +DMARCH/ARCH/DMDSC2
ARCH_FILE_SIZE = 256
ARCH_SPACE_LIMIT = 1024
[ARCHIVE_LOCAL2]
ARCH_TYPE = LOCAL
ARCH_DEST = /dm8/dmarch
ARCH_FILE_SIZE = 256
ARCH_SPACE_LIMIT = 1024
[ARCHIVE_REMOTE1]
ARCH_TYPE = REMOTE
ARCH_DEST = DMDSC0
ARCH_INCOMING_PATH = +DMARCH/ARCH/DMDSC0
ARCH_FILE_SIZE = 256
ARCH_SPACE_LIMIT = 1024
[ARCHIVE_REMOTE2]
ARCH_TYPE = REMOTE
ARCH_DEST = DMDSC1
ARCH_INCOMING_PATH = +DMARCH/ARCH/DMDSC1
ARCH_FILE_SIZE = 256
ARCH_SPACE_LIMIT = 1024

4、为新增节点增加dmdcr.ini配置文件(dmdsc2节点)

在新增节点的/dm8/dmdata目录下新建dmdcr.ini配置文件,注意设置dmdcr_seqo为2(因为之前的节点使用了0/1),修改dm.ini路径,文件内容为:

su - dmdba
vim /dm8/dmdata/dmdcr.ini
# 内容如下:
DMDCR_PATH     = /dev/raw/raw1
DMDCR_MAL_PATH =/dm8/dmdata/dmasvrmal.ini
DMDCR_SEQNO   = 2
DMDCR_AUTO_OPEN_CHECK = 60

5、修改dsc集群环境中所有节点的MAL配置文件

所有节点的MAL配置文件都要保持一致,修改后的dmasvrmal.ini配置文件如下:

su - dmdba
vim /dm8/dmdata/dmasvrmal.ini
# 内容如下:
[MAL_INST0]
 MAL_INST_NAME = DMASM0
 MAL_HOST = 192.168.58.40
 MAL_PORT = 7238
[MAL_INST1]
 MAL_INST_NAME = DMASM1
 MAL_HOST = 192.168.58.41
 MAL_PORT = 7238
[MAL_INST2]
MAL_INST_NAME = DMASM2
MAL_HOST = 192.168.58.43
MAL_PORT = 7238

所有节点的MAL配置文件都要保持一致,修改后的dmmal.ini配置文件如下:

# 所有节点都需要修改dmmal.ini配置文件,dmmal.ini配置文件分别在dsc0、dsc1、dsc2目录

# 内容如下:
[mal_inst0]
    mal_inst_name  = DMDSC0
    mal_host       = 192.168.58.40
    mal_port       = 9236

[mal_inst1]
    mal_inst_name  = DMDSC1
    mal_host       = 192.168.58.41
    mal_port       = 9236

[mal_inst2]
    mal_inst_name  = DMDSC2
    mal_host       = 192.168.58.43
    mal_port       = 9236

6、控制节点(dmdsc0)修改dmdcr_cfg_bak.ini配置文件,增加节点信息

CSS/ASMSVR/DB 都要配置,所有组信息修改:

su - dmdba
vim /dm8/dmdata/dmdcr_cfg_bak.ini

DCR_GRP_N_EP = 3
DCR_GRP_EP_ARR = {0,1,2}

每个组增加一个节点信息,注意 DCR_EP_SHM_KEY、端口号不能冲突;各组信息要放在各自的后面,即[GRP_CSS]中 DMCSS2 放在 DMCSS1 后面,[GRP_ASM]中DMASM2放在 DMASM1后面,DMDSC2放在DMDSC1 后面,添加的内容为:

[GRP_CSS]
DCR_EP_NAME        = DMCSS2
DCR_EP_HOST        = 192.168.58.43
DCR_EP_PORT        = 9341
 
[GRP_ASM]
DCR_EP_NAME        = DMASM2
DCR_EP_SHM_KEY     = 93362
DCR_EP_SHM_SIZE    = 20
DCR_EP_HOST        = 192.168.58.43
DCR_EP_PORT        = 9349
DCR_EP_ASM_LOAD_PATH  = /dev/raw
 
[GRP_DSC]
DCR_EP_NAME        = DMDSC2
DCR_EP_SEQNO       = 2
DCR_EP_PORT        = 5236
DCR_CHECK_PORT     = 9741

7、把dmdcr_cfg_bak.ini配置文件写回磁盘中

控制节点(dmdsc0)192.168.58.40上使用DMASMCMD工具将新增节点信息写回磁盘,新增节点作为error节点,命令:

# 在dmdsc0节点上操作
su - dmdba
cd /dm8/dminstall/bin
./dmasmcmd
# 执行命令,把配置文件写回磁盘中
extend dcrdisk '/dev/raw/raw1' from '/dm8/dmdata/dmdcr_cfg_bak.ini'

8、在 dmcssm (192.168.58.42)控制台执行扩展节点命令

su - dmdba
cd /dm8/dminstall/bin
./dmcssm ini_path=/dm8/dmdata/dmcssm.ini
# 执行扩展节点命令
extend node

程序会通知所有实例(CSS/ASMSVR/dmserver)更新信息,在 CSS 控制台执行 SHOW命令,能看到新增节点信息, ASMSVR/dmserver 是 error 节点, 程 序 会 通 知ASMSVR/dmserver 更新 MAL 信息。

9、启动新的 DMCSS、DMASM、DMDSC服务程序(dmdsc2节点)

在新增节点(dmdsc2)192.168.58.43节点启动 dmcss、dmasmsvr、dmserver程序

手动启动新的 dmcss,dcr_ini 指向新的 dmdcr.ini 文件:

su - dmdba
cd /dm8/dminstall/bin
./dmcss DCR_INI=/dm8/dmdata/dmdcr.ini

新开一个窗口手动启动新的 dmasmsvr,dcr_ini 指向新的 dmdcr.ini 文件,asmsvr 启动故障重加入流程:

su - dmdba
cd /dm8/dminstall/bin
./dmasmsvr DCR_INI=/dm8/dmdata/dmdcr.ini

如果 DMCSS 配置有自动拉起 dmasmsvr 的功能,可以等待 DMCSS 自动拉起dmasmsvr程序,不需要手动启动。这里没有配置自动拉起,需要使用手动启动,新开一个窗口,进行下面的操作步骤:

su - dmdba
cd /dm8/dminstall/bin
./dmserver /dm8/dmdata/dsc2/dm.ini dcr_ini=/dm8/dmdata/dmdcr.ini

10、使用dmcssm监控器(192.168.58.42)查看dsc集群状态

退出之前打开dmcssm监控器,修改监控器配置文件,新增节点的配置:

vim /dm8/dmdata/dmcssm.ini
# 新增内容:
CSSM_CSS_IP = 192.168.58.43:9341

进入DMCSSM监控器,show查看状态,新增节点的CSSASMDSC服务全部扩展成功,扩展结束。

cd /dm8/dminstall/bin
./dmcssm ini_path=/dm8/dmdata/dmcssm.ini
# 执行命令查看状态
show

注意:一定要关闭防火墙,不然会造成新增ASM不被识别而启动失败

11、注册服务

以上启动方式为前台启动,仅用于验证集群配置过程。配置成功后需要注册为系统服务,方便启动和关闭集群,以及实现开机自动启动。

先关闭之前由前台启动的dmcss、dmasm、dmdsc服务,关闭顺序:DMDSC-->DMASM-->DMCSS

# 前台启动输出exit,回车就可以关闭
exit

注册css服务:

su - dmdba
cd /dm8/dminstall/bin
cp service_template/DmCSSService ./DmCSSServiceDMCSS2

# 修改DmCSSServiceDMCSS2文件
vim DmCSSServiceDMCSS2

#修改内容:
DCR_INI_PATH=%DCR_INI_PATH% 改为 DCR_INI_PATH=/dm8/dmdata/dmdcr.ini

注册asm服务:

su - dmdba
cd /dm8/dminstall/bin
cp service_template/DmASMSvrService ./DmASMSvrServiceDMASM2

# 修改DmASMSvrServiceDMASM2文件
vim DmASMSvrServiceDMASM2

# 修改内容如下:
DCR_INI_PATH=%DCR_INI_PATH% 改为 DCR_INI_PATH=/dm8/dmdata/dmdcr.ini

注册dm实例服务:

su - dmdba
cd /dm8/dminstall/bin
cp service_template/DmService ./DmServiceDMDSC2

# 修改DmServiceDMDSC0文件
vim DmServiceDMDSC2

# 修改内容如下:
INI_PATH=%INI_PATH% 改为 INI_PATH=/dm8/dmdata/dsc2/dm.ini
DCR_INI_PATH=%DCR_INI_PATH% 改为 DCR_INI_PATH=/dm8/dmdata/dmdcr.ini

使用服务方式后台启动

su - dmdba
cd /dm8/dminstall/bin
# 启动dmcss、dmasm、dmdsc程序服务
./DmCSSServiceDMCSS2 start
./DmASMSvrServiceDMASM2 start
./DmServiceDMDSC2 start

大家想学习达梦数据库或者解决报错问题,可以去达梦数据库社区地址(https://eco.dameng.com)

制作不易,各位看官如果觉得还可以,对您有帮助,请给小弟一键三连鼓励一下,后续还会继续保持 

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

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

相关文章

mac中dyld[5999]: Library not loaded: libssl.3.dylib解决方法

需要重新安装下openssl3.0版本 brew reinstall openssl3.0 安装后执行还是报错,需要找到openssl的安装路径 /opt/homebrew/Cellar/openssl3.0/3.0.14/lib/ 将libssl.3.dylib和libcrypto.3.dylib拷贝到自己的二进制文件同目录下,再执行二进制文件就可…

YUM软件包管理工具:更改YUM源、配置本地YUM仓库

文章目录 YUM软件包管理工具更改YUM源配置过程网络出错,配置网卡 本地YUM仓库配置挂载配置本地yum源 YUM软件包管理工具 YUM(Yellowdog Updater, Modified)是一个在Linux系统中广泛使用的开源软件包管理工具,尤其常见于Fedora、R…

图论① dfs | Java | LeetCode 797,Kama 98 邻接表实现(未完成)

797 所有可能路径 https://leetcode.cn/problems/all-paths-from-source-to-target/description/ 输入&#xff1a;graph [[1,2],[3],[3],[]] 题目分析&#xff0c;这里 class Solution {//这个不是二维数组&#xff0c;而是listList<List<Integer>> res new Ar…

【Python系列】Python 字典合并

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

【教学类-72-01】20240803建筑对称图纸01

背景需求 通义万相下载“对称建筑&#xff0c;简笔画” 我想把“对称建筑”做成对称的样式&#xff0c;类似《对称脸》 【教学类-36-12-01】20240302儿童对称正脸图&#xff08;一&#xff09;4图右脸4图左脸&#xff08;中班《幼儿园里朋友多》&#xff09;&#xff08;midj…

高等数学精解【4】

文章目录 平面方程直角坐标及基本运算 参考文献 平面方程 直角坐标及基本运算 向量的四则运算 下面由文心一言自动生成 向量的四则运算主要包括加法、减法、数乘&#xff08;标量乘法&#xff09;和数量积&#xff08;点积或内积&#xff09;&#xff0c;但通常不直接称为“除…

GuLi商城-商品服务-API-新增商品-获取分类关联的品牌

这个接口在上一篇文章中已经写过了&#xff0c;功能已经实现了&#xff0c;这里略

Vue3 核心模块源码解析

Vue3 核心模块源码解析 1、Vue3 模块源码解析1.1 compiler-core1.1.1 目录结构1.1.2 compile逻辑 1.2 reactivity1.2.1 目录结构1.2.2 reactivity逻辑 1.3 runtime-core1.3.1 目录结构1.3.2 runtime核心逻辑 1.4 runtime-dom1.4.1 主要功能 1.5 runtime-test1.5.1 目录结构1.5.…

深入理解接口测试:实用指南与最佳实践(一) 环境安装

​ ​ 您好&#xff0c;我是程序员小羊&#xff01; 前言 这一阶段是接口测试的学习&#xff0c;我们接下来的讲解都是使用Postman这款工具&#xff0c;当然呢Postman是现在一款非常流行的接口调试工具&#xff0c;它使用简单&#xff0c;而且功能也很强大。不仅测试人员会使用…

【linux】【操作系统】内核之system_call.s源码阅读

system_call.s汇编代码是 Linux 内核的一部分&#xff0c;负责处理系统调用、定时器中断、硬盘中断、软盘中断和并行端口中断。下面是各个部分的详细说明&#xff1a; 系统调用处理 (_system_call) 功能 处理系统调用请求。根据传入的系统调用编号 (%eax) 调用相应的系统调用…

Linux修炼之路之进程地址空间

目录 一&#xff1a;程序地址空间 二&#xff1a;相关细节知识 接下来的日子会顺顺利利&#xff0c;万事胜意&#xff0c;生活明朗-----------林辞忧 一&#xff1a;程序地址空间 1.在学习c/c时&#xff0c;经常会听到堆区&#xff0c;栈区&#xff0c;代码段&#xff0c;常量…

IoTDB 入门教程 企业篇②——IoTDB-Workbench可视化控制台

文章目录 一、前文二、首页三、实例管理四、系统管理五、查询六、测点管理 一、前文 IoTDB入门教程——导读 IoTDB-Workbench同样是通过联系天谋科技商务&#xff0c;请求免费试用的。 请求试用激活启动的操作步骤&#xff0c;详情请见&#xff1a;IoTDB 入门教程 企业篇①——…

SQL注入实例(sqli-labs/less-4)

0、初始页面 1、确定闭合符号 前两条判断是否为数值型注入&#xff0c;后两条判断字符型注入的闭合符号 ?id1 and 11 ?id1 and 12 ?id1" ?id1") 2、确定表的列数 ?id1") order by 3 -- 3、确定回显位置 ?id-1") union select 1,2,3 -- 4、爆库…

RabbitMQ 应用

目录 1. 7种工作模式 1.1 Simple&#xff08;简单模式&#xff09; 1.2 Work Queue&#xff08;工作队列&#xff09; 1.3 Publish/Subscribe&#xff08;发布/订阅&#xff09; 1.4 Routing&#xff08;路由模式&#xff09; 1.5 Topics&#xff08;通配符模式&#xff09; 1.…

Yolov8在RK3588上进行自定义目标检测(四)

参考 Yolov8在RK3588上进行自定义目标检测(一) Yolov8在RK3588上进行自定义目标检测(二) Yolov8在RK3588上进行自定义目标检测(三) YOLOV8火灾检测模型的边缘端推理 验证rknn模型 1.将转换好的rknn模型上传到板子上&#xff0c;再在板子上安装rknn-toolkit-lite2,将上面的…

Nexus3 Repository代理pypi设置与应用

目录 1. 创建Blob库并指定路径 2. 创建pypi阿里镜像源 3. 创建pypi腾讯镜像源 4. 创建一个pypi组管理 5. 配置pip 6. 下载测试 扩展&#xff1a;配置好后无法下载解决思路。 Nexus 存储库中的 Blob 存储是指一种用于存储大量非结构化数据的技术。在 Nexus 存储库的上下文…

基于YOLOv8的垃圾检测系统

基于YOLOv8的垃圾检测系统 (价格85) 包含 [硬纸板&#xff0c;玻璃&#xff0c;金属&#xff0c;有机废物&#xff0c;纸&#xff0c;塑料] 6个类 通过PYQT构建UI界面&#xff0c;包含图片检测&#xff0c;视频检测&#xff0c;摄像头实时检测。 &#xff08;该系统可以…

马来西亚原生静态IP注册的账号稳定吗?

马来西亚作为东南亚重要的经济体之一&#xff0c;其网络基础设施和互联网服务水平在近年来有了显著提升。静态IP作为一种固定的互联网协议地址&#xff0c;对于某些特定的网络应用和需求非常重要。本文将围绕马来西亚原生静态IP注册的账号稳定性进行探讨&#xff0c;分析其在不…

JVM—虚拟机类加载器

参考资料&#xff1a;深入理解Java虚拟机&#xff1a;JVM高级特性与最佳实践&#xff08;第3版&#xff09;周志明 1. 类加载器 JVM设计团队有意把类加载阶段中的 “通过一个类的全限定名来获取该类的二进制字节流” 这个动作放到JVM外部实现&#xff0c;这个动作的代码称为类…

classical Chinese

classical Chinese 中型娃娃暑假作业背诵 文言文《伯牙鼓琴》 1&#xff09;拿到文言文&#xff0c;先看一遍 2&#xff09;用白话文&#xff08;现代文&#xff09;翻译一次 3&#xff09;用白话文对照回去文言文&#xff08;白话文中那些需要替换回文言文呢&#xff09; 虽…