CPU占用率刷写工具:原理、参数与避坑指南
简介这款Windows系统下的CPU使用率控制工具面向开发者、系统管理员与硬件爱好者。它可在浏览器中设定目标占用率和持续时间并按需自由调节模拟指定负载用于压力测试、散热表现验证以及性能调优整个过程无需命令行参与即可完成。整个资源包大小仅34KB共2个文件由1个HTML页面和1个JS脚本组成免安装在基于Chromium内核的浏览器中打开即可使用关闭页面后负载模拟随即停止。目前已有718人学习下载。通过完整前端源码既可快速获得一个轻量负载测试工具也能学习如何用脚本控制处理器占用、设置定时停止和实时刷新为系统性能评估提供可复用的参考实践同时需注意长时间高负载会加重散热负担测试时应确保通风良好。1. 从「CPU占用率低」说起这个刷占用率工具解决什么问题「Windows 刷 CPU 使用率工具」听起来像个没多大技术量的小插件可我在性能测试和演示环境里折腾过几次之后发现很多场景还真离不了它。硬件评测、散热测试、负载均衡验证、给客户演示监控面板甚至是在虚机里模拟业务高峰都需要一台机器稳稳地跑在某个固定占用率上而不是靠人为点几下鼠标去制造随机负载。这个工具解决的就是“把占用率刷到指定值并保持住”这件事适合做性能测试、压测前的基准准备、给内部系统做资源占位的人。别小看这个功能参数没调对时CPU 占用率能给你表演一波心电图式的抖动这一篇我会把原理、参数、坑全部摊开。2. 刷占用率的底层原理自旋、Sleep 与优先级选择2.1 先搞清楚 Windows 里的占用率是怎么算出来的很多人以为 Windows 任务管理器上的 CPU 占用率是“瞬时值”实际上它是一个采样窗口内的平均值。任务管理器默认每 2 秒左右刷新一次计算方式是统计每个逻辑处理器在线程上执行的空闲时间占总时间的比例然后算出占用率。这里有两个关键点一是采样窗口二是空闲线程。Windows 每个逻辑处理器上都运行着一个空闲线程系统调度器统计时间时没有其他线程可跑就执行空闲线程消耗掉的时间会被记入 CPU 占用 0% 那一边。所以要让 CPU 占用率显示为某个百分比本质上不是“打满”而是“让每个采样窗口内的非空闲占用时间占比刚好等于目标值”这是一个周期性的占空比控制问题。在 Windows 上实现这种占空比控制常见做法是让一个工作线程反复执行“忙一会儿、睡一会儿”的循环。忙的时间占总周期时间的比例就是大致的占用率。比如忙 50 毫秒、睡 50 毫秒周期 100 毫秒理论占用率就是 50%。实际跑起来会有偏差因为操作系统线程调度、计时器精度、超线程都会影响最终显示结果这也是后文避坑章节里那些怪现象的源头。2.2 为什么用「自旋 Sleep」而不是空转死循环最简单的刷占用率方式是写一个死循环 while(true); 让线程永远不释放 CPU占用率直冲 100%。这种写法适合瞬间打满机器但完全无法控制目标百分比。我见过有人想刷 50% 就开两个线程一个死循环一个 Sleep结果实际占用率在任务管理器里抖动非常厉害因为线程调度器和时间片分配并不均匀。死循环方式还有另一个副作用它会拉满一个逻辑核心的全部算力导致机器响应变慢连鼠标都开始飘。更稳的思路是让每个工作线程在时间轴上来回切先忙一段再用一段小 Sleep 主动让出 CPU之后继续忙。这个循环里的忙与睡比例就是这台机器上该线程贡献的占用率。Sleep 的粒度很关键Windows 普通计时器的默认精度约 15.6 毫秒如果你忙 10 毫秒睡 10 毫秒实际可能是忙 20 毫秒睡 20 毫秒甚至更糟所以高质量工具都会主动拉高计时器精度把最小计时单位调到 1 毫秒占用率曲线的线性度立刻好很多。2.3 两种实现选型PowerShell 脚本与 C# 小工具实际刷 CPU 使用率的工具我手上这套资源里给的是两条路线一是 PowerShell 脚本包适合临时环境快速跑二是 C# 编译的小工具适合长期后台运行和压测场景。PowerShell 的好处是无依赖、代码透明坏处是解释执行有一定性能开销而且计时精度容易受其他 PS 命令干扰。C# 编译版本则稳得多能直接调用 Win32 API控制线程优先级和 CPU 亲和性也更方便。PowerShell 原型核心代码大致长这样param( [int]$Cores 2, [int]$TargetPercent 50, [int]$DurationSeconds 60 ) $sw [System.Diagnostics.Stopwatch]::StartNew() $scripts () for ($i 0; $i -lt $Cores; $i) { $job Start-Job -ScriptBlock { param($percent, $duration) $cpu New-Object System.Diagnostics.Process # 每个 Job 里循环忙等与休眠 $stopwatch [System.Diagnostics.Stopwatch]::StartNew() $busyMs $percent $idleMs 100 - $percent while ($stopwatch.Elapsed.TotalSeconds -lt $duration) { $loop [System.Diagnostics.Stopwatch]::StartNew() while ($loop.Elapsed.TotalMilliseconds -lt $busyMs) { } Start-Sleep -Milliseconds $idleMs } } -ArgumentList $TargetPercent, $DurationSeconds $scripts $job } $scripts | Wait-Job $scripts | Remove-Job这段脚本按Cores参数启动对应数量的后台任务每个任务在指定时长内重复忙等和休眠。busyMs直接用目标占用率数值idleMs用 100 减去占用率周期合计 100 毫秒。这样逻辑上简单但实际精度依赖Start-Sleep的计时器精度跑出来的占用率在线程数较多时会有 ±5% 的偏差。如果只想快速验证脚本够用想要更稳定输出就得用 C# 版本在循环里调用timeBeginPeriod(1)把系统计时精度调到 1 毫秒再配合 Thread.Sleep 和 SpinWait 组合。3. 部署与参数调节把 CPU 稳稳刷到目标的四个关键步骤3.1 运行前提与静默启动这个工具包的运行前提不算苛刻Windows 10 或 Windows Server 2016 以上系统即可PowerShell 路线要求本机 PowerShell 5.1 以上。C# 版本是编译好的单文件小工具不需要额外装 .NET 运行时之外的东西但部分精简版系统可能会提示缺少 VC 运行库这通常是系统组件缺失不是工具本身的问题。首次使用前我一般会先做三件事以管理员身份打开 PowerShell检查当前执行策略是否允许运行脚本确认逻辑处理器数量然后把工具目录加入杀毒软件白名单。静默启动是给无人值守场景准备的。工具包内有一个run_hidden.bat用powershell -WindowStyle Hidden -ExecutionPolicy Bypass -File cpu_loader.ps1 -Cores 4 -TargetPercent 60这种方式拉起脚本窗口不会弹出适合远程桌面断开时使用。日志会写到同目录下的cpu_loader.log每次启动记录参数和时间方便和监控系统对照。这个细节在压测现场特别有用不然监控平台看到一个莫名进程还不知道是什么时候拉起来的。3.2 目标占用率与时间长度怎么搭参数搭配上不要随意填。比如机器是 8 核 16 线程你想起 50% 占用率最简单的方式是让 8 个物理核心对应的线程各跑 50%而不是让 16 个逻辑处理器全部跑 50%。因为超线程在很多负载模型下只能提供 1.2 到 1.3 倍的执行能力逻辑处理器忙闲比例会失真。更稳妥的做法是只跑物理核心数减一的线程留一个核心给系统调度和其他进程避免整机卡死。时间长度方面短于 30 秒的刷占用率没有意义任务管理器采样窗口还没稳定下来就结束了。我在做散热测试时一般跑 10 分钟以上做性能基准时跑 30 分钟以上。工具内对应的参数是-DurationSeconds默认 60 秒。如果你填 0 表示无限跑要手动停止时用任务管理器结束进程或者执行工具包里的stop_loader.bat它会按进程名结束对应实例。3.3 命令行示例与参数说明实际操作中最常用的是下面这条命令.\cpu_loader.exe --cores 6 --target 70 --duration 300 --affinity 0x3F --priority Normal这里--cores 6表示创建 6 个工作线程--target 70表示目标占用率 70%--duration 300表示持续时间 300 秒--affinity 0x3F表示线程亲和性掩码为 0x3F也就是只允许这 6 个线程在 CPU0 到 CPU5 上运行--priority Normal是线程优先级。为什么要显式指定亲和性因为不指定时Windows 调度器会把这些工作线程均匀散到所有逻辑处理器上每个核心都吃一点负载监控面板上看起来像“均匀占用”但实际上对特定核心的发热测试、降频测试没有参考价值。参数表里还有几个值得关注的项参数取值范围说明--cores1 到逻辑处理器数工作线程数建议取物理核心数减一--target1 到 100目标占用率不宜低于 5太高容易造成系统无响应--duration秒数或 00 表示无限运行手动停止--affinity十六进制掩码控制线程分布到哪些核心--priorityIdle/BelowNormal/Normal/High生产环境慎用 High会饿死业务进程4. 进阶玩法CPU 亲和性绑定与模拟真实业务负载4.1 把压力进程绑定到指定核心绑定核心这个功能是我在实际项目里被“逼”出来的。有一次要给多实例应用做扩容测试需要验证新增节点的负载均衡是否生效要求业务机器上的 8 个逻辑处理器分别占用 30%、40%、50%、60%、70%、80%、70%、60%形成一条山峰状的曲线。单纯开多个线程随机分配根本做不到必须给每个线程指定亲和性。C# 工具里可以直接通过ProcessorAffinity属性给每个线程设置掩码比如线程 0 对应核心 0线程 1 对应核心 1互不干扰。如果你用的是 PowerShell 脚本想实现类似效果就得调用 .NET 的ProcessThread.ProcessorAffinity接口。脚本思路是启动多个后台进程而不是 Start-Job每个进程设置ProcessorAffinity后独立跑自己的忙睡循环。注意PowerShell 的 Start-Job 会产生新的 PowerShell 进程修改它内部线程亲和性比较麻烦我建议这时候直接用 C# 版本省得在脚本层绕来绕去。4.2 用波动幅度制造「锯齿」和「阶梯」负载有些测试场景需要模拟真实业务的 CPU 波动。比如网关在高峰期每秒处理 2000 个请求CPU 曲线是锯齿状而不是一条直线。固定百分比占用率显然不够真实所以工具包里加了--wave参数。支持两种模式锯齿波和阶梯波。锯齿波是让目标占用率从低到高线性上升到顶后快速回落循环往复阶梯波是每过一段时间把目标占用率往上抬一级停留一段时间再继续抬。实现原理并不复杂每个工作线程内部维护一个当前目标值在每次循环开始时根据时间计算是否需要调整忙睡比例。忙比例不再是一个常量而是随时间变化的函数。这样做的好处是压测方可以通过监控曲线直观看到业务波动缺点是对计时精度要求更高因为忙睡比例在 5% 到 90% 之间动态变化计时误差会被放大。工具内使用--wave sawtooth --min 30 --max 80 --step 5 --interval 10来控制波形参数interval表示每个台阶持续 10 秒。4.3 和现有业务进程错开优先级刷占用率工具在跑的时候如果不注意优先级很容易把同一台机器上的业务进程挤到墙角。默认我在压测时把优先级设成BelowNormal既保证占用率能拉上去又给数据库和中间件留出调度空间。遇到需要验证极端情况时才会设成High但运行时间不会超过 10 分钟。如果你用 PowerShell 脚本跑可以在进程启动后通过$process.PriorityClass调整进程优先级。这里有个细节进程优先级和线程优先级是两套体系Windows 最终生效的优先级是两者叠加。工具内--priority Normal设置的是线程优先级进程优先级默认还是 Normal所以如果业务系统对延迟敏感建议同时在任务管理器里把cpu_loader的进程优先级调低或者用--process-priority BelowNormal参数一并处理。5. 避坑指南占用率上不去、任务管理器没反应与性能缺失5.1 现象目标 50% 占只显示 25%有次我在一台 8 核 16 线程的机器上跑--cores 8 --target 50任务管理器显示的 CPU 占用率却稳定在 25% 附近怎么调参数都没用。排查后发现原因是这样的工具内的--cores参数默认是按逻辑处理器数量来创建线程的我以为设置 8 个线程就能占满 8 个物理核心但 Windows 的调度器把线程分配到 8 个超线程“兄弟”核心上虽然各自在忙但物理核心的执行单元被两个逻辑处理器共享实际占用只有物理核心的一半。解决方法是按物理核心数创建线程不要按逻辑线程数。在 Intel 和部分 AMD 平台上工具会自动检测物理核心数并修正--cores的默认值检测不到的机器上就手动指定--cores为物理核心数减一。验证方法也很简单打开任务管理器把 CPU 视图切换成“按核心显示”看看是不是每个物理核心的两个逻辑线程都在忙如果是那就需要再减半。5.2 现象占用率锯齿状震荡像心电图一样用 PowerShell 脚本跑时占用率曲线经常呈现出规律的锯齿状最高点和最低点相差 10% 以上。这个问题的根源是Start-Sleep的计时精度太低默认时钟分辨率约 15.6 毫秒当你设置忙 30 毫秒、睡 70 毫秒时实际可能忙 30 多毫秒、睡 93 毫秒占空比完全偏离预期而且每次 sleep 的误差方向不同曲线自然波动。解决办法是调用 Win32 API 把系统计时器周期临时调整到 1 毫秒。C# 版本里通过 P/Invoke 调用timeBeginPeriod(1)和timeEndPeriod(1)包住整个运行周期。PowerShell 脚本里也可以用Add-Type声明 API但要注意运行结束后必须调用timeEndPeriod恢复否则系统计时器一直保持高精度会增加一定功耗。工具包的脚本里已经处理好了但如果你是自己手写脚本记得在 finally 块里恢复。5.3 现象任务管理器占用率数字没变化工具却显示在跑还有个常见迷惑工具日志显示线程已创建忙睡循环也在跑任务管理器里却看不到占用率明显抬升。一种情况是进程优先级太低加上系统正忙工作线程被调度器延迟到很晚才运行另一种情况是电源管理设置为节能模式CPU 频率被压得很低占用率虽然显示高但任务管理器默认显示的是“整体 CPU 使用率”折线可能被其他曲线盖住了。排查时先看工具日志和性能监视器不要只盯着任务管理器。如果确认线程在跑检查电源计划是否设成了高性能或平衡模式并把“处理器最小状态”调到 5% 以上。另外有些远程桌面工具的任务管理器显示的是服务器端 CPU而不是当前会话的 CPU换个客户端看就正常了。5.4 现象杀毒软件误判为挖矿或恶意进程刷占用率工具的行为特征和挖矿脚本高度相似多线程忙等、长时间占满 CPU、以低可见度方式运行所以很多杀毒软件会直接报毒。我当时用的脚本第一次就被某卫士拦下来了现象是进程刚启动就被删目录被隔离。解决思路有三个一是给工具目录加白名单二是把脚本文件用代码签名证书签名降低误报率三是如果现场不能加白名单就把 C# 版本作为后台服务安装并捆绑实际业务场景的参数备注方便给运维解释。严格意义上这种工具被误报是正常的真正要留意的是别把工具包装成名不副实的名字避免安全团队在审计时误会更麻烦。6. 最后一招用性能计数器做 30 分钟稳定性验证刷占用率不是“跑起来能到 80%”就算完关键是 30 分钟内波动幅度不超过 ±3%。我用性能监视器里的Processor % Processor Utility计数器验证同时开启日志记录到 CSV 文件每 10 秒采样一次。验证目标是连续 30 分钟曲线平稳中间没有超过 2 分钟的明显凹陷或凸起。如果发现波动超限优先检查是否被系统其他高优先级任务抢占再看工具设置的目标百分比是否接近 100%。建议验证完顺手把运行参数和日志一起归档压测报告里附上这部分数据后续复现才有据可查。除了计数器我习惯在验证期间同时开着任务管理器的“逻辑处理器”视图确认每个绑定的核都在按预期工作而不是负载集中到了某一个核上。从那以后我每次刷占用率之前都会强制走一遍“目标核数量确认、计时精度确认、优先级确认”的固定流程省掉了大量翻车后的排查时间希望帮到你。本文还有配套的精品资源点击获取

