Windows Server 2012 DNS服务器搭建与配置实战指南
1. 项目概述为什么要在Windows Server 2012上搭建DNS服务器如果你手头有一台运行着Windows Server 2012的服务器无论是物理机还是虚拟机并且正在为内网设备访问混乱、IP地址难记或者想实现一些内部域名解析而烦恼那么自己动手搭建一个DNS服务器绝对是一个能极大提升网络管理效率和体验的“神操作”。DNS也就是域名系统它就像是互联网的电话簿把好记的域名比如www.baidu.com翻译成计算机能识别的IP地址比如14.215.177.39。在企业内部这个“电话簿”同样重要。你可能遇到过这样的情况公司内部有好几台服务器开发服务器、文件服务器、数据库服务器每次访问都要输入一长串IP地址不仅容易输错还不好管理。或者你搭建了一个内部网站希望同事通过oa.company.local这样的地址就能访问而不是192.168.1.100:8080。这些需求一个内网DNS服务器就能完美解决。Windows Server自带的DNS服务器角色功能强大、配置直观与Active Directory活动目录集成度极高是构建稳定内网环境的基石。选择Windows Server 2012作为平台虽然它已经不是最新的版本但在很多中小型企业的生产环境中依然非常常见其稳定性和对硬件的要求相对友好。通过搭建DNS服务器你不仅能实现基础的域名解析还能学习到正向查找区域、反向查找区域、资源记录等核心概念为后续可能部署的Active Directory域服务打下坚实的基础。整个过程就像是在给你的内部网络安装一个专属的“导航系统”。2. 环境准备与核心概念扫盲在开始动手之前我们需要把“战场”打扫干净并理解几个关键术语这样在配置时才不会一头雾水。2.1 系统准备与镜像获取首先确保你的服务器已经安装了Windows Server 2012 R2推荐使用R2版本它包含了大量更新和功能改进。如果你还没有系统需要获取安装镜像。关于镜像文件网络上有很多资源但务必从可信赖的渠道获取例如微软官方的评估中心提供180天试用版或者通过正规的Volume Licensing批量许可渠道。使用来路不明的镜像可能包含安全隐患或后门。安装过程与普通Windows类似设置好管理员密码、网络连接建议配置静态IP地址并完成系统更新。注意在生产环境中强烈建议为服务器配置一个固定的静态IP地址。例如将服务器的IP设置为192.168.1.10子网掩码255.255.255.0网关192.168.1.1。动态获取的IPDHCP可能会变化导致DNS服务中断。2.2 DNS核心概念解析搭建前先搞懂这几个词它们会贯穿整个配置过程正向查找区域这是我们最常打交道的部分。它负责把域名解析成IP地址。比如你输入server01.internal.com正向查找区域就去查找这个域名对应的IP记录。你可以为你的内部域例如internal.com创建一个正向查找区域。反向查找区域与正向相反它根据IP地址来查找对应的域名。这常用于网络诊断和某些安全策略。例如你知道有一个IP192.168.1.100在大量访问通过反向查找可以知道它到底是哪台设备server01.internal.com。资源记录这是存储在区域文件里的具体条目是DNS数据库的“细胞”。常见的类型有A记录最基础的记录将主机名指向一个IPv4地址。例如server01-192.168.1.100。CNAME记录别名记录为一个主机名设置一个别名。例如你可以为server01.internal.com设置一个别名www.internal.com这样访问后者实际指向前者。MX记录邮件交换记录指定负责处理该域名邮件的邮件服务器。NS记录名称服务器记录指定该域名由哪台DNS服务器来解析。递归查询与迭代查询当你的客户端向你的DNS服务器询问一个它不知道的域名比如www.google.com时你的DNS服务器会代表客户端去询问根域名服务器、顶级域服务器等这个过程对于客户端来说是递归查询我只问你你负责给我最终答案而对于你的DNS服务器向上级服务器的询问过程则是迭代查询你告诉我下一步该问谁我再去问。理解这些概念后我们就知道搭建的核心工作就是安装DNS服务器角色 - 创建正向/反向查找区域 - 在区域里添加各种资源记录。3. 详细搭建步骤与配置实战接下来我们进入实操环节。请跟随步骤一步步操作我会穿插讲解每个操作背后的意图和注意事项。3.1 安装DNS服务器角色打开服务器管理器登录系统后你通常会在任务栏看到服务器管理器的图标点击打开。添加角色和功能在服务器管理器的仪表板或“管理”菜单中选择“添加角色和功能”。启动向导会弹出一个向导在“开始之前”页面直接点击“下一步”。选择安装类型保持默认的“基于角色或基于功能的安装”下一步。选择目标服务器确保当前服务器被选中下一步。选择服务器角色在角色列表中找到“DNS服务器”。勾选它。此时会弹出一个对话框提示需要同时安装“DNS服务器工具”属于远程服务器管理工具。点击“添加功能”按钮将其一并加入。这一步很重要否则你无法在本地管理DNS。功能选择无需额外选择直接“下一步”。DNS服务器说明阅读一下介绍然后“下一步”。确认安装确认所选内容无误你可以勾选“如果需要自动重新启动目标服务器”这样在安装必要组件后会自动重启。但在生产服务器上请谨慎选择自动重启最好手动安排重启时间。点击“安装”。等待安装完成安装过程可能需要几分钟。完成后点击“关闭”。现在DNS服务器角色已经安装好了。你可以在服务器管理器的工具菜单中或者开始屏幕的“管理工具”里找到“DNS”管理器。3.2 配置DNS区域与记录安装只是搭好了舞台现在要布置场景区域和演员记录。第一步创建正向查找区域打开DNS 管理器(dnsmgmt.msc)。在左侧控制台树中展开你的服务器名右键点击“正向查找区域”选择“新建区域”。新建区域向导启动点击“下一步”。区域类型选择“主要区域”。如果你的服务器将来要加入域并作为域控制器且希望DNS数据与AD集成可以勾选“在Active Directory中存储区域”。我们这里先以独立服务器为例不勾选。下一步。区域名称输入你计划用于内部网络的域名。例如internal.com。注意这只是一个内部使用的域名不需要在互联网上注册。点击下一步。区域文件选择“创建新文件文件名为”它会自动生成internal.com.dns这样的文件名。保持默认下一步。动态更新出于安全和管理清晰度考虑对于初始搭建建议选择“不允许动态更新”。动态更新允许客户端自动注册其DNS记录虽然方便但也可能带来混乱和安全风险。我们初期先手动管理更可控。点击下一步。完成查看摘要点击“完成”。现在你可以在“正向查找区域”下看到新创建的internal.com区域。第二步在正向区域中添加资源记录现在为我们内部的服务器或设备创建A记录。右键点击刚创建的internal.com区域选择“新建主机(A或AAAA记录)”。在“新建主机”对话框中名称输入主机名例如fileserver。如果留空则记录指向域名本身即internal.com。IP地址输入该主机对应的固定IP地址例如192.168.1.100。勾选“创建相关的指针(PTR)记录”这个选项会在你已创建的反向查找区域中自动生成对应的PTR记录反向解析记录。如果还没有反向区域可以先不勾我们稍后创建反向区域后再补。点击“添加主机”成功后会有提示。你可以继续添加其他记录如webserver(192.168.1.101)、printer(192.168.1.50) 等。第三步创建反向查找区域在DNS管理器中右键点击“反向查找区域”选择“新建区域”。启动向导下一步。区域类型同样选择“主要区域”下一步。反向查找区域名称选择“IPv4反向查找区域”下一步。网络ID输入你的网络地址。例如你的服务器IP是192.168.1.10子网是255.255.255.0那么网络ID就输入192.168.1。下方的区域名称会自动生成1.168.192.in-addr.arpa。这个看起来倒着的名称就是反向查找区域的命名规范。下一步。区域文件创建新文件默认即可下一步。动态更新同样选择“不允许动态更新”下一步然后完成。第四步在反向区域中关联记录如果你在创建A记录时勾选了“创建相关的指针(PTR)记录”并且反向区域已存在那么PTR记录会自动生成。如果没有可以手动创建展开“反向查找区域”找到你刚创建的192.168.1.x Subnet区域。右键点击该区域选择“新建指针(PTR)”。在“主机IP地址”中输入IP地址的最后一位例如100。在“主机名”中输入完整的域名例如fileserver.internal.com。你也可以点击“浏览”去正向区域里选择。点击“确定”。3.3 配置DNS服务器自身与客户端测试配置DNS服务器自身的网络设置为了让DNS服务器能解析外部域名如百度、谷歌它自己需要知道去哪里问。这需要配置转发器或根提示。在DNS管理器中右键点击你的服务器名选择“属性”。切换到“转发器”选项卡。点击“编辑”。在这里添加公共DNS服务器地址例如114.114.114.114或8.8.8.8。这样当你的DNS服务器遇到无法解析的内部域名时就会将查询转发给这些公共DNS服务器。你也可以使用“根提示”选项卡服务器内置了全球根服务器的地址不配置转发器时默认使用根提示进行迭代查询。配置转发器通常速度更快。在客户端进行测试将客户端的DNS服务器地址设置为你的Windows Server 2012 DNS服务器的IP地址例如192.168.1.10。打开命令提示符CMD。使用nslookup命令测试nslookup fileserver.internal.com应该返回192.168.1.100。nslookup 192.168.1.100应该返回fileserver.internal.com测试反向解析。nslookup www.baidu.com应该能成功解析出IP地址测试转发或根提示工作正常。使用ping命令测试ping fileserver.internal.com应该能ping通并且显示解析出的IP是192.168.1.100。4. 高级配置与运维要点基础搭建完成后为了让DNS服务更健壮、更安全还需要了解一些进阶操作。4.1 配置辅助区域与区域传输单一DNS服务器存在单点故障风险。我们可以配置第二台服务器作为辅助DNS服务器。在主服务器上在正向区域internal.com的属性中切换到“区域传送”选项卡。选择“允许区域传送”并可以设置为“只允许到下列服务器”然后添加辅助DNS服务器的IP地址。同时在“名称服务器”选项卡中也需要将辅助服务器添加为NS记录。在辅助服务器上同样安装DNS角色然后创建新的“辅助区域”区域名称与主区域相同internal.com在创建过程中指定主服务器的IP地址。辅助服务器会定期从主服务器拉取区域数据实现冗余。实操心得区域传输的权限控制非常重要。切勿选择“到所有服务器”这可能导致你的DNS区域数据被恶意窃取。在生产环境中结合IPSec或TSIG事务签名来加密和认证区域传输是更安全的做法。4.2 配置条件转发器与存根区域如果你的网络环境更复杂比如有多个不同的内部域domainA.com和domainB.com你可以使用条件转发器。条件转发器告诉你的DNS服务器当遇到属于domainB.com的查询时不要问根服务器而是直接转发到domainB.com专用的DNS服务器例如192.168.2.10。这可以加速跨域解析并减少不必要的互联网查询。配置方法在DNS管理器右键点击服务器名 - 属性 - 转发器选项卡下方有“条件转发器”可以添加特定的域名和对应的DNS服务器地址。存根区域它只包含该区域的SOA、NS和A记录指向该区域权威服务器的记录。它让本地DNS服务器知道某个特定域如domainB.com的权威服务器是谁然后直接向它们发起查询。与条件转发器功能类似但存根区域能自动更新NS记录如果对方域的NS记录变了。4.3 监控、日志与常见维护启用调试日志在DNS服务器属性的“调试日志”选项卡中可以启用日志记录这对于排查复杂的解析问题非常有帮助但会占用磁盘空间和性能建议只在排查问题时临时开启。事件查看器Windows事件查看器中“应用程序和服务日志” - “DNS Server”是查看DNS服务运行状态、错误和警告的首选位置。清理陈旧记录如果之前允许了动态更新可能会积累大量陈旧记录。可以手动清理或者配置区域的“老化/清理”属性自动清理过时的记录。备份区域数据区域文件默认位于C:\Windows\System32\dns目录下。定期备份这些.dns文件或者直接备份整个服务器系统状态是重要的灾难恢复手段。5. 深度排错与故障解决实录即使按照步骤操作也难免会遇到问题。下面是我在实际部署中遇到的一些典型问题及解决方法。5.1 客户端提示“DNS服务器未响应”这是最常见的问题之一。检查基础网络确认客户端能Ping通DNS服务器的IP地址。如果ping不通检查防火墙服务器和客户端、物理连接、IP地址配置。在服务器上打开“高级安全Windows防火墙”确保“入站规则”中允许“DNS (UDP 入站 53)”和“DNS (TCP 入站 53)”规则是启用的。检查DNS服务状态在服务器上打开“服务”管理器 (services.msc)找到“DNS Server”服务确保其状态为“正在运行”启动类型为“自动”。检查服务器监听地址在DNS管理器中右键服务器 - 属性 - “接口”选项卡。确认服务器是否在正确的IP地址上监听查询。通常选择“所有IP地址”。使用nslookup进行分层诊断在客户端CMD中输入nslookup进入交互模式。输入server 192.168.1.10你的DNS服务器IP设置查询目标。输入internal.com看是否能返回该域的SOA记录。如果失败说明服务器上该区域可能未正确配置或未加载。输入www.baidu.com测试转发器或根提示是否工作。5.2 解析内部域名正常但无法解析外部域名检查转发器/根提示配置如3.3节所述确认已正确配置了转发器如114.114.114.114或根提示可用。测试服务器自身的出站DNS查询在DNS服务器本机上打开CMD执行nslookup www.baidu.com 114.114.114.114。如果直接指定公共DNS能解析但通过本机DNS服务不能问题出在转发或根提示上。如果连nslookup www.baidu.com 114.114.114.114都失败检查服务器的网络设置确保其网关和DNS设置正确服务器的DNS应指向自己127.0.0.1或自己的IP或者一个可靠的上游DNS。防火墙与安全策略确保服务器防火墙没有阻止出站的UDP 53端口DNS查询端口。某些安全软件或组策略可能会限制。5.3 反向查找PTR记录解析失败确认反向区域已创建检查是否为你需要解析的IP网段创建了反向查找区域。检查PTR记录是否存在且正确在反向区域中确认对应IP地址的PTR记录指向了正确且完整的主机名FQDN。客户端nslookup用法在客户端使用nslookup测试反向解析时有时需要先指定查询类型。可以这样操作nslookup set typeptr 100.1.168.192.in-addr.arpa注意IP要反过来写并加上.in-addr.arpa5.4 区域传输失败主服务器权限确认主服务器的区域属性中“区域传送”已允许辅助服务器的IP。辅助服务器配置确认辅助服务器上配置辅助区域时输入的主服务器IP地址正确无误。防火墙确保主、辅服务器之间的TCP 53端口用于区域传输是开放的。查看事件日志辅助服务器上的DNS事件日志通常会给出区域传输失败的具体原因如“拒绝区域传送”等。5.5 DNS缓存导致的问题DNS服务器和客户端都有缓存机制有时记录更新后由于缓存的存在可能不会立即生效。清除DNS服务器缓存在DNS管理器中右键点击服务器名选择“清除缓存”。或者在CMD中运行dnscmd /clearcache需要安装DNS服务器工具。清除客户端DNS缓存在客户端CMD中运行ipconfig /flushdns。调整记录的TTL在创建或修改资源记录时可以设置一个较短的TTL生存时间例如300秒5分钟这样变更能更快地传播到客户端。但对于非常稳定的记录设置较长的TTL可以减少查询负载。搭建和运维一个DNS服务器的过程就是一个不断加深对网络基础理解的过程。从最初的单一A记录到复杂的条件转发、区域冗余每一步的排错都让你对“名字如何找到地址”这个看似简单的过程有了更立体的认识。我最深的体会是文档清晰、记录规范、变更谨慎是运维DNS服务的三大法宝。每次添加或修改记录前最好在测试环境或非高峰时段验证对于重要的解析记录一定要有备份和回滚方案。当内网所有设备都能通过你设定的友好名称顺畅访问时那种对整个网络架构的掌控感就是这项工作的最大回报。

