当前位置: 首页 > news >正文

Mongodb 副本集名称重命名

副本集重命名

要重命名副本集,您必须关闭副本集的所有成员,然后使用新的副本集名称配置每个成员的数据库。

此过程需要停机。

先决条件

确保您的副本集未分片。重命名过程仅适用于未分片的副本集。

在重命名副本集之前,请 对 MongoDB 部署执行完整备份。

做好备份非常重要,无论如何,请先在测试环境验证后再执行该操作

启用身份验证后,请确保您的用户角色对每个成员数据库中的集合具有 find、insert 和 remove 权限。

db.runCommand({rolesInfo: { role: "xxxxx", db: "yyyyyy" },showPrivileges: true}
)

授权

db.getUser("admin")
{"_id" : "admin.admin","userId" : UUID("adb37ec9-89e9-464b-a241-029194bec6ef"),"user" : "admin","db" : "admin","roles" : [{"role" : "root","db" : "admin"}],"mechanisms" : ["SCRAM-SHA-1","SCRAM-SHA-256"]
}db.createRole({role: "collectionRole",privileges: [{ resource: { db: "local", collection: "system.replset" }, actions: [ "find", "remove", "insert" ] }],roles: []}
)db.grantRolesToUser("admin",[{"role":"collectionRole","db":"admin"}])db.getUser("admin")
{"_id" : "admin.admin","userId" : UUID("adb37ec9-89e9-464b-a241-029194bec6ef"),"user" : "admin","db" : "admin","roles" : [{"role" : "root","db" : "admin"},{"role" : "collectionRole","db" : "admin"}],"mechanisms" : ["SCRAM-SHA-1","SCRAM-SHA-256"]
}

关闭副本集成员

此步骤需要停机,因为所有副本成员都需要关闭。

当前副本集名称 “set” : “sit_rs1”

{"set" : "sit_rs1","date" : ISODate("2023-11-10T08:08:08.707Z"),"myState" : 1,......"members" : [{"_id" : 1,"name" : "192.168.88.11:27018","health" : 1,"state" : 2,"stateStr" : "SECONDARY",......},{"_id" : 3,"name" : "192.168.88.11:27017","health" : 1,"state" : 1,"stateStr" : "PRIMARY",......},{"_id" : 4,"name" : "192.168.88.11:27019","health" : 1,"state" : 2,"stateStr" : "SECONDARY",.....}],"ok" : 1,"$clusterTime" : {"clusterTime" : Timestamp(1699603684, 1),"signature" : {"hash" : BinData(0,"yDDKmbDiNNhNxzN+xh20IjGyr3o="),"keyId" : NumberLong("7236938018798436354")}},"operationTime" : Timestamp(1699603684, 1)
}

关闭副本集成员,三台都关闭

# shutdown 27019
su mongodb -s /bin/bash -c "/usr/local/mongodb/bin/mongod --dbpath /data/mongodb27019/data  --port 27019  --shutdown"# shutdown 27018
su mongodb -s /bin/bash -c "/usr/local/mongodb/bin/mongod --dbpath /data/mongodb27018/data  --port 27018  --shutdown"# shutdown 27017
su mongodb -s /bin/bash -c "/usr/local/mongodb/bin/mongod --dbpath /data/mongodb/data  --port 27017  --shutdown"

重命名副本集

