CALEA合规研究:分组域合法监听的技术架构与落地实践
最近我们项目组把一份关于北美分组域合法监听CALEA标准的合规研究报告正式归档了。这里说的“合法监听”不是那些灰色地带的东西而是通信网络必须具备的一种受控协助能力CALEA标准就是北美通信领域绕不开的一把尺子。起因不算复杂我们要把一个支持语音、视频、消息的分组域通信系统部署到北美市场客户合同和合规评审里都明确提到了一个要求——系统是否满足CALEA对分组域通信的协助执法要求。这个要求不满足产品连进场的资格都没有。这类工作看起来有点边缘既不是核心业务功能也不是典型的攻防安全但它恰恰是数字通信产品进入成熟市场的隐形门槛。本文想把这轮标准研究的完整过程摊开来讲标准核心约束了什么、分组域和传统电路域有哪些本质差异、技术方案怎么选型、测试怎么设计以及我们踩过的坑和沉淀下来的排查方法。1. 项目缘起一份标准研究为什么会变成硬需求1.1 CALEA是什么为什么分组域绕不开要理解这个项目先得把CALEA的背景说清楚。CALEA的全称可以理解为“通信协助执法法案”早在1994年就在北美通过了。它要解决的问题非常明确随着通信技术不断更新如果运营商和通信设备完全不理会执法部门的合法需求执法调查可能会寸步难行。于是立法者提出了一个要求——通信服务提供商有义务让网络具备“受控的协助能力”在获得法定授权的前提下能够对特定目标提供通信内容或相关识别信息。注意这里的两个前提必须同时存在一个是“特定目标”一个是“法定授权”。CALEA从来不是让运营商、设备商随时可以监听所有用户而是把协助能力做成网络的基础功能再通过授权程序来控制它的使用。打个不太恰当但好理解的比方这就像大楼必须预留消防通道但平时谁也不能随便占用只有消防部门按程序发出指令时才能启用。做标准研究时如果忽略了“授权前提”就很容易把CALEA理解成一种可怕的监控工具而实际工程语境里它更多是“合规能力”和“治理边界”的组合体。为什么分组域绕不开因为在传统电话网时代链路相对固定满足协助需求相对简单而现在语音、消息、视频都跑在分组域上会话可以动态创建、随时迁移网络中继都在IP化接入点也就是协助接入位置不再是一个固定的物理交叉点而要去信令面和媒体面一起找。再加上宽带接入、VoIP等业务早已划入监管范围所以几乎所有面向北美市场的分组域系统都会被问一句你支持CALEA要求吗1.2 从电路域到分组域合规边界的变化这一小节想强调的是“标准研究必须跟着技术形态走”否则研究做完了也落不了地。电路域时代一次通话的路径往往经过几个明确的交换机协助接入基本可以在某一台交换机上完成。而在分组域中信令走一套节点媒体流可能走另一条路径同一用户可能在不同时间落在不同的服务节点上IP地址也会变虚拟化部署下服务节点本身都可能在不同宿主机之间迁移。这意味着合规能力不能附着在某一台固定设备上而应当嵌入到会话控制、媒体转发、用户数据管理的整体流程中。举个例子。某次内部模拟中一个测试用户在移动端和PC端之间切换信令在两个节点上分别产生事件媒体流又走了第三条路径我们花了大半天时间才确认原因节点之间没有建立统一的会话标识关联规则。这个例子后来写进了培训材料。分组域里的合规接入本质上是对“会话全生命周期”的感知能力——从注册、呼叫建立、媒体协商、资源分配到会话结束和去注册每一个环节都可能产生需要关联的信息。我们研究中心里对此有个结论CALEA研究不应该只当作一条条法律文本去读而要看作“电信级合规能力”的一组技术需求。早期看资料时很多人上来就翻法案原文结果发现里面大量内容是程序性、授权性描述真正对工程有约束力的是监管机构后续发布的实施细则、行业标准以及运营商之间的交付要求。所以项目启动后我们的做法是先梳理合规需求边界再拆技术需求最后再设计落地架构。这个顺序不能乱。2. 标准核心要素拆解分组域合规到底要交付什么2.1 两类交付物内容与识别信息把CALEA相关要求拆到底层无非两类交付物一类是通信内容Content指会话里的语音、视频、消息正文、文件内容另一类是通信识别信息Call Identifying Information简称CII包括主被叫号码、IP地址、端口、时间戳、会话标识、持续时长、协议类型等。在电路域时代识别信息相对简单主要是电话号码和呼叫起止时间。到了分组域识别信息变得更重要也更容易出错一个用户可能在客厅用宽带接入在户外用移动网络在办公室用企业专线中间还可能有NAT转换。如果只记录一个号码或一个IP在后续的事态还原中可能完全对不上。所以分组域标准研究中我们特别强调“会话维度的识别信息”。简单说不是记录一条独立的登录日志而是把同一会话过程中产生的信令事件、媒体流事件、用户标识、终端标识、网络地址、时间线完整关联起来。这里还要提一个关键区别识别信息的交付通常是事件驱动的按发生顺序实时上报通信内容的交付则是流式的需要低延迟持续转发。一个偏“日志”一个偏“流”两者对系统架构的要求完全不同。设计交付通道的时候如果混在一起做很可能在峰值会话时把控制面拖垮。需要说明的是交付的对象是明确授权许可的特定目标及其关联会话。系统设计时应当把所有用户会话当作潜在可被授权查询的对象来构建能力但在实际启动交付时必须受授权指令控制。这个边界一定要刻在系统逻辑里不能靠人工自觉。2.2 接入点与交付接口工程约束到底在哪从工程实现角度看分组域合规接入可以分成三个逻辑模块接入点、管理点、交付点。接入点负责从信令面和媒体面抽取目标数据管理点负责接收授权指令、维护目标清单、控制接入点的启停交付点负责把识别信息和内容送往授权的交付系统。业内比较成熟的分组域实现会定义几个标准接口。以北美的实践来说基本可以将过程概括为监管授权系统向运营商的管理点下发一个“目标激活请求”管理点校验授权信息向指定接入点下发监听参数接入点对目标用户的控制面信令和媒体面流量进行捕获或复制生成识别信息事件和内容流随后通过隔离的交付通道发送给监管方指定的交付系统。这里有一个容易忽视的工程约束接入点分布在网络里的位置直接决定了能捕获到什么。如果只挂在媒体网关信令里面的目标标识可能拿不全如果只挂在会话边界控制节点媒体内容又可能因为媒体路径优化而绕开。合理做法是在信令处理节点和媒体转发节点同时设置捕获能力并预留“按会话标识关联”的机制。也就是说即使信令和媒体走了不同路径、落在不同节点最终也能通过统一的会话标识归并后输出。交付通道本身也有讲究。合规数据属于高敏感数据不能和普通业务日志走同一管道一般要求复用独立的管理网络或受控专用通道。还要做双向认证、访问控制、传输加密。交付延迟通常有要求识别信息事件要尽量实时内容通道要有足够的带宽余量。2.3 管理与审计合规中的“合规”很多人以为把捕获和交付接口做完就算满足CALEA了实际上在真实市场上监管和客户审计更看重管理和审计能力。这里有三个观察点非常重要第一角色分离。处理合规协助请求的系统必须有明确的管理角色边界。一个运维人员不能既负责日常网络维护又能配置监听目标并查看交付内容。业界通行做法是设置独立的合规管理员、审计员、交付操作员角色关键操作需要双人复核也就是四眼原则。第二全程审计。从授权指令接入、目标激活、会话匹配、媒体复制、交付停止每一步都要产生不可篡改的审计日志。日志至少保留半年以上具体以合同要求为准。这里说的“不可篡改”不是把日志存到数据库里就行而是要支持完整性校验比如哈希链、签名验证否则被审计时很难自证清白。第三权限最小化。合规目标清单、密钥材料、交付内容应严格限制在最小权限范围内默认禁止旁路存储和复制。这一小节看似不涉及“功能”但我在项目评审中见过不少方案在管理审计环节被否掉。技术上能捕获但说不清楚谁在什么时间为什么授权了哪个目标这样的系统无法通过合规审查。3. 实操过程从标准条文到落地交付的三步走3.1 第一步现状盘点与差距分析项目拿到手之后我们没有直接动手写设计文档而是先做了两件小事第一件把现有的分组域系统架构、节点类型、协议清单、能力边界全部列成一张表第二件把合规需求按功能、性能、管理、安全四类拆成验收清单。然后逐项打勾查差距。下表是我们当时使用的差距分析模板做了脱敏处理需求类别具体需求现状支持情况差距说明功能信令面目标捕获部分支持只支持SIP注册场景未覆盖即时消息功能媒体面内容复制支持视频媒体流尚需验证性能并发监听目标数未定义需要按容量模型重新测算管理审计日志留存不满足当前日志保留30天需扩展至180天安全交付通道隔离部分支持复用业务管理网需调整做完差距分析事情就开始变得具体了。我们为每一项差距标了优先级影响合同准入的标为P0影响技术验收的标为P1可以在后续迭代补上的标为P2。这份清单后来在整个项目周期里一直是我们推进的主线比任何计划文档都管用。3.2 第二步技术方案选型与容量测算现在说方案选型。业界做分组域合规接入大致有三类路线。第一类是纯旁路镜像在不改动业务节点的情况下对目标用户的流量做端口镜像或分光。优点是侵入性小、部署快缺点是只能看到镜像点上的流量跨节点会话难以完整关联加密流量更拿不到有效内容。第二类是服务节点内建接入点在信令处理节点、媒体转发节点内部嵌入捕获模块能够拿到完整的协议栈上下文和会话标识。优点是可关联性强缺点是业务软件要改造对现有系统的稳定性有一定影响。第三类是混合方案信令面走内建接入媒体面在高性能转发节点旁挂镜像。我们最终选的是混合方案。原因是信令面上的关联信息对完整还原会话至关重要而媒体面通常吞吐量大旁挂镜像对现有转发链路的性能冲击更小。容量测算这部分建议不要拍脑袋。我们按50万注册用户、峰值并发会话15万、平均每用户会话时长40秒、每秒新建会话约3000次来做模型。识别信息事件按合并后平均每条1KB估算每天产生的事件量大约是24小时86400秒 × 每秒约1000条合并事件 ≈ 8640万条单日原始数据量约86GB。内容通道如果按最多100个授权目标设计同时活跃按40路估算每路平均384kbps就是约15Mbps的持续吞吐考虑峰值和突发按3到5倍余量设计交付通道至少要准备50Mbps左右的容量。交付通道设计上我们单独划分了一个逻辑网络管理面、信令面、媒体面互不干扰。所有交付接口使用标准协议封装按事件编号排序启用传输加密。在对接交付系统时全部通过预先配置的安全证书双向认证不允许明文链路直接落地。时间同步也是容易翻车的点。由于识别信息事件要从多个节点汇聚后按时间排序节点间的时钟偏差必须严格控制。我们要求所有接入点和汇聚模块统一使用NTP有条件的地方用高精度时间同步确保时间戳偏差在百毫秒以内。否则在还原会话时间线时先后顺序会错乱交付出去的数据没法用。3.3 第三步测试用例设计与验收测试环节是我们花时间最多的部分也是最容易“掩盖问题”的部分。比如有些厂商演示环境很漂亮一到真实网络加压就崩所以测试用例必须覆盖功能、性能、安全、故障四类。功能测试至少包括单目标多会话并发监听同一用户跨节点切换视频、语音、即时消息混合会话授权指令撤销后停止交付重复授权处理。性能测试要从低并发逐步加压观察接入点CPU、内存、交付通道时延。我们当时设定的验收指标是在500路并发授权目标下识别信息事件端到端平均时延不超过500毫秒内容交付不丢包在达到2倍预期负载时系统不能宕机只能有限拒绝超量请求。故障测试要考虑接入点重启、交付通道中断、管理点故障等情况确保合规状态不会在故障后丢失。测试过程中我们采用了“影子目标”方法在测试环境里配置一批测试号码和测试终端提前录制已知的会话内容然后在平台上执行监听交付再把交付数据与已知内容比对比对通过才认为链路可用。这个方法成本低、效果好强烈建议在初验阶段使用。刚开始做的时候我们也觉得功能正常就行后来发现不做内容比对根本发现不了媒体流复制丢帧、时间戳错乱这类问题。4. 踩坑实录与常见问题排查清单4.1 三个最容易翻车的点加密、虚拟化与多区域部署先说加密流量。现在主流分组域业务基本全走TLS和SRTP如果接入点只能看到密文而拿不到会话密钥合规交付就会变成一个形式主义的空壳。实际可行的行业做法是在合规边界内做“可管可控的解密”要么在业务节点内建接入点在信令协商阶段获取会话密钥或解密会话内容要么在链路出口部署受控的解密设备并在密钥管理上满足授权要求。无论如何这个能力不能绕过授权单独启用否则就不是合规能力而是攻击面了。再说虚拟化。容器化部署以后服务节点可以随时迁移接入点不能跟着某个固定IP走。NFV环境中接入点的扩容与缩容由编排系统统一管理但合规定位要求接入点必须具备可追溯性每次弹性伸缩都会产生新的实例标识审计时需要能回溯到对应实例。我们在项目实施中碰到过一次问题一个目标会话在某节点的信令面触发了监听但媒体流已经被调度到了另一个节点结果内容通道空置只有识别信息输出。后来我们在接入点调度策略里加了“按目标维度锁定节点亲和性”才确保同一个目标的信令和媒体尽量落在同域、由同一组接入点处理。多区域部署的坑主要在交付通道时延。分组域系统如果跨两个地理区域而交付通道借用普通业务网络峰值时段时延可能从几十毫秒飙到几百毫秒。合规场景对实时性有要求晚到的识别信息事件就失去了价值。我们最后的调整是给交付通道预留独立带宽并配置了监控告警时延超过阈值时自动通知合规管理员。4.2 常见问题速查表把项目过程中比较容易踩的问题整理成了一张速查表现场排查时对着找方向会快很多现象可能原因建议排查方向收到授权指令但无任何事件输出目标标识匹配字段不一致检查用户ID、号码、IP映射规则同一会话多个接入点各报一部分信令与媒体链路分离建立统一会话标识关联规则时间戳乱序节点时钟漂移检查NTP同步状态与偏差内容通道有数据但识别信息延迟大事件模块队列积压查看事件队列长度扩容消费者审计日志出现缺口多副本未同步或存储故障检查审计链路与去重机制撤销授权后仍持续输出目标生命周期未清理检查授权状态机与清理任务使用速查表时先看现象再对原因不要上来就改配置。我们遇到过一种情况问题根本不是接入点错误而是授权指令里的目标标识格式差了最后一位导致匹配不上。类似这种问题光看系统日志很难定位最好把授权指令的原始报文也纳入审计留档排查时可以直接比对。4.3 几个常见误解写报告时一定要写清误解一合规要求等于“运营商可以随便监听所有用户”。这是最需要澄清的。CALEA约束的是“受控协助能力”真正触发使用的是授权指令运营商或设备商并没有自行打开使用的权利。误解二只要产品在北美上线就必须直接满足CALEA或者反过来只要不在北美上线就完全不用管。真实情况往往是被合同传导的有些跨国企业的全球网络、云通信服务、甚至设备代工合同中都会带上类似条款研究清楚边界比在投标时临时补救要划算得多。误解三技术上实现了接口就算合规。实际上客户审计、监管检查更关注你背后的流程是否可靠比如有没有人审计授权记录、有没有权限分离、日志能不能防篡改。技术接口只是大厦的第一层砖管理流程和审计闭环才是标准验收的压舱石。项目归档那天我在内部总结时写了这样一句话合规能力不是“多一个功能开关”而是整条数据链路上的一次次约束与校验。真正让这份研究报告产生价值的不是我们读懂了多少条文而是把它变成了一张张可验证的测试用例、一个个可回归的工程约束。如果以后再做类似系统调研我仍然会先摆差距清单再做方案选型最后用测试用例说话——这个顺序踩过坑的人自然懂。顺带说一句做这类标准研究最怕的是做到一半被外界的情绪带偏把技术问题讨论成立场问题。我心里一直有个底线研究合规标准是为了让系统在合法边界内做好该做的事而不是为了让谁拿到一把更顺手的工具。这两件事在架构设计和落地上完全是两套做法想清楚这一点后续所有决策都会简单很多。

