NC6/NC65 root密码遗忘或锁定:数据库侧重置与解锁实操指南

简介:用友NC6/NC65系统管理员root密码遗忘或被锁定,会导致账套管理、参数配置、用户授权等后台操作无法正常进行;这份资料专门解决此类登录异常,既适用于企业信息化运维人员、实施顾问及系统管理员,也可作为新环境初始化时重置超级管理员账号的应急参考。资源共2个文件,包含txt操作说明与xml超级管理员配置模板,整体大小仅2KB;txt文档交代替换位置、备份事项与服务重启顺序,xml文件可直接覆盖至nc65home\ierp\sf目录下使用,不涉及复杂命令或数据库改动。目前已有4136人学习下载,说明该方案在同类故障中具有较高的参考价值。通过这份轻量工具包,读者可快速恢复root账号访问权限,减少手工配置和排错耗时;操作说明中的备份与重启提醒也有助于规避误操作风险,为企业系统稳定运行提供保障。

1. NC6、NC65超级管理员root忘记密码或锁定:半小时内恢复控制台

月底结账前一天,某客户现场财务总监急得拍桌子,因为系统里唯一能做权限交接的 root 账号被锁了,试了十几次密码全部提示失败。NC6、NC65 的 root 密码不是明文存在数据库里,而是散列值,忘了就是忘了,没有任何“找回密码”按钮,只能走数据库侧重置。锁定也不是简单改一个字段就能解决,应用服务器会话和密码策略会一起凑热闹。这篇文章写给 ERP 运维、实施顾问和兼职管系统的 IT 岗,目标是让你在半小时内把控制台翻回来,同时不把业务数据搞坏。

2. 搞清楚 root 的密码存哪、锁在哪:先看表和会话两层

2.1 密码到底存哪张表:root 账号的数据链路

NC6、NC65 的用户体系是典型的“主表 + 密码附属表”结构,root 账号的基础信息在用户主表(不同版本常见表名为 sm_user),而密码散列值存在密码附属表(常见表名为 sm_userpassword)。两张表通过用户标识字段关联,通常关联字段是 usercode 或 userid,取值为root。

需要先明确一个关键点:密码字段里存的不是可逆的密文,而是单向散列值。也就是说,不存在“解开这个散列得到原密码”的操作,正确做法只有两种:要么把密码字段更新为另一个已知账号的散列值,要么用系统内置的默认散列值覆盖。这也是为什么很多网上教程会让你“把 root 的密码改成 admin 的密码”,本质是复制散列值,不是生成新散列。

在动手之前,先登录数据库查一下当前状态。以 Oracle 为例:

-- 查看 root 用户的基础信息与锁定标志 SELECT usercode, usertype, islocked, locktime, pwdchgdate FROM sm_user WHERE usercode = 'root'; -- 查看 root 当前的密码散列 SELECT usercode, userpassword FROM sm_userpassword WHERE usercode = 'root';

先说逻辑:第一条 SQL 用来确认账号是否存在、是否被锁、最近一次改密时间;第二条 SQL 用来确认密码表里有没有这条记录。不同版本的字段名略有差异,比如锁定标志可能是islocked,也可能是userstate或lockflag,如果执行报“字段不存在”,先用DESC sm_user或SELECT * FROM sm_user WHERE ROWNUM = 1看实际字段名。我一般会先跑SELECT * FROM sm_user WHERE usercode = 'root',把整行结果拉出来,再对着字段名写后续语句,而不是直接照抄网上的字段。

2.2 锁定是怎么触发的:阈值、有效期与会话残留

root 被锁定通常有三层原因叠加。第一层是安全策略,系统管理里可以配置“连续登录失败 N 次后锁定账号”,常见默认是 5 次或 6 次,锁定时间可能是 30 分钟也可能是永久。第二层是密码有效期,很多实施项目会把 root 密码设为 90 天强制修改,到期后不修改,账号会进入“密码过期”状态,表现和锁定几乎一样。第三层是应用服务器会话残留,这是最隐蔽的:即使你把数据库里的锁定标志清掉了,中间件上已经建立的失败会话没被注销,下一次登录请求仍可能被判定为“该账号已锁定”。

