DM数据库数据守护集群搭建_数据守护集群安装部署-程序员宅基地

技术标签: 运维  linux  服务器  数据库  

目录

1、环境说明

2、数据准备

(1)正常关闭数据库:前台+后台

(2)进行脱机备份

(3)拷贝备份文件到备机

(4)备机进行脱机数据库还原与恢复

3、配置主库DMDB1

3.1 配置dm.ini

 3.2 配置dmmal.ini

3.3 配置dmarch.ini

 3.4 配置dmwatcher.ini

3.5 mount配置模式启动主库

4、配置备库DMDB2

4.1 配置dm.ini

4.2 配置dmmal.ini

4.3 配置dmmal.ini

4.4 配置dmwatcher.ini

4.5 mount配置模式启动备库

5、配置监视器

6、启动守护进程

7、启动监视器


数据守护原理介绍:
DM数据守护(DM Data Watch)的实现原理:
将主库(生产库)产生的Redo日志传输到备库,备库接收并重新应用Redo日志,从而实现备库与主库的数据同步。DM数据守护的核心思想是监控数据库状态,获取主、备库数据同步情况,Redo日志传输与重演过程中出现的各种异常情况提供一系列的解决方案。
DM数据守护可以配置成实时主备、MPP主备、读写分离、DSC守护。
DM数据守护系统主要由主库、备库、Redo日志、Redo日志传输、Redo日志重演、守
护进程(dmwatcher)、监视器(dmmonitor)组成。
数据库模式介绍
Normal模式
提供正常的数据库服务,操作没有限制。正常生成本地归档,但不发送实时归档 (Realtime)、即时归档(Timely)和异步归档(Async)。
Primary模式
提供正常的数据库服务,操作有极少限制。正常生成本地归档,支持实时归档(Realtime)、即时归档(Timely)和异步归档(Async)。Primary模式下,对临时表空
间以外的所有的数据库对象的修改操作都强制生成Redo日志。
Standby模式
可以执行数据库备份、查询等只读数据库操作。正常生成本地归档,正常发送异步归
档Redo日志;但实时归档(Realtime)、即时归档(Timely)均强制失效。该模式下时
间触发器、事件触发器等都失效。

1、环境说明

机器名 IP地址 初始状态 操作系统
DM_P

192.168.174.130(外网)

192.168.158.130(内网)

主库

DMDB1

CentOS-7-x86_64-DVD-2009
DM_S1

192.168.174.131(外网)

192.168.158.131(内网)

备库

DMDB2

CentOS-7-x86_64-DVD-2009
DM_M

192.168.174.134(外网)

监视器 CentOS-7-x86_64-DVD-2009

端口规划

实例名 PORT_NUM MAL_INST_DW_PORT MAL_HOST MAL_PORT MAL_DW_PORT
DMDB1 32141 32141 192.168.158.130 61141 52141
DMDB2 32142 32142 192.168.158.131 61142 52142

2、数据准备


  配置数据守护之前,必须先通过备份还原方式同步各数据库的数据,确保各数据的数据保持完全一致。主库可以是新初始化的数据库,也可以是正在生产、使用中的数据库。备库在备份还原前,需要先准备初始化一个新库。
不能使用分别初始化库或者直接拷贝数据文件的方法来直接配置数据库守护,原因如下:
1.每个库都有一个永久魔数(permanent_magic),一经生成,永远不会改变,主库传送日志时会判断这个值是否一样,确保是来自同一个数据守护环境中的库,否则传送不了日志。
2.由于dminit初始化数据库时,会生成随机密钥用于加密,每次生成的密钥都不相同,备库无法解析采用主库密钥加密的数据。
3.每个库都有一个数据库魔数(DB_MAGIC),每经过一次还原、恢复操作,DB_MAGIC就会产生变化,需要通过这种方式来区分同一个数据守护环境中各个不同的库。
  如果是初始搭建环境,可以通过对主库脱机备份、对备库脱机还原的方式来准备数据,如果主库已经处于运行状态,则可以对主库进行联机备份、对备库脱机还原的方式来准备数据。

