dm8在Linux环境安装精简步骤说明(2024年12月更新版dm8)

dm8在Linux环境安装详细步骤 - - 2025年1月之后dm8

  • 环境介绍
  • 1 修改操作系统资源限制
  • 2 操作系统创建用户
  • 3 操作系统配置
  • 4 数据库安装
  • 5 初始化数据库
  • 6 实例参数优化
  • 7 登录数据库配置归档与备份
  • 8 配置审计
  • 9 创建用户
  • 10 屏蔽关键字与数据库兼容模式
  • 11 jdbc连接串配置
  • 12 更多达梦数据库学习使用列表

环境介绍

  • Cpu x86
  • Os Kylin v10 sp2
  • Dm8 1-4-6-2024.12.25-255012-20119-ENT
    –03134284294-20241225-255012-20119 Pack20
  • 数据库程序安装路径 /opt/dmdba/dmdbms
  • 数据库实例安装路径 /opt/dmdba/dmdata
  • 数据库归档日志路径 /opt/dmdba/dmarch
  • 数据库异常CORE路径 /opt/dmdba/dmcore
  • 数据库备份路径 /opt/dmdba/data/DAMENG/bak
  • 数据库安装包路径 /opt/dmdba
  • 安装前操作系统环境检查 - - 点击跳转
  • 操作系统建议安装 tar、telnet、perf、gdb、nmon、pstack、iostat、netstat、ethtool 等工具包 , 遇到问题方便分析
磁盘测速 低于25MB/S 不满足上线规范要求,可能存在性能瓶颈dd  if=/dev/sdb  of=test  bs=32k  count=20k  oflag=dsyncdd  if=/dev/vdb  of=test  bs=32k  count=20k  oflag=dsync/dev/sdb 是数据盘符名称,根据实际环境修改/dev/vdb 是数据盘符名称,根据实际环境修改

1 修改操作系统资源限制

# 使用 root 用户
vi /etc/security/limits.conf* soft nproc 10240
* hard nproc 10240
dmdba soft nproc 10240
dmdba hard nproc 10240
dmdba soft nofile 65536
dmdba hard nofile 65536
dmdba hard data unlimited
dmdba soft data unlimited
dmdba hard fsize unlimited
dmdba soft fsize unlimited
dmdba soft core unlimited
dmdba hard core unlimited

2 操作系统创建用户

# 使用 root 用户
groupadd dinstall
useradd -g dinstall dmdba
passwd dmdba
**********
**********
mkdir -p /opt/dmdba
chown -R dmdba:dinstall /opt/dmdba

3 操作系统配置

# 使用 root 用户cat /etc/sysctl.conf
# 1 操作系统内存配置overcommit_memory设置为0(详情见上线规范)
echo vm.overcommit_memory = 0 >> /etc/sysctl.conf && sysctl -p
# 2 core 文件生产路径修改 (详情见上线规范)
echo kernel.core_pattern = /opt/dmdba/dmcore/core-%e-%p-%s >> /etc/sysctl.conf && sysctl -p
# 3 关闭numa
echo vm.numa_stat = 0 >> /etc/sysctl.conf && sysctl -p# 4 内存≤32G 不用改vm.min_free_kbytes
echo vm.min_free_kbytes = 1153434 >> /etc/sysctl.conf && sysctl -p
# 5 内存不足时,建议设置为 1
echo vm.swappiness = 10 >> /etc/sysctl.conf && sysctl -p# 6 永久关闭swap 缓存 重启生效
sed -ri 's/.*swap.*/#&/' /etc/fstab# 7 关闭numa +关闭透明大页 重启生效# 编辑 vi /etc/default/grub 文件 或编辑 vi /etc/grub.conf 文件# (必须看上线规范操作验证)在 GRUB_CMDLINE_LINUX 那一行后面追加 numa=off transparent_hugepage=never# 查询结果是 UEFI 或 BIOS[ -d /sys/firmware/efi ] && echo UEFI || echo BIOS# UEFI 执行命令grub2-mkconfig -o /boot/efi/EFI/kylin/grub.cfg# BIOS 执行命令grub2-mkconfig -o /boot/grub2/grub.cfg# 重启后验证cat /sys/kernel/mm/transparent_hugepage/enabled# 8 磁盘调算法 (详情见上线规范)# 要求磁盘调度算法为 deadlinecat /sys/block/{DEVICE-NAME}/queue/scheduler# 注意把{DEVICE-NAME}替换会数据库所使用的对应的磁盘名称,以下以 sda,sdb,vdb 为例。cat /sys/block/sda/queue/schedulercat /sys/block/sdb/queue/schedulercat /sys/block/vdb/queue/scheduler# 9 麒麟 V10sp1 检查 RemoveIPC 参数 (详情见上线规范)查看麒麟版本命令: nkvers# 修改/etc/systemd/logind.conf 配置文件中的 RemoveIPC 参数,#注释去掉,并修改 yes 为 no# 重启服务systemctl daemon-reload;systemctl restart systemd-logind# 检查确认systemctl show systemd-logind | grep -i removeipc# 10 关闭防火墙或放开端口 (详情见上线规范)
# 11 关闭 SELinux(CentOS6.5) (详情见上线规范)