解决锁定不能只盯用户表,还要看会话表。NC6、NC65 会在会话表(常见表名 sm_session 或 sm_usersonline)里记录当前登录状态。如果这个表里还残留着 root 的失败或锁定会话,即使你清了锁定标志,登录时系统一查会话记录,照样把你拦在外面。我处理过的现场里,至少有三成“清了锁定还是提示锁定”的问题,最后都是靠清理会话表解决的。

2.3 版本差异:NC6 与 NC65 的字段和算法不完全一样

NC6 与 NC65 虽然都是 Java 架构,但密码存储细节有差异,具体差异主要集中在三块:加密算法、字段命名、认证模式。下面这个表是我在实际项目中遇到过的差异汇总,字段名以你实际库为准:

差异点NC6 常见情况NC65 常见情况
密码散列算法多为 MD5 或 SHA-1 十六进制字符串部分版本引入带盐 SHA-256,散列长度更长
锁定标志字段islocked、lockflag较常见可能出现userstate、pwdlocked等命名
密码过期字段多存在用户主表部分版本拆到独立的安全策略表
认证模式内置认证为主可能启用了外部认证源,导致数据库改密无效

这段差异不是让读者去背表,而是提醒:如果你在一套系统上验证成功的 SQL,换到另一套系统执行报错或无效,先怀疑版本差异,不要怀疑自己操作错了。特别是“启用了外部认证”这种情况,数据库里改了密码根本没意义,因为认证请求根本不会走到数据库这张表。这种情况我们在第 4 章专门展开,先不在这里展开。

3. 数据库侧重置密码与解锁:Oracle 和 SQL Server 的分步实操

3.1 操作前准备:备份、停服与状态记录

动 root 密码表之前,必须做三件事:备份、停服、记录现场。这三件事缺一件,都可能让你从“密码忘了”变成“数据库坏了”。

先说备份。备份目标不是整库,而是两张核心表。在 Oracle 里可以用CREATE TABLE ... AS SELECT的方式做表级备份,在 SQL Server 里用SELECT * INTO。备份的目的是给“后悔药”留后路:如果 UPDATE 语句执行后发现问题,可以快速把原表数据倒回来。

再说停服。这一步很多人会跳过,觉得改个密码没必要停应用。但实际上,不停服的话,应用服务器的数据库连接池里可能还有持有旧密码的会话,你这边 UPDATE 提交了,那边连接池又把内存里的状态回写到数据库,导致你的修改被覆盖。常见做法是登录中间件管理控制台,把应用服务停掉,或者至少停掉与认证相关的应用节点。

然后记录现场。把当前时间、root 账号的锁定标志、密码字段长度、相关表记录数记下来。这样如果操作后出现问题,能对比出哪里变了。

3.2 Oracle 库下重置密码:三步 SQL 与参数说明

Oracle 场景下,通用做法是“找一个还能正常登录的管理员账号,把它的密码散列复制给 root”。如果连一个能登录的管理员都没有,就使用系统初始化时生成的默认散列值,但不同版本的默认密码和散列都不一样,需要提前确认。

先确认在用的表结构,再执行:

-- 第一步:把 root 密码散列覆盖为 admin 的散列 UPDATE sm_userpassword SET userpassword = ( SELECT userpassword FROM sm_userpassword WHERE usercode = 'admin' ) WHERE usercode = 'root'; -- 第二步:清理锁定标志 UPDATE sm_user SET islocked = '0', locktime = NULL WHERE usercode = 'root'; -- 第三步:提交事务 COMMIT;

说下参数含义:usercode = 'root'定位目标账号,usercode = 'admin'定位来源账号;islocked是锁定标志,置'0'表示未锁定,有些版本用数字0不用字符串,按你的表结构定;locktime置NULL是清掉锁定时间戳。COMMIT必写,不提交的话,数据库一重启就回滚了。

执行后,用第一步查状态的 SQL 复查一遍,确认islocked = '0'、密码散列已经变成 admin 的值。如果复查发现locktime字段还有值,说明触发锁定的时间戳没有清干净,再执行一次置NULL即可。

3.3 SQL Server 库下重置密码:类型与空格两个坑

