跨平台SSL证书导入脚本:从手工操作到一键自动化
简介这份资源提供了一套跨平台的SSL证书导入脚本面向需要在Windows与Linux服务器上配置HTTPS通信的运维人员及系统管理员。包内共2个文件分别为Shell脚本与批处理脚本压缩包仅578B体积轻巧便于随项目分发。其中sh脚本面向Linux环境可借助openssl完成证书格式转换、公私钥分离及系统证书目录更新bat脚本面向Windows环境通过certutil实现证书导入与存储位置指定。资源围绕证书与私钥匹配、证书链完整性、pfx密码保护及用户级与全局存储选择等关键点展开帮助读者快速落地证书部署、减少手工操作失误。目前已有699人学习下载适合希望以脚本化方式统一管理证书导入流程的中初级运维人员参考借鉴。1. 导入 SSL 证书执行脚本从手工点点点到一条命令跑通你有没有遇到过这种场景新配了一台测试机浏览器访问内部服务时满屏红色警告命令行里curl直接甩出一句SSL certificate problem: unable to get local issuer certificate。手动导入证书这件事在 Windows 上要点开证书管理器、选存储位置、一路下一步在 Linux 上要改/usr/local/share/ca-certificates/再update-ca-certificates。机器一多重复劳动不说还容易漏掉某台机器导致排查半天。这份「导入 SSL 证书执行脚本」资源核心就是把这套跨 Windows 和 Linux 的证书导入流程固化成可重复执行的脚本。它解决的不是什么高深问题而是环境一致性——让每台机器信任同一批自签或内部 CA 签发的证书。适合需要批量配置开发机、测试环境、CI 构建节点的运维和后端同学也适合刚接触证书链概念、想搞明白系统信任库到底存在哪的新手。2. 证书导入的底层逻辑信任库、格式与脚本选型在动手写脚本之前得先搞清楚一件事所谓「导入证书」本质是把一个 DER 或 PEM 格式的文件放进操作系统或某个运行时自己的信任存储区并触发信任链重建。不同系统、不同运行时这个存储区的位置和更新机制完全不一样。脚本要跨平台就必须把这些差异抽象掉。2.1 Windows 证书存储与 certutil 命令Windows 的证书信任主要分两个层面系统级存储和用户级存储。系统级存储在注册表和文件系统里用户级存储则挂在当前用户配置下。脚本要做的通常是导入到「受信任的根证书颁发机构」或「中间证书颁发机构」。命令行工具certutil是 Windows 自带的证书管理利器。导入根证书的典型命令是# 将证书导入到本地计算机的受信任根存储区 certutil -addstore -f Root C:\certs\my-ca.cer这里-addstore表示添加存储-f强制覆盖同名证书Root是存储区名称对应「受信任的根证书颁发机构」。如果要导入到中间证书颁发机构把Root换成CA即可。注意证书文件格式certutil能识别 DER、Base64、PKCS#7 等多种格式但最稳妥的是用.cer或.crt后缀的 DER 编码文件。如果拿到的是 PEM 格式文本开头有-----BEGIN CERTIFICATE-----需要先转换# 将 PEM 转为 DER 格式certutil 对 DER 支持最稳定 openssl x509 -in my-ca.pem -outform der -out my-ca.cer参数-inform和-outform分别指定输入输出格式不指定时openssl默认按 PEM 处理。转换这一步在脚本里最好做成自动判断检测文件头是否包含BEGIN CERTIFICATE是则先转 DER 再导入。2.2 Linux 信任库与 update-ca-certificates 机制Linux 这边主流发行版分两大阵营Debian 系用/usr/local/share/ca-certificates/放自定义证书然后跑update-ca-certificatesRed Hat 系用/etc/pki/ca-trust/source/anchors/配合update-ca-trust。脚本要兼容两者得先探测发行版。# 探测发行版并选择对应的证书目录和更新命令 if [ -f /etc/debian_version ]; then CERT_DIR/usr/local/share/ca-certificates UPDATE_CMDupdate-ca-certificates elif [ -f /etc/redhat-release ]; then CERT_DIR/etc/pki/ca-trust/source/anchors UPDATE_CMDupdate-ca-trust else echo Unsupported distribution exit 1 fi # 复制证书并更新信任库 cp my-ca.crt $CERT_DIR/ $UPDATE_CMD这段逻辑里/etc/debian_version和/etc/redhat-release是判断发行版的常见依据。证书文件必须是 PEM 格式且后缀建议用.crt因为update-ca-certificates默认只扫描.crt文件。如果拿到的是 DER 格式同样需要转换# DER 转 PEM供 Linux 信任库使用 openssl x509 -in my-ca.der -inform der -out my-ca.crt -outform pemupdate-ca-certificates会把/usr/local/share/ca-certificates/下的证书合并到/etc/ssl/certs/ca-certificates.crt并生成哈希链接。update-ca-trust则更新/etc/pki/ca-trust/extracted/下的合并文件。两者都不会删除已有证书所以重复执行是安全的。2.3 脚本选型Shell 还是 PowerShell跨平台脚本有两种常见做法一种是用 Bash 写主逻辑Windows 下通过 WSL 或 Git Bash 执行另一种是分别写 Bash 和 PowerShell 两个版本用统一的入口脚本分发。我一般倾向于后者因为 Windows 原生环境跑 Bash 总有各种路径和权限的玄学问题。PowerShell 版本的核心逻辑# 检测证书文件格式并导入到本地计算机根存储区 param( [string]$CertPath, [string]$StoreName Root ) # 判断是否为 PEM 格式是则先转 DER $content Get-Content $CertPath -Raw if ($content -match BEGIN CERTIFICATE) { $derPath [System.IO.Path]::ChangeExtension($CertPath, .der) openssl x509 -in $CertPath -outform der -out $derPath $CertPath $derPath } # 导入证书 certutil -addstore -f $StoreName $CertPathparam块定义了两个参数证书路径和存储区名称默认导入到Root。Get-Content -Raw读取整个文件内容用正则匹配 PEM 头。如果检测到 PEM调用openssl转换——这要求系统已安装 OpenSSL或者脚本里内置一个便携版。导入完成后可以用certutil -store Root查看已导入的证书列表确认操作生效。3. 脚本实现从参数解析到批量导入的完整流程有了前面的基础现在可以把整个脚本串起来。一个合格的证书导入脚本至少要处理这几件事参数解析、格式检测与转换、权限检查、导入执行、结果验证。下面按执行顺序拆开讲。3.1 参数设计与命令行接口脚本的命令行接口要尽量简单但也要留出扩展空间。我一般会设计成这种形式./import-cert.sh --cert /path/to/cert.pem --store root --verbose对应的参数解析逻辑# 解析命令行参数 CERT_PATH STORE_NAMEroot VERBOSEfalse while [[ $# -gt 0 ]]; do case $1 in --cert) CERT_PATH$2 shift 2 ;; --store) STORE_NAME$2 shift 2 ;; --verbose) VERBOSEtrue shift ;; *) echo Unknown option: $1 exit 1 ;; esac done # 校验必填参数 if [ -z $CERT_PATH ]; then echo Error: --cert is required exit 1 fi if [ ! -f $CERT_PATH ]; then echo Error: certificate file not found: $CERT_PATH exit 1 fi--cert是必填项指向证书文件--store可选默认root在 Linux 下对应信任库在 Windows 下对应Root存储区--verbose控制是否输出详细日志。参数校验里检查了文件是否存在这是最基本的防御性编程——很多脚本翻车就翻在没检查输入上。3.2 证书格式自动检测与转换证书格式的坑比想象中多。除了 PEM 和 DER还有 PKCS#7.p7b、PKCS#12.pfx等。脚本至少要能处理 PEM 和 DER 的互转遇到其他格式给出明确提示。# 检测证书格式并转换为目标格式 detect_and_convert() { local input_file$1 local target_format$2 # pem 或 der local output_file$3 # 读取文件头判断格式 if head -c 27 $input_file | grep -q BEGIN CERTIFICATE; then current_formatpem else current_formatder fi if [ $current_format $target_format ]; then cp $input_file $output_file return 0 fi if [ $target_format pem ]; then openssl x509 -in $input_file -inform der -out $output_file -outform pem else openssl x509 -in $input_file -outform der -out $output_file fi }head -c 27读取文件前 27 个字节刚好覆盖-----BEGIN CERTIFICATE-----的长度。用grep -q静默匹配命中则判定为 PEM。转换时openssl x509的-inform参数指定输入格式不指定时默认 PEM。这里有个细节如果输入是 PKCS#7 格式openssl x509会报错脚本应该捕获这个错误并提示用户先用openssl pkcs7转换。3.3 权限检查与提权处理导入系统级证书存储需要管理员或 root 权限。脚本应该在执行前检查权限而不是等到certutil或update-ca-certificates报错才让用户去猜。# 检查当前用户权限 check_privilege() { if [ $(id -u) -ne 0 ]; then echo This script requires root privileges. echo Please run with sudo or as root. exit 1 fi }id -u返回当前用户 ID0 表示 root。如果不是 root直接退出并提示。Windows 下对应的检查是判断当前 PowerShell 会话是否以管理员身份运行# 检查是否以管理员身份运行 $currentPrincipal New-Object Security.Principal.WindowsPrincipal([Security.Principal.WindowsIdentity]::GetCurrent()) if (-not $currentPrincipal.IsInRole([Security.Principal.WindowsBuiltInRole]::Administrator)) { Write-Error This script requires administrator privileges. exit 1 }这段代码创建了一个WindowsPrincipal对象检查当前用户是否属于管理员角色。如果不是输出错误并退出。注意exit 1在 PowerShell 里会终止脚本但不会关闭整个会话。3.4 导入执行与结果验证导入动作本身很简单关键是导入后的验证。脚本执行完不验证等于把不确定性留给用户。# 执行导入并验证 import_cert() { local cert_file$1 local store$2 if [ -f /etc/debian_version ]; then cp $cert_file /usr/local/share/ca-certificates/ update-ca-certificates # 验证检查证书是否出现在合并文件中 if grep -q $(openssl x509 -in $cert_file -noout -fingerprint -sha256 | cut -d -f2) /etc/ssl/certs/ca-certificates.crt 2/dev/null; then echo Certificate imported and verified successfully. else echo Warning: certificate imported but verification failed. fi fi }验证逻辑用openssl x509 -fingerprint -sha256计算证书指纹然后在合并后的信任库文件里搜索这个指纹。如果找到说明导入生效。cut -d -f2提取指纹值去掉前面的SHA256 Fingerprint前缀。这个验证方法在 Debian 系上有效Red Hat 系需要把目标文件换成/etc/pki/ca-trust/extracted/pem/tls-ca-bundle.pem。4. 避坑与排查证书导入脚本的五个血泪教训脚本写出来能跑只是第一步真正让人头疼的是各种边界情况和环境差异。下面这五个坑每一个都是我或身边同事实际踩过的。4.1 现象导入成功但 curl 仍然报证书错误原因证书导入到了系统信任库但curl使用的是自己的 CA bundle。很多 Linux 发行版上curl编译时指定了独立的 CA 路径比如/etc/ssl/certs/ca-certificates.crt是系统路径但curl可能链接的是/etc/pki/tls/certs/ca-bundle.crt。另外如果用的是静态编译的curl或者通过某些包管理器安装的版本CA 路径可能完全不一样。解决先用curl -v查看它实际加载的 CA 文件路径然后确认证书是否被合并到了那个文件里。如果路径不一致要么修改curl的配置要么把证书同时导入到多个位置。更稳妥的做法是在脚本里加一个--curl-ca参数允许用户指定额外的 CA bundle 路径。4.2 现象Windows 下 certutil 报「拒绝访问」原因没有以管理员身份运行。certutil -addstore导入到本地计算机存储区需要管理员权限普通用户只能导入到当前用户存储区。另外如果证书已经存在于存储区中且指纹相同certutil默认会报错需要加-f强制覆盖。解决脚本开头就检查管理员权限并提示用户以管理员身份重新运行。对于已存在的证书统一加-f参数。如果确实需要导入到用户存储区把Root换成CurrentUser\Root。4.3 现象Linux 下 update-ca-certificates 报「证书已存在但未更新」原因update-ca-certificates依赖/etc/ssl/certs/下的哈希链接来判断证书是否已存在。如果之前手动删除了链接但证书文件还在或者证书文件权限不对更新命令会跳过该证书。解决先清理旧的哈希链接再重新运行更新。具体命令是rm -f /etc/ssl/certs/*.pem然后update-ca-certificates --fresh。--fresh参数会强制重建所有链接而不是增量更新。注意这个操作会短暂影响依赖系统信任库的服务建议在维护窗口执行。4.4 现象脚本在 CI 环境里执行超时原因CI 环境通常以非交互式方式运行sudo会等待密码输入导致超时。另外某些 CI 镜像里没有预装openssl格式转换步骤直接失败。解决在 CI 脚本里用sudo -n非交互模式执行或者提前配置好免密 sudo。对于缺少openssl的环境可以在脚本里检测命令是否存在不存在则给出明确提示或者改用纯 Shell 实现格式转换虽然复杂但可行。更简单的做法是在 CI 配置里加一步apt-get install -y openssl或yum install -y openssl。4.5 现象导入的证书在 Java 应用里不生效原因Java 有自己的信任库cacerts位于$JAVA_HOME/lib/security/cacerts不读系统信任库。系统层面导入成功Java 应用依然不信任。解决用keytool单独导入# 将证书导入 Java 默认信任库 keytool -importcert -alias my-ca -file my-ca.crt -keystore $JAVA_HOME/lib/security/cacerts -storepass changeit -noprompt-alias是证书别名-keystore指定信任库路径-storepass是默认密码通常是changeit-noprompt避免交互式确认。脚本里可以把这一步作为可选操作通过--java-home参数触发。5. 进阶技巧用指纹校验和幂等设计让脚本更可靠脚本能跑通之后下一步是让它「跑得放心」。两个关键点一是幂等性重复执行不产生副作用二是可验证性每次执行后能确认结果符合预期。5.1 基于 SHA-256 指纹的幂等导入幂等性的核心是「先检查再操作」。对于证书导入检查的依据就是证书指纹。SHA-256 指纹比 MD5 或 SHA-1 更安全也是目前的主流做法。# 计算证书 SHA-256 指纹 CERT_FINGERPRINT$(openssl x509 -in $CERT_PATH -noout -fingerprint -sha256 | cut -d -f2 | tr -d :) # 检查证书是否已存在于信任库中 if grep -q $CERT_FINGERPRINT /etc/ssl/certs/ca-certificates.crt 2/dev/null; then echo Certificate already exists. Skipping import. exit 0 fitr -d :去掉指纹中的冒号因为不同工具输出的格式可能带冒号或不带。检查时直接搜索指纹字符串如果命中就跳过导入。这个逻辑在批量执行时特别有用——比如用 Ansible 或 Shell 循环对一百台机器执行脚本已导入的机器会快速跳过节省时间。5.2 导入前后的信任链验证导入完成后用openssl verify验证信任链是否完整# 验证证书链 openssl verify -CAfile /etc/ssl/certs/ca-certificates.crt /path/to/server.crt如果输出server.crt: OK说明信任链建立成功。如果报unable to get local issuer certificate说明中间证书缺失需要把中间证书也导入。这个验证步骤建议放在脚本的最后作为「交付检查」。5.3 跨平台脚本的目录结构与分发最后说一下脚本的组织方式。我一般会把跨平台脚本做成这样的目录结构import-cert/ ├── import-cert.sh # Linux/macOS 入口 ├── import-cert.ps1 # Windows 入口 ├── lib/ │ ├── detect.sh # 格式检测 │ ├── convert.sh # 格式转换 │ └── verify.sh # 验证逻辑 └── README.md入口脚本负责参数解析和平台判断具体逻辑放在lib/下。这样维护起来清晰也方便单独测试某个模块。分发时直接打包整个目录用户解压后根据系统执行对应入口即可。从那以后我每次写这类环境配置脚本都会强制走一遍「指纹校验 → 导入 → 验证」三步哪怕多花两分钟也比事后排查「为什么这台机器不信任」要划算得多。希望帮到你。本文还有配套的精品资源点击获取

