苹果序列号IMEI查询系统:ASP源码在IIS上的部署与改造指南
简介一份面向动态网站开发者与苹果设备查询场景的完整源码包提供通过序列号或国际移动设备识别码查询设备激活状态、保修期限等信息的网络应用实现。系统采用服务器端脚本编程包含前台页面、查询逻辑、样式与脚本资源适合学习动态网站开发或快速搭建同类查询工具。压缩包共十五个文件主要涵盖页面文件、接口文件、脚本文件、样式表、图片以及一个调试工具整体仅726KB结构精简便于部署和研究。目前已有827人学习下载源码目录包含首页、图片资源、辅助脚本及使用必读文本可帮助理解页面与查询模块的组织方式。借助该包读者可掌握动态查询的实现思路、前端交互与后端接口的衔接方法并可根据需要修改首页定制功能是入门网络查询类项目的实用参考资料。1. 苹果(iphone)序列号和IMEI码查询系统是什么一个能自建验机入口的ASP老项目二手手机交易里序列号和IMEI码查询是刚需报出型号、颜色、容量、激活状态、保修剩余买家才敢付款。这套「苹果(iphone)序列号和IMEI码查询系统 v1.0.1」就是一个典型的ASP源码包——跑在Windows的IIS上前端输入序列号或IMEI后端调苹果公开查询接口把结果渲染成一张验机报告页。因为是老式ASPAccess的技术栈部署和改造成本都低也正因为它老环境配置和权限问题会消耗不少时间。适合三类人做二手手机验机的站长、想自建查询入口的维修店铺以及想研究老式接口调用流程的开发者。下面直接拆目录、拆逻辑、拆坑。2. 源码结构与查询逻辑先搞懂它调了哪个接口2.1 文件布局与三个核心脚本v1.0.1 解压后是十几个文件核心只有三个check.asp、api.asp、db.asp。check.asp是入口负责接收参数、做格式校验和页面渲染api.asp是数据层负责向苹果公开查询接口发起 HTTP 请求并接收响应db.asp是数据库公共函数负责把每次查询写入日志表。前端就一个index.html加两个样式文件整体是典型的后端渲染模式没有任何前后端分离的概念改起来很直接。api.asp里最核心的请求逻辑简化后长这样% api.asp - 查询请求核心逻辑简化版 Function getDeviceInfo(serialNo, imeiNo) Dim http, url, resp Set http Server.CreateObject(MSXML2.XMLHTTP) getApiHost() 从 config.asp 读取接口地址替换成可用查询接口即可 url getApiHost() /v2/check?sn serialNo imei imeiNo http.open GET, url, False http.setRequestHeader User-Agent, Mozilla/4.0 http.send resp http.responseText getDeviceInfo parseCoverageJson(resp) End Function %这段代码用的是MSXML2.XMLHTTP同步请求open的第三个参数False就是同步模式页面会阻塞在这里直到接口返回。getApiHost()是公共函数集中管理查询接口地址部署时只需要改这一处就能切接口。setRequestHeader补了一个User-Agent老式查询接口对空 UA 会直接拒绝这个头不能省。2.2 序列号与IMEI的格式校验这套系统的输入有四种常见形态格式差异很大老校验逻辑很容易把新机型误判成非法输入编号类型常见格式说明老款序列号11位字母数字2010 年前后的机型新款序列号10位随机字母数字2020 年后机型常见IMEI15位数字目前主流机型IMEI老14位数字部分早期机型原项目对序列号只做长度和字母数字判断对 IMEI 只做位数判断没有做 Luhn 校验。这也意味着 14 位乱输也能进接口查询白白耗掉调用次数。我一般会补一个 Luhn 校验函数代码很简单 Luhn 校验验证 IMEI 是否合法 Function luhnCheck(imei) Dim sum, i, digit sum 0 For i Len(imei) To 1 Step -1 digit CInt(Mid(imei, i, 1)) If ((Len(imei) - i) Mod 2) 0 Then digit digit * 2 If digit 9 Then digit digit - 9 End If sum sum digit Next luhnCheck ((sum Mod 10) 0) End Function这个函数从右往左遍历每一位偶数位置的数字翻倍后如果大于 9 就减 9最后判断总和是否能被 10 整除。注意(Len(imei) - i) Mod 2的奇偶判断是从右往左数的不是从左往右写反了校验结果会刚好反过来这是一个很隐蔽的坑。2.3 响应解析的取舍正则截取还是完整JSON解析v1.0.1 的响应解析方式比较原始直接用正则从返回的 JSON 字符串里抠字段。核心匹配模式类似这样model:\s*([^]*)在 ASP 里封装成函数 正则解析接口返回的 JSON 字段脆弱但够用 Function parseCoverageJson(responseText) Dim re, match, result Set result Server.CreateObject(Scripting.Dictionary) Set re New RegExp re.Pattern \model\:\s*\([^\]*)\ re.IgnoreCase True If re.Test(responseText) Then Set match re.Execute(responseText) result(model) match(0).SubMatches(0) End If 其他字段按同样方式继续匹配 Set parseCoverageJson result End Function这种写法简单但有两个隐患一是接口返回的字段顺序变化不影响但字段名变化就直接匹配失败二是如果返回里出现中文编码异常正则截出来的内容会断在一半。我处理这种老项目时不会大改解析逻辑保留原正则但会加一层兜底当正则匹配不到任何字段时把完整的responseText写进日志文件便于判断是接口变了还是网络返回异常。这样维护成本最低排查问题最快。3. 部署到IIS从建库到跑通第一个查询3.1 确认IIS与ASP支持部署环境选 Windows Server 2016/2019 或 Win10/11 开发者机都可以关键在于 Windows 功能里把 IIS 和 ASP 支持打开。直接在 PowerShell 里执行Enable-WindowsOptionalFeature -Online -FeatureName IIS-WebServerRole,IIS-ASP,IIS-ISAPIFilter,IIS-ISAPIExtensions -AllIIS-WebServerRole是 IIS 主服务不装这个后面所有东西都免谈IIS-ASP决定站点能否解析.asp文件IIS-ISAPIFilter和IIS-ISAPIExtensions是 ASP 运行在 ISAPI 模型下的支撑组件缺任何一个都可能导致.asp文件直接 404。加-All参数会顺带装上常见子功能能省掉不少逐步补组件的麻烦。装完记得重启等到这一步完成才能建站点。3.2 配置站点与应用池物理路径直接指到源码解压目录端口用 80 或自定义都可以。重点在应用池配置——必须选「经典托管管道模式」这套 ASP 项目不兼容集成模式下的一些权限处理方式。用命令行的方式建站和改管道模式Import-Module WebAdministration New-WebAppPool -Name aspclassic Set-ItemProperty IIS:\AppPools\aspclassic -Name managedPipelineMode -Value 1 New-Website -Name imei -PhysicalPath C:\site\imei -Port 8088 -ApplicationPool aspclassicmanagedPipelineMode -Value 1对应 Classic 经典模式0是 Integrated 集成模式。如果你已经手动建了站点直接打开「应用程序池 → 基本设置 → 托管管道模式」改为经典即可。这里翻车率高很多人在这个步骤没改导致后续访问.asp文件时权限异常还以为是代码问题。3.3 数据库初始化v1.0.1 默认用 Access 数据库存查询日志文件是根目录下的data/query_log.mdb。首次使用前要确认里面的日志表存在建表语句在db目录下有个init.sql内容类似CREATE TABLE query_log ( id COUNTER PRIMARY KEY, query_type VARCHAR(10), query_value VARCHAR(32), device_model VARCHAR(64), result_text VARCHAR(255), query_time DATETIME );COUNTER是 Access 的自动编号类型等价于其他数据库的自增主键query_type区分是序列号查询还是 IMEI 查询result_text我建议存完整响应的摘要而不是整段 JSON否则日志表膨胀得很快。Access 的连接字符串是这套系统里另一个重灾区。老写法是connStr ProviderMicrosoft.Jet.OLEDB.4.0;Data Source Server.MapPath(data/query_log.mdb)Jet 4.0 驱动是 32 位的如果你的应用池跑在 64 位模式下会直接报「未找到提供程序」。处理办法是在 IIS 应用池的高级设置里把「启用 32 位应用程序」设为 True或者把连接串换成 ACE 驱动connStr ProviderMicrosoft.ACE.OLEDB.12.0;Data Source Server.MapPath(data/query_log.mdb)ACE 驱动更稳但要先去系统里安装对应的驱动包。Server.MapPath的路径是从站点根目录算的千万别写成物理绝对路径否则换服务器就得改。3.4 修改配置并跑通第一个查询源码包里的config.asp集中了三个关键配置项% 站点全局配置 Dim apiHost, cacheEnabled, dbPath apiHost https://example.dns/check 替换成可用的查询接口地址 cacheEnabled True 先关闭缓存接口通了再打开 dbPath /data/query_log.mdb 数据库相对站点根目录的路径 %这里有两个建议apiHost的证书和域名必须匹配否则老式XMLHTTP组件握手失败请求直接抛错cacheEnabled在新部署时先设为False方便定位问题是接口返回还是缓存逻辑导致的等接口通了再打开能显著减少对外部接口的调用频率。部署完先不要急着正式用放一个自检脚本test.asp在根目录依次验证 ASP 环境和数据库连接% 环境自检脚本部署完成后先访问 /test.asp Response.Write(ASP OKbr) Dim conn Set conn Server.CreateObject(ADODB.Connection) conn.Open ProviderMicrosoft.Jet.OLEDB.4.0;Data Source Server.MapPath(data/query_log.mdb) Response.Write(DB OKbr) conn.Close %浏览器访问http://你的域名:端口/test.asp看到ASP OK和DB OK两行说明环境通了再打开首页做真实查询。如果卡在ASP OK多半是应用池管道模式没改对如果卡在DB OK就先把 32 位应用池的开关打开再检查数据库文件写权限。4. 部署和日常使用避坑五条血泪经验4.1 访问 .asp 文件返回 404 或 500现象首页 HTML 能正常打开所有.asp文件直接 404或者访问时 500。原因IIS 的 ASP 功能没启用、站点缺脚本执行权限或者 ISAPI 扩展被禁用。404.2 状态码就是典型的 ISAPI 扩展未启用导致。解决先确认功能已装完然后重启 IISiisreset重启后打开 IIS 管理器找到站点下的「处理程序映射」确认.asp已映射到IsapiModule。如果映射存在仍报 404检查站点「功能视图 → ASP → 行为」里的「启用父路径」是否为 True老源码里经常会用到../../这种相对路径父路径关闭时直接找不到文件。4.2 接口偶尔返回空结果或直接超时现象同一个号码多查几次偶尔有结果偶尔一片空白接口响应时间从 200ms 跳到 8 秒以上。原因公共查询接口有频控限制同一个 IP 短时间请求次数过多会被切到限流模式返回空结果。另外XMLHTTP同步请求的默认超时是 30 秒上游一慢整个页面就挂着等。解决两个方向。一是加本地缓存同一个序列号 24 小时内先查缓存表再查远程接口二是用setTimeouts显式缩短等待时间 显式设置超时连接 5 秒发送 5 秒接收 5 秒 http.setTimeouts 5000, 5000, 5000, 10000四个参数分别对应连接超时、发送超时、接收超时和总超时。设置了超时后最坏情况是查询失败并提示用户稍后再试至少页面不会卡死。这个坑是这套老系统在实际使用中最常见的「玄学」问题排查时先看日志里有没有连续的空响应再判断是不是被频控。4.3 查询结果中文乱码现象页面部分字段显示成问号或者乱码英文和数字正常。原因ASP 文件保存编码和Response.Charset不一致。源码文件如果是 UTF-8 保存响应头却默认按 GB2312 输出中文字段就会乱。解决在文件最顶部加上代码页声明并强制设置字符集% CodePage65001 % % Response.Charset UTF-8 %注意两个点CodePage65001是 UTF-8 的代码页GBK 是 936这三行必须放在文件最顶部前面不能有空格和空行否则服务器端解析时会报错。另外如果你用记事本编辑过.asp文件并且保存成了带 BOM 的 UTF-8也会导致 ASP 解析异常最好用编辑器另存为「无 BOM 的 UTF-8」。4.4 Access 数据库一直报「操作必须使用一个可更新的查询」现象查询记录写不进日志表页面报错提示数据库只读。原因IIS_IUSRS 用户对该.mdb文件没有写权限另一个常见原因是这个库被本机安装的 Access 或 Excel 打开着文件处于独占状态。解决给 IIS 进程账户加写权限最直接的方式是用命令icacls C:\site\imei\data\query_log.mdb /grant IIS_IUSRS:(M)(M)是修改权限比只读的(R)多出写入能力。执行完再刷新页面测试。如果还报同样的错检查文件是否被本机别的程序锁住关闭所有 Access/WPS 进程再看。这个坑在多人共用的服务器上尤其常见别人开了一下数据库没关你这边就写不进去。4.5 序列号校验把新机型误报为无效现象2020 年后买的新机输入真实的 10 位序列号系统提示「序列号格式错误」。原因原版校验规则写死了 11 位字母数字10 位随机序列号直接当成非法输入。解决把序列号正则放宽为 10 到 17 位完整匹配^[A-Za-z0-9]{10,17}$改完重启站点立即生效。这个坑拿到任何旧源码都会遇到老校验规则跟不上新设备规则属于版本迭代期的通病。改的时候顺手把 IMEI 校验也改成 14 到 15 位避免老款 14 位 IMEI 被误杀。5. 把查询接进业务流缓存策略与批量验证5.1 先缓存后远程把接口调用量降一个量级查询接口有频控限制单个 IP 每天能查的量有限直接把它暴露给所有访客很快就会被限流。我一般会在查询前先查一张本地缓存表兜住重复请求代码框架如下 先查缓存缓存命中就不调远程接口 function getCachedOrRemote(serialNo) dim rs, sql sql select result_text, query_time from query_log where query_value serialNo and query_typesn 此处执行 SQL 查询省略 ADODB 打开关闭过程 命中且离上次查询不超过 30 天直接返回缓存 if not rs.eof and (DateDiff(d, rs(query_time), Now()) 30) then getCachedOrRemote rs(result_text) else 缓存未命中才调远程接口 getCachedOrRemote getDeviceInfo(serialNo, ) 把新结果写回日志表query_type 保持为 sn end if end function这里有两个参数要注意30 天是缓存有效期按服务场景调节二手验机场景建议 7 到 14 天因为设备状态可能有变化尤其是保修期和激活日期会随时间更新SQL 里的query_value拼接没有做参数化转义如果允许用户直接输入必须先把单引号替换成两个单引号否则会被注入。写回缓存时优先用 UPDATE 而不是每次都 INSERT避免日志表无限膨胀。5.2 批量验证控制节奏比速度重要维修店或批发商经常有整批设备要核验手动一个个输入不现实。可以用批处理脚本循环调用查询函数每次间隔 1 秒以上避免触发频控 批量查询脚本计划任务定时执行 for i 0 to UBound(arrImei) if i 0 then WScript.Sleep 1000 每次间隔 1 秒给接口留喘息时间 ret getDeviceInfo(, arrImei(i)) 把结果追加写入 result.csv编码建议 ANSI/GBK next间隔时间是最关键的一个参数同一个 IP 连续查 50 次以上很容易被限流保守做法是间隔 3 秒一条 100 条数据的清单大约 5 分钟能跑完。CSV 的编码也要注意Excel 默认导出 UTF-8 的文件在 ASP 里读取容易乱码统一转成 GBK 再导入更保险。5.3 错误分类和降级策略查询接口的返回情况可以分成几类日常运维时对照着处理返回情况含义建议处理HTTP 200 且 JSON 完整查询成功正常更新缓存444 或 429频控触发30 秒后重试降低请求频率403 或拒绝接口拒绝检查 UA 和 Referer 头是否被过滤HTTP 200 但 JSON 为空无保修信息或序列号无效返回「无数据」提示同时记录日志遇到 444/429 时不要硬刷界面侧直接提示「查询人数多请稍后再试」同时后台保留最后一次成功的结果供用户复用。这个降级逻辑让我少挨了很多骂。如果接口彻底不可用就得回到前端提示「当前查询服务不可用」并且让缓存表里 30 天内的数据仍然能展示——对老设备来说一个月内的验机结果参考价值足够。每次部署这种老项目我都会强制走一遍「环境检测 → 连接字符串验证 → 缓存开关 → 并发压测」四件事。其中被接口频控坑过太多次从那以后凡是查询类需求我都先设计缓存层再写查询逻辑。这套 ASP 源码虽然老但结构足够干净当你想在本地架一个序列号/IMEI 查询服务或者想研究查询接口的调用方式时按这套流程搭一遍能省下不少自己摸索的时间希望帮到你。本文还有配套的精品资源点击获取