相关新闻

量化交易系统实战:从手工交易到程序化的完整路径

量化交易系统实战:从手工交易到程序化的完整路径

我做交易大概有四五年时间,真正决定把策略从手动搬到程序化,是在某个连续止损的周。那个周我用人为判断反复修改参数,结果越改越差,倒不是行情有多难做,而是执行纪律崩了。后来我开始搭建THS量化交易系统,最…

2026/10/12 23:26:21 阅读更多 →
高光谱影像分类实战:PCA降维+双通道CNN-SVM融合

高光谱影像分类实战:PCA降维+双通道CNN-SVM融合

简介:一份基于Python的高光谱遥感影像识别与分类项目资料包,面向毕业设计、课程设计与项目开发场景,适合遥感图像处理或机器学习方向的学生及开发者参考。资料针对高光谱影像分类中的休斯现象、光谱空间特征利用不足、分类器泛化能力弱等问题…

2026/10/12 23:25:19 阅读更多 →
凸包算法详解:Graham-Scan原理、实现与工程应用

凸包算法详解:Graham-Scan原理、实现与工程应用

帮你处理过这么一类需求:游戏里有几十个散落的资源点,策划想在地图上画一个高亮范围把它们全包进去,还要求这个范围尽量贴合、不要留太多无关的空白区域。第一次听到这个需求时,我先想到的是最小覆盖矩形,但点一旦斜着…

