WuKongIM Cloud Medium 规模 Channel RPC 容量验证与 96 Worker 有界扩容实践
即时通讯后端【免费下载链接】WuKongIMMore than just IM 不只是即时通讯(IM)项目地址https://gitcode.com/gh_mirrors/wu/WuKongIM点击查看免费下载本文以 WuKongIM 仓库技术审查报告《Cloud Medium Channel RPC Capacity Release Candidate》docs/superpowers/reports/2026-07-24-cloud-medium-channel-rpc-capacity-rc.md为骨架完整还原一次付费云运行失败 → 定位饱和边界 → 有界扩容 → 高保真门禁复验 → 发现并修正 CI 环境时序漂移的容量治理全过程。读者可从中掌握如何从失败的集群压测中读出容量证据、如何用实测数据反推有界 Worker 容量、如何设计观察者效应最小化 指标漂移不可伪装的验收门禁以及 Slot Raft 时序契约漂移为何会导致 CI 结论与云端不一致。一、背景与决策结论LOCAL GO、付费云 NO-GO 的分层决策该报告是 2026-07-24 针对 Cloud Medium中规模云仿真Channel RPC 候选版本Release CandidatePR #632合并提交0cdc2a4698b2c75c44df25169574e929a5293fad的容量审查记录。其核心是一个分层决策LOCAL GO本地证据充分允许合并 PR 并进入 CI 验证付费云 NO-GO直到环境修正合并、新的 exact-main Nightly 变绿、全新的库存检查证明无存活云资源三者全部满足才允许把付费云决策改为 GO。该候选版本直接改变了在失败云运行中饱和的有界容量channelv2-rpcWorker 数并未引入无界 goroutine。本地证据证明了配置后的容量、确定性阻塞 RPC 收益、三进程在 5,000 条消息/秒下的正确性以及健康的队列守恒但单宿主尾延迟tail latency绝对数值仍波动因此只作为支撑证据记录而非云等效延迟测量。报告基线修订dca1a1d7e135103d77fb584a7c04a42659d4b8af失败云运行gh-30047907477-1。二、失败云运行的容量证据饱和点不在基础设施而在产品容量付费云运行前清理工作流30052648453成功独立分析工作流30052790447证明provider.statereleased且resources.length0——即测量窗口前后不存在存活云资源排除了上次运行残留对测量的污染。被测量的云窗口完成了6,923,659 次成功发送和全部 10,500 次连接但未通过 Medium 验收边界指标实测值Medium 验收边界实际入口流量ingress3,846.48/s4,500/sSENDACK P994.369s1sRECV P9978.383ms—SENDACK 错误0—七个目标 三个 WuKongIM 进程全程连续—仿真器 CPU / 内存峰值≈57% / 22.8%—重启 / OOM无—报告进一步指出接收者队列Recipient queues、Channel append 交接、Presence 路由、ACK 绑定、Slot apply、PreferredLeader 对账全部健康。唯一不健康的是 Channel 复制 RPC 边界channelv2-rpc队列压力在节点 1、3 达到100%节点 2 达到99.61%有效的 Medium 契约把 RPC 池固定为50 个 Worker实际逻辑 Slot Leader 分布为3/4/3Gateway 积压峰值1,148随后排空。这份证据链的关键意义在于这是产品容量缺陷product-capacity defect而不是仿真器或基础设施饱和——发送量尚未达到目标复制 RPC 池却已打满SENDACK P99 被顶到 4.369s超过 1s 验收线四倍以上。三、有界容量推导从实测点反推 96 Worker候选版本的关键改动是通用 Small/Large 默认值保持 50 Worker 不变只改动被密封sealed的 Cloud Medium 配置档。这体现了哪个档位有完整云测量才校准哪个档位的原则——其他档位在没有自己的完成校准前沿用产品默认值这一点在当前仓库 templates.go 的注释中明确记录。利用已完成的云测量数据容量推导如下ceil(50 workers × 4500 / 3846.48 × 1.50 headroom) 88 workers即50 个 Worker 实测支撑 3,846.48 条/s目标 4,500 条/s留 50% 余量取整需要88 个 Worker。最终固定的 Medium 值为96 个 Worker理由高于实测容量需求并保留 50% 余量有界且显式写入不可变运行时契约immutable runtime contract低于现有 128 Worker 的 transport 服务池promoted transport service pool避免成为新的更大瓶颈经过渲染配置、归一化配置、bundle、Bootstrap Gate 与 scale-isolation 测试全链路验证保留取整误差与合法 3/4/3 Slot Leader 偏斜的余量。物理/逻辑拓扑保持不变256 个物理 hash slot、10 个逻辑 Slot Raft 组、3 副本。这一推导在当前仓库被固化为测试不变量见 bundle_test.go 的TestCloudMediumRPCWorkerCapacityCoversMeasuredIngressWithHeadroom它以measuredWorkers50、measuredIngress3846.48、minimumIngress4500.0、capacityHeadroom1.50计算required ceil(50 × 4500 / 3846.48 × 1.50) 88并断言契约中的ChannelRPCWorkers96不小于 88。任何把 Medium RPC Worker 调回 88 以下的改动都会在此测试失败。四、确定性阻塞 RPC 基准把Worker 数这一变量隔离出来为证明 96 Worker 的收益并非偶然因素报告在 Apple M4 上做了三样本确定性基准4,000 个 Pull 任务、批大小 8、5ms 阻塞传输时间只对比 50 与 96 两个 Worker 数信号50 workers96 workers结果吞吐量65,464–75,726 项/s128,137–130,611 项/s高 69–99%队列等待 P9944.455–50.600ms23.544–24.262ms低 46–53%RPC 调用/操作500.3–500.7500.0–502.7批处理行为不变字节/操作12.01–12.11MB11.81–11.82MB低约 1.6–2.4%分配/操作34,180–35,39631,752–31,792低约 7–10%解读要点该基准隔离了确切的有界 Worker 效应——吞吐量翻倍、队列等待减半而 RPC 批处理粒度不变RPC 调用/操作基本持平说明收益全部来自更宽的并发面而非更激进的合批字节与分配的小幅下降说明 96 Worker 并未引入超大池子的调度与分配开销这正是 wukongim.toml.example 注释中 96 默认值要避免的问题报告明确不声称 localhost 传输与阿里云网络具有相同服务时间——这是容量证据而非云延迟等价物。当前仓库DefaultRPCWorkers 96、DefaultRPCBatchMaxItems 8定义于 pkg/channel/worker/pool.gochannelv2-rpc池名与默认 Worker 装配见 pkg/channel/reactor/group.go 与 group.gopools.RPC defaultPoolConfig(pools.RPC, defaultRPCPoolName, worker.DefaultRPCWorkers, queueSize)——产品默认值与候选版本对齐验证了能力落进产品默认值。五、三进程高保真门禁与观察者效应治理5.1 高保真 gate 是什么高保真 gate 运行三个真实cmd/wukongim进程WKProto TCP socket、Raft、Pebble、256/10/3 拓扑、真实 3/4/3 Slot 领导分布全部按生产形态复现。本次扩展为上报精确的channelv2-rpc队列与 Worker 比率把 offered load 与最低可接受入口minimum accepted ingress分开仅当一个采样周期内同时包含全部三个节点的队列容量与 Worker 计量且历史最小/最大 Worker 计量都等于 96时验收才通过——缺失或漂移的指标不能伪装成 0% 压力。5.2 5,000/s 本地证据96 Worker 不是瓶颈在 5,000 条/s、有界一秒采样下指标值实际入口5,000.19/sSENDACK P991,084.58msRECV P992,108.40msChannel RPC 队列比率峰值4.49%Channel RPC Worker 比率峰值9.38%Gateway 队列比率峰值0.44%进程连续性 / 队列排空连续且排空指标采样错误0该运行虽未通过绝对延迟阈值但证明了96 个 Channel RPC Worker 不是本地瓶颈——队列压力不足 5%、Worker 占用不足 10%。5.3 观察者效应从 250ms 到 1s 采样原始 gate 使用250ms 全注册表full-registry采样在单宿主路径上造成明显膨胀有采样时 SENDACK/RECV P99 为 920.65/2,064.69ms无采样时为 816.42/1,604.52ms。gate 因此改为每秒采样一次在保留压力证据的同时把观察者效应压到最低。5.4 三次无采样重复中位数通过、最差运行不通过三次 5,000/s 无采样重复运行运行实际入口SENDACK P99RECV P9914,999.97/s906.92ms2,190.68ms24,999.97/s847.57ms1,947.40ms35,000.17/s1,220.54ms2,311.79ms中位 SENDACK 结果在比云目标多 11.1% 的负载下通过但最差本地运行不通过。报告的结论克制而严谨这种波动加上测得的极低 RPC 占用率不允许把绝对尾部延迟当作云结果的证明。云的 GO 论证应建立在精确饱和边界诊断 有界 50% 余量推导 确定性 RPC 增益之上——这正是全文证据组织的逻辑主线。5.5 500/s CI-scale 门禁通过最终 500/s CI-scale 三进程 gate 通过3/3 个 Channel RPC 指标节点、min/max Worker 96/96、500.02/s 入口、SENDACK P99 505.50ms、RECV P99 399.16ms、最大 RPC 队列压力 0.20%、最大 RPC Worker 压力 1.04%、零指标错误、进程连续、队列完全排空。六、Exact-Main Nightly 环境修正Slot Raft 时序契约漂移6.1 Nightly 失败但能力生效exact-main Nightly30055430317只失败在有界 Cloud Medium 接收者 gate。其运行时证据恰恰证明容量改动已经生效且未饱和三节点都上报 96 个 Channel RPC Worker最大 RPC 队列压力 0.10%最大 RPC Worker 压力 4.17%。真正失败原因是发送者在测量窗口内多次遇到逻辑 Slot Leader 以quorum is not active下台并重新选举最终超时。6.2 根因未密封的 Slot Raft 时序gate 声称与 Cloud Medium 运行时等价但遗漏了密封的云 Slot Raft 时序配置密封 Cloud Medium意外本地回退tick50ms10msheartbeat tick21election tick2050回退把选举窗口从 1 秒压缩到500ms50ms×20 → 10ms×50 的乘积在共享单宿主 CI runner 上导致 Slot 领导频繁抖动。当前仓库渲染模板 templates.go 将节点配置渲染为slot_tick_interval 50ms、slot_heartbeat_tick 2slot_election_tick现为 40——说明密封时序在后续迭代中继续被显式固化docker/conf/node1.toml 同样显式声明50ms / 2 / 40pkg/cluster/config.go 定义了 Slot Raft 的 TickInterval/ElectionTick/HeartbeatTick 语义并在 config.go 校验ElectionTick HeartbeatTick。6.3 修正内容修正明确做到四件事显式应用密封的 50ms/2/20 契约以该 report 记录的密封值为准在测量工作负载之前验证每个渲染的 node config杜绝渲染正确但装载漂移把机器可读证据 schema 升级到v3对时序漂移timing drift直接判失败。它不改变产品默认值也不改变任何云运行时数值——只修正 CI 侧的环境真实性。6.4 三次连续修正后运行通过运行实际入口SENDACK P99RECV P99RPC 队列最大1500.024/s357.445ms257.605ms0.10%2500.023/s386.343ms248.830ms0.20%3500.023/s437.892ms308.785ms0.10%三次运行全部保持稳定 3/4/3 实际 Slot 领导分布从 3/3 节点上报精确 50ms/2/20 时序与 96/96 Worker零指标与接收者处理错误进程全程连续队列完全排空。七、验证清单与付费云 GO 的前置条件候选版本完整验证清单聚焦的 Worker 批处理与目标偏斜测试三个重复全部通过聚焦的运行时契约与 Bootstrap Gate 测试三个重复全部通过聚焦的 Worker、deploy、E2E 验收路径竞态测试通过确定性基准每个 Worker 数三样本通过缺失 Channel RPC 指标与 Worker 数漂移的负向测试通过CI-scale 三进程密封指标验收通过修正后的密封 Slot 时序验收连续三次三进程重复通过用户.gitignore变更不在本候选范围内。这些负向测试在当前仓库 acceptance_test.go 有完整对应物hotPathAcceptanceError对Slot tick interval、Slot heartbeat tick、Slot election tick、Channel RPC worker drift、Channel RPC metric nodes、Channel RPC queue、Channel RPC worker、Channel RPC full admissions等每一项编辑都断言失败子串——指标缺失与Worker 数漂移这类伪装性缺陷在验收层面被显式禁止。付费云决策改为 GO 之前仍须完成该 report 发布时的强制条件修正后的聚焦测试通过显式根目录explicit-root的仓库 Go gate 通过独立评审通过PR 交付完成新的 exact-main CI/Nightly 变绿最终无存活云资源证明通过。八、配置与源码指引把能力写进默认值该候选版本最终沉淀为产品与云渲染两套配置的默认值配置项TOML 路径环境变量默认值说明Channel 复制 RPC Worker 数cluster.channel_rpc_workersWK_CLUSTER_CHANNEL_RPC_WORKERS96阻塞式复制 RPC 最大 Worker0 使用默认 96同目标 RPC 合并项数cluster.channel_rpc_batch_max_itemsWK_CLUSTER_CHANNEL_RPC_BATCH_MAX_ITEMS8单次 Pull/PullHint RPC 最多合并项0 使用默认 8参数声明见 internal/config/schema.go中文释义见 internal/config/schema_help.go。产品示例配置 cmd/wukongim/wukongim.toml.example 与三节点示例 wukongim-node1.toml.example 均以 96/8 为默认值。Cloud Simulation 侧templates.go 明确区分cloudDefaultChannelRPCWorkers 50small/large与cloudMediumChannelRPCWorkers 96medium并通过EffectiveNodeRuntimeContractSchemaV1把整组运行时维度hash slot 数、Slot 组数、副本数、reactor 数、store append/apply worker、RPC worker、批大小、gateway 参数、recipient worker 并发固化为不可变契约templates.go 的nodeConfig渲染把契约逐项写入每个节点的 TOMLbundle_test.go 则验证渲染配置能被产品config.Load正确装载且每项数值精确等于契约——即渲染正确 装载正确双重保障的测试落点。九、总结一套可复用的容量治理方法论从这份报告中可提炼出一条可复用方法论先证明饱和边界属于产品容量而非基础设施 → 用单变量隔离的确定性基准确认扩容方向 → 以实测吞吐 × 目标/实测 × 余量反推有界容量并固化为测试不变量 → 在高保真三进程门禁中同时防范观察者效应与指标伪装 → 最后用密封的环境契约包括 Raft 时序这类隐蔽参数保证本地结论与云端结论同构。它同时示范了LOCAL GO / 付费云 NO-GO的分层发布纪律能力可以先进主干但影响付费资源的结论必须等到环境真实性与资源清空证明齐备。赞分享即时通讯后端【免费下载链接】WuKongIMMore than just IM 不只是即时通讯(IM)项目地址https://gitcode.com/gh_mirrors/wu/WuKongIM点击查看免费下载相关推荐Longhorn 参考环境、性能、可扩展性与容量规划指南Public Cloud Medium Node SpecLonghorn 参考环境、性能、可扩展性与容量规划指南Public Cloud Medium Node Spec 本文基于 Longhorn 官方仓库 s云原生存储高可用容器编排WuKongIM 节点缩容 Stage 5B用有界 ChannelRuntimeMeta 盘点实现 fail-closed 的 Channel 阻塞判断WuKongIM 节点缩容 Stage 5B用有界 ChannelRuntimeMeta 盘点实现 fail closed 的 Channel 阻塞判断 本文即时通讯后端WuKongIM MQTT 回放锚点跨集群提交新鲜 Slot 权威、有界 RPC 96 与精确重试复用WuKongIM MQTT 回放锚点跨集群提交新鲜 Slot 权威、有界 RPC 96 与精确重试复用 本文基于规格文档 mqtt replay anchor即时通讯后端上一篇英雄联盟Akari助手游戏智能伴侣的终极使用指南免费提升你的竞技体验下一篇高效解锁B站缓存视频3步实现智能格式转换的一站式方案创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关新闻

