量子OTM原理与应用:从一次性内存到物理级防复制安全
1. 先搞清楚OTM到底是什么——从经典一次性内存说起我在第一次听到“一次性内存”这个词的时候第一反应是这不就是一张写一次、读一次就作废的纸条吗还真就是。OTM的全称叫One-Time Memory中文译作一次性内存。它的定义非常简单一个存储设备只能写入一次也只能读取一次读完之后里面的信息就物理性地消失了谁也没法再读第二遍。这个需求在现实世界里其实非常刚需。你想想密钥分发的场景我给你一把密钥你只能读一次用完就销毁这样即使中间有人截获了密文也没有第二份密钥可用。再比如投票系统选民投出一票计票员只能读一次这个票的内容读完之后这张票就作废了谁也不能再去复制、篡改或者翻旧账。经典的OTM在工程上怎么实现呢一般是用熔断电路、一次性写入的存储介质或者干脆是那种物理上“读后自毁”的装置。听着好像也不难但这里头有一个致命的隐患销毁动作本身是否可信。你想如果内存芯片确实能读一次就烧毁那当然安全。但问题是存储控制器和销毁电路都是可被物理攻击的攻击者可以绕过销毁逻辑在读取的同时悄悄地把内容复制一份甚至直接用探针去读原始存储单元。也就是说经典的OTM是建立在“硬件厂商诚实、销毁机制不被篡改”这个信任假设之上的。而在很多对抗性极强的场景里这个假设是站不住脚的。量子OTM解决的就是这个问题。它把这套“信任硬件不背叛”的安全模型直接替换成了“信任物理定律”。用量子态来承载信息利用量子不可克隆定理和测量坍缩这两个物理特性让“只能读一次”这件事变成了一条物理规律而不是一道可以被绕过的逻辑门。谁也没办法对抗物理规律所以安全性才真正成立。这篇文章我把量子OTM的底层原理、物理实现路径、典型应用场景和常见的理解误区串起来讲讲适合刚接触量子信息但有一定编程或密码学基础的读者也适合想了解量子技术到底能在哪些实际场景落地的产品和技术同学。2. 量子OTM核心原理拆解为什么物理定律能保证“只读一次”量子OTM的安全性本质上就建立在量子力学的两条基本规则上测量会扰动量子态以及未知量子态不可复制。这两条规则听起来简单放在一起却构成了一个非常强的安全结论。2.1 测量坍缩与不可克隆定理安全性的地基量子比特和经典比特最大的不同在于量子比特可以处于叠加态。你可以把它理解成一个球面上的任意一个点而不只是“0”或者“1”两个端点。当你想读取这个量子比特的内容时必须对它做一个测量。这个测量的结果是概率性的——以一定的概率得到0以一定的概率得到1而且测量动作本身会让量子态“坍缩”到一个基矢方向上。也就是说读完一次之后原本的那个量子态就已经不存在了你再怎么测得到的是坍缩后的状态而不是原来的叠加态。读一次毁一次这是量子测量内建的行为不需要额外的销毁电路。但这里有个问题如果我准备了一个量子比特去存储信息难道我没有办法在测量之前先复制一份吗答案是不行。这就是量子不可克隆定理它说的是对于一个未知的量子态你不可能构造出一个装置能完美地复制出两份完全相同的副本。原因非常直观如果要复制你就要通过某种方式去获取这个态的信息也就是测量它而测量已经改变了原来的状态。所以未知的态只有一份复制是物理上不可能的。这里要特别强调“未知”这两个字。如果制备量子态的制备方知道自己制备的是哪个态那他是可以准备好几份一模一样的拷贝的。OTM的核心假设就是写入者写入一个量子态之后不应该再保留对这个态的任何有效信息或者说对于读取者来说这个态必须是未知的。这个“未知”的设定不是可有可无的条件而是OTM安全性的先决条件。2.2 从制备到销毁的完整链路一个标准的量子OTM的工作流程可以拆成三个阶段第一阶段是制备。某个设备生成一个随机量子态可以理解为在量子比特的球面上随机选一个点然后把制备过程用的随机参数丢弃不留备份。这一步极其关键如果制备方偷偷记下了这个参数那这个OTM的安全性就归零了因为制备方可以无限复制这个态。第二阶段是存储与传递。量子态被存放在某种可以长时间保持量子相干性的介质里或者通过量子信道发送给使用方。在这一阶段量子态不能被任何人读取否则就会坍缩。这相当于一个“密封的信封”但比任何经典信封都更强——经典信封可以被拆开再粘上量子信封一旦被拆开物理状态就永久改变了。第三阶段是读取与销毁。使用方对这个量子态执行一组测量操作得到一组测量结果然后基于这些结果提取出信息。测量完之后量子态已经坍缩到某个本征态上不再携带原来的量子信息。此时无论谁来读都无法恢复原始状态。从这个链路可以看出OTM的“销毁”不是一个附加的物理模块而是测量动作本身自带的副作用。它不需要额外的保险丝不需要可信的销毁指令不需要任何硬件制造商来保证“我这块芯片不会背叛你”。因为量子力学本身不允许第二个人再读到同样的内容。2.3 为什么“未知态”如此重要在实际讨论OTM时我经常看到有人犯一个很典型的错误他们觉得那我把“你好”这两个字编码到一个量子态里不就行了吗存储端和读取端都约定好编码规则不就是OTM了吗这里的问题在于如果编码规则是公开且确定的那这个量子态对读取者来说其实是“已知”的量子不可克隆定理就不适用了读取者完全可以预先制备无数份备份。这就完全失去了一次性语义。更严谨的说法是OTM存储的内容本身不能直接是一个经典的公开编码而应该是一组只能通过特定测量才能提取的信息。它与测量基的选择强绑定。你可以这样理解一个量子OTM里面装的不是一篇完整的小说而是一把锁和一套开锁指令的某种叠加读取者必须同时知道“锁是什么”和“怎么测”才能解开内容。而“怎么测”这件事情可以由另一个经典信道来传递。我自己的经验是不要试图把OTM理解成一个高容量的存储设备它更适合被理解成一个“一次性验证凭证”。它承载的不是大数据而是“防伪造、防重放”的安全语义。想通了这一点后面应用场景就非常顺了。3. 物理实现与安全模型理想很硬核现实很骨感原理归原理真正要把OTM做出来难度是肉眼可见的。因为量子态太脆弱了环境噪声、光纤损耗、探测器的效率每一个环节都会造成信息的丢失或误判。这一节聊一聊从理论模型到物理设备之间到底隔着哪些工程上的坑。3.1 用什么量子比特当“内存”学术界和工程界尝试过的OTM实现方案大多基于光量子系统。原因很简单光子的量子态在光纤中可以传播较远的距离而且现有的单光子源和单光子探测器技术相对成熟。你可以把光子的偏振态当作量子比特的两个基矢也可以使用光子的轨道角动量、时间片位置等自由度来承载信息。从理论角度一个最直接的物理实现是设备随机发送一个偏振态未知的单光子接收方用一个随机选择的测量基去测量这个光子。由于接收方在测量前不知道偏振态也不确定测量基测量结果只能给出部分信息单光子的量子态在测量后也完全消失。这就是一个最简单的OTM的原型。但是在真实物理系统里没有什么是100%的。单光子源不可能做到每次只发射一个光子经常会出现多光子事件这就意味着携带信息的量子态可能被复制了多份安全边界一下子就破了。探测器也有暗计数和探测效率的问题光子衰减之后可能根本就没测到信息。所以工程上只能退而求其次采用所谓的“弱相干脉冲”方案并接受一定的误判率。3.2 噪声、退相干与“有效安全性”的取舍现实的量子系统有一个很讨厌的现象叫退相干。量子态与环境相互作用之后叠加性会逐渐丢失最终蜕化成一个经典的混合态。如果OTM里面的量子态在存储或者传输过程中发生了严重的退相干读取者可能无法正确提取信息更糟糕的是攻击者也可能利用退相干的过程残留一些经典信息来猜测原本的量子态。为了应对这个问题实际可行的方案会引入冗余编码但这里有个很微妙的安全逻辑如果为了防止信息丢失而做冗余那么复制的问题就来了——冗余本身就意味着量子信息被复制了多份。这正好撞在不可克隆定理的枪口上。所以“抗噪声”和“一次性”之间存在一种天然的张力。目前学术界解决这个矛盾的常见办法是不完全要求OTM做到绝对物理安全而是强调一种“可检测的篡改”语义。也就是说攻击者确实可以截获这个量子OTM但他截获本身就会造成可观测的扰动合法接收方通过校验步骤就能发现“这个OTM已经被打开过了”。这实际上是把OTM从“无条件安全的一次性存储”降级成了“可感知窃听的安全信道”这也是很多量子密钥分发系统在实际部署中的普遍姿态。理论很美丽工程要务实。3.3 和量子加密、量子通信的关系很多人一听到OTM会自然联想到量子加密。其实两者的关系非常近但又不能完全画等号。量子加密的核心思路是利用量子态的测量坍缩来检测窃听并在此基础上实现密钥分发。OTM则可以看作一种更极端的形式它不只是检测窃听而是直接把“读取一次”作为信息交付的形式本身。OTM更像是量子通信网络里的一个基础原语而不是一个完整协议。它经常被当作组件嵌入到量子比特承诺、量子安全投票、量子货币等更上层的协议里。我之前在一个项目里尝试过把OTM的思想引入到类似于“一次性授权码”的场景中发现如果没有量子信道OTM就根本无从谈起。所以可以粗浅地理解为量子通信提供了传递量子态的物理基础设施而OTM是跑在这套设施上的一个高价值应用。两者相辅相成但并不等价。4. 应用场景解析OTM能在哪里真正发光发热OTM听起来很玄但它解决的问题其实非常具体防伪、防重放、防复制。在数字世界里“复制”几乎不花任何成本但有很多场景就是要求某样东西只能存在一次、用一次。量子OTM为这类场景提供了一个物理层面的答案。4.1 量子货币最直观的一次性凭证量子货币是OTM最经典也是最早期的应用构想之一。思路是这样的银行发行一张“量子钞票”钞票里随机嵌入一串量子态只有银行知道这些量子态对应的测量信息。收款方收到钞票后虽然可以把量子态保存下来但他无法复制它因为不可克隆定理限制了复制行为。他可以随机选择测量基去验钞拿到一个不完整的验证结果。最妙的是就算他把这张钞票再转手给第三方这张钞票已经不再是原来的量子态了——因为验证过程本身已经破坏了原始的态多次验证后量子货币就会像旧钞票一样“磨损”最终根本无法通过验证。这个场景完美地利用了OTM“验一次毁一次”的特性。你有没有发现这和日常生活中的现金支付非常像——钞票被花掉之后原持有人手里就没有这张钞票了不存在“一笔钱花两次”的问题。现实中经典的电子货币必须靠一个中心化账簿来防止双花而量子货币靠的是物理定律本身。当然目前这是高度理想化的构想核心障碍在于光子的长距离存储和稳定制备但这不妨碍它成为理解OTM价值的绝佳思想实验。4.2 量子比特承诺与公平掷币比特承诺是密码学里一个经典问题假如有两个人想在线掷硬币决定谁请客这两个人互不信任但又必须保证结果公平。传统方案需要依赖复杂的计算假设或者可信第三方。而有了OTM之后我们可以在一个基础层面构造出无条件安全的协议。大致思路是这样的承诺方可以制备一串量子态把这些量子态按OTM的形式发送给验证方。因为量子态不能被复制承诺方不能同时“打开”两份不同的承诺去耍赖验证方也不能在打开前就偷看结果因为任何偷看行为都会破坏量子态。这相当于一张物理上不可篡改的欠条——承诺方不能反悔验证方也不能伪造。类似的思想还可以用于多轮随机数的安全抽取很多区块链项目团队曾经考虑过用量子手段来改善链上随机数的可信度OTM就是一个理论优雅的方案。说实话这类协议在今天的工程条件下还很难大规模部署但它证明了OTM的价值不止于密钥分发而是深入到安全计算的底层逻辑。4.3 安全投票与模型版权保护再往实际应用方向想两个不那么遥远的场景。一个是匿名投票。传统电子投票系统最大的争议在于如何同时保证“投票人的匿名性”和“票数的可验证性”计票系统需要确保每一张票都是有效的、没有被重复计算的。如果每一张票都带有一个OTM凭证每次计票时这个凭证只能被读取一次那就从物理上杜绝了“重复投票”的可能同时因为OTM不关联具体身份信息还能保留匿名性。另一个是现代人工智能行业非常关心的版权问题——模型权重保护。一个训练好的深度学习模型权重文件是可以被无限复制的盗版模型因此屡禁不止。虽然OTM不能存储几百GB的权重文件但它可以作为一种“单次使用授权令牌”存在。每次推理服务启动前客户端需要读取一个量子OTM令牌来激活模型令牌读一次就失效这样就能防止模型授权被无限转发。我今天不能写代码复现这个项目但这个思路我听某位同行讲过他认为等单光子设备成本降下来之后这类“量子防复制授权”可能会先于量子计算机落地因为它对通用量子计算的能力要求其实很低只要求可靠的量子态制备和测量就行。5. 常见误区与问题速查理解OTM时最容易踩的坑写到这里我顺手整理了一份高频问题清单这些问题我在各种技术讨论里经常看到。5.1 “量子OTM能存多少数据”这类问题错在哪最常见的一个误解是把OTM当成普通存储介质来问容量。严格来说一个量子OTM承载的经典信息量在理想情况下可能是非常少的甚至少到只有几个比特但它蕴含的“防复制、防篡改”语义价值是远超这几个比特的。如果你要存一篇长篇消息不应该直接编码成量子态塞进去而应该配合经典加密一起用OTM用来传递一次性密钥真正的消息用密钥加密成经典密文。这其实就是量子密钥分发替我们解决的事情。你看OTM真正的定位是认证和防重放而不是大容量存储。想通这一点之后很多围绕OTM的困惑都会瞬间消散。5.2 实际部署中最容易评估不足的工程问题单光子源的多光子泄漏所谓的“单光子”脉冲经常包含多个光子比如微弱激光脉冲的泊松分布这就相当于同一份量子态被复制成了多份安全语义会遭到严重破坏。工程上通常要求平均光子数小于0.1并把多光子事件当作泄露风险来处理。信道损耗和探测器死时间光子在光纤里传不远探测器测量一个光子之后需要时间恢复这会导致OTM的读取成功率远低于100%。为提高成功率而做的冗余设计又可能引入重复测量风险。这是一个两头堵的问题。时间同步问题量子OTM往往要求发送方和接收方严格对齐测量时间窗口如果攻击者可以利用时间同步误差插入假信号就可能伪造OTM内容。如果你真打算在某个系统里引入OTM概念上面的三个问题必须提前做方案预案不要再踩我踩过的坑了。5.3 OTM与量子机器学习、量子计算的关系顺便回应一下最近的热搜词“量子机器学习 基于 python”“量子计算需要学多久”。OTM本身并不是量子机器学习算法也不是量子计算机上跑的量子程序。它是量子信息论里的一个安全原语跟“多久能学会量子计算”这种学习路径问题完全不相关。学量子机器学习你更多会接触变分量子线路、量子神经网络这些概念而学OTM你更需要懂的是测量理论、不可克隆定理和密码学安全模型。两者在知识树上离得挺远但都属于量子信息这个大的方向。我理解大家看到“量子”两个字就很容易把所有相关概念都混在一起实际上量子领域内部的分工比很多人想象得要细得多。分清“量子计算”“量子通信”“量子加密”和“OTM”之间的差别是避免后续学习跑偏的关键一步。最后说点实在的我个人的体会是OTM这类概念的价值不在于你今天能不能立刻部署一个能跑的量子系统而在于它帮你彻底换了一套思考安全问题的视角。经典安全方案总是在假设攻击者的算力和能力范围而量子方案试图把安全建立在物理定律的层面上这个思路的转变是本质性的。如果有人在学新知识的时候总是习惯性地问“这东西多久能落地”我倒想建议他换个问法这个东西解决了一个什么经典方案解决不了的问题OTM的答案非常清晰——它让“一次性”从一种需要信任的承诺变成了一种物理事实。理解这一点比记住任何公式都有用。