2026/10/12 23:25:18 阅读更多 →

最新新闻

architecture-decision-record 实战:用 ADR 记录“选 PostgreSQL 还是 MySQL“的数据库选型决策

architecture-decision-record 实战:用 ADR 记录“选 PostgreSQL 还是 MySQL“的数据库选型决策

【免费下载链接】architecture-decision-record Architecture decision record (ADR) examples for software planning, IT leadership, and template documentation 项目地址: https://gitcode.com/gh_mirrors/ar/architecture-decision-record 点击查看 免费下载 …

2026/10/13 1:44:13 阅读更多 →
rust-bindgen 位域(Bitfield)使用指南:理解 `__BindgenBitfieldUnit` 与 getter/setter 机制

rust-bindgen 位域(Bitfield)使用指南:理解 `__BindgenBitfieldUnit` 与 getter/setter 机制

【免费下载链接】rust-bindgen Automatically generates Rust FFI bindings to C (and some C) libraries. 项目地址: https://gitcode.com/gh_mirrors/ru/rust-bindgen 点击查看 免费下载 Rust 语言本身不支持 C/C 中的位域(bitfield)语法&…

2026/10/13 1:44:13 阅读更多 →
Grafana Mimir DNS 服务发现:用 dns+、dnssrv+ 与 dnssrvnoa+ 前缀动态解析后端服务地址

