达梦学习进阶-DM8搭建主备切换

2023-11-07

@ 达梦学习进阶-DM8搭建主备切换

达梦学习进阶-DM8搭建主备切换

随着学习深入,单机架构的达梦很少能满足生产环境的灾备要求,而且单机往往测试库用到的比较多,生产环境还是建议搭建主从或者集群,比较稳妥。所以知识储备还是要做好。今天就来冲击一下dm的 主备环境吧,并比较一下,跟Oracle 有啥不通点。

部署规划

主节点1台,备节点1台,监控节点一台,一共规划 3 台虚拟机 搭建,cpu 内存 4核4G 就够了,幸好,不像tidb 那样,一出手就要几十G 内存,让我们难以在自己的笔记本上模拟,所以达梦这样的配置,还是利于入门的:
在这里插入图片描述

规划
在这里插入图片描述

在这里插入图片描述

安装,初始化之类的操作一顿搞

安装
systemctl stop firewalld
systemctl disable firewalld

setenforce 0
sed -i ‘s#SELINUX=enforcing#SELINUX=disabled#g’ /etc/selinux/config

vi /etc/security/limits.conf
dmdba soft nice 0
dmdba hard nice 0
dmdba soft as unlimited
dmdba hard as unlimited
dmdba soft fsize unlimited
dmdba hard fsize unlimited
dmdba soft nproc 65536
dmdba hard nproc 65536
dmdba soft nofile 65536
dmdba hard nofile 65536
dmdba soft core unlimited
dmdba hard core unlimited
dmdba soft data unlimited
dmdba hard data unlimited

vi /etc/sysctl.conf
fs.file-max = 6815744
fs.aio-max-nr = 1048576
kernel.shmmni = 4096
kernel.sem = 250 32000 100 128
net.ipv4.ip_local_port_range = 9000 65500
net.core.rmem_default = 4194304
net.core.rmem_max = 4194304
net.core.wmem_default = 262144
net.core.wmem_max = 1048576
vm.swappiness = 10
vm.dirty_background_ratio = 0
vm.dirty_ratio = 80
vm.dirty_expire_centisecs = 500
vm.dirty_writeback_centisecs = 100
使内核参数生效:
sysctl -p
创建安装用户和组
groupadd -g 10000 dinstall
useradd -u 10001 -g dinstall -m -d /home/dmdba dmdba
echo “123456”|passwd --stdin dmdba

mkdir -p /data/dmdata
mkdir -p /home/dmdba/dmdbms
mkdir -p /dmarch
mkdir -p /dmbak
chown -R dmdba:dinstall /data/dmdata
chown -R dmdba:dinstall /home/dmdba/dmdbms
chown -R dmdba:dinstall /dmarch
chown -R dmdba:dinstall /dmbak
mount -o loop dm8_xxx.iso /mnt
cp /mnt/DMInstall.bin /home/dmdba
chown -R dmdba:dinstall /home/dmdba/DMInstall.bin
su - dmdba
[dmdba@localhost ~]$ ./DMInstall.bin -i
root
/home/dmdba/dmdbms/script/root/root_installer.sh

primary初始化数据
/home/dmdba/dmdbms/bin/dminit path=/data/dmdata page_size=16 extent_size=32 log_size=500 charset=0 case_sensitive=1 length_in_char=0 db_name=dm01

log:
initdb V8
db version: 0x7000c
License will expire on 2022-12-25
Normal of FAST
Normal of DEFAULT
Normal of RECYCLE
Normal of KEEP
Normal of ROLL
log file path: /data/dmdata/dm01/dm0101.log
log file path: /data/dmdata/dm01/dm0102.log
write to dir [/data/dmdata/dm01].
create dm database success. 2022-07-05 08:35:47

启动实例
以系统服务方式启动实例,DM 提供脚本将数据库实例注册为操作系统服务。
root 用户下切换到 /home/dmdba/dmdbms/script/root/:
./dm_service_installer.sh -t dmserver -p dm01 -dm_ini /data/dmdata/dm01/dm.ini

[root@primary root]# ./dm_service_installer.sh -t dmserver -p dm01 -dm_ini /data/dmdata/dm01/dm.ini
Created symlink from /etc/systemd/system/multi-user.target.wants/DmServicedm01.service to /usr/lib/systemd/system/DmServicedm01.service.
Finished to create the service (DmServicedm01)