相关新闻

WBS工作分解结构实战指南:从项目失控到清晰交付

WBS工作分解结构实战指南:从项目失控到清晰交付

1. 为什么每个项目老手都在强调WBS刚带项目那会儿,我最怕听到的一句话就是“这个功能大概什么时候能做完”。不是不想回答,是根本答不上来。脑子里只有一团模糊的“要做登录、要做支付、要做后台”,但具体拆到哪一层、每层谁负责、依赖关系是…

2026/10/9 18:21:15 阅读更多 →
程序员厂外生存指南:构建个人操作系统的方法论

程序员厂外生存指南:构建个人操作系统的方法论

1. 这份“厂外生存指南”到底是什么,又为什么让程序员集体破防?“Googler高级工程师打造‘厂外生存指南’,程序员感叹:‘谷歌拯救世界’”——这个标题一出来,我第一时间点开,不是因为对谷歌有多崇拜&#…

2026/10/9 18:21:15 阅读更多 →
PaperSpine 3.x升级到4.0完整攻略:如何用--clean-legacy彻底清理旧版worker残留

PaperSpine 3.x升级到4.0完整攻略:如何用--clean-legacy彻底清理旧版worker残留

PaperSpine 3.x升级到4.0完整攻略:如何用--clean-legacy彻底清理旧版worker残留 【免费下载链接】PaperSpine PaperSpine5 — local-first, evidence-bound paper research, writing, figures, review and delivery. Download: https://wubing2023.github.io/PaperS…