32 层混合注意力架构拆解:Qwen3.5-9B_gpuep_1.0_gpu_128 如何用线性注意力撑起 256K 上下文

32 层混合注意力架构拆解:Qwen3.5-9B_gpuep_1.0_gpu_128 如何用线性注意力撑起 256K 上下文

【免费下载链接】Qwen3.5-9B_gpuep_1.0_gpu_128 项目地址: https://ai.gitcode.com/hf_mirrors/amd/Qwen3.5-9B_gpuep_1.0_gpu_128 点击查看 免费下载 Qwen3.5-9B_gpuep_1.0_gpu_128 是 AMD 面向本地设备优化的 Qwen3.5-9B ONNX 导出版本,它采用「32 层…

2026/10/17 2:18:33 阅读更多 →
千元“双拆除”锐龙R7迷你主机:0.68L小钢炮能玩黑神话?

千元“双拆除”锐龙R7迷你主机:0.68L小钢炮能玩黑神话?

最近我在二手平台刷迷你主机的时候,注意到一个很有意思的现象:一大批标价千元出头、写着"全新仅拆封"的准系统迷你主机密集出现,体积只有0.68升,CPU清一色挂着锐龙R7的名头,商家还专门在标题里强调"DDR…

2026/10/17 2:18:33 阅读更多 →
qui 完整指南:qBittorrent WebUI 替代,多实例统一管理