4 数据库安装

# 使用 root 用户mount -o loop dm8_20241227_x86_rh7_64.iso /mnt# 使用 dmdba 用户
su - dmdba
cd /mnt
./DMInstall.bin -i
请选择安装语言 [1]:1
是否输入Key文件路径? (Y/y:是 N/n:否) [Y/y]:y
请输入Key文件的路径地址 [dm.key]:/opt/dmdba/dm.key
是否设置时区? (Y/y:是 N/n:否) [Y/y]:y
请选择时区 [21]:21
请选择安装类型的数字序号 [1 典型安装]:1
请选择安装目录 [/home/dmdba/dmdbms]:/opt/dmdba/dmdbms
是否确认安装路径(/opt/dmdba/dmdbms)? (Y/y:是 N/n:否)  [Y/y]:y
是否确认安装? (Y/y:是 N/n:否):y# 使用 root 用户 执行
exit
/opt/dmdba/dmdbms/script/root/root_installer.sh

5 初始化数据库

# 使用 dmdba 用户su - dmdba./dminit path=/opt/dmdba/dmdata page_size=32 extent_size=32 log_size=2048 charset=0 case_sensitive=1 DB_NAME=DAMENG INSTANCE_NAME=DMSERVER SYSDBA_PWD=Dameng@123 SYSAUDITOR_PWD=Dameng@123 PORT_NUM=5236 BLANK_PAD_MODE=0# 前台启动 与 关闭
./dmserver  /opt/dmdba/dmdata/DAMENG/dm.ini
# 日志输出 SYSTEM IS READY
输入 exit  正常关闭数据库# 使用 root 用户 注册数据库服务
su - root
cd /opt/dmdba/dmdbms/script/root./dm_service_installer.sh -t dmserver -p 5236 -dm_ini /opt/dmdba/dmdata/DAMENG/dm.ini# 启动数据库服务
/opt/dmdba/dmdbms/bin/DmService5236 start

6 实例参数优化

