Navicat AI 深度体验:从 SQL 生成到性能优化,重塑数据库开发工作流
1. 从“工具人”到“协作者”Navicat AI功能的定位转变如果你和我一样是个常年和数据库打交道的“码农”或DBA那么Navicat这款数据库管理工具大概率是你的老朋友了。从写SQL、调结构、导数据到做同步它几乎包揽了我们日常80%的数据库操作。但不知道你有没有这种感觉很多时候我们更像是一个“翻译官”——在业务需求、脑海里的逻辑和冰冷的SQL语法之间来回切换。写一个复杂的多表关联查询光是理清JOIN条件和WHERE子句的优先级就可能耗掉半个下午优化一个慢查询对着执行计划琢磨半天也不一定能找到最优解。这就是Navicat Premium 17引入“询问AI”Ask AI功能时让我眼前一亮的原因。它不再仅仅是一个执行命令的“手”而是试图成为一个理解你意图的“大脑”。这个功能官方称之为“Agnes AI”被集成在了SQL编辑器的侧边栏。它的核心卖点很简单你用自然语言描述你的需求AI帮你生成、解释或优化SQL代码。听起来像是每个开发者梦寐以求的“结对编程”伙伴但实际用起来到底怎么样是营销噱头还是生产力革命我花了近一个月的时间在日常开发、数据分析和运维场景中深度使用了这个功能这篇文章就是我的完整体验报告和一些你可能不知道的实操技巧。首先得明确一点这个AI功能的目标不是取代开发者而是消除“摩擦”。这种摩擦包括记忆特定数据库方言的语法细节、撰写繁琐的样板代码、理解一段遗留的复杂SQL逻辑以及为某个优化点反复尝试。它的定位是一个“超级上下文感知的助手”因为它在你的Navicat工作区内运行能“看到”你当前连接的数据库、数据表结构甚至是你正在编写的SQL片段。这种基于上下文的辅助远比一个通用的、需要你反复粘贴表结构的在线ChatGPT对话要精准和高效得多。2. “询问AI”功能全景与核心工作流拆解Navicat的AI功能入口非常直观。当你打开一个SQL编辑器窗口时右侧会多出一个“Ask AI”的侧边栏面板。整个交互界面非常简洁一个大的输入框让你用自然语言提问下面是对话历史。它的核心工作流可以概括为“描述-生成-迭代-应用”四个步骤但这每一步里都有不少门道。2.1 支持的AI模型与上下文理解机制目前Navicat Agnes AI主要对接的是OpenAI的模型例如GPT-4这意味着你需要一个可用的OpenAI API Key来进行配置。在首次使用时工具会引导你进行设置。这里有一个关键细节所有的AI交互都发生在你的本地Navicat客户端与OpenAI API之间你的数据库Schema信息如表名、字段名、视图结构会作为上下文的一部分发送给AI服务提供商。这是实现精准SQL生成的基础但也涉及数据隐私考量。对于高度敏感的环境这一点需要评估。它的上下文理解能力是其智能化的核心。当你提问时AI并非凭空想象它会自动抓取并分析以下信息当前连接你正在操作的是哪个数据库MySQL 8.0PostgreSQL 15还是SQL Server。AI会根据数据库方言调整生成的SQL语法。数据库对象当前数据库下的所有表、视图、存储过程的名称和结构字段名、类型、主外键关系。这是它能正确编写JOIN语句的关键。编辑器内容你当前SQL编辑器中选中的代码或光标附近的代码。你可以选中一段晦涩的查询让它解释也可以让它基于你写了一半的代码进行续写或优化。例如你连接到一个电商数据库里面有users、orders、products表。你不需要在提问中手动列出这些表结构只需说“帮我查一下过去一个月里购买金额超过1000元的高级VIP用户user_level‘VIP’的订单详情包括用户名、订单号和产品名称。” AI能够自己关联这些表并生成正确的SQL。2.2 五大核心应用场景实战解析这个功能绝不仅仅是“生成SQL”那么简单。在我的深度使用中我将其核心价值归纳为五个主要场景每个场景都能显著提升效率。场景一从零到一的SQL生成这是最直接的应用。对于不熟悉的查询逻辑或复杂的报表需求直接用自然语言描述。我的提问“列出上季度每个销售区域的销售额并按销售额从高到低排序同时计算每个区域销售额占总销售额的百分比。”AI生成以MySQL为例SELECT region, SUM(order_amount) AS total_sales, ROUND(SUM(order_amount) * 100.0 / (SELECT SUM(order_amount) FROM orders WHERE order_date DATE_SUB(CURDATE(), INTERVAL 3 MONTH)), 2) AS sales_percentage FROM orders WHERE order_date DATE_SUB(CURDATE(), INTERVAL 3 MONTH) GROUP BY region ORDER BY total_sales DESC;注意AI生成的代码是很好的起点但必须审查。比如这里它用了子查询计算总额在数据量巨大时可能影响性能。一个经验丰富的开发者可能会建议先用CTE公共表表达式或变量来存储总额避免重复计算。场景二SQL代码解释与学习接手遗留项目或阅读复杂的存储过程时一段长达数十行的SQL往往让人望而生畏。操作直接选中那段令人头疼的SQL代码在AI输入框里写“请用中文逐行解释这段代码的逻辑和作用。”AI输出它会将SQL拆解成几个逻辑块解释每个JOIN、CASE WHEN、WINDOW FUNCTION的目的并总结整个查询的最终输出是什么。这对于快速理解业务逻辑和学习高级SQL语法非常有帮助。场景三查询性能分析与优化建议这是我认为价值最高的场景之一。将一段运行缓慢的SQL丢给AI让它分析潜在瓶颈。我的操作粘贴一个执行缓慢的查询提问“分析以下SQL语句可能存在的性能问题并提供优化建议。”AI的典型反馈索引缺失“WHERE子句中对user_id和create_time的过滤没有合适的复合索引建议添加INDEX idx_user_time (user_id, create_time)。”SELECT *问题“查询使用了SELECT *但实际只需要5个字段建议明确指定字段以减少网络传输和数据扫描开销。”子查询优化“这个相关子查询correlated subquery在每行外部记录中都会执行一次建议改写为JOIN或使用EXISTS。”函数使用警告“在WHERE create_time LIKE ‘2024-03%’中使用了LIKE对日期进行模糊匹配这会导致索引失效。应改为范围查询WHERE create_time ‘2024-03-01’ AND create_time ‘2024-04-01’。” 这些建议通常非常中肯甚至能指出你未曾留意的细节。当然最终是否采纳以及如何实施还需要结合实际的执行计划EXPLAIN来验证。场景四代码重构与格式化让AI将一段杂乱、嵌套过深的SQL重构成易读、符合规范的格式。提问“将以下SQL代码重构得更清晰易读并保持功能不变。”效果AI会调整缩进、换行有时会将复杂的嵌套子查询提取为CTEWITH子句使逻辑层次一目了然。这对于维护代码整洁度和团队协作非常有价值。场景五不同数据库方言的转换在跨数据库项目或迁移场景中经常需要将一段为MySQL编写的SQL转换为PostgreSQL或Oracle的版本。提问“将以下MySQL的SQL语句转换为兼容PostgreSQL 15的语法。” 然后粘贴你的MySQL SQL。AI处理它会自动处理函数差异如DATE_SUB-INTERVAL ‘-1 day’ CURRENT_DATE、语法差异如LIMIT-LIMIT … OFFSET或FETCH FIRST … ROWS ONLY、以及标识符引用等。这大大减少了手动转换的出错概率。3. 超越基础高级技巧与“人机协同”最佳实践仅仅会用基础功能可能只发挥了它50%的潜力。要真正让AI成为你的“第二大脑”需要掌握一些高级交互技巧和协同工作流。3.1 精准提问的“咒语”工程AI的输出质量极大程度上取决于你输入的“提示词”Prompt。模糊的提问得到模糊的答案精准的提问才能获得可直接使用的代码。反面教材“查一下用户数据。”太模糊AI不知道从何下手正面范例“在当前的‘sales_db’数据库中从‘user’表查询‘上海’地区、最近30天内有过登录last_login字段且用户状态status为‘active’的用户返回他们的id、name和email按注册时间created_at倒序排列。”要素拆解这个提问明确了数据库sales_db、表user、过滤条件地区、时间范围、状态、返回字段和排序方式。AI几乎可以生成完美无误的SQL。进阶技巧提供示例输出如果你想要特定格式的结果可以在提问中描述甚至给出一个例子。例如“生成一个查询统计每日新增订单数输出格式为两列date日期格式‘YYYY-MM-DD’和order_count订单数。类似这样2024-03-01 | 150。”3.2 迭代式开发与调试不要期望AI一次就给出终极完美答案。应该采用“迭代”思维。第一轮让AI生成基础框架代码。第二轮基于生成的代码提出更具体的优化或修改要求。例如“在这个查询的基础上能否增加一列计算每个订单的平均产品单价提示订单总金额/产品数量”第三轮进行错误调试。如果生成的SQL执行报错直接将错误信息粘贴给AI“执行这个查询时出现错误‘Column ‘xxx’ in field list is ambiguous’请修正。” 通过多轮对话AI能不断修正并逼近你的真实需求这个过程非常像和一个理解力很强的初级程序员结对编程。3.3 与Navicat其他功能联动“询问AI”不是一个孤岛它与Navicat的其他强大功能结合能产生化学反应。与可视化查询构建器Query Builder结合对于极其复杂的多表关联你可以先用AI生成一个SQL草稿。如果对其中某个JOIN逻辑不确定可以复制这段SQL到查询构建器Navicat会将其转换为可视化的关系图让你直观地检查表关联关系是否正确。反过来你也可以在构建器中拖拽出基本框架然后让AI去补充复杂的WHERE条件或聚合逻辑。与数据同步/结构同步对比在进行数据库结构同步前AI可以帮助你理解两个Schema之间的差异脚本ALTER TABLE语句确保你清楚每一步修改的风险。与ER图表工具结合让AI根据现有的表结构为你描述出核心的业务实体关系这有助于你快速理解一个陌生数据库的设计。4. 能力边界、潜在风险与避坑指南尽管“询问AI”非常强大但我们必须清醒地认识到它的局限性并规避使用中的风险。它不是银弹更像是一把极其锋利但需要小心挥舞的剑。4.1 当前的能力边界与常见“翻车”场景对超复杂业务逻辑的理解可能偏差AI擅长处理语法和常见的模式但对于高度定制化、蕴含了特殊业务规则例如复杂的折扣计算逻辑、特定的状态机流转条件的查询它可能无法准确理解。它生成的SQL在语法上正确但业务逻辑可能错误。案例我曾让它为一个“仅计算用户首次购买后30天内复购的订单”生成查询。它生成的代码逻辑上看似正确但忽略了数据库中可能存在测试订单、退款订单等无效数据导致统计结果偏大。最终的WHERE条件需要手动加入更多业务过滤。生成“正确但低效”的代码AI倾向于生成逻辑上正确、能返回结果的SQL但未必是性能最优的。它可能会生成多层嵌套子查询而一个有经验的DBA会优先考虑使用JOIN或窗口函数。它也可能建议创建索引但未必能推荐最优的索引字段顺序。对数据库特有高级特性的支持不稳定对于一些较新或某数据库特有的高级功能如MySQL 8的Common Table Expressions (WITH clause)的递归查询、PostgreSQL的JSONB深度查询、特定数据库的窗口函数扩展AI的生成结果可能不稳定有时能正确使用有时会退回旧语法或生成错误。“幻觉”问题在极少数情况下AI可能会“捏造”出不存在的表名或字段名。这是一个必须高度警惕的风险。永远不要不假思索地直接运行AI生成的代码尤其是在生产环境或具有删除操作的语句上。4.2 安全与隐私红线绝不输入真实敏感数据在向AI提问时严禁将真实的个人身份信息PII、信用卡号、密码哈希等敏感数据作为示例或查询条件粘贴到对话框中。记住这些内容会发送到外部的AI服务。审慎处理结构信息虽然发送表结构字段名、类型是功能所需但对于涉及国家安全、商业核心机密等极端敏感环境的数据库Schema是否启用此功能需经过严格的安全评估。生产环境操作前必在测试环境验证这应该成为铁律。所有由AI生成或优化的SQL尤其是UPDATE、DELETE、ALTER TABLE、DROP等写操作必须在测试数据库上完整验证其正确性和性能影响后才能在生产环境执行。4.3 我的核心避坑清单基于我的踩坑经验总结出以下必须遵守的清单清单一代码审查不可省略。将AI视为一个出色的“初级开发”你作为“高级开发”必须严格Review它的每一行输出特别是JOIN条件、WHERE过滤和聚合逻辑。清单二优先在只读查询上使用。初期尽量在SELECT查询上体验和训练AI待对其能力边界有把握后再谨慎用于生成修改数据的语句。生成UPDATE/DELETE语句时可以要求AI同时生成对应的SELECT语句用于预先验证影响范围。清单三结合EXPLAIN分析。对于任何用于查询的SQL尤其是AI认为已经“优化”过的一定要在目标数据库上运行EXPLAIN或EXPLAIN ANALYZE查看执行计划确认索引使用是否合理扫描行数是否在预期内。清单四保持上下文简洁。如果对话历史过长可能会导致AI注意力分散或上下文混乱。对于复杂的新任务建议开启一个新的AI对话窗口确保它聚焦于当前数据库和问题。5. 横向对比Navicat AI vs. 其他AI编程助手市面上并非只有Navicat在集成AI。GitHub Copilot、Cursor、乃至ChatGPT本身都能辅助编写SQL。Navicat的“询问AI”独特性在哪里特性/工具Navicat “询问AI” (Agnes AI)GitHub Copilot / Cursor通用ChatGPT (Web/API)核心优势深度上下文集成自动感知数据库连接、Schema无需手动粘贴表结构。操作在IDE内无缝完成。代码补全与生成在编辑器中根据注释和代码上下文进行行内或块级代码建议。灵活通用无所不能可以讨论架构、设计处理任何文本任务。SQL专项能力高度专业化针对SQL的生成、解释、优化、转换进行了专门优化和提示工程结果更精准。通用代码辅助对SQL的支持是其代码能力的一部分不一定针对数据库语法做深度优化。依赖提示词能力完全取决于用户提供的提示词质量和细节。需要用户自行提供完整的上下文。工作流便捷性极致便捷在写SQL的地方直接提问结果一键插入编辑器或替换选中代码。无缝补全在打字过程中自动给出建议减少敲击键盘。上下文切换需要在浏览器/另一个窗口和数据库工具之间来回切换复制粘贴。适用场景重度数据库开发者/DBA日常SQL编写、调试、优化、学习的主力场景。全栈开发者在编写后端服务如Node.js, Python时需要嵌入SQL语句的场景。方案设计与学习进行技术调研、学习新概念、解决复杂逻辑问题时的“思考伙伴”。我的选择策略当我在Navicat中专注进行数据库开发、分析或运维时“询问AI”是我的不二之选它的便捷性和针对性无可替代。当我在VS Code或JetBrains IDE中编写应用程序代码其中包含数据访问层DAO的SQL语句时我会使用GitHub Copilot来辅助。当我需要设计一个全新的复杂数据报表、理解一个陌生的数据模型或者研究某个数据库新特性的最佳实践时我会打开ChatGPT进行更开放和深入的探讨。6. 未来展望与个人效率体系重构使用Navicat AI一个多月后它已经彻底改变了我处理数据库工作的习惯。最大的改变不是“写SQL更快了”而是“思考的起点更高了”。我不再需要从记忆GROUP BY和HAVING的区别开始而是可以直接思考“我需要什么样的数据洞察”。它将我从语法细节的泥潭中解放出来更专注于业务逻辑和数据本身的价值。对于团队而言它也是一个强大的知识传递和代码规范统一工具。新同事可以通过让AI解释老代码快速上手团队可以定义一些标准的提示词模板来确保生成的SQL风格一致例如总是要求使用CTE而不是嵌套子查询。当然我期待未来的版本能进一步强化比如支持本地化部署的大模型彻底解决隐私顾虑、集成更多数据库特有的性能分析规则、甚至能根据查询历史和学习我的编码风格提供更个性化的建议。回过头看“询问AI”这个功能与其说是一个“AI大脑”不如说是一个“能力放大器”。它放大了资深开发者的经验通过快速生成和优化也弥补了初级开发者的知识盲区通过解释和教学。它的价值最终取决于使用它的人——你是否能提出精准的问题是否具备审查和修正其输出的专业能力。当你把它当作一个需要指导和复核的聪明助手而非一个全知全能的自动代码生成器时你的工作效率真的会翻倍。