相关新闻

桌面端AI编程工具实战:从需求描述到可运行代码的完整指南

桌面端AI编程工具实战:从需求描述到可运行代码的完整指南

1. 从一条早报说起:桌面端AI编程工具到底在解决什么问题早上刷到一条消息,说OpenAI发布了Windows版的Codex应用。我第一反应不是“又多了一个工具”,而是“终于有人把这件事往前推了一步”。为什么这么说?因为过去一年多&#xff…

2026/10/11 4:38:18 阅读更多 →
Claude Code做视频?180个Skill实测,低星宝藏这样筛

Claude Code做视频?180个Skill实测,低星宝藏这样筛

先说个很多人都问过我的问题:Claude Code 到底能不能“做视频”?我的答案是能,但跟你想的不太一样。它不会像剪辑软件那样给你预览窗口,也不会像渲染农场那样一帧一帧算画面,它是靠一堆开源 Skill 把“做视频”这件大事…

2026/10/11 4:38:18 阅读更多 →
Python代码格式化工具Black实战:统一风格、优化团队协作

Python代码格式化工具Black实战:统一风格、优化团队协作

最近在代码评审的时候,我发现自己越来越不想评论“这里该加个空格”“那个换行不对”这类问题了。不是因为团队纪律变好了,而是我们把Black引入了工作流——提交代码前自动格式化,机器能解决的问题,就不要再让人来争论。这篇就聊聊…