# 使用 dmdba 用户su - dmdba
cd /opt/dmdba/dmdbms/bin
./disql SYSDBA/'"Dameng@123"'@127.0.0.1:5236
-- 示例 16c,32g配置 , 报错行可以跳过
SP_SET_PARA_VALUE(2,'WORKER_THREADS',14);
SP_SET_PARA_VALUE(2,'IO_THR_GROUPS',16);
SP_SET_PARA_VALUE(2,'GEN_SQL_MEM_RECLAIM',0);
SP_SET_PARA_VALUE(2,'MAX_OS_MEMORY',       100);
SP_SET_PARA_VALUE(2,'MEMORY_POOL',         2048);
SP_SET_PARA_VALUE(2,'MEMORY_N_POOLS',      3);
SP_SET_PARA_VALUE(2,'MEMORY_TARGET',       10240);
SP_SET_PARA_VALUE(2,'BUFFER',              12000);
SP_SET_PARA_VALUE(2,'BUFFER_POOLS',        21);
SP_SET_PARA_VALUE(2,'RECYCLE',        	   2048);
SP_SET_PARA_VALUE(2,'RECYCLE_POOLS',       7);
SP_SET_PARA_VALUE(2,'FAST_POOL_PAGES',     9999);
SP_SET_PARA_VALUE(2,'FAST_ROLL_PAGES',     1000);
SP_SET_PARA_VALUE(2,'ENABLE_FREQROOTS',1);
SP_SET_PARA_VALUE(2,'MULTI_PAGE_GET_NUM',1);
SP_SET_PARA_VALUE(2,'PRELOAD_SCAN_NUM',0);
SP_SET_PARA_VALUE(2,'PRELOAD_EXTENT_NUM',0);
SP_SET_PARA_VALUE(2,'TASK_THREADS',8);
SP_SET_PARA_VALUE(2,'MEMORY_MAGIC_CHECK',       1);
SP_SET_PARA_VALUE(2,'HJ_BUF_GLOBAL_SIZE',  2048);
SP_SET_PARA_VALUE(2,'HJ_BUF_SIZE',        128);
SP_SET_PARA_VALUE(2,'HAGR_BUF_GLOBAL_SIZE',2048);
SP_SET_PARA_VALUE(2,'HAGR_BUF_SIZE',     128);
SP_SET_PARA_VALUE(2,'SORT_FLAG',0);
SP_SET_PARA_VALUE(2,'SORT_BLK_SIZE',1);
SP_SET_PARA_VALUE(2,'SORT_BUF_SIZE',       10);
SP_SET_PARA_VALUE(2,'SORT_BUF_GLOBAL_SIZE',       2048);
SP_SET_PARA_VALUE(2,'RLOG_POOL_SIZE',      1024);
SP_SET_PARA_VALUE(2,'CACHE_POOL_SIZE',     1024);
SP_SET_PARA_VALUE(2,'DICT_BUF_SIZE',       512);
SP_SET_PARA_VALUE(2,'VM_POOL_TARGET',       16384);
SP_SET_PARA_VALUE(2,'SESS_POOL_TARGET',       16384);
SP_SET_PARA_VALUE(2,'USE_PLN_POOL',        1);
SP_SET_PARA_VALUE(2,'ENABLE_MONITOR',      1);
SP_SET_PARA_VALUE(2,'SVR_LOG',             1);
SP_SET_PARA_VALUE(2,'TEMP_SIZE',           20480);
SP_SET_PARA_VALUE(2,'TEMP_SPACE_LIMIT',    204800);
SP_SET_PARA_VALUE(2,'MAX_SESSIONS',        1500);
SP_SET_PARA_VALUE(2,'MAX_SESSION_STATEMENT', 20480);
SP_SET_PARA_VALUE(2,'PK_WITH_CLUSTER',		0);
SP_SET_PARA_VALUE(2,'ENABLE_ENCRYPT',0);
SP_SET_PARA_VALUE(2,'OLAP_FLAG',2);
SP_SET_PARA_VALUE(2,'VIEW_PULLUP_FLAG',1);
SP_SET_PARA_VALUE(2,'OPTIMIZER_MODE',1);
SP_SET_PARA_VALUE(2,'ADAPTIVE_NPLN_FLAG',0);
SP_SET_PARA_VALUE(2,'MONITOR_INDEX_FLAG',2);
SP_SET_PARA_VALUE(2,'ENABLE_CREATE_BM_INDEX_FLAG',0);
SP_SET_PARA_VALUE(2,'OPTIMIZER_OR_NBEXP',0);
SP_SET_PARA_VALUE(2,'PARALLEL_PURGE_FLAG',1);
SP_SET_PARA_VALUE(2,'PARALLEL_POLICY',2);
SP_SET_PARA_DOUBLE_VALUE(2,'UNDO_RETENTION',900);
SP_SET_PARA_VALUE(2,'UNDO_EXTENT_NUM',16);
SP_SET_PARA_VALUE(2,'ENABLE_INJECT_HINT',1);
SP_SET_PARA_VALUE(2,'BTR_SPLIT_MODE',1);
SP_SET_PARA_VALUE(2,'FAST_LOGIN',1);
SP_SET_PARA_VALUE(2,'ENABLE_MONITOR_BP',0);
SP_SET_PARA_VALUE(2,'MVCC_RETRY_TIMES',300);
SP_SET_PARA_VALUE(2,'RLOG_APPEND_LOGIC',1);
SP_SET_PARA_VALUE(2,'CALC_AS_DECIMAL',1);
SP_SET_PARA_VALUE(2,'AUDIT_MAX_FILE_SIZE',1024);
SP_SET_PARA_VALUE(2,'AUDIT_SPACE_LIMIT',10240);
alter tablespace "MAIN" datafile 'MAIN.DBF' autoextend on maxsize 102400;