相关新闻

操作系统中断机制原理与实操:从硬件响应到软件框架

操作系统中断机制原理与实操:从硬件响应到软件框架

1. 项目概述:为什么“中断”是操作系统真正的分水岭 很多人学操作系统,从进程、内存、文件系统开始,觉得这些概念抽象难懂。但真正让我在某次嵌入式课程设计中突然开窍的,不是调度算法,也不是页表映射,而是…

2026/10/13 17:14:15 阅读更多 →
从巨型Prompt到Skill仓库:Agent能力拆解与工程实践

从巨型Prompt到Skill仓库:Agent能力拆解与工程实践

1. 从单一 Prompt 到 Skill 仓库:Agent 为什么必须拆能力 我发现很多团队做 Agent 的第一版,都是把需求一股脑塞进系统 Prompt:角色设定、工具列表、流程步骤、输出格式、行业背景、禁忌事项……开头还收敛得住,等需求迭代几轮&am…

2026/10/13 17:13:14 阅读更多 →
Android跑步App实战:高德地图SDK集成与轨迹绘制

Android跑步App实战:高德地图SDK集成与轨迹绘制

简介:这是一份基于 Android Studio 与 Java 开发的运动跑步类 App 完整源码,面向具备一定安卓基础、希望学习定位与运动数据可视化的开发者,可用于课程设计、毕业设计或二次开发。项目围绕跑步场景实现实时速度记录、跑步路径绘制、历史数据管…