相关新闻

ESP32-C5-WROOM-1-N16R8:双频Wi-Fi 6与多协议融合,重新定义物联网连接新标准

ESP32-C5-WROOM-1-N16R8:双频Wi-Fi 6与多协议融合,重新定义物联网连接新标准

物联网设备对无线连接的要求越来越高:既要覆盖2.4GHz和5GHz双频段,又要兼顾蓝牙、Zigbee、Thread等多种协议。乐鑫推出的ESP32-C5-WROOM-1-N16R8模组,正是为应对这一复杂需求而生的解决方案。核心规格参数这款模组基于ESP32-C5系列芯片打造&a…

2026/10/9 3:11:21 阅读更多 →
呼市装修公司哪家好?行业痛点凸显,本土十年装企收获业主实测认可

呼市装修公司哪家好?行业痛点凸显,本土十年装企收获业主实测认可

随着呼和浩特新房集中交付,叠加大量老旧小区启动翻新改造,本地家装市场持续升温。市场内全国连锁分支机构、本土装饰企业、零散施工队伍并存,选择空间不断扩大。但结合家装消费投诉数据与大量业主实地调研反馈来看,行业规范化程度…

2026/10/4 19:31:10 阅读更多 →
若依框架实战避坑指南:权限、部署、数据库迁移与性能优化