2026/10/9 18:21:15 阅读更多 →

最新新闻

MySQL二进制数据读写实战:BLOB字段选型、写入读取与避坑指南

MySQL二进制数据读写实战:BLOB字段选型、写入读取与避坑指南

做开发这些年,但凡跟文件打交道的业务,迟早会撞上一个问题:图片、PDF、序列化对象这些二进制数据,到底要不要直接塞进数据库?“Mysql实战——二进制数据读写”这个标题看着朴素,背后其实是数据库设计里一个…

2026/10/10 20:48:32 阅读更多 →
刚刚:开源『语义 if』SemIf 冲进 GitHub 搜索前10,中文社区当天就挂出 3090 实战

刚刚:开源『语义 if』SemIf 冲进 GitHub 搜索前10,中文社区当天就挂出 3090 实战

刚刚:开源『语义 if』SemIf 冲进 GitHub 搜索前10,中文社区当天就挂出 3090 实战 【免费下载链接】SemIf-OpenJev Semantic ifs from open models, on a 3090 at home. Independent; not affiliated with Jev or TypeSafe. 项目地址: https://gitcode.…

2026/10/10 20:48:32 阅读更多 →
Fine语言中math.atan函数详解:从斜率到角度的换算与实践

Fine语言中math.atan函数详解:从斜率到角度的换算与实践