克隆的已经安装达梦数据库,初始化了实例的虚拟机的话,在操作之前是需要关闭数据库的。总之脱机备份之前要保证数据库是关闭的。

数据准备的具体步骤包括:

(1)正常关闭数据库:前台+后台

后台关闭:

systemctl stop DmServiceDMSERVER.service

数据库在初始化实例之后必须前台启动刷新一下!不然会出现守护进程无法自动将数据库转变为open状态,数据库将一直处于mount状态。

前台打开:切换到达梦数据库安装的bin目录下执行下面语句,我的达梦数据库bin目录路径为:/dm8/bin

./dmserver /dm8/data/DAMENG/dm.ini

前台关闭:Ctrl+C

(2)进行脱机备份

到bin目录下使用dmrman工具进行脱机备份。

./dmrman.sh    


RMAN> backup database '/dm8/data/DAMENG/dm.ini' full backupset '/dm8/fullbak';

(3)拷贝备份文件到备机

[dmdba@localhost ~]$ scp -r 192.168.174.130:/dm8/fullbak /dm8/

(4)备机进行脱机数据库还原与恢复

执行/dm8/bin目录下的dmrman工具

restore database '/dm8/data/DAMENG/dm.ini' from backupset '/dm8/fullbak';
recover database '/dm8/data/DAMENG/dm.ini' from backupset '/dm8/fullbak';
recover database '/dm8/data/DAMENG/dm.ini' update db_magic;

3、配置主库DMDB1

        切忌:如果你已经初始化过实例,或者采用克隆的方式克隆已经安装达梦数据库,且实例化的虚拟机,请不要再初始化了!!会出现overwrite一些文件的情况。

DW_P机器上初始化主库至目录/dm8/data:

./dminit path=/dm8/data

DW_S1机器上初始化备库至目录/dm8/data:

./dminit path=/dm8/data

3.1 配置dm.ini

vi /dm8/data/DAMENG/dm.ini

一般只修改前面四个参数值。

MAL_INI  =	1	#打开 MAL 系统
ARCH_INI  =	1	#打开 归档
ALTER_MODE_SATUS=	0	#不允许手工方式修改实例模式/状态/OGUID
ENABLE_OFFLINE_TS=	2	#不允许备库 OFFLINE 表空间
RLOG_SEND_APPLY_MON =  	64	#统计最近 64 次的日志发送信息
INSTANCE_NAME = 	DMDB1	#实例名
PORT_NUM = 	32141	#数据库实例监听端口
DW_INACTIVE_INTERVAL =	60 	#接收守护进程消息超时时间

 3.2 配置dmmal.ini


主备库的dmmal.ini配置必须完全一致,MAL_HOST使用内部网络IP,MAL_PORT与dm.ini中PORT_NUM使用不同的端口值,MAL_DW_PORT是各实例对应的守护进程之间,以及守护进程和监视器之间的通信端口,配置如下:

vi /dm8/data/DAMENG/dmmal.ini
MAL_CHECK_INTERVAL = 5 #MAL 链路检测时间间隔
MAL_CONN_FAIL_INTERVAL = 5 #判定 MAL 链路断开的时间
[MAL_INST1]
MAL_INST_NAME = DMDB1 #实例名,和 dm.ini 中的 INSTANCE_NAME 一致
MAL_HOST = 192.168.158.130 #MAL 系统监听 TCP 连接的 IP 地址
MAL_PORT = 61141 #MAL 系统监听 TCP 连接的端口
MAL_INST_HOST = 192.168.174.130 #实例的对外服务 IP 地址
MAL_INST_PORT = 5236 #实例的对外服务端口,和 dm.ini 中的 PORT_NUM 一致
MAL_DW_PORT = 52141 #实例本地的守护进程监听 TCP 连接的端口
MAL_INST_DW_PORT = 33141 #实例监听守护进程 TCP 连接的端口
[MAL_INST2]
MAL_INST_NAME = DMDB2 #实例名,和 dm.ini 中的 INSTANCE_NAME 一致
MAL_HOST = 192.168.158.131
MAL_PORT = 61142
MAL_INST_HOST = 192.168.174.131 #实例的对外服务 IP 地址
MAL_INST_PORT = 5236
MAL_DW_PORT = 52142 #实例本地的守护进程监听 TCP 连接的端口
MAL_INST_DW_PORT = 33142 #实例监听守护进程 TCP 连接的端口