相关新闻

字符编码发展史:从ASCII到Unicode的演进

字符编码发展史:从ASCII到Unicode的演进

1. 字符编码的起源与基础概念计算机最初被设计用来处理数字计算,但随着应用场景的扩展,人们很快意识到需要一种方法来表示文本信息。这就是字符编码诞生的背景——它定义了数字与字符之间的映射关系。在早期的计算机系统中,每个厂商都有自己的…

2026/10/2 2:08:53 阅读更多 →
Flink异步I/O集成大模型:构建高吞吐实时AI推理流水线

Flink异步I/O集成大模型:构建高吞吐实时AI推理流水线

最近在做一个实时推荐系统的项目,遇到了一个很有意思的挑战:如何将大模型(LLM)的智能推理能力无缝地融入到实时数据流处理中。传统的做法往往是离线批处理,或者通过API轮询,但这在需要低延迟、高吞吐的流式…

2026/10/2 7:19:34 阅读更多 →
九、QChart图表、QPropertyAnimation属性动画

九、QChart图表、QPropertyAnimation属性动画

1、QChart图表(在UI设计器里使用图表以及相应属性的学习)QChart比较特殊,在安装Qt Creator要选择QChart模块来安装,否则的话写程序的话是找不到QChart模块。图表示例:新建项目->修改界面大小(800&#x…

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

最新新闻

webgl-fundamentals 教程解读:在 WebGL 中实现图像处理(纹理采样、像素偏移与 3x3 卷积核)

webgl-fundamentals 教程解读:在 WebGL 中实现图像处理(纹理采样、像素偏移与 3x3 卷积核)

图形学 【免费下载链接】webgl-fundamentals WebGL lessons that start with the basics 项目地址: https://gitcode.com/gh_mirrors/we/webgl-fundamentals 点击查看 免费下载 WebGL 中的图像处理远比想象中简单:只要掌握"纹理(textur…

2026/10/13 13:18:51 阅读更多 →
EdgeClaw ClawXContext 深度解析:平滑压缩与动态重入如何驯服长会话

EdgeClaw ClawXContext 深度解析:平滑压缩与动态重入如何驯服长会话

人工智能AI Agent大模型Agent 记忆LLM 网关 【免费下载链接】EdgeClaw EdgeClaw: Edge-Cloud Collaborative Personal AI Assistant based on OpenClaw 项目地址: https://gitcode.com/gh_mirrors/ed/EdgeClaw 点击查看 免费下载 ClawXContext 是 EdgeClaw&#xf…

2026/10/13 13:18:51 阅读更多 →
Linux外接存储手动挂载全攻略:从设备识别到故障排查

Linux外接存储手动挂载全攻略:从设备识别到故障排查

插上U盘,桌面一点反应都没有,打开文件管理器也看不到盘符,终端里敲几条命令还报错——这是不少人在Linux系统下的初体验。Linux系统下外接存储设备手动挂载这个操作,说难不算难,但里面涉及的概念如果不理清楚&#xff…

2026/10/13 13:18:51 阅读更多 →
Wing 仓库文档与示例贡献指南:从本地文档站点到 Examples 示例库的完整工作流

Wing 仓库文档与示例贡献指南:从本地文档站点到 Examples 示例库的完整工作流

编程语言编译器云原生语言运行时 【免费下载链接】wing A programming language for the cloud ☁️ A unified programming model, combining infrastructure and runtime code into one language ⚡ 项目地址: https://gitcode.com/gh_mirrors/wi/wing 点击查看 免…

2026/10/13 13:18:51 阅读更多 →
佳博热敏标签打印机C# Demo实战:从连不上到打得出

佳博热敏标签打印机C# Demo实战:从连不上到打得出

简介:佳博热敏标签打印机C# Demo是一套面向C#开发者的热敏打印集成参考资源,适合需要在WinForm或桌面项目中接入佳博标签机、票据机的技术人员,技能层级覆盖入门到进阶。资源包共60个文件,约1.54MB,以cs源码、exe可执行…

2026/10/13 13:18:51 阅读更多 →
uniapp 对接融云 IM 与 RTC:单聊群聊音视频全链路落地实践

uniapp 对接融云 IM 与 RTC:单聊群聊音视频全链路落地实践

简介:这份资源面向使用 uniapp 开发即时通讯功能的移动端开发者,重点解决融云 IM 在聊天、群聊及单多人音视频通话场景下的对接难题。内容涵盖消息监听、消息撤回回执、分页获取聊天记录、会话未读数统计、免打扰时间设置、输入状态消息以及单人/多人语音…

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

日新闻

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

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

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

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/12 0:16:38 阅读更多 →
影刀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/12 14:48:49 阅读更多 →
黑夜航拍船只数据集训练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 阅读更多 →