在工程项目和脚本开发里,我们经常要处理角度和斜率之间的换算。之前有位同事调一个设备定位脚本,卡在“已知两点坐标,求设备朝向角”这个需求上,绕了一大圈才想起来用反正切函数。其实这类问题在Fine语言里处理起来非常直接&#…

2026/10/10 20:48:32 阅读更多 →
Python数据处理与SQLite数据库访问:从入门到实战通关

Python数据处理与SQLite数据库访问:从入门到实战通关

每次带实验课,总有几个同学会卡在“实验三:Python 常用类库与数据库访问”这一关。看着题目不复杂,真上手却状况百出:numpy 装不上、DataFrame 不知道从哪下手、SQLite 连上了又读不出数据。这个实验其实把 Python 从“会写语法”…

2026/10/10 20:48:32 阅读更多 →
按钮禁用时 hover 效果还在?用 is-disabled 彻底消除的完整方案

按钮禁用时 hover 效果还在?用 is-disabled 彻底消除的完整方案

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

2026/10/10 20:48:32 阅读更多 →
纯Java手写TopoJSON生成器:从GeoJSON到拓扑压缩的完整实践

纯Java手写TopoJSON生成器:从GeoJSON到拓扑压缩的完整实践

做 WebGIS 的同学这两年应该对 TopoJSON 不陌生,尤其当你需要把全省县级行政区划、全国路网这类动不动几十 MB 的 GeoJSON 塞进浏览器时,TopoJSON 几乎成了绕不开的选项。它的核心价值只有一句话:在拓扑关系上做文章,让共享边界只…