相关新闻

AI批量清洗图片中文与水印:全托管供货图片质检过关实战方案

AI批量清洗图片中文与水印:全托管供货图片质检过关实战方案

做全托管供货的老哥,最近是不是又被平台的图片质检搞到心态崩了?上一秒还在为出单量兴奋,下一秒就收到驳回通知,理由通常是“图片存在非目标语言信息”“图片包含水印或第三方标识”“图片做过不当遮挡处理”。我在跨境供货圈里泡…

2026/10/17 7:09:04 阅读更多 →
Git代码审计实战:从提交规范到问题定位的完整工具箱

Git代码审计实战:从提交规范到问题定位的完整工具箱

1. 版本控制的底层逻辑:为什么审计能力决定了协作质量做开发这些年,我越来越觉得 Git 不仅仅是一个“存档工具”。很多人把 Git 当网盘用,一天下来就是add、commit、push三连,等到真出了问题——谁改的这行代码、为什么改、这个提…

2026/10/17 7:09:04 阅读更多 →
从零到生产:Agent开发原理与实战指南

从零到生产:Agent开发原理与实战指南

1. 为什么说现在入局Agent开发不算晚:先搞懂Agent到底是什么这两年“Agent”这个词几乎要被说烂了,打开技术社区满屏都是“智能体”“多Agent协作”“自主决策”,搞得好像不搞个Agent就不配叫AI从业者一样。但我在实际跟很多开发者聊下来的感…