3.3 配置dmarch.ini


当前实例DMDB1是主库,需要向DMDB2(实时守护类型的备库)同步数据,因此实时归档的ARCH_DEST配置为DMDB2。

vi /dm8/data/DAMENG/dmarch.ini
[ARCHIVE_REALTIME]
ARCH_TYPE = REALTIME #实时归档类型
ARCH_DEST = DMDB2 #实时归档目标实例名
[ARCHIVE_LOCAL1]
ARCH_TYPE = LOCAL #本地归档类型
ARCH_DEST = /dm8/data/DAMENG/arch #本地归档文件存放路径
ARCH_FILE_SIZE = 128 #单位 Mb,本地单个归档文件最大值
ARCH_SPACE_LIMIT = 0 #单位 Mb, 0 表示无限制,范围 1024~4294967294M

 3.4 配置dmwatcher.ini

守护进程是管理数据守护系统的核心部件,是数据库实例和监视器之间信息流转的桥梁。
1、数据库实例向本地守护进程发送信息,接收本地守护进程的消息和命令;
2、监视器(dmmonitor)接收守护进程的消息,并向守护进程发送命令;
3、守护进程解析并执行监视器发起的各种命令(Switchover/Takeover/Open database等),并在必要时通知数据库实例执行相应的操作;
4、数据库实例与监视器之间没有直接的消息交互。
 

修改 dmwatcher.ini 配置守护进程,配置为全局守护类型,使用自动切换模式。

vi /dm8/data/DAMENG/dmwatcher.ini
[GRP1]
DW_TYPE = GLOBAL #全局守护类型
DW_MODE = AUTO #自动切换模式
DW_ERROR_TIME = 10 #远程守护进程故障认定时间
INST_RECOVER_TIME = 60 #主库守护进程启动恢复的间隔时间
INST_ERROR_TIME = 10 #本地实例故障认定时间
INST_OGUID = 453331 #守护系统唯一 OGUID 值
INST_INI = /dm8/data/DAMENG/dm.ini #dm.ini 配置文件路径
INST_AUTO_RESTART = 1 #打开实例的自动启动功能
INST_STARTUP_CMD = /dm8/bin/dmserver #命令行方式启动
RLOG_SEND_THRESHOLD = 0 #指定主库发送日志到备库的时间阀值,默认关闭
RLOG_APPLY_THRESHOLD = 0 #指定备库重演日志的时间阀值,默认关闭

3.5 mount配置模式启动主库

./dmserver /dm8/data/DAMENG/dm.ini mount

启动命令行工具disql,登录主库设置OGUID值。

SP_SET_PARA_VALUE(1, ‘ALTER_MODE_STATUS’, 1);
sp_set_oguid(453331);
SP_SET_PARA_VALUE(1, ‘ALTER_MODE_STATUS’, 0);

 修改数据库模式为主库.

alter database primary;

4、配置备库DMDB2

4.1 配置dm.ini

vi /dm8/data/DAMENG/dm.ini
MAL_INI  =	1	#打开 MAL 系统
ARCH_INI  =	1	#打开 归档
ALTER_MODE_SATUS=	0	#不允许手工方式修改实例模式/状态/OGUID
ENABLE_OFFLINE_TS=	2	#不允许备库 OFFLINE 表空间
RLOG_SEND_APPLY_MON =  	64	#统计最近 64 次的日志发送信息
INSTANCE_NAME = 	DMDB2	#实例名
PORT_NUM = 	32141	#数据库实例监听端口
DW_INACTIVE_INTERVAL =	60 	#接收守护进程消息超时时间

4.2 配置dmmal.ini


主备库的dmmal.ini配置必须完全一致,MAL_HOST使用内部网络IP,MAL_PORT与dm.ini中PORT_NUM使用不同的端口值,MAL_DW_PORT是各实例对应的守护进程之间,以及守护进程和监视器之间的通信端口,配置如下:

vi /dm8/data/DAMENG/dmmal.ini
MAL_CHECK_INTERVAL = 5 #MAL 链路检测时间间隔
MAL_CONN_FAIL_INTERVAL = 5 #判定 MAL 链路断开的时间
[MAL_INST1]
MAL_INST_NAME = DMDB1 #实例名,和 dm.ini 中的 INSTANCE_NAME 一致
MAL_HOST = 192.168.158.130 #MAL 系统监听 TCP 连接的 IP 地址
MAL_PORT = 61141 #MAL 系统监听 TCP 连接的端口
MAL_INST_HOST = 192.168.174.130 #实例的对外服务 IP 地址
MAL_INST_PORT = 5236 #实例的对外服务端口,和 dm.ini 中的 PORT_NUM 一致
MAL_DW_PORT = 52141 #实例本地的守护进程监听 TCP 连接的端口
MAL_INST_DW_PORT = 33141 #实例监听守护进程 TCP 连接的端口
[MAL_INST2]
MAL_INST_NAME = DMDB2 #实例名,和 dm.ini 中的 INSTANCE_NAME 一致
MAL_HOST = 192.168.158.131
MAL_PORT = 61142
MAL_INST_HOST = 192.168.174.131 #实例的对外服务 IP 地址
MAL_INST_PORT = 5236
MAL_DW_PORT = 52142 #实例本地的守护进程监听 TCP 连接的端口
MAL_INST_DW_PORT = 33142 #实例监听守护进程 TCP 连接的端口

4.3 配置dmmal.ini

当前实例DMDB1是主库,需要向DMDB2(实时守护类型的备库)同步数据,因此实时归档的ARCH_DEST配置为DMDB2。

vi /dm8/data/DAMENG/dmarch.ini
[ARCHIVE_REALTIME]
ARCH_TYPE = REALTIME #实时归档类型
ARCH_DEST = DMDB1 #实时归档目标实例名
[ARCHIVE_LOCAL1]
ARCH_TYPE = LOCAL #本地归档类型
ARCH_DEST = /dm8/data/DAMENG/arch #本地归档文件存放路径
ARCH_FILE_SIZE = 128 #单位 Mb,本地单个归档文件最大值
ARCH_SPACE_LIMIT = 0 #单位 Mb, 0 表示无限制,范围 1024~4294967294M

4.4 配置dmwatcher.ini


修改dmwatcher.ini配置守护进程,配置为实时守护类型,使用自动切换模式。

vi /dm8/data/DAMENG/dmwatcher.ini

修改dmwatcher.ini配置守护进程,配置为实时守护类型,使用自动切换模式。

[GRP1]
DW_TYPE = GLOBAL #全局守护类型
DW_MODE = AUTO #自动切换模式
DW_ERROR_TIME = 10 #远程守护进程故障认定时间
INST_RECOVER_TIME = 60 #主库守护进程启动恢复的间隔时间
INST_ERROR_TIME = 10 #本地实例故障认定时间
INST_OGUID = 453331 #守护系统唯一 OGUID 值
INST_INI = /dm8/data/DAMENG/dm.ini #dm.ini 配置文件路径
INST_AUTO_RESTART = 1 #打开实例的自动启动功能
INST_STARTUP_CMD = /dm8/bin/dmserver #命令行方式启动
RLOG_SEND_THRESHOLD = 0 #指定主库发送日志到备库的时间阀值,默认关闭
RLOG_APPLY_THRESHOLD = 0 #指定备库重演日志的时间阀值,默认关闭

4.5 mount配置模式启动备库

./dmserver /dm8/data/DAMENG/dm.ini mount

 启动命令行工具disql,登录设置OGUID值为453331

SP_SET_PARA_VALUE(1, ‘ALTER_MODE_STATUS’, 1);
sp_set_oguid(453331);
SP_SET_PARA_VALUE(1, ‘ALTER_MODE_STATUS’, 0);

 修改数据库为 Standby 模式

alter database standby;

5、配置监视器