2026/10/10 20:47:31 阅读更多 →

日新闻

卫星轨道分类全解析:从LEO到GEO的选型逻辑与工程实践

卫星轨道分类全解析:从LEO到GEO的选型逻辑与工程实践

1. 从“卫星轨道分类”这个标题说起:为什么值得花时间搞懂第一次接触“卫星轨道分类”这个概念,很多人会觉得它离自己很远——不就是天上的星星怎么转吗?但如果你正在做航天任务规划、遥感数据接收、星座设计,甚至只是准备一场航天…

2026/10/10 0:00:39 阅读更多 →
Spring AOP 核心原理与实战:从概念到日志切面落地

Spring AOP 核心原理与实战:从概念到日志切面落地

1. 从一个真实痛点说起:为什么你的代码里到处都是重复逻辑刚入行那会儿,我写过一个用户管理模块,注册、登录、改密码、注销四个接口。每个接口里都塞了几乎一样的日志打印、参数校验、事务开启和提交。当时觉得没什么,能跑就行。直…

2026/10/10 0:00:40 阅读更多 →
Python招聘数据采集与分析可视化:从采集清洗到薪资技能城市可视化全链路

Python招聘数据采集与分析可视化:从采集清洗到薪资技能城市可视化全链路

简介:这是一套面向计算机相关专业学生与项目实战学习者的Python数据采集与分析可视化完整项目,以Boss直聘岗位数据为对象,适合用作毕业设计、课程设计或期末大作业。资源包共38个文件,约246KB,以13个py源码文件为核心&…

2026/10/10 0:00:40 阅读更多 →

周新闻

KT148A语音芯片外挂8002D功放的工程实践指南

KT148A语音芯片外挂8002D功放的工程实践指南

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

2026/10/10 11:14:25 阅读更多 →
LLC谐振变换器增益公式推导:从FHA等效到完整归一化表达式

LLC谐振变换器增益公式推导:从FHA等效到完整归一化表达式

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

2026/10/10 1:36:08 阅读更多 →
ARM架构深度解析:从RISC设计理念到交叉编译实战

ARM架构深度解析:从RISC设计理念到交叉编译实战

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

2026/10/10 11:14:58 阅读更多 →

月新闻

我发现了一个新思路:用 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/10 5:23:50 阅读更多 →
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/9 21:32:20 阅读更多 →
黑夜航拍船只数据集训练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/10 10:38:42 阅读更多 →