qui 完整指南:qBittorrent WebUI 替代,多实例统一管理

qui 完整指南:qBittorrent WebUI 替代,多实例统一管理 【免费下载链接】qui A fast, single-binary qBittorrent web UI: manage multiple instances, automate torrent workflows, and cross-seed across trackers. 项目地址: https://gitcode.com/Gi…

2026/10/17 2:17:33 阅读更多 →

最新新闻

基于Qt与C++的中国象棋人机对战实现与搜索优化

基于Qt与C++的中国象棋人机对战实现与搜索优化

简介:用Qt/C开发的中国象棋人机对战项目,是一份面向Qt初、中级开发者及高校课程设计的完整代码示例。项目实现了完整对弈流程:棋盘矩阵建模、各棋子走法与吃子规则校验、鼠标交互、胜负判断,并采用alpha-beta剪枝搜索和局面评估函…

2026/10/17 2:57:42 阅读更多 →
表白网页源码实战:从本地修改到线上部署的完整指南

表白网页源码实战:从本地修改到线上部署的完整指南

简介:一款以表白为主题的浪漫网页源码,适合想在情人节或纪念日给恋人带来惊喜的初学者与前端爱好者。项目综合运用HTML定义页面结构、CSS完成粉红浪漫配色与心形装饰、JavaScript实现点击动画与交互反馈,是学习情感化网页设计的直观样例&…