启动 systemctl start DmServicedm01

尝试登录
在这里插入图片描述

查阅资料得知,因为在dm安全版中默认开启了SSL加密,所以需要关闭:

SQL> sp_set_para_value(2,‘ENABLE_ENCRYPT’,0);
执行完之后需要重启数据库才能生效。
./DmServicedm01 stop
./DmServicedm01 start
在这里插入图片描述
建表,模拟操作 写数据
create table test1 ( snum int );
insert into test1 values (1 );
insert into test1 values (2 );
commit;

primary 开启归档
alter database mount;
alter database add archivelog ‘dest=/dmarch,TYPE=local,FILE_SIZE=1024,SPACE_LIMIT=102400’;
alter database archivelog;
alter database open;

standby 库 也要初始化 ,生成目录结构,控制文件之类的
/home/dmdba/dmdbms/bin/dminit path=/data/dmdata page_size=16 extent_size=32 log_size=500 charset=0 case_sensitive=1 length_in_char=0 db_name=dm01

确认主库 DMAP 服务已启动,执行以下命令:
ps -ef|grep dmap
在这里插入图片描述

以下内容开始 搞事情了,在安装完,初始化,写数据,开归档后,正式开始 搭建备份

主库脱机备份—这个动作我比较吐槽,搭建主备 还有申请时间停机操作呢
停机
在这里插入图片描述

dmrman 工具备份主库
./dmrman
backup database ‘/data/dmdata/dm01/dm.ini’ backupset ‘/dmbak/dm01_full’;

在这里插入图片描述
传输到 备库 吧,备份 很需要 这份 东西,救命!!!!
scp -r /dmbak/dm01_full root@192.168.118.131:/dmbak ---- 传输后 主库还是关闭状态

备库接受到文件后,要做还原数据的操作了,同样也要关闭数据库实例的(初始化后未启动过)
chown -R dmdba.dinstall /dmbak/dm01_full
使用 dmrman 工具还原备库执行 restore。

check backupset ‘/dmbak/dm01_full’;
restore database ‘/data/dmdata/dm01/dm.ini’ from backupset ‘/dmbak/dm01_full’;
recover database ‘/data/dmdata/dm01/dm.ini’ from backupset ‘/dmbak/dm01_full’;
更新db_magic
recover database ‘/data/dmdata/dm01/dm.ini’ update db_magic;
在这里插入图片描述

到这步为止, 主备的数据一致了,接下来 是 配置 日志传输,保持同步之类的设置

关键文件

修改主备实例的达梦dm.ini,dmmal.ini,dmarch.ini,dmwatcher.ini文件参数,执行以下命令:
vi /data/dmdata/dm01/dm.ini
primary

dm.ini
INSTANCE_NAME = dm01
PORT_NUM = 5246
DW_INACTIVE_INTERVAL = 60
ALTER_MODE_STATUS = 0
ENABLE_OFFLINE_TS = 2
MAL_INI = 1
ARCH_INI = 1
RLOG_SEND_APPLY_MON = 64

vi /data/dmdata/dm01/dmmal.ini
dmmal.ini
MAL_CHECK_INTERVAL = 5
MAL_CONN_FAIL_INTERVAL = 5
[MAL_INST1]
MAL_INST_NAME = dm01
MAL_HOST = 192.168.118.123
MAL_PORT = 55101
MAL_INST_HOST = 192.168.118.123
MAL_INST_PORT = 5246
MAL_DW_PORT = 65101
MAL_INST_DW_PORT = 45101
[MAL_INST2]
MAL_INST_NAME = dm02
MAL_HOST = 192.168.118.131
MAL_PORT = 55121
MAL_INST_HOST = 192.168.118.131
MAL_INST_PORT = 5246
MAL_DW_PORT = 65121
MAL_INST_DW_PORT = 45121

vi /data/dmdata/dm01/dmarch.ini
dmarch.ini
[ARCHIVE_REALTIME]
ARCH_TYPE = REALTIME
ARCH_DEST = dm02
/*[ARCHIVE_LOCAL1]
ARCH_TYPE = LOCAL
ARCH_DEST = /dm8/arch
ARCH_FILE_SIZE = 128
ARCH_SPACE_LIMIT = 0 */