监视器(dmmonitor)是基于监视器接口实现的一个命令行工具,是DM数据守护系统的
重要组成部分。
通过监视器,可以监控数据守护系统的运行情况,获取主备库状态、守护进程状态以及
主备库数据同步情况等信息。同时,监视器(dmmonitor)还提供了一系列命令来管理数
据守护系统。
监视器的基本作用如下:
  1. 监控数据守护系统
  2. 管理数据守护系统
  3. 确认状态信息
  4. 发起故障自动接管命令
监视器支持两种运行模式:监控模式、确认模式。
该由配置文件(
dmmonitor.ini)的 MON_DW_CONFIRM参数来确定。
取值0:监控模式
取值1:确认模式
  • 确认模式和监控模式的区别在于,确认监视器还具有状态确认和自动接管两个功能。
  • 故障自动切换模式的数据守护系统,必须部署一个确认监视器,否则在出现数据库故障时,会导致数据库服务中断。
  • 在使用主备多实例监视器的情况下,确认监视器可以配置多个。
  • 除使用主备多实例监视器的情况外,一个数据守护系统只能配置一个确认监视器。

由于主库和实时备库的守护进程配置为自动切换模式,因此这里选择配置确认监视器。和普通监视器相比,确认监视器除了相同的命令支持外,在主库发生故障时,能够自动通知实时备库接管为新的主库,具有自动故障处理的功能。

vi /dm8/data/dmmonitor.ini

修改 dmmonitor.ini 配置确认监视器, 其中 MON_DW_IP 中的 IP 和 PORT 和dmmal.ini 中的 MAL_HOST 和 MAL_DW_PORT 配置项保持一致。

MON_DW_Confirm 			= 1  	#确认监视器模式
MON_LOG_PATH 			= /dm8/data/log		#监视器日志文件存放路径
MON_LOG_INTERVAL		= 60	#每隔60s定时记录系统信息到日志文件
MON_LOG_FILE_SIZE 		= 32	#每个日志文件最大32M
MON_LOG_SPACE_LIMIT 	= 0		#不限定日志文件总占用空间
[GRP1]
	MON_INST_OGUID 			= 453331 #组GRP1的唯一OGUID值
#以下配置为监视器到组GRP1的守护进程的连接信息,以“IP:PORT”的形式配置
#IP对应dmmal.ini中的MAL_HOST,PORT对应dmmal.ini中的MAL_DW_PORT
	MON_DW_IP 				= 192.168.158.130:52141
	MON_DW_IP 				= 192.168.158.131:52142

6、启动守护进程

启动各个主备库上的守护进程:

./dmwatcher /dm8/data/DAMENG/dmwatcher.ini

守护进程启动后,进入Startup状态,此时实例都处于Mount状态。守护进程开始广播自身和其监控实例的状态信息,结合自身信息和远程守护进程的广播信息,守护进程将本地实例Open,并切换为Open状态,如果在监视器中没有看见主备库处于Open状态,那就说明数据库状态存在问题。

7、启动监视器

./dmmonitor /dm8/data/dmmonitor.ini

监视器提供一系列命令,支持当前守护系统状态查看以及故障处理,可输入help命令,查看各种命令说明使用,结合实际情况选择使用。 至此实时守护类型的数据守护系统搭建完毕,在搭建步骤和各项配置都正确的情况下,在监视器上执行show命令,可以监控到所有实例都处于Open状态,所有守护进程也都处于Open状态,即为正常运行状态。

数据守护集群的关闭:

stop GROUP GRP1

至此数据守护集群搭建完毕。更多详细信息请参考达梦数据库官方社。

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qq_44112838/article/details/126336457

智能推荐

C#连接OPC C#上位机链接PLC程序源码 1.该程序是通讯方式是CSharp通过OPC方式连接PLC_c#opc通信-程序员宅基地