2026/10/17 2:57:42 阅读更多 →
带版图的宽带对称式高回退Doherty功放ADS工程全流程解析

带版图的宽带对称式高回退Doherty功放ADS工程全流程解析

简介:宽带对称式高回退Doherty放大器ADS仿真工程文件,面向射频功率放大器设计工程师及高校相关专业学生,服务于1.8-2.2GHz频段、9dB回退场景下的高效率功放设计。压缩包共1003个文件,包含完整ADS工程、器件定义、控制脚本及大量仿…

2026/10/17 2:57:42 阅读更多 →
MFC自绘标题栏与边框:从非客户区接管到全自定义实战

MFC自绘标题栏与边框:从非客户区接管到全自定义实战

简介:针对 MFC 单文档(SDI)窗口的自绘需求,这份示例工程展示了如何覆盖系统默认边框、标题栏和关闭按钮,实现完全自定义的窗口效果,适合有 MFC 基础、希望打造个性化界面的开发者。压缩包共 32 个文件&…

2026/10/17 2:57:42 阅读更多 →
Rundeck纳管Windows节点:WinRM配置与Job实战指南

Rundeck纳管Windows节点:WinRM配置与Job实战指南

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

2026/10/17 2:57:42 阅读更多 →
Spring Boot游泳馆管理系统:手牌计费与会员订单业务建模实战

