达梦数据库系列—17. 主备集群搭建-实时主备
目录
配置实时主备
1、环境说明
2、数据准备
脱机备份、脱机还原方式
联机备份、脱机还原方式
3、配置主库
3.1 配置 dm.ini
3.2 配置 dmmal.ini
3.3 配置 dmarch.ini
3.4 配置 dmwatcher.ini
3.5 启动主库为mount
3.6 设置 OGUID
3.7 修改数据库模式
4、配置备库
4.1 配置 dm.ini
4.2 配置 dmmal.ini
4.3 配置 dmarch.ini
4.4 配置 dmwatcher.ini
4.5 启动备库为mount
4.6 设置 OGUID
4.7 修改数据库模式
5 、配置监视器
5.1 配置单实例监视器
5.2 配置多实例监视器
6 、启动守护进程
7 、启动监视器
配置实时主备
1、环境说明
- 准备三台机器 DW_P、DW_S1、DW_M,DW_P 和 DW_S1 用来部署主备库,DW_M 用来部署确认监视器。其中 DW_P 和 DW_S1 配置两块网卡,一块接入内部网络交换模块,一块接入到外部交换机,DW_M 接入内部网络。
- 三台机器都事先安装了 DM,安装路径为'/dm',执行程序保存在'/dm/bin'目录中,数据存放路径为'/dm/data'。
配置环境说明
| DW_P | 192.168.64.131 192.168.169.141 | 主库 GRP1_RT_01 | Linux rh7 | 192.168.64.131 外部服务 IP; |
| DW_S1 | 192.168.64.132 192.168.169.142 | 备库 GRP1_RT_02 | Linux rh7 | 192.168.64.132 外部服务 IP; |
| DW_M | 192.168.64.73 | 确认监视器 | Linux rh7 |
端口规划
| 实例名 | PORT_NUM | MAL_INST_DW_PORT | MAL_HOST | MAL_PORT | MAL_DW_PORT |
| GRP1_RT_01 | 32141 | 33141 | 192.168.169.141 | 61141 | 52141 |
| GRP1_RT_02 | 32142 | 33142 | 192.168.169.142 | 61142 | 52142 |
2、数据准备
每个库都有一个永久魔数(permenant_magic),一经生成,永远不会改变,主库传送日志时会判断这个值是否一样,确保是来自同一个数据守护环境中的库,否则传送不了日志。
DW_P 机器上初始化主库至目录/dm/data:
dminit path=/dm/data
DW_S1 机器上初始化备库至目录/dm/data:
dminit path=/dm/data
数据要通过备份还原的方式准备。
脱机备份、脱机还原方式
- 正常关闭数据库
- 进行脱机备份
./dmrman CTLSTMT="BACKUP DATABASE '/dm/data/DAMENG/dm.ini' FULL TO BACKUP_FILE1 BACKUPSET '/dm/data/BACKUP_FILE_01'"
3.拷贝备份文件到备库所在机器
4.执行脱机数据库还原与恢复
数据库还原:
./dmrman CTLSTMT="RESTORE DATABASE '/dm/data/DAMENG/dm.ini' FROM BACKUPSET '/dm/data/BACKUP_FILE_01'"
因为脱机备份没有产生任何 REDO 日志,所以恢复这一步此处省略。
数据库更新:
./dmrman CTLSTMT="RECOVER DATABASE '/dm/data/DAMENG/dm.ini' UPDATE DB_MAGIC"
联机备份、脱机还原方式
- 对主库进行联机备份操作
SQL> BACKUP DATABASE BACKUPSET '/dm/data/BACKUP_FILE_01';
2.拷贝备份文件到备库所在机器
3.执行脱机数据库还原与恢复
./dmrman CTLSTMT="RESTORE DATABASE '/dm/data/DAMENG/dm.ini' FROM BACKUPSET '/dm/data/BACKUP_FILE_01'"
./dmrman CTLSTMT="RECOVER DATABASE '/dm/data/DAMENG/dm.ini' FROM BACKUPSET '/dm/data/BACKUP_FILE_01'"
./dmrman CTLSTMT="RECOVER DATABASE '/dm/data/DAMENG/dm.ini' UPDATE DB_MAGIC"
3、配置主库
3.1 配置 dm.ini
##实例名,建议使用“组名_守护环境_序号”的命名方式,总长度不能超过16INSTANCE_NAME = GRP1_RT_01PORT_NUM = 32141 ##数据库实例监听端口DW_INACTIVE_INTERVAL = 60 ##接收守护进程消息超时时间ALTER_MODE_STATUS = 0 ##不允许手工方式修改实例模式/状态/OGUIDENABLE_OFFLINE_TS = 2 ##不允许备库OFFLINE表空间MAL_INI = 1 ##打开MAL系统ARCH_INI = 1 ##打开归档配置RLOG_SEND_APPLY_MON = 64 ##统计最近64次的日志发送信息
3.2 配置 dmmal.ini
配置 MAL 系统,各主备库的 dmmal.ini 配置必须完全一致,MAL_HOST 使用内部网络 IP,MAL_PORT 与 dm.ini 中 PORT_NUM 使用不同的端口值,MAL_DW_PORT 是各实例对应的守护进程之间,以及守护进程和监视器之间的通信端口,配置如下:
MAL_CHECK_INTERVAL = 5 ##MAL链路检测时间间隔MAL_CONN_FAIL_INTERVAL = 5 ##判定MAL链路断开的时间[MAL_INST1]MAL_INST_NAME = GRP1_RT_01 ##实例名,和dm.ini中的INSTANCE_NAME一致MAL_HOST = 192.168.169.141 ##MAL系统监听TCP连接的IP地址MAL_PORT = 61141 ##MAL系统监听TCP连接的端口MAL_INST_HOST = 192.168.64.131 ##实例的对外服务IP地址MAL_INST_PORT = 32141 ##实例的对外服务端口,和dm.ini中的PORT_NUM一致MAL_DW_PORT = 52141 ##实例本地的守护进程监听TCP连接的端口MAL_INST_DW_PORT = 33141 ##实例监听守护进程TCP连接的端口[MAL_INST2]MAL_INST_NAME = GRP1_RT_02MAL_HOST = 192.168.169.142MAL_PORT = 61142MAL_INST_HOST = 192.168.64.132MAL_INST_PORT = 32142MAL_DW_PORT = 52142MAL_INST_DW_PORT = 33142
3.3 配置 dmarch.ini
修改 dmarch.ini,配置本地归档和实时归档。
除了本地归档外,其他归档配置项中的 ARCH_DEST 表示实例是 Primary 模式时,需要同步归档数据的目标实例名。
当前实例 GRP1_RT_01 是主库,需要向 GRP1_RT_02(实时备库)同步数据,因此实时归档的 ARCH_DEST 配置为 GRP1_RT_02。
[ARCHIVE_REALTIME]ARCH_TYPE = REALTIME ##实时归档类型ARCH_DEST = GRP1_RT_02 ##实时归档目标实例名[ARCHIVE_LOCAL1]ARCH_TYPE = LOCAL ##本地归档类型ARCH_DEST = /dm/data/DAMENG/arch ##本地归档文件存放路径ARCH_FILE_SIZE = 128 ##单位Mb,本地单个归档文件最大值ARCH_SPACE_LIMIT = 0 ##单位Mb,0表示无限制,范围1024~2147483647M
3.4 配置 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 = /dm/data/DAMENG/dm.ini ##dm.ini配置文件路径INST_AUTO_RESTART = 1 ##打开实例的自动启动功能INST_STARTUP_CMD = /dm/bin/dmserver ##命令行方式启动RLOG_SEND_THRESHOLD = 0 ##指定主库发送日志到备库的时间阈值,默认关闭RLOG_APPLY_THRESHOLD = 0 ##指定备库重演日志的时间阈值,默认关闭
3.5 启动主库为mount
以 Mount 方式启动主库
./dmserver /dm/data/DAMENG/dm.ini mount
3.6 设置 OGUID
系统通过OGUID值确定一个守护进程组,确保数据守护系统中,数据库、守护进程和监视器配置相同的OGUID值。
SQL>SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 1);SQL>sp_set_oguid(453331);SQL>SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 0);
3.7 修改数据库模式
SQL>SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 1);SQL>alter database primary;SQL>SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 0);
4、配置备库
4.1 配置 dm.ini
##实例名,建议使用“组名_守护环境_序号”的命名方式,总长度不能超过16INSTANCE_NAME = GRP1_RT_02PORT_NUM = 32142 ##数据库实例监听端口DW_INACTIVE_INTERVAL = 60 ##接收守护进程消息超时时间ALTER_MODE_STATUS = 0 ##不允许手工方式修改实例模式/状态/OGUIDENABLE_OFFLINE_TS = 2 ##不允许备库OFFLINE表空间MAL_INI = 1 ##打开MAL系统ARCH_INI = 1 ##打开归档配置RLOG_SEND_APPLY_MON = 64 ##统计最近64次的日志重演信息
4.2 配置 dmmal.ini
MAL_CHECK_INTERVAL = 5 ##MAL链路检测时间间隔MAL_CONN_FAIL_INTERVAL = 5 ##判定MAL链路断开的时间[MAL_INST1]MAL_INST_NAME = GRP1_RT_01 ##实例名,和dm.ini中的INSTANCE_NAME一致MAL_HOST = 192.168.169.141 ##MAL系统监听TCP连接的IP地址MAL_PORT = 61141 ##MAL系统监听TCP连接的端口MAL_INST_HOST = 192.168.64.131 ##实例的对外服务IP地址MAL_INST_PORT = 32141 ##实例的对外服务端口,和dm.ini中的PORT_NUM一致MAL_DW_PORT = 52141 ##实例对应的守护进程监听TCP连接的端口MAL_INST_DW_PORT = 33141 ##实例监听守护进程TCP连接的端口[MAL_INST2]MAL_INST_NAME = GRP1_RT_02MAL_HOST = 192.168.169.142MAL_PORT = 61142MAL_INST_HOST = 192.168.64.132MAL_INST_PORT = 32142MAL_DW_PORT = 52142MAL_INST_DW_PORT = 33142
4.3 配置 dmarch.ini
[ARCHIVE_REALTIME]ARCH_TYPE = REALTIME ##实时归档类型ARCH_DEST = GRP1_RT_01 ##实时归档目标实例名[ARCHIVE_LOCAL1]ARCH_TYPE = LOCAL ##本地归档类型ARCH_DEST = /dm/data/DAMENG/arch ##本地归档文件路径ARCH_FILE_SIZE = 128 ##单位Mb,本地单个归档文件最大值ARCH_SPACE_LIMIT = 0 ##单位Mb,0表示无限制,范围1024~2147483647M
4.4 配置 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 = /dm/data/DAMENG/dm.ini ##dm.ini配置文件路径INST_AUTO_RESTART = 1 ##打开实例的自动启动功能INST_STARTUP_CMD = /dm/bin/dmserver ##命令行方式启动RLOG_APPLY_THRESHOLD = 0 ##指定备库重演日志的时间阈值,默认关闭
4.5 启动备库为mount
./dmserver /dm/data/DAMENG/dm.ini mount
4.6 设置 OGUID
SQL>SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 1);SQL>sp_set_oguid(453331);SQL>SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 0);
4.7 修改数据库模式
SQL>SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 1); //第1步SQL>alter database standby; //第2步SQL>SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 0); //第3步
5 、配置监视器
在主库发生故障时,能够自动通知实时备库接管为新的主库,具有自动故障处理的功能。
5.1 配置单实例监视器
在/dm/data目录下配置dmmonitor.ini
MON_DW_CONFIRM = 1 ##确认监视器模式MON_LOG_PATH = /dm/data/log ##监视器日志文件存放路径MON_LOG_INTERVAL = 60 ##每隔60s定时记录系统信息到日志文件MON_LOG_FILE_SIZE = 32 ##每个日志文件最大32MMON_LOG_SPACE_LIMIT = 0 ##不限定日志文件总占用空间[GRP1]MON_INST_OGUID = 453331 ##组GRP1的唯一OGUID值##以下配置为监视器到组GRP1的守护进程的连接信息,以“IP:PORT”的形式配置##IP对应dmmal.ini中的MAL_HOST,PORT对应dmmal.ini中的MAL_DW_PORTMON_DW_IP = 192.168.169.141:52141MON_DW_IP = 192.168.169.142:52142
5.2 配置多实例监视器
各实例的 MON_ID 与 MON_INST_ID 应相同。
MON_LOG_PATH = /dm/data/logMON_LOG_INTERVAL = 60MON_LOG_FILE_SIZE = 32MON_LOG_SPACE_LIMIT = 0MON_DW_CONFIRM = 1MON_INST_NUM = 3 ##实例总个数MON_HB_INTERVAL = 60 ##通信心跳校验间隔MON_BRO_INTERVAL = 100 ##raft协议中实例通信心跳间隔MON_VOTE_INTERVAL = 100 ##raft协议中基础投票间隔MON_ID = 1 ##当前监视器在监视器系统中的IDMON_MID = 45614 ##当前监视器系统的唯一标识[GRP1]MON_INST_OGUID = 453331MON_DW_IP = 192.168.169.141:52141MON_DW_IP = 192.168.169.142:52142[MON1]MON_HOST = 192.168.169.141 ##系统监听TCP连接的IP地址MON_PORT = 8339 ##系统监听TCP连接的端口号MON_INST_ID = 1 ##监视器实例在监视器系统中的ID[MON2]MON_HOST = 192.168.169.141 ##系统监听TCP连接的IP地址MON_PORT = 8340 ##系统监听TCP连接的端口号MON_INST_ID = 2 ##监视器实例在监视器系统中的ID[MON3]MON_HOST = 192.168.169.141 ##系统监听TCP连接的IP地址MON_PORT = 8341 ##系统监听TCP连接的端口号MON_INST_ID = 3 ##监视器实例在监视器系统中的ID
6 、启动守护进程
./dmwatcher /dm/data/DAMENG/dmwatcher.ini
守护进程启动后,进入 Startup 状态,此时实例都处于 Mount 状态。守护进程开始广播自身和其监控实例的状态信息,结合自身信息和远程守护进程的广播信息,守护进程将本地实例 Open,并切换为 Open 状态。
7 、启动监视器
多实例确认监视器系统中,需逐个单独启动各监视器。
启动监视器:
./dmmonitor /dm/data/dmmonitor.ini
至此一主一备的实时数据守护系统搭建完毕,在搭建步骤和各项配置都正确的情况下,在监视器上执行 show 命令,可以监控到所有实例都处于 Open 状态,所有守护进程也都处于 Open 状态,即为正常运行状态。
达梦技术社区:https://eco.dameng.com/
相关文章:
达梦数据库系列—17. 主备集群搭建-实时主备
目录 配置实时主备 1、环境说明 2、数据准备 脱机备份、脱机还原方式 联机备份、脱机还原方式 3、配置主库 3.1 配置 dm.ini 3.2 配置 dmmal.ini 3.3 配置 dmarch.ini 3.4 配置 dmwatcher.ini 3.5 启动主库为mount 3.6 设置 OGUID 3.7 修改数据库模式 4、配置备库…...
【24医学顶刊】GANDALF:主动学习 + 图注意力变换器 + 变分自编码器,改善多标签图像分类
GANDALF:主动学习 图注意力变换器 变分自编码器,改善多标签图像分类 提出背景子解法1:多标签信息样本的选择子解法2:生成信息丰富且非冗余的合成样本 例子:胸部X射线图像分析传统方法的操作和局限GaNDLF方法的优势 工…...
Linux 权限介绍
文章目录 Linux 权限介绍权限类型权限的数字表示查看文件信息修改权限相关指令 Linux 权限介绍 在 Linux 系统中,权限管理是非常重要的一部分,它确保了系统的安全性和文件的合理访问。 权限类型 [ r ]代表可读(read)࿱…...
kernel header解析
一、kernel header定义: aarch64 kernel header u32 code0; /* Executable code */ u32 code1; /* Executable code */ u64 text_offset; /* Image load offset, little endian */ u64 image_size; /* Effective Image size, little…...
MQ运行时遇到的问题
遇到的问题描述:我在绑定通道的时候发现了通道绑定失败, 原因: 在代码中我第一次创建交换机的时候类型的默认没有修改成topic类型的,导致后面的代码再去进行注册的时候并没有实现那个类型 解决: 更改代码࿰…...
EDI是什么?与ERP有何关系
EDI的发展过程 电子数据交换(Electronic Data Interchange,EDI)是一种通过电子方式传输商业文件的技术。EDI的历史可以追溯到20世纪60年代,当时企业开始使用计算机进行数据处理。最早的EDI系统是为解决大型企业间的信息交换问题而…...
【MotionCap】在wsl2 ubuntu20.04构建及运行
https://github.com/MVIG-SJTU/AlphaPose/issues/1157conda create -n alphapose python=3.7 -y conda activate alphapose conda install pytorch==1.12.1 torchvision==0.13.1 torchaudio==0.12.1...
iptables 防火墙(二)
iptables 防火墙(二) 一、SNAT 策略及应用SNAT 策略概述SNAT 策略的应用 二、DNAT 策略及应用DNAT 策略概述 三、规则的导出、导入规则的备份及还原iptables-save 命令iptables-restore 命令 使用 iptables 服务 四、使用防火墙脚本防火墙脚本的构成防火…...
【机器学习】在【PyCharm中的学习】:从【基础到进阶的全面指南】
目录 第一步:基础准备 1.1 Python基础 1.1.1 学习Python的基本语法 1.1.2 控制流 1.1.3 函数和模块 1.2 安装PyCharm 1.2.1 下载并安装 第二步:数据科学基础 2.1 安装必备库 2.1.1 使用pip安装 2.2 数据操作 2.2.1 Pandas基础操作 2.2.2 Nu…...
idea Error running ‘Application‘
1、Error running ‘Application’ Error running ApplicationError running Application. Command line is too long.Shorten the command line via JAR manifest or via a classpath file and rerun.找到 .idea/libraies/workspace.xml 中的 PropertiesComponent 属性&#…...
数据结构和顺序表
什么是数据结构 数据结构是相互之间存在一种或多种特定关系的数据元素的集合。 数据元素的三要素 数据结构包括三方面的内容:逻辑结构、存储结构、数据的运算。 逻辑结构 逻辑结构是指数据元素之间的逻辑关系,即从逻辑关系上描述数据。数据的逻辑结…...
【一步一步了解Java系列】:对这个系列的总结以及对缺漏内部类知识的补充
看到这句话的时候证明:此刻你我都在努力 加油陌生人 br />个人主页:Gu Gu Study专栏:一步一步了解Java 喜欢的一句话: 常常会回顾努力的自己,所以要为自己的努力留下足迹 喜欢的话可以点个赞谢谢了。 作者…...
TCP和UDP
目录 TCPUDPTCP 传输控制协议(Transmission Control Protocol, TCP)是一种面向连接的,可靠的,基于字节流的传输层通信协议。在该层,另一个重要传输协议是用户数据包协议(UDP)。 数据在TCP层称为流Stream,数组分组称为分段Segment。相对的在IP层,数据称为Datagram, 数…...
【ai】tx2 nx:ubuntu18.04 yolov4-triton-tensorrt 成功部署server 运行
isarsoft / yolov4-triton-tensorrt运行发现插件未注册? 【ai】tx2 nx: jetson Triton Inference Server 部署YOLOv4 【ai】tx2 nx: jetson Triton Inference Server 运行YOLOv4 对main 进行了重新构建 【ai】tx2 nx :ubuntu查找NvInfer.h 路径及哪个包、查找符号【ai】tx2…...
类与对象的创建
1.类是一种抽象的数据类型,他是对某一类事务整体描述/定义,但是并不能代表某一个具体的事物 eg:动物,植物,手机,电脑... Person类,Pet类,Car类,这些类都是用来描述、定义…...
基于单片机的 LED 照明灯智能调光系统设计
摘 要: 社会经济的不断发展,推动了智能化生活的进程,智能调光技术开始广泛应用在生活中,人们也逐渐提高了灯光亮灯率等的要求。基于此,笔者主要设计了基于单片机的 LED 照明灯智能调光系统,希望能够为相关…...
客户满意度调查方法有哪些
用户满意度调查作为改进用户体验工作中重要的一项活动,可以帮助企业深入了解客户对产品服务各方面评价。有许多企业想开展客户满意度调查,但是在调查方式上不清楚该用那种方式?另外还要考虑预算,民安智库(公众满意度调…...
为什么企业应用开发,c++干不过java?
在开始前刚好我有一些资料,是我根据网友给的问题精心整理了一份「c的资料从专业入门到高级教程」, 点个关注在评论区回复“888”之后私信回复“888”,全部无偿共享给大家!!! C/C这种东西,根本…...
基于盲信号处理的声音分离——最小化增益的ICA算法
基于最小化增益的ICA算法的算法是依据混合信号经过盲信号分离会产生一定的噪声,为了使得分离后的信号与原信号的比值最小时,叫做增益最小。当增益越小时,分离后噪声越小,分离信号越接近原信号,分离算法的效果越好。这是…...
自动化代码规范检查--Sonarqube部署
参考文档 官方文档安装数据库 官方给出几种数据库: # 我们选用postgres, 拉取镜像 docker pull postgres:16.0# 创建存储卷 docker volume create postgresql-data# 运行容器 docker run -d --name sonarqube-postgres \-p 5432:5432 \-e POSTGRES_DB=sonar_DB \-e POSTGRE…...
TDengine 快速体验(Docker 镜像方式)
简介 TDengine 可以通过安装包、Docker 镜像 及云服务快速体验 TDengine 的功能,本节首先介绍如何通过 Docker 快速体验 TDengine,然后介绍如何在 Docker 环境下体验 TDengine 的写入和查询功能。如果你不熟悉 Docker,请使用 安装包的方式快…...
【Oracle APEX开发小技巧12】
有如下需求: 有一个问题反馈页面,要实现在apex页面展示能直观看到反馈时间超过7天未处理的数据,方便管理员及时处理反馈。 我的方法:直接将逻辑写在SQL中,这样可以直接在页面展示 完整代码: SELECTSF.FE…...
YSYX学习记录(八)
C语言,练习0: 先创建一个文件夹,我用的是物理机: 安装build-essential 练习1: 我注释掉了 #include <stdio.h> 出现下面错误 在你的文本编辑器中打开ex1文件,随机修改或删除一部分,之后…...
从深圳崛起的“机器之眼”:赴港乐动机器人的万亿赛道赶考路
进入2025年以来,尽管围绕人形机器人、具身智能等机器人赛道的质疑声不断,但全球市场热度依然高涨,入局者持续增加。 以国内市场为例,天眼查专业版数据显示,截至5月底,我国现存在业、存续状态的机器人相关企…...
ETLCloud可能遇到的问题有哪些?常见坑位解析
数据集成平台ETLCloud,主要用于支持数据的抽取(Extract)、转换(Transform)和加载(Load)过程。提供了一个简洁直观的界面,以便用户可以在不同的数据源之间轻松地进行数据迁移和转换。…...
Matlab | matlab常用命令总结
常用命令 一、 基础操作与环境二、 矩阵与数组操作(核心)三、 绘图与可视化四、 编程与控制流五、 符号计算 (Symbolic Math Toolbox)六、 文件与数据 I/O七、 常用函数类别重要提示这是一份 MATLAB 常用命令和功能的总结,涵盖了基础操作、矩阵运算、绘图、编程和文件处理等…...
AI编程--插件对比分析:CodeRider、GitHub Copilot及其他
AI编程插件对比分析:CodeRider、GitHub Copilot及其他 随着人工智能技术的快速发展,AI编程插件已成为提升开发者生产力的重要工具。CodeRider和GitHub Copilot作为市场上的领先者,分别以其独特的特性和生态系统吸引了大量开发者。本文将从功…...
JUC笔记(上)-复习 涉及死锁 volatile synchronized CAS 原子操作
一、上下文切换 即使单核CPU也可以进行多线程执行代码,CPU会给每个线程分配CPU时间片来实现这个机制。时间片非常短,所以CPU会不断地切换线程执行,从而让我们感觉多个线程是同时执行的。时间片一般是十几毫秒(ms)。通过时间片分配算法执行。…...
使用 Streamlit 构建支持主流大模型与 Ollama 的轻量级统一平台
🎯 使用 Streamlit 构建支持主流大模型与 Ollama 的轻量级统一平台 📌 项目背景 随着大语言模型(LLM)的广泛应用,开发者常面临多个挑战: 各大模型(OpenAI、Claude、Gemini、Ollama)接口风格不统一;缺乏一个统一平台进行模型调用与测试;本地模型 Ollama 的集成与前…...
听写流程自动化实践,轻量级教育辅助
随着智能教育工具的发展,越来越多的传统学习方式正在被数字化、自动化所优化。听写作为语文、英语等学科中重要的基础训练形式,也迎来了更高效的解决方案。 这是一款轻量但功能强大的听写辅助工具。它是基于本地词库与可选在线语音引擎构建,…...