2026/10/11 4:38:17 阅读更多 →

最新新闻

毕业论文答辩PPT模板工程化实践指南

毕业论文答辩PPT模板工程化实践指南

/* 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 6:46:56 阅读更多 →
38款树莓派周末项目实战:从GPIO点灯到智能家居与AI推理

38款树莓派周末项目实战:从GPIO点灯到智能家居与AI推理

/* 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 6:46:56 阅读更多 →
EAF企业智能体平台:统一接入、能力编排与知识沉淀实战指南

EAF企业智能体平台:统一接入、能力编排与知识沉淀实战指南

先说我最近常常见到的一幕。一家企业兴致勃勃地上了好几套 AI 助手,结果 IT 那边同时维护着三四个 Agent 系统,每个系统的接入方式都不一样,各自对接不同的内部应用,知识库也是各建各的。同一个问题,问三个助手能收到三…

2026/10/12 6:46:56 阅读更多 →
智能驾驶行为安全评价:从TTC到ODD的过程化安全度量

智能驾驶行为安全评价:从TTC到ODD的过程化安全度量

简介:这份白皮书聚焦智能驾驶行为安全评价,面向自动驾驶安全研究人员、测试工程师与行业决策者,系统阐述以“合理可预见且可避免”为核心的安全评价方法。内容涵盖功能安全、预期功能安全、行为安全、交规符合性、ODD/ODC合理性、人机交互安全…

2026/10/12 6:46:56 阅读更多 →
品牌命名实战:从商标排雷到跨语言筛查的完整流程

品牌命名实战:从商标排雷到跨语言筛查的完整流程

/* 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 6:46:56 阅读更多 →
Python语音识别实战:从MFCC特征提取到CTC训练与避坑指南

Python语音识别实战:从MFCC特征提取到CTC训练与避坑指南

/* 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 6:45:56 阅读更多 →

日新闻

复古胶片颗粒感噪点合成器:Canvas ImageData 像素高斯杂色注入算法

复古胶片颗粒感噪点合成器:Canvas ImageData 像素高斯杂色注入算法

在数码相机、高清显示屏与现代矢量图形技术高度发达的今天,画面可以做到绝对的锐利、平滑与无瑕。然而,当一张秋日手账插画或拍立得照片过于“平整无瑕”时,往往会散发出一种冰冷生硬的“数码塑料感(Digital Plasticity&#xff0…

2026/10/12 0:00:59 阅读更多 →
活字印刷古籍线装排版:Canvas 竖排文字与栏线自适应算法

活字印刷古籍线装排版:Canvas 竖排文字与栏线自适应算法

在现代网页与移动端设计中,横排(Horizontal Layout)早已经成为了绝对的主流。然而,当我们翻开泛黄的线装古籍、宋版木刻诗集,或是欣赏一张茶道雅集的手写便签时,那种**自上而下纵向书写、自右向左逐列铺展&…

2026/10/12 0:00:59 阅读更多 →
周日晚间的“精神松绑减震器”:无压力情绪倾倒箱与温和轻声陪伴

周日晚间的“精神松绑减震器”:无压力情绪倾倒箱与温和轻声陪伴

每到周日的晚上八点到十点,很多人心里都会悄悄亮起一盏警示灯。 在心理学上,这种现象有一个专门的称谓——“周日夜晚焦虑症(Sunday Scaries)”。明天又是周一,闹钟又要重新在七点响彻卧房;脑海里仿佛有一个…

2026/10/12 0:00:59 阅读更多 →

周新闻

流感时间序列预测实战: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/11 10:45:37 阅读更多 →
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/11 14:36:53 阅读更多 →
黑夜航拍船只数据集训练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/11 14:36:54 阅读更多 →