2026/10/17 7:09:04 阅读更多 →

最新新闻

ThreadX串口通信实战:从信号量到DMA空闲中断的丢数据排查指南

ThreadX串口通信实战:从信号量到DMA空闲中断的丢数据排查指南

简介:本资源面向STM32嵌入式开发者与实时操作系统学习者,聚焦ThreadX下UART串口DMA通信的完整工程实现,解决裸机串口收发效率低、任务间同步困难等问题。工程基于STM32CubeMX生成,结合ThreadX的队列与信号量机制,演示D…

2026/10/17 7:42:12 阅读更多 →
从Agent到AI IDE:一位开发者的年度工具链进化实录

从Agent到AI IDE:一位开发者的年度工具链进化实录

年初那阵子,我参加了几场线上的技术交流,大家开口闭口都是Agent,各种演示视频看着确实唬人——什么自动写周报、自动跑数据分析、自动修Bug。到了下半年,风向变了,圈子里的热门话题从Agent转向了AI IDE,一批…

2026/10/17 7:42:12 阅读更多 →
从零搭建深度学习围棋AI:特征编码、网络训练与MCTS联调实战

从零搭建深度学习围棋AI:特征编码、网络训练与MCTS联调实战

把特征、网络、搜索这三件事从"听说过"变成"跑得通",是我写这篇续篇最想解决的问题。上一篇写深度学习与围棋的结合思路时,有不少读者留言说原理能看懂,但一到自己动手搭系统就卡壳:棋盘状态怎么编码&#xf…