vi /data/dmdata/dm01/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
INST_INI = /data/dmdata/dm01/dm.ini
INST_AUTO_RESTART = 1
INST_STARTUP_CMD = /home/dmdba/dmdbms/bin/dmserver
RLOG_SEND_THRESHOLD = 0
RLOG_APPLY_THRESHOLD = 0

备库修改以下参数值:

standby
vi /data/dmdata/dm01/dm.ini
dm.ini
INSTANCE_NAME = dm02
PORT_NUM = 5246
DW_INACTIVE_INTERVAL = 60
ALTER_MODE_STATUS = 0
ENABLE_OFFLINE_TS = 2
MAL_INI = 1
ARCH_INI = 1
RLOG_SEND_APPLY_MON = 64

vi /data/dmdata/dm01/dmmal.ini
dmmal.ini
MAL_CHECK_INTERVAL = 5
MAL_CONN_FAIL_INTERVAL = 5
[MAL_INST1]
MAL_INST_NAME = dm01
MAL_HOST = 192.168.118.123
MAL_PORT = 55101
MAL_INST_HOST = 192.168.118.123
MAL_INST_PORT = 5246
MAL_DW_PORT = 65101
MAL_INST_DW_PORT = 45101
[MAL_INST2]
MAL_INST_NAME = dm02
MAL_HOST = 192.168.118.131
MAL_PORT = 55121
MAL_INST_HOST = 192.168.118.131
MAL_INST_PORT = 5246
MAL_DW_PORT = 65121
MAL_INST_DW_PORT = 45121

vi /data/dmdata/dm01/dmarch.ini
dmarch.ini
[ARCHIVE_REALTIME]
ARCH_TYPE = REALTIME
ARCH_DEST = dm01
[ARCHIVE_LOCAL1]
ARCH_TYPE = LOCAL
ARCH_DEST = /dmarch
ARCH_FILE_SIZE = 128
ARCH_SPACE_LIMIT = 0

vi /data/dmdata/dm01/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
INST_INI = /data/dmdata/dm01/dm.ini
INST_AUTO_RESTART = 1
INST_STARTUP_CMD = /home/dmdba/dmdbms/bin/dmserver
RLOG_APPLY_THRESHOLD = 0

INST_OGUID —一个重要的数字

操作顺序总结

先主后备,都mount

启动主库
./dmserver /data/dmdata/dm01/dm.ini mount (前台启动)
另开窗口执行
disql sysdba/SYSDBA@localhost:5246
SQL>SP_SET_PARA_VALUE(1, ‘ALTER_MODE_STATUS’, 1);
SQL>sp_set_oguid(453331);
SQL>alter database primary;
SQL>SP_SET_PARA_VALUE(1, ‘ALTER_MODE_STATUS’, 0);
在这里插入图片描述

以 Mount 方式启动备库
./dmserver /data/dmdata/dm01/dm.ini mount (前台启动)
另开窗口执行
disql sysdba/SYSDBA@localhost:5246
SQL>SP_SET_PARA_VALUE(1, ‘ALTER_MODE_STATUS’, 1);
SQL>sp_set_oguid(453331);
SQL>alter database standby;
SQL>SP_SET_PARA_VALUE(1, ‘ALTER_MODE_STATUS’, 0);

启动守护进程
dmdba 用户下,到数据库安装目录的 bin 下执行(主备库都执行)。


dmwatcher /data/dmdata/dm01/dmwatcher.ini (前台启动)


dmwatcher /data/dmdata/dm01/dmwatcher.ini (前台启动)

守护进程启动后,会将 Mount 的实例 Open。

部署监控服务器收尾

监控服务器(只安装dm 软件)

vi /data/dmdata/mon/dmmonitor.ini
MON_DW_CONFIRM = 1
MON_LOG_PATH = /data/dmdata/mon/log
MON_LOG_INTERVAL = 60
MON_LOG_FILE_SIZE = 32
MON_LOG_SPACE_LIMIT = 0
[GRP1]
MON_INST_OGUID = 453331
MON_DW_IP = 192.168.118.123:65101
MON_DW_IP = 192.168.118.131:65121