SQL Server 版本的逻辑一样,但有两个额外的坑。第一个是字符串类型,部分版本密码字段是varbinary类型,直接复制散列时要用CAST或CONVERT做类型转换;第二个是空格,usercode字段里的值两端可能带空格,查出来看着是root,实际可能是root,导致 WHERE 条件匹配不上。

-- 覆盖密码散列,注意把来源账号同样匹配正确 UPDATE sm_userpassword SET userpassword = ( SELECT CAST(userpassword AS VARBINARY(256)) FROM sm_userpassword WHERE LTRIM(RTRIM(usercode)) = 'admin' ) WHERE LTRIM(RTRIM(usercode)) = 'root'; -- 清理锁定标志 UPDATE sm_user SET islocked = 0, locktime = NULL WHERE LTRIM(RTRIM(usercode)) = 'root'; COMMIT;

关键差异说明:LTRIM(RTRIM(...))用来去掉字段值两端的空格,避免因为空格导致匹配不上;CAST(... AS VARBINARY(256))用来处理二进制类型的字段,长度 256 是常见情况,如果你的库定义是 128,需要相应调整。执行后同样用查询语句复查,确认@@ROWCOUNT返回的是 1 而不是 0,0 就说明 WHERE 没匹配上,先检查空格。

3.4 同时清理会话表:不改它等于白改

密码改完、锁也解了,会话表里可能还残留着 root 的历史会话。特别是那些“失败登录”记录,如果不清理,应用服务器在收到新登录请求时,会先去会话表里查状态,发现已有失败记录,直接拒绝登录。

常见会话清理语句如下,执行前先查数量确认影响范围:

-- Oracle 环境 DELETE FROM sm_session WHERE usercode = 'root'; COMMIT; -- SQL Server 环境 DELETE FROM sm_session WHERE LTRIM(RTRIM(usercode)) = 'root'; COMMIT;

执行顺序我一般固定在“先改密码 → 再清锁定 → 最后清会话”,不要调换。原因是:先清会话再改密码,如果密码 UPDATE 卡住或失败,root 相当于处于“无会话且密码状态未知”的中间状态,排障时多一层不确定性;按这个顺序执行,每一步的失败影响都是可控的,复查也能定位到具体是哪一步没生效。

这里补充一个连接池的问题:如果应用服务没有完全停止,连接池里的旧连接可能在你清理会话后,又自动创建一条新会话记录。所以清会话的动作,必须在确认应用服务已停止的状态下进行。停了服务之后连接池里的连接会断开释放,你的 DELETE 才不会被后续写入覆盖。

4. 常见问题排查:root 密码重置后仍失败的五个真实坑位

4.1 改了库密码,登录页还是提示密码错误

现象:数据库里 UPDATE 已提交,查询确认密码散列已经是目标值,但打开登录页输入新密码,仍然提示“用户名或密码错误”。

原因:应用服务器有缓存,或者中间件连接池里的旧连接没有释放。数据库改了,但应用内存里还是旧的密码散列副本。这种情况在集群环境下特别典型,一个节点改了库,另一个节点的缓存还没刷新。

解决:重启应用服务,让所有节点重新加载数据。如果重启不方便,先登录中间件管理控制台,找到缓存清理入口,清掉认证相关缓存后再试。我碰到最快的案例是清完缓存后 30 秒内登录成功,不用重启整个服务。注意:清缓存动作执行后,等一两分钟再试登录,别立刻点登录,缓存重建也需要时间。

4.2 root 解锁成功,其他管理员账号又跟着被锁

现象:root 解锁后,登录 root 是正常的,但过了一会儿,admin 或其他人账号也开始提示锁定。看起来像是“锁会传染”。

原因:安全策略里配置的登录失败阈值是全局的,有人在短时间内用错误密码批量尝试多个账号,导致多个账号同时触发锁定阈值。如果现场有人在搞暴力尝试,root 的解锁只是治标。

解决:登录系统管理,检查安全策略里连续失败次数和锁定时间的具体配置。先把阈值临时调高(比如从 5 次调到 20 次),再让所有管理员重新登录。同时检查中间件访问日志,看是不是有异常来源 IP 在短时间内发起大量登录请求。这一步属于安全排查,日志里能找到攻击来源的特征,常见做法是先把异常 IP 在中间件层加入黑名单。