文章浏览阅读565次。本文主要介绍如何使用C#通过OPC方式连接PLC,并提供了相应的程序和学习资料,以便读者学习和使用。OPC服务器是一种软件,可以将PLC的数据转换为标准的OPC格式,允许其他软件通过标准接口读取或控制PLC的数据。此外,本文还提供了一些学习资料,包括OPC和PLC的基础知识,C#编程语言的教程和实例代码。这些资料可以帮助读者更好地理解和应用本文介绍的程序。1.该程序是通讯方式是CSharp通过OPC方式连接PLC,用这种方式连PLC不用考虑什么种类PLC,只要OPC服务器里有的PLC都可以连。_c#opc通信

Hyper-V内的虚拟机复制粘贴_win10 hyper-v ubuntu18.04 文件拷贝-程序员宅基地

文章浏览阅读1.6w次,点赞3次,收藏10次。实践环境物理机:Windows10教育版,操作系统版本 17763.914虚拟机:Ubuntu18.04.3桌面版在Hyper-V中的刚安装好Ubuntu虚拟机之后,会发现鼠标滑动很不顺畅,也不能向虚拟机中拖拽文件或者复制内容。在VMware中,可以通过安装VMware tools来使物理机和虚拟机之间达到更好的交互。在Hyper-V中,也有这样的工具。这款工具可以完成更好的鼠标交互,我的..._win10 hyper-v ubuntu18.04 文件拷贝

java静态变量初始化多线程,持续更新中_类初始化一个静态属性 为线程池-程序员宅基地

文章浏览阅读156次。前言互联网时代,瞬息万变。一个小小的走错,就有可能落后于别人。我们没办法去预测任何行业、任何职业未来十年会怎么样,因为未来谁都不能确定。只能说只要有互联网存在,程序员依然是个高薪热门行业。只要跟随着时代的脚步,学习新的知识。程序员是不可能会消失的,或者说不可能会没钱赚的。我们经常可以听到很多人说,程序员是一个吃青春饭的行当。因为大多数人认为这是一个需要高强度脑力劳动的工种,而30岁、40岁,甚至50岁的程序员身体机能逐渐弱化,家庭琐事缠身,已经不能再进行这样高强度的工作了。那么,这样的说法是对的么?_类初始化一个静态属性 为线程池

idea 配置maven,其实不用单独下载Maven的。以及设置新项目配置,省略每次创建新项目都要配置一次Maven_安装idea后是不是不需要安装maven了?-程序员宅基地

文章浏览阅读1w次,点赞13次,收藏43次。说来也是惭愧,一直以来,在装环境的时候都会从官网下载Maven。然后再在idea里配置Maven。以为从官网下载的Maven是必须的步骤,直到今天才得知,idea有捆绑的 Maven 我们只需要搞一个配置文件就行了无需再官网下载Maven包以后再在新电脑装环境的时候,只需要下载idea ,网上找一个Maven的配置文件 放到 默认的 包下面就可以了!也省得每次创建项目都要重新配一次Maven了。如果不想每次新建项目都要重新配置Maven,一种方法就是使用默认的配置,另一种方法就是配置 .._安装idea后是不是不需要安装maven了?

奶爸奶妈必看给宝宝摄影大全-程序员宅基地

文章浏览阅读45次。家是我们一生中最重要的地方,小时候,我们在这里哭、在这里笑、在这里学习走路,在这里有我们最真实的时光,用相机把它记下吧。  很多家庭在拍摄孩子时有一个看法,认为儿童摄影团购必须是在风景秀丽的户外,即便是室内那也是像大酒店一样...

构建Docker镜像指南,含实战案例_rocker/r-base镜像-程序员宅基地

文章浏览阅读429次。Dockerfile介绍Dockerfile是构建镜像的指令文件,由一组指令组成,文件中每条指令对应linux中一条命令,在执行构建Docker镜像时,将读取Dockerfile中的指令,根据指令来操作生成指定Docker镜像。Dockerfile结构:主要由基础镜像信息、维护者信息、镜像操作指令、容器启动时执行指令。每行支持一条指令,每条指令可以携带多个参数。注释可以使用#开头。指令说明FROM 镜像 : 指定新的镜像所基于的镜像MAINTAINER 名字 : 说明新镜像的维护(制作)人,留下_rocker/r-base镜像

随便推点