启动监视器,执行以下命令:

/home/dmdba/dmdbms/bin/dmmonitor /data/dmdata/mon/dmmonitor.ini

启动后输入 show 命令查看集群状态。

测试主库
在这里插入图片描述

测试备库
在这里插入图片描述

以上启动为前台方式启动,仅用户搭建过程中验证配置。配置没问题后需要将实例,守护进程和确认监视器注册为系统服务。使用 root 用户,到数据库安装目录的 script/root 下,执行。
cd /home/dmdba/dmdbms/script/root/
注册守护进程服务(主备库都执行)。

./dm_service_installer.sh -t dmwatcher -p watch01 -watcher_ini /data/dmdata/dm01/dmwatcher.ini

./dm_service_installer.sh -t dmwatcher -p watch02 -watcher_ini /data/dmdata/dm01/dmwatcher.ini

注册数据库实例服务(主备库都执行)。

./dm_service_installer.sh -t dmserver -p dm01 -dm_ini /data/dmdata/dm01/dm.ini --已注册

./dm_service_installer.sh -t dmserver -p dm02 -dm_ini /data/dmdata/dm01/dm.in

注册监视器服务(只需在监视器服务器上执行),执行以下命令:

./dm_service_installer.sh -t dmmonitor -p monitor -monitor_ini /data/dmdata/mon/dmmonitor.ini

以服务方式启动
启动数据库实例,执行以下命令:

[root@localhost data]# systemctl start DmServiceddm01

启动守护进程,执行以下命令:

[root@localhost data]# systemctl start DmWatcherServicewatch01

启动监视器,执行以下命令:

[root@localhost data]# systemctl start DmMonitorServmonitor

这时,你无法登录监视器了,因为监视器没提供端口给你访问

如果设置的是确认监视器(确认监视器只能启动一个)并且已经启动了,

在这里插入图片描述

那么可以配置一个非确认监视器进行查看各节点状态,使用
/home/dmdba/dmdbms/bin/dmmonitor /data/dmdata/mon/dmmonitor2.ini
命令进行查看
cat /data/dmdata/mon/dmmonitor2.ini

在这里插入图片描述

在这里插入图片描述

主备集群重启有顺序要求:

关闭监视器:systemctl stop DmMonitorServmonitor
关闭主库守护进程:systemctl stop DmWatcherServicewatch01
关闭备库守护进程:systemctl stop DmWatcherServicewatch02
关闭主库实例:systemctl stop DmServiceddm01
关闭备库实例:systemctl stop DmServiceddm02

启动主库实例:systemctl start DmServiceddm01
启动备库实例:systemctl start DmServiceddm02
启动主库守护进程:systemctl start DmWatcherServicewatch01
启动备库守护进程:systemctl start DmWatcherServicewatch02
启动监视器:systemctl start DmMonitorServmonitor

与oracle 的 dataguard 比较一下

1 搭建备库过程中需要关闭数据库
2 搭建过程未出现有密码验证阶段
3 搭建过程比 oracle 需要 更多的端口以及配置文件

待续 。。。。。。。。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