Grafana Mimir DNS 服务发现:用 dns+、dnssrv+ 与 dnssrvnoa+ 前缀动态解析后端服务地址

时序数据库后端数据存储可观测性云原生 【免费下载链接】mimir Grafana Mimir provides horizontally scalable, highly available, multi-tenant, long-term storage for Prometheus. 项目地址: https://gitcode.com/gh_mirrors/mimir/mimir 点击查看 免费下载 Gr…

2026/10/13 1:44:13 阅读更多 →
AFSIM 2.9源码实战:从编译到插件扩展的多域仿真框架

AFSIM 2.9源码实战:从编译到插件扩展的多域仿真框架

简介:AFSIM 2.9 是一款面向海陆空天及网络空间战场仿真的仿真引擎源码包,适用于军事训练、作战推演、武器效能评估与电子战模拟等专业场景,适合仿真开发人员、作战研究人员及军事院校师生深入研读。源码包共约2000个文件,以848个h…

2026/10/13 1:44:13 阅读更多 →
FPSSample 完整上手指南:Unity 第一人称多人射击示例项目的克隆、AssetBundle 构建与联机运行

FPSSample 完整上手指南:Unity 第一人称多人射击示例项目的克隆、AssetBundle 构建与联机运行

游戏开发示例工程 【免费下载链接】FPSSample A first person multiplayer shooter example project in Unity 项目地址: https://gitcode.com/gh_mirrors/fp/FPSSample 点击查看 免费下载 本篇技术指南以 FPSSample 官方 README 为主体,结合仓库中的编…