毕设基于微信小程序的小区管理系统的设计ssm毕业设计_ssm基于微信小程序的公寓生活管理系统-程序员宅基地

文章浏览阅读223次。该系统将提供便捷的信息发布、物业报修、社区互动等功能,为小区居民提供更加便利、高效的服务。引言: 随着城市化进程的加速,小区管理成为一个日益重要的任务。因此,设计一个基于微信小程序的小区管理系统成为了一项具有挑战性和重要性的毕设课题。本文将介绍该小区管理系统的设计思路和功能,以期为小区提供更便捷、高效的管理手段。四、总结与展望: 通过本次毕设项目,我们实现了一个基于微信小程序的小区管理系统,为小区居民提供了更加便捷、高效的服务。通过该系统的设计与实现,能够提高小区管理水平,提供更好的居住环境和服务。_ssm基于微信小程序的公寓生活管理系统

如何正确的使用Ubuntu以及安装常用的渗透工具集.-程序员宅基地

文章浏览阅读635次。文章来源i春秋入坑Ubuntu半年多了记得一开始学的时候基本一星期重装三四次=-= 尴尬了 觉得自己差不多可以的时候 就吧Windows10干掉了 c盘装Ubuntu 专心学习. 这里主要来说一下使用Ubuntu的正确姿势Ubuntu(友帮拓、优般图、乌班图)是一个以桌面应用为主的开源GNU/Linux操作系统,Ubuntu 是基于DebianGNU/Linux,支..._ubuntu安装攻击工具包

JNI参数传递引用_jni引用byte[]-程序员宅基地

文章浏览阅读335次。需求:C++中将BYTE型数组传递给Java中,考虑到内存释放问题,未采用通过返回值进行数据传递。public class demoClass{public native boolean getData(byte[] tempData);}JNIEXPORT jboolean JNICALL Java_com_core_getData(JNIEnv *env, jobject thisObj, jbyteArray tempData){ //resultsize为s..._jni引用byte[]

三维重建工具——pclpy教程之点云分割_pclpy.pcl.pointcloud.pointxyzi转为numpy-程序员宅基地

文章浏览阅读2.1k次,点赞5次,收藏30次。本教程代码开源:GitHub 欢迎star文章目录一、平面模型分割1. 代码2. 说明3. 运行二、圆柱模型分割1. 代码2. 说明3. 运行三、欧几里得聚类提取1. 代码2. 说明3. 运行四、区域生长分割1. 代码2. 说明3. 运行五、基于最小切割的分割1. 代码2. 说明3. 运行六、使用 ProgressiveMorphologicalFilter 分割地面1. 代码2. 说明3. 运行一、平面模型分割在本教程中,我们将学习如何对一组点进行简单的平面分割,即找到支持平面模型的点云中的所有._pclpy.pcl.pointcloud.pointxyzi转为numpy

以NFS启动方式构建arm-linux仿真运行环境-程序员宅基地

文章浏览阅读141次。一 其实在 skyeye 上移植 arm-linux 并非难事,网上也有不少资料, 只是大都遗漏细节, 以致细微之处卡壳,所以本文力求详实清析, 希望能对大家有点用处。本文旨在将 arm-linux 在 skyeye 上搭建起来,并在 arm-linux 上能成功 mount NFS 为目标, 最终我们能在 arm-linux 里运行我们自己的应用程序. 二 安装 Sky..._nfs启动 arm

攻防世界 Pwn 进阶 第二页_pwn snprintf-程序员宅基地

文章浏览阅读598次,点赞2次,收藏5次。00为了形成一个体系,想将前面学过的一些东西都拉来放在一起总结总结,方便学习,方便记忆。攻防世界 Pwn 新手攻防世界 Pwn 进阶 第一页01 4-ReeHY-main-100超详细的wp1超详细的wp203 format2栈迁移的两种作用之一:栈溢出太小,进行栈迁移从而能够写入更多shellcode,进行更多操作。栈迁移一篇搞定有个陌生的函数。C 库函数 void *memcpy(void *str1, const void *str2, size_t n) 从存储区 str2 _pwn snprintf

推荐文章

热门文章

相关标签