达梦学习进阶-DM8搭建主备切换 的相关文章

  • HttpRunner(22):httprunner设置代理及请求证书验证

    httprunner设置代理 httprunner 库本身没有提供设置代理的接口 但是底层使用了urllib requests 等库 可以设置HTTP PROXY 和HTTPS PROXY 环境变量 常用的网络库会自动识别这些环境变量 日常
  • VPS计算深度解析:如何选择适合你需求的服务器配置

    在当今数字时代 无论是个人用户还是企业 都需要可靠的服务器来托管其网站 应用程序和数据 VPS已经成为一种受欢迎的托管解决方案 因为它提供了稳定性 安全性和性能的理想平衡 但是 在选择适合你需求的VPS服务器配置时 你需要考虑许多因素 本文
  • 1.常用单词学习

    1 1 听力练习 第一课 Av264771740 P1 Av736460000 P1 哔哩哔哩 bilibili 有推荐的吗 这个和这个都很推荐 这个多少钱 请给我这个 全部 这些一共多少钱 卫生间在哪呢 一度 願 麻烦再来一次 英語話 会
  • 在职状态下继续学习的心得体会

    本来平时记录的都是一些技术点的学习和使用 今天打算记录一下学习方法 当然不一定适合所有人 因人而异 仅供参考 学习这件事 对于IT行业来说 真的是活到老学到老 技术的更新迭代速度非常快 而且总是有那么一些公司特别的卷 没办法 改变不了外因
  • 我当年自学黑客(网络安全)的一些心得!(内附学习笔记)

    前 言 写这篇教程的初衷是很多朋友都想了解如何入门 转行网络安全 实现自己的 黑客梦 文章的宗旨是 1 指出一些自学的误区 2 提供客观可行的学习表 3 推荐我认为适合小白学习的资源 大佬绕道哈 文末有福利 一 自学网络安全学习的误区和陷阱
  • 如何使用内网穿透实现iStoreOS软路由公网远程访问局域网电脑桌面

    文章目录 简介 一 配置远程桌面公网地址 二 家中使用永久固定地址 访问公司电脑 具体操作方法是 简介 软路由 是PC的硬件加上路由系统来实现路由器
  • 虚拟主机操作系统 Windows、Linux

    操作系统将直接影响服务器的性能 安全性和可用性 因此确保选择合适的操作系统对于成功运行您的网站或应用程序至关重要 以下是一些考虑因素 可帮助您选择适合您需求的虚拟主机操作系统 1 熟悉度和技术支持 如何选择操作系统应该考虑您的经验水平和熟悉
  • 服务器集群是如何提高计算性能的?

    服务器集群是一种将多台服务器连接起来协同工作的技术 通过集群配置 可以提高计算性能 可靠性和可扩展性 以下是服务器集群如何提高计算性能的详细解释 一 并行处理能力 服务器集群的核心优势在于其并行处理能力 通过将多个服务器组成一个集群 可以将
  • The Planets:Venus

    靶场下载 The Planets Venus VulnHub 信息收集 arp scan l Interface eth0 type EN10MB MAC 00 0c 29 43 7c b1 IPv4 192 168 1 60 Starti
  • 如何解读服务器的配置和架构?

    在当今数字化时代 服务器作为企业或组织的重要基础设施 其配置和架构对于保障业务的稳定运行至关重要 如何解读服务器的配置和架构 成为了一个备受关注的话题 本文将围绕服务器配置和架构的解读进行深入探讨 帮助读者更好地理解服务器的性能 扩展性和安
  • centos系统有什么好处?

    CentOS是一种基于开源代码的Linux操作系统 它有以下几个优势 1 稳定性 CentOS是一种非常稳定的操作系统 它的代码经过了严格的测试和审查 因此它非常适合作为服务器操作系统使 用 2 安全性 由于CentOS是基于开源代码的操作
  • 使用Hypothesis生成测试数据

    Hypothesis是Python的一个高级测试库 它允许编写 测试用例 时参数化 然后生成使测试失败的简单易懂的测试数据 可以用更少的工作在代码中发现更多的bug 安装 pip install hypothesis 如何设计 测试数据 通
  • 白帽子如何快速挖到人生的第一个漏洞 | 购物站点挖掘商城漏洞

    本文针对人群 很多朋友们接触安全都是通过书籍 网上流传的PDF 亦或是通过论坛里的文章 但可能经过了这样一段时间的学习 了解了一些常见漏洞的原理之后 对于漏洞挖掘还不是很清楚 甚至不明白如何下手 可能你通过 sql labs 初步掌握了sq
  • 2024年金三银四网络安全考试试题

    2023年金三银四网络安全考试试题 1 关于数据使用说法错误的是 A 在知识分享 案例中如涉及客户网络数据 应取敏感化 不得直接使用 B 在公开场合 公共媒体等谈论 传播或发布客户网络中的数据 需获得客户书面授权或取敏感化 公开渠道获得的除
  • 【计算机毕业设计】OA公文发文管理系统_xtv98

    近年来 人们的生活方式以网络为主题不断进化 OA公文发文管理就是其中的一部分 现在 无论是大型的还是小型的网站 都随处可见 不知不觉中已经成为我们生活中不可或缺的存在 随着社会的发展 除了对系统的需求外 我们还要促进经济发展 提高工作效率
  • 一台java服务器可以跑多少个线程?

    一台java服务器可以跑多少个线程 一台java服务器能跑多少个线程 这个问题来自一次线上报警如下图 超过了我们的配置阈值 打出jstack文件 通过IBM Thread and Monitor Dump Analyzer for Java
  • 【GRNN-RBFNN-ILC算法】【轨迹跟踪】基于神经网络的迭代学习控制用于未知SISO非线性系统的轨迹跟踪(Matlab代码实现)

    欢迎来到本博客 博主优势 博客内容尽量做到思维缜密 逻辑清晰 为了方便读者 座右铭 行百里者 半于九十 本文目录如下 目录 1 概述 2 运行结果 2 1 第1部分 2 2 第2部分
  • Cortex-M3与M4权威指南

    处理器类型 所有的ARM Cortex M 处理器是32位的精简指令集处理器 它们有 32位寄存器 32位内部数据路径 32位总线接口 除了32位数据 Cortex M处理器也可以有效地处理器8位和16位数据以及支持许多涉及64位数据的操作
  • 【js学习之路】遍历数组api之 `filter `和 `map`的区别

    一 前言 数组是我们在项目中经常使用的数据类型 今天我们主要简述作用于遍历数组的api filter 和 map 的区别 二 filter和map的共同点 首先 我们主要阐述一下 filter 和 map 的共同点 api的参数都是回调函数
  • 光波导结构

    摘要 增强现实和混合现实 AR MR 领域的新应用引起了人们对带有光栅区域的光波导系统的越来越多的关注 这些光波导系统用于输入和输出耦合以及扩瞳目的 VirtualLab Fusion为这类系统的仿真和设计提供了几个强大的工具 其中一个是具