2026/10/13 1:44:13 阅读更多 →
SpriteJS 3D 渲染对象(RenderTarget)实战:FrameBuffer 离屏渲染、纹理回读与双缓冲复用

SpriteJS 3D 渲染对象(RenderTarget)实战:FrameBuffer 离屏渲染、纹理回读与双缓冲复用

图形学3D渲染 【免费下载链接】spritejs A cross platform high-performance graphics system. 项目地址: https://gitcode.com/gh_mirrors/sp/spritejs 点击查看 免费下载 导读:在 SpriteJS 3D 扩展中,RenderTarget 是一块可绘制的 FrameBu…

2026/10/13 1:43:13 阅读更多 →

日新闻

物联网系统集成避坑指南:从选型到验收的关键要点

物联网系统集成避坑指南:从选型到验收的关键要点

做了这么多年物联网系统集成的项目,我最大的感受是,大部分坑不是出在技术前沿,而是出在一些看起来很平常的地方。设备选了便宜的、协议没问清楚、现场没摸透、验收标准写得含糊——这些细枝末节,最后都会变成延期、超支和扯皮的大…

2026/10/13 0:00:57 阅读更多 →
ESP32舵机控制全攻略:从PWM原理到高级玩法与常见故障排查

ESP32舵机控制全攻略:从PWM原理到高级玩法与常见故障排查

如果你玩ESP32有一阵子了,很难不碰到舵机控制这道坎。做智能小车要转方向,做机械臂要抬关节,做云台要偏航俯仰,背后都是同一个东西在干活:舵机。而我见过太多人卡在“代码能编译、舵机就是不听话”这个阶段&#xff0c…

2026/10/13 0:00:57 阅读更多 →
CAN总线原理与STM32实战:抗干扰、仲裁、错误处理全解析

CAN总线原理与STM32实战:抗干扰、仲裁、错误处理全解析

1. 为什么CAN总线至今仍是工业现场的“硬通货”?——从汽车底盘到智能温室的真实需求你有没有拆过一辆老款燃油车的中控台?或者调试过某高校实验室里那台跑着Modbus协议却频频丢帧的PLC控制柜?又或者,在某个农业物联网项目里&…

2026/10/13 0:00:57 阅读更多 →

周新闻

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

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

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

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

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

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

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

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

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

2026/10/12 0:16:43 阅读更多 →

月新闻

我发现了一个新思路:用 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/12 21:05:09 阅读更多 →
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/12 14:48:49 阅读更多 →
黑夜航拍船只数据集训练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/12 18:11:17 阅读更多 →