2026/10/17 7:42:12 阅读更多 →
从零构建围棋AI:深度学习与蒙特卡洛树搜索实战解析

从零构建围棋AI:深度学习与蒙特卡洛树搜索实战解析

先算一笔账。19路围棋的合法局面数量大约在10的170次方量级,这个数字比宇宙中的原子总数还要多出不少量级。传统搜索树和简单局面评估在这种复杂度面前基本是失效的,这也是二十多年前程序员用绝对搜索算法做围棋程序时始终卡在业余低段的根本原因。深度学…

2026/10/17 7:42:12 阅读更多 →
数据增强实战指南:五大策略提升竞赛模型泛化能力

数据增强实战指南:五大策略提升竞赛模型泛化能力

数据竞赛打久了,你会越来越明显地感觉到一件事:模型结构的边际收益已经越来越低,真正让你在排行榜上稳住位置的,往往是别人看不见的那部分数据工作。数据增强就是其中最基础、也最容易被低估的一块。在大数据竞赛里,数…

2026/10/17 7:42:12 阅读更多 →
【共创稿事节】HarmonyOS 7 Agent 开发实战 09:Agent 测试评测集

【共创稿事节】HarmonyOS 7 Agent 开发实战 09:Agent 测试评测集

做 Agent 应用最怕的不是「写不出第一版」,而是「改了第三版之后,发现第一版明明答对的题现在答错了」。大模型有随机性、提示词有耦合、工具调用有边界,靠人肉聊天抽查既覆盖不全又无法回放。这一篇我们给 Agent 配上一套离线评测集&#xf…

2026/10/17 7:41:11 阅读更多 →

日新闻

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 阅读更多 →