若依框架实战避坑指南:权限、部署、数据库迁移与性能优化

1. 从“能用”到“好用”:若依框架实战中的那些坎如果你正在用或者打算用若依框架,大概率是看中了它“开箱即用”的特性——权限管理、菜单配置、代码生成,一套下来,项目的基础架子就搭好了。但就像很多开源项目一样,官…

2026/10/8 14:09:10 阅读更多 →

最新新闻

Java后端接入SignalR:从HTTP到HTTPS的完整落地与避坑指南

Java后端接入SignalR:从HTTP到HTTPS的完整落地与避坑指南

简介:面向Java与Android开发者的SignalR实时通信客户端库源码包,用于在非浏览器环境中接入ASP.NET SignalR服务,实现服务器向客户端实时推送。ASP.NET SignalR是一套成熟的实时Web通信库,而这份Java客户端扩展了它的使用边界&…

2026/10/11 20:38:24 阅读更多 →
Hermes自动化测试技能(1):用Jest/Pytest/Mocha搭建可复用的测试骨架

Hermes自动化测试技能(1):用Jest/Pytest/Mocha搭建可复用的测试骨架

/* 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 20:38:24 阅读更多 →
AMD Pensando vs BlueField-3:DPU实测性能差距与选型指南

AMD Pensando vs BlueField-3:DPU实测性能差距与选型指南

1. 从一颗DPU的实测数据说起第一次在实验室拿到AMD Pensando和BlueField-3这两块DPU做对比测试的时候,我心里其实是有预期的——Pensando被AMD收编之后,大家都等着看它到底能拿出什么成绩。结果跑完一轮基准测试,Pensando在特定负载下比BlueF…

2026/10/11 20:38:24 阅读更多 →
2026年十大AI Agent框架深度评测:TaoToken统一Key下谁是真正的王者

2026年十大AI Agent框架深度评测: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 20:38:24 阅读更多 →
什么是IT资产自动发现?让CMDB和资产台账不再靠人工维护

什么是IT资产自动发现?让CMDB和资产台账不再靠人工维护

IT资产自动发现(Asset Discovery)是指通过扫描网络、读取设备信息等方式,自动识别企业环境中有哪些设备和软件、它们的配置是什么,并把结果同步到资产库的技术手段。 它解决的是 IT资产管理 里最老的一个难题:台账靠人…

2026/10/11 20:38:24 阅读更多 →
泥石流滑坡目标检测数据集:YOLO+VOC双格式解析与YOLOv8训练避坑指南

泥石流滑坡目标检测数据集:YOLO+VOC双格式解析与YOLOv8训练避坑指南

简介:目标检测数据集聚焦泥石流与滑坡两类地质灾害场景,面向需要训练YOLO、Faster R-CNN等检测模型的算法工程师、研究生及防灾减灾研究人员。数据集以VOC与YOLO双格式组织,JPEGImages、Annotations、labels三个文件夹一一对应,共…

2026/10/11 20:37:23 阅读更多 →

日新闻

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

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

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

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

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

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

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

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

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

2026/10/11 0:00:27 阅读更多 →

周新闻

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

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

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

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

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

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

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

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

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

2026/10/11 0:00:27 阅读更多 →

月新闻

我发现了一个新思路:用 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 阅读更多 →