4.3 复制 admin 密文后,登录提示“初始密码,强制修改”

现象:密码散列复制成功,锁定也清了,但一登录,页面弹出“当前为初始密码,请修改后再登录”,不修改不让进系统。

原因:root 账号的密码修改时间字段pwdchgdate没有同步更新。系统判断“这是初始密码”的依据有两个:一是密码散列值和系统预设值一致,二是最近一次修改时间距离当前时间过长。你复制的是 admin 的散列,但pwdchgdate还停留在很久以前,触发了“密码过期强制修改”策略。

解决:把用户主表里 root 的pwdchgdate更新为当前时间,同时检查是否还存在密码有效期策略。执行下面的语句:

UPDATE sm_user SET pwdchgdate = SYSDATE WHERE usercode = 'root'; COMMIT;

SQL Server 环境下把SYSDATE换成GETDATE()。执行后重新登录,就不会再被视为初始密码。如果更新后仍然提示,再检查安全策略表里是否有独立的密码有效期字段,把对应策略临时停用或延长。

4.4 启用了外部认证,数据库改密完全无效

现象:数据库里密码改了好几次,查询确认也是新值,但登录页就是进不去,或者登录后立刻被踢出来。有些人甚至会“改回原值”再试,发现原值也失效了。

原因:系统配置了外部认证源,常见的是企业统一身份认证或目录服务。在这种模式下,系统收到登录请求后,会把用户名和密码发到外部认证源校验,根本不查本地密码表。你改了数据库的散列值,等于改了个没人用的数据。

解决:先登录系统管理,查看认证模式配置,确认是否挂接了外部认证源。如果是,有两种处理方式:一是是临时切换到内置认证模式,让 root 走本地密码表验证;二是去外部认证源重置 root 对应的账号密码。我个人倾向第二种,因为切换认证模式会影响所有用户的登录方式,影响范围远大于重置一个密码。改完后记得重新登录验证,确认登录请求确实走本地校验了。

4.5 UPDATE 执行时卡住或提示“资源忙”:会话占用与回滚风险

现象:执行 UPDATE 语句后,数据库一直不返回结果,光标停在执行状态,或者直接报“ORA-00054 resource busy”这类资源占用错误。

原因:root 的密码记录正在被某个应用会话占用,最常见的是应用服务没停干净,连接池里还有活跃连接持有了行锁。

解决:先回到第 3.1 步,确认应用服务是否真的停止了。如果确认已停服,还是卡住,就查数据库的阻塞会话,找到占用该行的会话并杀掉。Oracle 下可以查v$locked_object和v$session定位阻塞源,SQL Server 下用sp_who2看阻塞进程。杀掉阻塞会话后,重新执行 UPDATE。

这里特别提醒:不要在卡住的时候直接重启数据库。重启会回滚未提交的事务,但如果 UPDATE 已经提交,重启不会撤销;如果没提交,重启后数据回到原状态,操作等于白做。正确做法是先杀掉阻塞会话,再确认 UPDATE 是否提交成功,没成功就重跑一遍。

5. 把重置动作变成例行维护:验证方法与防锁习惯

5.1 验证三条线:字段、页面、日志

密码改完,不是登录成功就算完。我会用三条线做验证,缺一条都可能留下隐患。

第一条是字段级验证。重启应用服务后,重新执行第 2.1 节的查询 SQL,确认 root 的锁定标志为未锁定、密码散列与目标账号一致、密码修改时间已更新到当前时间。第二条是页面级验证:使用新密码登录系统,确认能正常进入控制台,登录后立刻打开“系统管理-用户管理”,为 root 设置一个新的独立密码,不再沿用复制来的散列。第三条是日志级验证:检查中间件认证日志,确认登录记录里 root 的验证方式是“本地认证”且状态为成功。如果日志里显示认证走的是外部源,说明前面的配置检查还没做彻底。

这三条线我一般控制在 15 分钟内跑完,模拟正式验收场景。

5.2 防锁习惯:把 root 密码事故变成演练脚本

经历过几次 root 密码事故后,我把这套流程整理成了标准操作脚本,每次动 root 密码都强制走一遍,不再临时翻文档。