随机推荐

  • Linux服务篇之DNS服务器搭建

    文章目录 一 DNS介绍 1 DNS简介 2 DNS工作原理 3 DNS的资源记录 二 实验 1 DNS正向解析实验 2 反向解析 3 主从服务器配置 三 总结 一 DNS介绍 1 DNS简介 DNS 全称 Domain Name Syst
  • 关于load过高的几种情况

    Linux 中 load啥意思 Load 在 Linux 系统中通常是指系统的负载情况 也称为系统负荷 它指的是系统正在运行的进程数量以及这些进程对系统资源的使用情况 例如 CPU 内存 磁盘 I O 等 Linux 系统的负载通常由三个数
  • osgEarth的Rex引擎原理分析(九十四)rex引擎如何显示瓦片的边界

    目标 八十八 中的问题171 效果图如下 思路 在文章 osgEarth的Rex引擎原理分析 九十一 晕眩图的制作与实现 的基础上 判断纹理坐标的范围 在边界处用特殊颜色即可 着色器代码如下 if oe layer tilec s lt 0
  • unity3D学习之API_Transform 位置

    一 定义 Transform 表示物体的位置 旋转和缩放而且每个对象必备的组件 场景中的每一个物体都有一个Transform 用于储存并操控物体的位置 旋转和缩放 每一个Transform可以有一个父级 允许你分层次应用位置 旋转和缩放 可
  • Qt的事件循环机制

    所有例程和PPT下载 https download csdn net download simonyucsdy 12311712 问题1 Qt中常见的事件有哪些 答 鼠标事件 QMouseEvent 键盘事件 QKeyEvent 绘制事件
  • SAP/FICO/BAPI_ACC_DOCUMENT_POST-外币凭证金额和本位币误差问题处理

    场景 通过BAPI ACC DOCUMENT POST创建USD币别凭证SAP会自动带出CNY本位币金额 本位币金额是USD通过SAP配置的汇率计算出来的 有时候会有误差 想要实现的功能 凭证金额和本位币金额都有外部系统传入设置不需要SAP
  • SQL视图的使用场景/案例

    背景原因 一方面 在一个项目的实际开发过程中牵涉到复杂业务的时候 我们不可避免的需要使用中间表来进行数据连接 一方面 采用Hibernate进行主外键进行关联 多对多 多对一 一对一等 采用主外键关联在数据的操作过程中具有很强的耦合性 尤其
  • gitlab配置ssh密钥及简单使用

    gitlab安装可参考https blog whsir com post 1419 html 演示环境 当前系统Centos6 9 使用IP192 168 0 80 修改gitlab仓库地址 编辑gitlab yml文件 vim opt g
  • 关于安卓调试的log系统

    在安卓系统下 对应用程序的调试 有一个特有的方式 就是log系统 其实就和C语言中的printf函数的使用类似 但是 它是将调试信息存入了缓冲区内 而安卓有四个缓冲区 他的设计模式是模仿了linux内核中的缓冲区模式 将所有的调试信息放入缓
  • Redis的IO多路复用原理

    什么是阻塞 非阻塞 异步同步 select poll epoll 今天我们用一遍文章解开这多年的迷惑 首先我们想要通过网络接收消息 是这样的一个步骤 用户空间向内核空间请求网络数据 内核空间把网卡数据读取到内核缓冲区 将内核缓冲区的数据复制
  • RC正弦波震荡电路

    就开始边写边整理自己的思路吧 毕竟今天刚刚学完 振荡电路是没有输入却有输出的电路 而且是正弦波 就是从白噪声放大 选频得来的 So 可想而知 这个电路需要放大部分 用来放大我们所需的部分 其实是在放大所有频率的 没办法 选频网络 就是两个滤
  • educoder算法设计与分析 实验三 动态规划实验拓展

    实验三 动态规划实验拓展 第1关 聪明的寻宝人 第2关 基因检测 第3关 药剂稀释 第4关 找相似串 第1关 聪明的寻宝人 题目描述 本关任务 计算寻宝人所能带走的宝物的最大价值 一个寻宝人在沙漠中发现一处神秘的宝藏 宝藏中共有n个宝物 n
  • activiti7执行流程详解

    什么是工作流 官方定义 工作流是将一组任务组织起来以完成某个经营过程 定义了任务的触发顺序和触发条件 每个任务可以由一个或多个软件系统完成 也可以由一个或一组人完成 还可以由一个或多个人与软件系统协作完 我的理解 工作流就是针对程序的业务流
  • Vue Grid Layout -️ 适用Vue.js的栅格布局系统,在vue3+上使用

    文章目录 1 官网简介 2 在vue3中使用 1 需要导入vue3支持的版本插件 2 在mian js里引入 3 在组件中使用 3 layout布局的计算逻辑 4 gridLayout 的属性 该栅格系统目前对 vue2 的支持是最好的 v
  • 一文说尽用Python赚钱的五种方法!

    Python是一种非常流行的编程语言 因此Python开发人员可以从众多工作选择中进行选择 您可以学习Python 建立良好的产品组合并成为全职开发人员 也可以选择Python编码作为您的自由职业 我们仅介绍了使用Python赚钱的几种常见
  • 【安全狗】Linux后渗透常见后门驻留方式分析

    引言 当RedTeam拿下了一台服务器并获取到系统较高权限 但不知道服务器的凭证时 RedTeam会采用怎样的技术获取系统凭证呢 又或者 在RedTeam拿下一台服务器 为达到长久控制的目的而专门定制持久化后门 免杀肯定是必须的 的前提下
  • 一张图比較 Docker 和 Git:镜像管理设计理念

    Docker 的镜像管理设计中大量借鉴了 Git 的理念 以下这张图将对两者的核心概念和操作进行比較 有助于大家高速掌握管理 Docker 镜像的正确方式 微信订阅版本号 http mp weixin qq com s biz MzA5MT
  • 前端基础自查

    目录 h5和css3的认知 data v 03da18b4 http部分 前端HTTP优化 网页有哪些部分 服务器渲染 跨域 栅格式布局 阻止冒泡的方法 jq的认知 移动端的适配 不同尺寸屏幕 适配不同浏览器 大屏适配 设计稿 数组重复去重
  • laravel输出HTML内容

    blade模板引擎中的 xxx 表达式的返回值将被自动传递给 PHP 的 htmlentities 函数进行处理 以防止 XSS 攻击 如果需要展示未转义的数据 可以使用 xxx
  • 达梦学习进阶-DM8搭建主备切换

    达梦学习进阶 DM8搭建主备切换 达梦学习进阶 DM8搭建主备切换 随着学习深入 单机架构的达梦很少能满足生产环境的灾备要求 而且单机往往测试库用到的比较多 生产环境还是建议搭建主从或者集群 比较稳妥 所以知识储备还是要做好 今天就来冲击一