对每个副本集成员执行以下步骤: ( 以其中一台 27019 为例 )

  • 不带 --replSet 该选项 的情况下在不同端口上启动副本集成员 (如下注释掉 replication 选项。 端口改为 28019
root@ubuntu-x64_01:/opt# cat /etc/mongod27019.conf  
systemLog:destination: filepath: "/data/mongodb27019/log/mongod.log"logAppend: true
storage:dbPath: "/data/mongodb27019/data"journal:enabled: truedirectoryPerDB: true
processManagement:fork: true  
net:bindIp: localhost,192.168.88.11#port: 27019port: 28019maxIncomingConnections: 65536
security:keyFile: "/data/mongodb27019/data/replsetAIK"clusterAuthMode: "keyFile"authorization: enabled
#replication:
#   replSetName: "sit_rs1"
#   enableMajorityReadConcern: true

启动副本集成员:

root@ubuntu-x64_01:/opt# su mongodb -s /bin/bash -c "/usr/local/mongodb/bin/mongod --config /etc/mongod27019.conf 2>&1 >/dev/null &"

更新副本集名称。

如果使用配置文件,请设置 replication.replSetName 为新名称。replSetName: “sit_rs1” 变更为 replSetName: “local_rs1”

root@ubuntu-x64_01:/opt# cat /etc/mongod27019.conf 
systemLog:destination: filepath: "/data/mongodb27019/log/mongod.log"logAppend: true
storage:dbPath: "/data/mongodb27019/data"journal:enabled: truedirectoryPerDB: true
processManagement:fork: true  
net:bindIp: localhost,192.168.88.11#port: 27019port: 28019maxIncomingConnections: 65536
security:keyFile: "/data/mongodb27019/data/replsetAIK"clusterAuthMode: "keyFile"authorization: enabled
replication:replSetName: "local_rs1"enableMajorityReadConcern: true

使用以下命令更新本地数据库中的副本集名称:

> use local 
switched to db local> db.system.replset.find().pretty()
{"_id" : "sit_rs1","version" : 20,"term" : 249,"protocolVersion" : NumberLong(1),"writeConcernMajorityJournalDefault" : true,"members" : [{"_id" : 1,"host" : "192.168.88.11:27018","arbiterOnly" : false,"buildIndexes" : true,"hidden" : false,"priority" : 1,"tags" : {},"slaveDelay" : NumberLong(0),"votes" : 1},{"_id" : 3,"host" : "192.168.88.11:27017","arbiterOnly" : false,"buildIndexes" : true,"hidden" : false,"priority" : 1,"tags" : {},"slaveDelay" : NumberLong(0),"votes" : 1},{"_id" : 4,"host" : "192.168.88.11:27019","arbiterOnly" : false,"buildIndexes" : true,"hidden" : false,"priority" : 1,"tags" : {},"slaveDelay" : NumberLong(0),"votes" : 1}],"settings" : {"chainingAllowed" : true,"heartbeatIntervalMillis" : 2000,"heartbeatTimeoutSecs" : 10,"electionTimeoutMillis" : 10000,"catchUpTimeoutMillis" : -1,"catchUpTakeoverDelayMillis" : 30000,"getLastErrorModes" : {},"getLastErrorDefaults" : {"w" : 1,"wtimeout" : 0},"replicaSetId" : ObjectId("6305db8beb57aaf6f57b130e")}
}> var newId = 'local_rs1'> var doc = db.getSiblingDB("local").system.replset.findOne()> var oldId = doc._id> print(oldId, newId)
sit_rs1 local_rs1> doc._id = newId
local_rs1> db.getSiblingDB("local").system.replset.insertOne(doc)
{ "acknowledged" : true, "insertedId" : "local_rs1" }> db.getSiblingDB("local").system.replset.deleteOne({_id: oldId})
{ "acknowledged" : true, "deletedCount" : 1 }> db.getSiblingDB("local").system.replset.find().pretty()
{"_id" : "local_rs1","version" : 20,"term" : 249,"protocolVersion" : NumberLong(1),"writeConcernMajorityJournalDefault" : true,"members" : [{"_id" : 1,"host" : "192.168.88.11:27018","arbiterOnly" : false,"buildIndexes" : true,"hidden" : false,"priority" : 1,"tags" : {},"slaveDelay" : NumberLong(0),"votes" : 1},{"_id" : 3,"host" : "192.168.88.11:27017","arbiterOnly" : false,"buildIndexes" : true,"hidden" : false,"priority" : 1,"tags" : {},"slaveDelay" : NumberLong(0),"votes" : 1},{"_id" : 4,"host" : "192.168.88.11:27019","arbiterOnly" : false,"buildIndexes" : true,"hidden" : false,"priority" : 1,"tags" : {},"slaveDelay" : NumberLong(0),"votes" : 1}],"settings" : {"chainingAllowed" : true,"heartbeatIntervalMillis" : 2000,"heartbeatTimeoutSecs" : 10,"electionTimeoutMillis" : 10000,"catchUpTimeoutMillis" : -1,"catchUpTakeoverDelayMillis" : 30000,"getLastErrorModes" : {},"getLastErrorDefaults" : {"w" : 1,"wtimeout" : 0},"replicaSetId" : ObjectId("6305db8beb57aaf6f57b130e")}
}

关闭副本集成员,在其原始端口上启动副本集成员。如果使用配置文件,请确保将其 replication.replSetName 已经设置为新的副本集名称。

replication:replSetName: "local_rs1"enableMajorityReadConcern: true

在其原始端口上启动副本集成员。

root@ubuntu-x64_01:/opt#  cat /etc/mongod27019.conf
systemLog:destination: filepath: "/data/mongodb27019/log/mongod.log"logAppend: true
storage:dbPath: "/data/mongodb27019/data"journal:enabled: truedirectoryPerDB: true
processManagement:fork: true  
net:bindIp: localhost,192.168.88.11port: 27019maxIncomingConnections: 65536
security:keyFile: "/data/mongodb27019/data/replsetAIK"clusterAuthMode: "keyFile"authorization: enabled
replication:replSetName: "local_rs1"enableMajorityReadConcern: true

按上面的操作,在另外两个实例都执行一遍后, 执行修改后,整个副本集状态如下:

local_rs1:PRIMARY> rs.status()
{"set" : "local_rs1","date" : ISODate("2023-11-15T11:25:05.087Z"),"myState" : 1,"term" : NumberLong(251),"syncSourceHost" : "","syncSourceId" : -1,"heartbeatIntervalMillis" : NumberLong(2000),"majorityVoteCount" : 2,"writeMajorityCount" : 2,"votingMembersCount" : 3,"writableVotingMembersCount" : 3,"optimes" : {"lastCommittedOpTime" : {"ts" : Timestamp(1700047503, 1),"t" : NumberLong(251)},"lastCommittedWallTime" : ISODate("2023-11-15T11:25:03.985Z"),"readConcernMajorityOpTime" : {"ts" : Timestamp(1700047503, 1),"t" : NumberLong(251)},"readConcernMajorityWallTime" : ISODate("2023-11-15T11:25:03.985Z"),"appliedOpTime" : {"ts" : Timestamp(1700047503, 1),"t" : NumberLong(251)},"durableOpTime" : {"ts" : Timestamp(1700047503, 1),"t" : NumberLong(251)},"lastAppliedWallTime" : ISODate("2023-11-15T11:25:03.985Z"),"lastDurableWallTime" : ISODate("2023-11-15T11:25:03.985Z")},"lastStableRecoveryTimestamp" : Timestamp(1700047503, 1),"electionCandidateMetrics" : {"lastElectionReason" : "electionTimeout","lastElectionDate" : ISODate("2023-11-15T11:16:43.867Z"),"electionTerm" : NumberLong(251),"lastCommittedOpTimeAtElection" : {"ts" : Timestamp(0, 0),"t" : NumberLong(-1)},"lastSeenOpTimeAtElection" : {"ts" : Timestamp(1699610346, 1),"t" : NumberLong(249)},"numVotesNeeded" : 2,"priorityAtElection" : 1,"electionTimeoutMillis" : NumberLong(10000),"numCatchUpOps" : NumberLong(0),"newTermStartDate" : ISODate("2023-11-15T11:16:43.877Z"),"wMajorityWriteAvailabilityDate" : ISODate("2023-11-15T11:16:44.535Z")},"members" : [{"_id" : 1,"name" : "192.168.88.11:27018","health" : 1,"state" : 2,"stateStr" : "SECONDARY","uptime" : 511,"optime" : {"ts" : Timestamp(1700047503, 1),"t" : NumberLong(251)},"optimeDurable" : {"ts" : Timestamp(1700047503, 1),"t" : NumberLong(251)},"optimeDate" : ISODate("2023-11-15T11:25:03Z"),"optimeDurableDate" : ISODate("2023-11-15T11:25:03Z"),"lastAppliedWallTime" : ISODate("2023-11-15T11:25:03.985Z"),"lastDurableWallTime" : ISODate("2023-11-15T11:25:03.985Z"),"lastHeartbeat" : ISODate("2023-11-15T11:25:04.468Z"),"lastHeartbeatRecv" : ISODate("2023-11-15T11:25:03.448Z"),"pingMs" : NumberLong(0),"lastHeartbeatMessage" : "","syncSourceHost" : "192.168.88.11:27019","syncSourceId" : 4,"infoMessage" : "","configVersion" : 20,"configTerm" : 251},{"_id" : 3,"name" : "192.168.88.11:27017","health" : 1,"state" : 2,"stateStr" : "SECONDARY","uptime" : 26,"optime" : {"ts" : Timestamp(1700047503, 1),"t" : NumberLong(251)},"optimeDurable" : {"ts" : Timestamp(1700047503, 1),"t" : NumberLong(251)},"optimeDate" : ISODate("2023-11-15T11:25:03Z"),"optimeDurableDate" : ISODate("2023-11-15T11:25:03Z"),"lastAppliedWallTime" : ISODate("2023-11-15T11:25:03.985Z"),"lastDurableWallTime" : ISODate("2023-11-15T11:25:03.985Z"),"lastHeartbeat" : ISODate("2023-11-15T11:25:04.520Z"),"lastHeartbeatRecv" : ISODate("2023-11-15T11:25:04.285Z"),"pingMs" : NumberLong(0),"lastHeartbeatMessage" : "","syncSourceHost" : "192.168.88.11:27019","syncSourceId" : 4,"infoMessage" : "","configVersion" : 20,"configTerm" : 251},{"_id" : 4,"name" : "192.168.88.11:27019","health" : 1,"state" : 1,"stateStr" : "PRIMARY","uptime" : 16264,"optime" : {"ts" : Timestamp(1700047503, 1),"t" : NumberLong(251)},"optimeDate" : ISODate("2023-11-15T11:25:03Z"),"lastAppliedWallTime" : ISODate("2023-11-15T11:25:03.985Z"),"lastDurableWallTime" : ISODate("2023-11-15T11:25:03.985Z"),"syncSourceHost" : "","syncSourceId" : -1,"infoMessage" : "","electionTime" : Timestamp(1700047003, 1),"electionDate" : ISODate("2023-11-15T11:16:43Z"),"configVersion" : 20,"configTerm" : 251,"self" : true,"lastHeartbeatMessage" : ""}],"ok" : 1,"$clusterTime" : {"clusterTime" : Timestamp(1700047503, 1),"signature" : {"hash" : BinData(0,"FkEFPk5B3ZB364V3c3RkkEoBChI="),"keyId" : NumberLong("7236938018798436354")}},"operationTime" : Timestamp(1700047503, 1)
}

回收权限,由于角色是临时授权的,操作结束后,回收该集合的变更权限

local_rs1:PRIMARY> use admin 
switched to db adminlocal_rs1:PRIMARY> db.getUser("admin")
{"_id" : "admin.admin","userId" : UUID("adb37ec9-89e9-464b-a241-029194bec6ef"),"user" : "admin","db" : "admin","roles" : [{"role" : "root","db" : "admin"},{"role" : "collectionRole","db" : "admin"}],"mechanisms" : ["SCRAM-SHA-1","SCRAM-SHA-256"]
}local_rs1:PRIMARY> db.revokeRolesFromUser("admin",[{"role":"collectionRole","db":"admin"}])local_rs1:PRIMARY> db.getUser("admin")
{"_id" : "admin.admin","userId" : UUID("adb37ec9-89e9-464b-a241-029194bec6ef"),"user" : "admin","db" : "admin","roles" : [{"role" : "root","db" : "admin"}],"mechanisms" : ["SCRAM-SHA-1","SCRAM-SHA-256"]
}

相关文章:

Mongodb 副本集名称重命名

副本集重命名 要重命名副本集,您必须关闭副本集的所有成员,然后使用新的副本集名称配置每个成员的数据库。 此过程需要停机。 先决条件 确保您的副本集未分片。重命名过程仅适用于未分片的副本集。 在重命名副本集之前,请 对 MongoDB 部…...

C#WPF属性触发器实例

本文讲解C#WPF属性触发器的实例 在属性触发器中,当一个属性发生更改时,它将立即或动画更改另一个属性 实例 <Windowx:Class="TriggerDemo.MainWindow"xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x="http://sch…...

Kotlin 核心语法,为什么选择Kotlin ?

Kotlin 是一个基于 JVM 的新的编程语言&#xff0c;由 JetBrains 开发。与Java相比&#xff0c;Kotlin的语法更简洁、更具表达性&#xff0c;而且提供了更多的特性。 Kotlin是使用Java开发者的思维被创建的&#xff0c;Intellij作为它主要的开发IDE。对于 Android开发者&#…...

SpringCloud微服务:Nacos的集群、负载均衡、环境隔离

目录 集群 在user-service的yml文件配置集群 启动服务 负载均衡 order-service配置集群 设置负载均衡 当本地集群的服务挂掉时 访问权重 环境隔离 1、Nacos服务分级存储模型 一级是服务&#xff0c;例如userservice 二级是集群&#xff0c;例如杭州或上海 …...

Selenium+Python做web端自动化测试框架实战

最近受到万点暴击&#xff0c;由于公司业务出现问题&#xff0c;工作任务没那么繁重&#xff0c;有时间摸索seleniumpython自动化测试&#xff0c;结合网上查到的资料自己编写出适合web自动化测试的框架&#xff0c;由于本人也是刚刚开始学习python&#xff0c;这套自动化框架目…...

Linux:安装MySQL服务(非docker方式)

1、下载安装包 下载MySQL安装包&#xff0c;需要Oracle官网的账号 下面是网友提供的账号及密码&#xff0c;亲测有效。 账户&#xff1a;3028064308qq.com 我用的这个&#xff0c;可以登陆 密码&#xff1a;OraclePassword123!Oracle Account: 602205528qq.com Oracle Pass…...

C++实现有理数类 四则运算和输入输出

面试 C 程序员&#xff0c;什么样的问题是好问题&#xff1f; - 知乎 https://www.cnblogs.com/bwjblogs/p/12982908.html...

小鸟飞呀飞

欢迎来到程序小院 小鸟飞呀飞 玩法&#xff1a;鼠标控制小鸟飞翔的方向&#xff0c;点击鼠标左键上升&#xff0c;不要让小鸟掉落&#xff0c;从管道中经过&#xff0c;快去飞呀飞哦^^。开始游戏https://www.ormcc.com/play/gameStart/204 html <canvas width"288&quo…...

Unity 场景烘培 ——unity Post-Processing后处理1(四)

提示&#xff1a;文章有错误的地方&#xff0c;还望诸位大神不吝指教&#xff01; 文章目录 前言一、Post-Processing是什么&#xff1f;二、安装使用Post-Processing1.安装Post-Processing2.使用Post-Processing&#xff08;1&#xff09;.添加Post-process Volume&#xff08…...

Burpsuite抓HTTPS证书导入问题

Burpsuite证书导出有两种方法&#xff1a; 第一种方法 1、开启代理后直接在浏览器中输入burp下载CA证书 2、在中间证书颁发机构中导入刚导出的证书 3、导入完成后再把这个证书选择导出&#xff0c;另存为cer格式的文件 4、在受信任的根证书颁发机构中导入刚保存的cer格式证书…...

python保存文件到zip压缩包中

这里我们使用zipfile这个库进行操作&#xff0c;保存压缩文件相对简单&#xff0c;只需要指定文件名即可&#xff0c;不需要读取那个文件&#xff1a; with zipfile.ZipFile("zip文件路径", mode, zipfile.ZIP_DEFLATED) as z:z.write("压缩源文件路径", …...

java发送媒体类型为multipart/form-data的请求

文章目录 public static String sendMultipartFormDataPostRequest(String urlString, String data) throws IOException {String fullUrl urlString "?" data;log.info("完整请求路径为{}", fullUrl);URL url new URL(fullUrl);HttpURLConnection co…...

自定义类使用ArrayList中的remove

Java中ArrayList对基础类型和字符串类型的删除操作&#xff0c;直接用remove方法即可。但是对于自定义的类来说&#xff0c;用remove方法删除不了&#xff0c;因为没有办法确定是否是要删除的对象。 ArrayList中remove源码是&#xff1a; public boolean remove(Object o) {if…...

前端面试考核点【更持续新中】

文章目录 HTMLcssjsVueReactTypeScript移动端&小程序编译/打包/构建npmnodejs微前端网络安全浏览器性能OKR工程化、标准化 HTML Script放在body中间会阻塞吗&#xff1f;defer与async的区别&#xff1f;https://blog.csdn.net/qq_41887214/article/details/124909219 DOM和…...

linux-docker安装

​TOC 一&#xff0c;Docker简介 百科说&#xff1a;Docker 是一个开源的应用容器引擎&#xff0c;让开发者可以打包他们的应用以及依赖包到一个可移植的容器中&#xff0c;然后发布到任何流行的Linux机器上&#xff0c;也可以实现虚拟化&#xff0c;容器是完全使用沙箱机制&…...

如何用html css js 画出曲线 或者斜线;

效果图 解题思路 将图片全部定位至中心点&#xff0c;然后x轴就变动translateX &#xff0c;y轴同理&#xff1b; 这里有两个问题 浏览器&#xff1a; 以左上角为原点0&#xff0c;0 越往下y越大 数学坐标系&#xff1a;以中心点为原点0&#xff0c;0 越往下y越小&#xff1…...

【错误记录】Uncaught TypeError: m.nodeName.toLowerCase is not a function

描述&#xff1a;在控制台输出上述错误~ 原因&#xff1a;在页面中&#xff0c;使用jQuery 开发时&#xff0c;命名不能和jQuery一起方法属性冲突&#xff0c;比如这里的nodeName&#xff0c;这里换一个不冲突的名字&#xff0c;就解决问题了。...

王颖奇:ONES.ai 上线,以及我的一些思考

ONES.ai 正式上线&#xff01;为你解锁更智能、更高效的新一代研发管理体验 我们上线了 ONES.ai&#xff0c;当然我们用了公开的 LLM(AI)&#xff0c;目前我们最方便使用的就是公开的 LLM&#xff0c;其实是不是 公开的 LLM 也不重要&#xff0c;在未来可预见的时间内&#xff…...

将AI技术与VR元宇宙相结合的整体解决方案

当前人工智能与VR虚拟现实两大热门技术的融合&#xff0c;正引领着人类走向更智能、更数字化、更便捷、更快速的时代。将这两者结合&#xff0c;AI智能检索应用到VR教学中&#xff0c;将为教育带来前所未有的好处。 个性化教学体验 通过AI智能检索&#xff0c;VR教学可以针对每…...

IPKISS Tutorials 3------绘制矩形版图

IPKISS Tutorials 3------绘制矩形版图 方法1------使用Rectangle函数模块导入与放置层设定创建PCell可视化版图这里给大家介绍一下如何在 IPKISS 绘制一个矩形结构的版图。 方法1------使用Rectangle函数 import si_fab.all as pdk import ipkiss3.all as i3class Box(i3.PC…...

进程地址空间(比特课总结)

一、进程地址空间 1. 环境变量 1 &#xff09;⽤户级环境变量与系统级环境变量 全局属性&#xff1a;环境变量具有全局属性&#xff0c;会被⼦进程继承。例如当bash启动⼦进程时&#xff0c;环 境变量会⾃动传递给⼦进程。 本地变量限制&#xff1a;本地变量只在当前进程(ba…...

高防服务器能够抵御哪些网络攻击呢?

高防服务器作为一种有着高度防御能力的服务器&#xff0c;可以帮助网站应对分布式拒绝服务攻击&#xff0c;有效识别和清理一些恶意的网络流量&#xff0c;为用户提供安全且稳定的网络环境&#xff0c;那么&#xff0c;高防服务器一般都可以抵御哪些网络攻击呢&#xff1f;下面…...

Map相关知识

数据结构 二叉树 二叉树&#xff0c;顾名思义&#xff0c;每个节点最多有两个“叉”&#xff0c;也就是两个子节点&#xff0c;分别是左子 节点和右子节点。不过&#xff0c;二叉树并不要求每个节点都有两个子节点&#xff0c;有的节点只 有左子节点&#xff0c;有的节点只有…...

MFC 抛体运动模拟:常见问题解决与界面美化

在 MFC 中开发抛体运动模拟程序时,我们常遇到 轨迹残留、无效刷新、视觉单调、物理逻辑瑕疵 等问题。本文将针对这些痛点,详细解析原因并提供解决方案,同时兼顾界面美化,让模拟效果更专业、更高效。 问题一:历史轨迹与小球残影残留 现象 小球运动后,历史位置的 “残影”…...

基于Springboot+Vue的办公管理系统

角色&#xff1a; 管理员、员工 技术&#xff1a; 后端: SpringBoot, Vue2, MySQL, Mybatis-Plus 前端: Vue2, Element-UI, Axios, Echarts, Vue-Router 核心功能&#xff1a; 该办公管理系统是一个综合性的企业内部管理平台&#xff0c;旨在提升企业运营效率和员工管理水…...

人工智能--安全大模型训练计划:基于Fine-tuning + LLM Agent

安全大模型训练计划&#xff1a;基于Fine-tuning LLM Agent 1. 构建高质量安全数据集 目标&#xff1a;为安全大模型创建高质量、去偏、符合伦理的训练数据集&#xff0c;涵盖安全相关任务&#xff08;如有害内容检测、隐私保护、道德推理等&#xff09;。 1.1 数据收集 描…...

学习一下用鸿蒙​​DevEco Studio HarmonyOS5实现百度地图

在鸿蒙&#xff08;HarmonyOS5&#xff09;中集成百度地图&#xff0c;可以通过以下步骤和技术方案实现。结合鸿蒙的分布式能力和百度地图的API&#xff0c;可以构建跨设备的定位、导航和地图展示功能。 ​​1. 鸿蒙环境准备​​ ​​开发工具​​&#xff1a;下载安装 ​​De…...

FFmpeg avformat_open_input函数分析

函数内部的总体流程如下&#xff1a; avformat_open_input 精简后的代码如下&#xff1a; int avformat_open_input(AVFormatContext **ps, const char *filename,ff_const59 AVInputFormat *fmt, AVDictionary **options) {AVFormatContext *s *ps;int i, ret 0;AVDictio…...

WEB3全栈开发——面试专业技能点P7前端与链上集成

一、Next.js技术栈 ✅ 概念介绍 Next.js 是一个基于 React 的 服务端渲染&#xff08;SSR&#xff09;与静态网站生成&#xff08;SSG&#xff09; 框架&#xff0c;由 Vercel 开发。它简化了构建生产级 React 应用的过程&#xff0c;并内置了很多特性&#xff1a; ✅ 文件系…...

ThreadLocal 源码

ThreadLocal 源码 此类提供线程局部变量。这些变量不同于它们的普通对应物&#xff0c;因为每个访问一个线程局部变量的线程&#xff08;通过其 get 或 set 方法&#xff09;都有自己独立初始化的变量副本。ThreadLocal 实例通常是类中的私有静态字段&#xff0c;这些类希望将…...