首先是备份习惯。每季度做一次密码表的逻辑备份,备份文件单独存放,和密码一起放进团队共享的密码保险箱。其次是策略调整。和安全管理员确认 root 账号的密码有效期设置为“不强制过期”,或者提前两周发提醒给管理员,避免月末结账时突然过期。然后是安全策略阈值。连续失败次数建议保持在 5 到 6 次,不要为了省事改成 100 次,避免给暴力尝试留空间。最后是演练。每半年找一台测试环境,模拟一次“root 被锁”场景,把第 3 章的 SQL 完整跑一遍,确认脚本在当前的库版本上仍然有效。

整份操作流程我整理成了带注释的脚本包,按 Oracle 和 SQL Server 分了两份,下载回去改一下数据库连接串就能用。从那以后,我每次动 root 密码都强制按“停服务 → 备份 → 改密 → 清锁 → 清会话 → 三条线验证”六步走,再也没在凌晨被客户电话吵醒过。希望帮到你。

本文还有配套的精品资源,点击获取

相关新闻

Django+MySQL电影推荐系统:冷启动/实时评分/多路召回实战

Django+MySQL电影推荐系统:冷启动/实时评分/多路召回实战

简介:这是一套基于PythonDjangoMySQL实现的电影推荐系统完整源码,专为计算机专业本科生毕业设计与课程实践打造,覆盖Web开发、数据库设计与协同过滤推荐算法落地全流程。资源共2000个文件,主体为1159个Python后端逻辑与Django视图…

2026/10/20 20:37:06 阅读更多 →
AI自动化重复工作实战:四样要素、固定熟手与定时任务

AI自动化重复工作实战:四样要素、固定熟手与定时任务

重复性工作这件事,几乎每个职场人都有一肚子苦水。日报周报、数据搬运、格式转换、邮件回复、表格汇总、文件归档,这些活儿单拎出来都不难,但架不住量大、频次高、还特别容易出错。更让人难受的是,它们会像沙子一样填满你的时间缝…

2026/10/20 20:37:06 阅读更多 →
Vue电商项目源码跑通与改造:从npm install到上线避坑指南

Vue电商项目源码跑通与改造:从npm install到上线避坑指南

简介:一套基于Vue框架的电商购物系统完整源码包,面向具备前端基础、希望学习前后端分离开发或移动端商城实战的开发者。项目采用Vue、VueX、Vant、Axios、Node.js、Express与MySQL构建,前端覆盖商品展示、购物车、会员中心、Tabbar导航等常用…

2026/10/20 20:37:06 阅读更多 →

最新新闻

2025-2026 AI办公工具真实测评:提升效率的五大类神器与选型指南

2025-2026 AI办公工具真实测评:提升效率的五大类神器与选型指南

这两年我陆续上手过的AI办公工具,少说也有几十款,真正留下来、几乎每天都会打开的,其实不超过五个。原因很直接:新工具带来的新鲜感只能撑两周,之后考验的全是稳定性、顺手程度和能不能真正融进现有工作流。所以这份20…

2026/10/21 0:53:39 阅读更多 →
ChaosToolbox:轻量级混沌工程框架实战指南

ChaosToolbox:轻量级混沌工程框架实战指南

简介:本资源是陆振波老师开发的「混沌工具箱」MATLAB实现包,面向混沌理论初学者、高校理工科师生及科研人员,提供李雅普诺夫指数计算、经典混沌系统建模与混沌序列生成等核心分析能力,有效降低混沌动力学实验门槛。压缩包共136个文…

2026/10/21 0:53:39 阅读更多 →
图像闪烁修复:周期性与方向性双维度协同方法

图像闪烁修复:周期性与方向性双维度协同方法

1. 从"双人舞"这个比喻说起:为什么闪烁修复需要两个维度同时发力第一次看到这个标题的时候,我盯着"It Takes Two"愣了几秒。做图像修复的人都知道,闪烁问题是个老难题,但大多数方案要么只盯着时间轴上的周期性…

2026/10/21 0:53:39 阅读更多 →
基于Matlab的RRT迷宫路径规划:从原理到实战

基于Matlab的RRT迷宫路径规划:从原理到实战