Spring Boot游泳馆管理系统:手牌计费与会员订单业务建模实战

简介:这套游泳馆管理系统是一份基于Java的数据库课程设计完整项目,面向计算机相关专业学生、Java初学者及需要快速搭建管理系统的开发者。系统围绕游泳馆日常运营,实现会员管理、预约管理、场地管理、收费管理四大核心模块,涉及数…

2026/10/17 2:56:42 阅读更多 →

日新闻

DeepSeek选型与部署:V3/R1、Ollama、API全攻略

DeepSeek选型与部署:V3/R1、Ollama、API全攻略

简介:《DeepSeek使用方法.pdf》是一份面向DeepSeek入门及进阶用户的完整使用指南,重点围绕V3与R1两款模型的能力差异与适用场景展开,帮助读者根据任务类型与成本选择合适的模型。资源共1个PDF文件,压缩包大小约311KB,篇…

2026/10/17 0:00:25 阅读更多 →
200+Deepseek润色指令拆解:从底层原理到场景落地的完整指南

200+Deepseek润色指令拆解:从底层原理到场景落地的完整指南

简介:这是一份聚焦DeepSeek提示词优化的《200Deepseek润色指令》PDF文档,共收录两百余条可直接套用的润色指令,涵盖语法修正、风格统一、逻辑梳理、表达精炼等维度,并针对商务写作、学术论文、广告文案等场景给出差异化建议。文档…

2026/10/17 0:00:25 阅读更多 →
OpenCV轮廓法物体计数系统:轻量、可控、可落地的工业级实现

OpenCV轮廓法物体计数系统:轻量、可控、可落地的工业级实现

简介:本资源是一份基于OpenCV的本科课程设计完整报告,面向计算机视觉初学者、图像处理学习者及高校通信/信息类专业学生,解决物体智能计数与检测结果结构化记录的实际问题。项目覆盖图像预处理、轮廓检测、边界框绘制、轨迹栏交互式参数调节、…

2026/10/17 0:00:25 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/16 21:35:51 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/17 1:44:59 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/16 15:04:24 阅读更多 →

月新闻

我发现了一个新思路:用 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/16 21:54:38 阅读更多 →
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/16 3:49:43 阅读更多 →
黑夜航拍船只数据集训练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/16 14:23:36 阅读更多 →