7 登录数据库配置归档与备份

# 使用 dmdba 用户su - dmdba
cd /opt/dmdba/dmdbms/bin
./disql SYSDBA/'"Dameng@123"'@127.0.0.1:5236-- 开归档
ALTER DATABASE MOUNT;
ALTER DATABASE ARCHIVELOG;
-- 单个文件 2048MB=2GB , 最大空间限制204800MB=200GB
ALTER DATABASE ADD ARCHIVELOG 'DEST=/opt/dmdba/dmdata/dmarch,TYPE=LOCAL,FILE_SIZE=2048,SPACE_LIMIT=204800';
ALTER DATABASE OPEN;
CHECKPOINT(100);--手动全备一次
backup database compressed;--开启代理环境
SP_INIT_JOB_SYS(1);-- 周六晚上9点 备份全量
call SP_CREATE_JOB('db_bak',1,0,'',0,0,'',0,'');
call SP_JOB_CONFIG_START('db_bak');
call SP_ADD_JOB_STEP('db_bak', 'db_bak', 6, '01000000', 1, 1, 0, 0, NULL, 0);
call SP_ADD_JOB_SCHEDULE('db_bak', 'db_bak', 1, 2, 1, 64, 0, '21:36:44', NULL, '2021-12-08 21:36:44', NULL, '');
call SP_JOB_CONFIG_COMMIT('db_bak');--23点累计增量备份 周日,周一,周二,周三,周四,周五
--注意修改全量备份路径 /opt/dmdba/dmdata/DAMENG/bak
call SP_CREATE_JOB('db_bak_add',1,0,'',0,0,'',0,'');
call SP_JOB_CONFIG_START('db_bak_add');
call SP_ADD_JOB_STEP('db_bak_add', 'db_bak_add', 6, '41000000/opt/dmdba/dmdata/DAMENG/bak', 1, 1, 0, 0, NULL, 0);
call SP_ADD_JOB_SCHEDULE('db_bak_add', 'db_bak_add', 1, 2, 1, 63, 0, '23:16:38', NULL, '2024-12-31 17:16:38', NULL, '');
call SP_JOB_CONFIG_COMMIT('db_bak_add');-- 删除31天前的备份
call SP_CREATE_JOB('del_dbbak',1,0,'',0,0,'',0,'');
call SP_JOB_CONFIG_START('del_dbbak');
call SP_ADD_JOB_STEP('del_dbbak', 'del_dbbak', 0, 'CALL SP_DB_BAKSET_REMOVE_BATCH(''DISK'', NOW()-31);', 1, 1, 0, 0, NULL, 0);
call SP_ADD_JOB_SCHEDULE('del_dbbak', 'del_dbbak', 1, 1, 1, 0, 0, '22:04:40', NULL, '2021-12-08 22:04:40', NULL, '');
call SP_JOB_CONFIG_COMMIT('del_dbbak');

8 配置审计

# 使用 dmdba 用户su - dmdba
cd /opt/dmdba/dmdbms/bin
./disql SYSAUDITOR/'"Dameng@123"'@127.0.0.1:5236
-- 登陆审计用户,开启审计
SP_SET_ENABLE_AUDIT(1);
--记录对表的全部操作 DDL CREATE,DROP,TRUNCAT,
SP_AUDIT_STMT('TABLE', 'NULL', 'ALL');

9 创建用户

--将其中的 CESHI 替换为要创建的用户名即可
--用户默认密码: Dameng@123
--通用机创建用户 CESHI
--创建用户默认表空间
CREATE TABLESPACE "CESHI01_DATA" 
DATAFILE 'CESHI_DATA_01.DBF' SIZE 1024 AUTOEXTEND ON NEXT 1024 MAXSIZE 409600, 'CESHI_DATA_02.DBF' SIZE 1024 AUTOEXTEND ON NEXT 1024 MAXSIZE 409600 CACHE = NORMAL;
--创建用户索引表空间
CREATE TABLESPACE "CESHI02_INDEX" DATAFILE 'CESHI_INDEX_01.DBF' SIZE 1024 AUTOEXTEND ON NEXT 1024 MAXSIZE 409600, 'CESHI_INDEX_02.DBF' SIZE 1024 AUTOEXTEND ON NEXT 1024 MAXSIZE 409600 CACHE = NORMAL;
--创建用户
CREATE USER "CESHI" IDENTIFIED BY "Dameng@123" 
DEFAULT TABLESPACE "CESHI01_DATA"
DEFAULT INDEX TABLESPACE "CESHI02_INDEX";--根据情况添加 DBA(系统管理员)权限
GRANT "PUBLIC","RESOURCE","SOI","SVI","VTI" TO "CESHI";-- 取消用户限制
--修改用户失败登录次数限制:
ALTER USER CESHI LIMIT FAILED_LOGIN_ATTEMPS UNLIMITED;--修改用户口令过期时间限制:
ALTER USER CESHI LIMIT PASSWORD_LIFE_TIME UNLIMITED; --修改用户口令锁定期限制:
ALTER USER CESHI LIMIT PASSWORD_LOCK_TIME UNLIMITED;