做迷宫类路径规划项目,很多人的第一反应都是上A*或者把地图栅格化之后用Dijkstra。在规整的网格环境里,这些确定性搜索算法确实好用,可一旦迷宫变得极其困难——通道比车辆自身宽度大不了多少、U形死角一个接一个、障碍物还是随机生成的——传…

2026/10/21 0:53:39 阅读更多 →
Android Mainline模块化更新:APEX包与系统组件独立升级全解析

Android Mainline模块化更新:APEX包与系统组件独立升级全解析

1. 为什么会有Mainline:Android碎片化这口锅搞Android系统定制或整机方案时间长了,基本都躲不开一个问题:怎么让系统更新更快、更安全、还不用每次都逼用户刷全量包。以前我们发一个安全补丁,从AOSP拉下来、合代码、过测试、调CTS…

2026/10/21 0:53:39 阅读更多 →
开源日报热门项目实操:终端AI助手、剪贴板同步与自托管监控

开源日报热门项目实操:终端AI助手、剪贴板同步与自托管监控

1. 先说说这一期的热门全景怎么观察我做开源项目日报已经有一段时间了。每天早上第一件事,不是打开各种资讯站,而是直接去代码托管平台的榜单上看一圈,再结合社区讨论、release动态、issue反馈,综合判断这一天到底哪些项目值得被写…

2026/10/21 0:52:38 阅读更多 →

日新闻

统一内存+量化:锐龙AI Max PRO 400如何本地跑320B大模型

统一内存+量化:锐龙AI Max PRO 400如何本地跑320B大模型

这段时间硬件圈和AI圈都在传一个事:AMD锐龙AI Max PRO 400系列把最高192GB统一内存搬进了PC形态的产品里,按宣传口径,本地跑320B参数的大家伙不再是纸面概念。我第一反应倒不是“内存真大”,而是这话背后的含金量——它把过去只能…

2026/10/21 0:00:11 阅读更多 →
AI助手深度使用体验:对话质量、长文本处理与指令遵循如何留住用户

AI助手深度使用体验:对话质量、长文本处理与指令遵循如何留住用户

1. 从“封号重开”这个行为说起:用户到底在追求什么“封号重开”这四个字,放在任何产品语境里都带着一股决绝的味道。一个账号从零开始积累使用记录、调教偏好、沉淀工作流,背后是大量的时间和精力成本。正常情况下,没有人愿意主动…

2026/10/21 0:00:11 阅读更多 →
ROS中YOLOv3工程落地:通信同步、坐标变换与性能调优

ROS中YOLOv3工程落地:通信同步、坐标变换与性能调优

1. 为什么在ROS里硬刚YOLOv3不是“炫技”,而是工程落地的必经之路我第一次在某高校机器人实验室看到那台搭载Jetson TX2的移动底盘原地打转、反复识别错垃圾桶时,就意识到:单纯跑通darknet_ros demo和真正让YOLOv3在ROS里“干活”&#xff0c…

2026/10/21 0:00:11 阅读更多 →

周新闻

基于GMM的语音识别系统原理与MATLAB实现详解

基于GMM的语音识别系统原理与MATLAB实现详解

说到基于高斯混合模型(GMM)的语音识别系统,很多人第一反应就是一堆数学公式,觉得门槛很高。但如果你真的在MATLAB里把它落地跑通,会发现核心其实就是三件事:把声音变成特征向量,用GMM给每个类别…

2026/10/20 10:02:13 阅读更多 →
数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理这四个字听起来挺唬人,但落到具体操作上,无非就是让计算机按你的想法“摆弄”像素。我在一个模拟项目X里用了一套特别经典的基础处理流程:对图像做反白、改调色板、彩色转灰度,最后把像素数据导出成txt文件。单看每一…

2026/10/20 20:43:59 阅读更多 →
机器人大脑技术盘点:具身智能的感知、决策与数据闭环

机器人大脑技术盘点:具身智能的感知、决策与数据闭环

如果你的信息流最近也天天刷到“机器人大脑”这个词,你会发现一个很有意思的现象:每个人说的“大脑”根本不是同一个东西。有人指的是大语言模型,有人指的是运动控制系统,还有人指的是能理解物理世界的端到端模型。在2026年这个时…

2026/10/20 2:50:50 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/20 10:02:08 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/20 9:50:17 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/20 9:50:45 阅读更多 →