2026/10/13 17:13:14 阅读更多 →

最新新闻

弗洛伊德解梦:噩梦为何也是潜意识的愿望满足?

弗洛伊德解梦:噩梦为何也是潜意识的愿望满足?

你有没有做过这种梦:明天就要交一份至关重要的方案,梦里你却发现自己连文件都找不到,或者更离谱,直接站在空无一人的考场里,试卷上的字全在飘。惊醒之后心跳半天才缓过来,第一反应往往是“这梦太丧了”。但…

2026/10/13 17:56:30 阅读更多 →
Codex 半年实战复盘:省 Token 技巧与高阶玩法全解析

Codex 半年实战复盘:省 Token 技巧与高阶玩法全解析

1. 半年迭代复盘:Codex 到底更新了哪些关键能力从去年底到现在,Codex 这个命令行编程智能体的更新节奏明显加快,几乎每隔两三周就会推一次有感知的变化。我自己的主力工作流已经全面切到 Codex 上,半年下来踩了不少坑,…

2026/10/13 17:56:30 阅读更多 →
t3code 深度解析:轻量级代码工具的设计思路与实操指南

t3code 深度解析:轻量级代码工具的设计思路与实操指南

1. 从“t3code”这个标题说起:它到底是什么,能解决什么问题第一次看到“t3code”这个标题,很多人会一头雾水。它不像“Python爬虫实战”那样直白,也不像“家庭咖啡烘焙指南”那样有明确场景。但恰恰是这种模糊性,给了我…