10 屏蔽关键字与数据库兼容模式

  • 屏蔽关键字 - - 点击跳转
  • 数据库兼容模式
SP_SET_PARA_VALUE(2,'COMPATIBLE_MODE',0);

在这里插入图片描述

11 jdbc连接串配置

  • jdbc连接串配置 - - 点击跳转

12 更多达梦数据库学习使用列表

  • 更多达梦数据库学习使用列表 - - 点击跳转

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

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

相关文章

kafka-保姆级配置说明(consumer)

bootstrap.servers #deserializer应该与producer保持对应 #key.deserializer #value.deserializer ##fetch请求返回时,至少获取的字节数,默认值为1 ##当数据量不足时,客户端请求将会阻塞 ##此值越大,客户端请求阻塞的时间越长&…

Spring MVC 综合案例

目录 一. 加法计算器 1. 准备工作 2. 约定前后端交互接口 需求分析 接口定义 3. 服务器端代码 4. 运行测试 二. 用户登录 1. 准备工作 2. 约定前后端交互接口 需求分析 接口定义 (1) 登录界面接口 (2) 首页接口 3. 服务器端代码 4. 运行测试 三. 留言板 1. 准备…

神经网络|(一)加权平均法,感知机和神经元

【1】引言 从这篇文章开始,将记述对神经网络知识的探索。相关文章都是学习过程中的感悟和理解,如有雷同或者南辕北辙的表述,请大家多多包涵。 【2】加权平均法 在数学课本和数理统计课本中,我们总会遇到求一组数据平均值的做法…

PostGIS笔记:PostgreSQL 数据库与用户 基础操作

数据库基础操作包括数据模型的实现、添加数据、查询数据、视图应用、创建日志规则等。我这里是在Ubuntu系统学习的数据库管理。Windows平台与Linux平台在命令上几乎无差异,只是说在 Windows 上虽然也能运行良好,但在性能、稳定性、功能扩展等方面&#x…

【精选】基于数据挖掘的招聘信息分析与市场需求预测系统 职位分析、求职者趋势分析 职位匹配、人才趋势、市场需求分析数据挖掘技术 职位需求分析、人才市场趋势预测

博主介绍: ✌我是阿龙,一名专注于Java技术领域的程序员,全网拥有10W粉丝。作为CSDN特邀作者、博客专家、新星计划导师,我在计算机毕业设计开发方面积累了丰富的经验。同时,我也是掘金、华为云、阿里云、InfoQ等平台…

【Redis】常见面试题

什么是Redis? Redis 和 Memcached 有什么区别? 为什么用 Redis 作为 MySQL 的缓存? 主要是因为Redis具备高性能和高并发两种特性。 高性能:MySQL中数据是从磁盘读取的,而Redis是直接操作内存,速度相当快…

python学opencv|读取图像(四十二)使用cv2.add()函数实现多图像叠加

【1】引言 前序学习过程中,掌握了灰度图像和彩色图像的掩模操作: python学opencv|读取图像(九)用numpy创建黑白相间灰度图_numpy生成全黑图片-CSDN博客 python学opencv|读取图像(四十)掩模:三…

vue3 vue2区别

Vue 3 和 Vue 2 之间存在多个方面的区别,以下是一些主要的差异点: 1. 性能改进 Vue 3:在性能上有显著提升,包括更小的包体积、更快的渲染速度和更好的内存管理。Vue 2:性能相对较低,尤其是在大型应用中。…

将 OneLake 数据索引到 Elasticsearch - 第 1 部分

作者:来自 Elastic Gustavo Llermaly 学习配置 OneLake,使用 Python 消费数据并在 Elasticsearch 中索引文档,然后运行语义搜索。 OneLake 是一款工具,可让你连接到不同的 Microsoft 数据源,例如 Power BI、Data Activ…

开源项目Umami网站统计MySQL8.0版本Docker+Linux安装部署教程

Umami是什么? Umami是一个开源项目,简单、快速、专注用户隐私的网站统计项目。 下面来介绍如何本地安装部署Umami项目,进行你的网站统计接入。特别对于首次使用docker的萌新有非常好的指导、参考和帮助作用。 Umami的github和docker镜像地…

两种交换排序算法--冒泡,快速

目录 1.冒泡排序原理 2.快速排序原理 3.冒泡代码实现 4.快速排序代码实现 1.冒泡排序原理 冒泡排序(Bubble Sort)是一种简单的排序算法,基本思想是通过反复交换相邻的元素,直到整个序列有序。它的名字来源于较大的元素像气泡…

Java程序基础⑪Java的异常体系和使用

目录 1. 异常的概念和分类 1.1 异常的概念 1.2 异常的分类 2. 异常的体系结构 3. 异常的处理 3.1 异常的抛出 3.2 异常的捕获与处理 3.3 异常的处理流程 4. 自定义异常类 4.1 自定义异常类的规则 4.2 自定义异常案例 1. 异常的概念和分类 1.1 异常的概念 在Java中&…

大话特征工程:1.维数灾难与特征轮回

一、维度深渊 公元 2147 年,人类文明进入了数据驱动的超级智能时代。从金融到医疗,从教育到娱乐,所有决策都仰赖“全维计算网络”(高维特征空间)。这套系统将全球所有信息抽象成数以亿计的多维特征&#xff08…

在docker上部署nacos

一、首先下载nacos的docker镜像 docker pull nacos:2.5.0 二、然后下载nacos的安装包,这里是为了拿到他的配置文件。下载完解压缩后,以备后用 https://download.nacos.io/nacos-server/nacos-server-2.5.0.zip?spm5238cd80.6a33be36.0.0.2eb81e5d7mQ…

libOnvif通过组播不能发现相机

使用libOnvif库OnvifDiscoveryClient类, auto discovery new OnvifDiscoveryClient(QUrl(“soap.udp://239.255.255.250:3702”), cb.Build()); 会有错误: end of file or no input: message transfer interrupted or timed out(30 sec max recv delay)…

关于 SR-IOV 架构论文的总结文章

关于 SR-IOV 架构论文的总结文章 在计算机虚拟化技术不断发展的进程中,SR - IOV 架构凭借其在提升 I/O 性能、优化资源利用等方面的优势,成为众多研究关注的焦点。通过对 4 篇相关论文的研读,我们可以从多个维度深入了解 SR - IOV 架构的核心要点。 一、SR - IOV 架构的原…

kotlin内联函数——let,run,apply,also,with的区别

一、概述 为了帮助您根据使用场景选择合适的作用域函数(scope function),我们将对它们进行详细描述并提供使用建议。从技术上讲,许多情况下范围函数是可以互换使用的,因此示例中展示了使用它们的约定俗成的做法。 1.…

JVM常见知识点

在《深入理解Java虚拟机》一书中,介绍了JVM的相关特性。 1、JVM的内存区域划分 在真实的操作系统中,对于地址空间进行了分区域的设计,由于JVM是仿照真实的机器进行设计的,那么也进行了分区域的设计。核心区域有四个,…

Windows系统Tai时长统计工具的使用体验

Windows系统Tai时长统计工具的使用体验 一、Tai介绍1.1 Tai简介1.2 安装环境要求 二、下载及安装Tai2.1 下载Tai2.2 运行Tai工具 三、Tai的使用体验3.1 系统设置3.2 时长统计3.3 分类管理 四、总结 一、Tai介绍 1.1 Tai简介 Tai是一款专为Windows系统设计的开源软件&#xff…

【架构面试】二、消息队列和MySQL和Redis

MQ MQ消息中间件 问题引出与MQ作用 常见面试问题:面试官常针对项目中使用MQ技术的候选人提问,如如何确保消息不丢失,该问题可考察候选人技术能力。MQ应用场景及作用:以京东系统下单扣减京豆为例,MQ用于交易服和京豆服…