2026/10/13 17:56:30 阅读更多 →
Delphi老项目救星:KonopkaControls控件包安装与实战避坑指南

Delphi老项目救星:KonopkaControls控件包安装与实战避坑指南

简介:面向Delphi 13.1开发者的KonopkaControls 8.0.1控件包,是扩展VCL标准组件库的第三方界面控件集合,能有效补充原生控件在界面表现与交互能力上的不足,适合桌面应用开发及快速原型构建。压缩包共2000个文件,包含112…

2026/10/13 17:56:30 阅读更多 →
内容质量检查流水线:从错别字到失效链接的全面校验

内容质量检查流水线:从错别字到失效链接的全面校验

前阵子我在整理自己博客后台时,翻到一篇半年前阅读量还不错的旧文,发现里面躺着一个前期完全没注意到的错别字,还有一个早就失效的外部链接。那种感觉很难形容,就像精心布置的客厅里,墙角偏偏有一块没擦干净的污渍。也…

2026/10/13 17:56:30 阅读更多 →
Service层命名规范:从见名知意到代码可维护性

Service层命名规范:从见名知意到代码可维护性

接手一个业务系统,我最怕看到的不是复杂算法,而是那种一打开就让人头晕的 Service 实现类。2000 行起步,方法名字从 process 到 handle 再到 doSomething,翻遍整个类也猜不出某个方法是干嘛的。命名这种事,看起来不影响…

2026/10/13 17:55:28 阅读更多 →

日新闻

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

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

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

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/13 2:54:56 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

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

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

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

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

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

2026/10/13 1:58:08 阅读更多 →

月新闻

我发现了一个新思路:用 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/13 14:57:39 阅读更多 →
黑夜航拍船只数据集训练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 阅读更多 →