构建个人数据库知识库:从原理到实战的十万字笔记方法论
1. 项目概述一份数据库笔记的诞生与价值最近整理硬盘翻出来一个叫“十万字数据库笔记”的文件夹里面密密麻麻的Markdown文件加起来还真有十几万字。这玩意儿不是什么出版书籍纯粹是我过去几年里从数据库小白到能独立负责核心系统数据架构的“踩坑实录”和“知识沉淀”。很多朋友问我数据库知识体系这么庞杂从SQL语法到执行计划从索引优化到分布式事务到底该怎么系统性地学习和梳理我的答案很简单给自己建一个专属的、活的“数据库知识库”。这份“十万字笔记”就是我的个人知识库。它解决的远不止“记不住JOIN有几种写法”这种表面问题更深层的是对抗技术领域的“知识碎片化”和“经验黑盒化”。当你面对一个诡异的慢查询或者设计一个高并发的表结构时教科书上的标准答案往往不够用。你需要的是在特定场景下为什么选A方案而不是B方案的决策逻辑是那个让你排查了半夜才发现的、文档里没写的参数陷阱。这份笔记就是把这些散落的“实战经验”和“原理理解”结构化地保存下来让它成为你技术决策的“第二大脑”。无论你是刚入门的数据开发还是希望深化数据库理解的后端工程师甚至是需要与数据库频繁打交道的运维同学通过构建这样一份持续演进的学习笔记都能极大提升学习效率和问题解决能力。2. 笔记体系的设计与核心架构思路2.1 为什么不用现成的书籍或博客市面上的数据库经典书籍如《高性能MySQL》、《数据库系统概念》其价值在于建立权威、系统的理论框架。而各类技术博客则长于分享某个具体问题的解决方案。但这两者都有其局限书籍的更新速度追不上数据库版本的迭代比如MySQL 8.0的窗口函数、CTE且案例往往偏标准博客则良莠不齐且知识点孤立。个人笔记的核心优势在于“个性化”和“可演化”。你可以记录下在自己实际业务场景中某个索引带来的性能百倍提升也可以记下因为一个错误的事务隔离级别设置导致的线上bug。这些带着你个人上下文和血泪教训的知识点记忆最深刻也最实用。我的笔记体系设计遵循一个核心原则以问题驱动以原理溯源以应用落地。它不是一本抄录官方文档的字典而是一个围绕“我遇到了什么问题 - 这个问题背后的原理是什么 - 有哪些解决方案 - 我最终如何选择并实施”这条主线来组织的思维过程记录。2.2 笔记的核心模块划分为了实现上述目标我将十几万字的笔记内容划分为五个核心模块它们之间相互关联形成一个网状知识结构基础语法与核心概念模块这并非简单罗列SQL关键字而是重点记录那些容易混淆或具有深意的部分。例如VARCHAR(255)在InnoDB中的真实存储开销、NULL值在索引和比较中的特殊行为、不同数据库MySQL、PostgreSQL对标准SQL的扩展与差异。这部分是地基确保对工具的理解没有偏差。性能分析与优化模块这是笔记的“重灾区”也是价值最高的部分。核心是执行计划EXPLAIN的深度解读。我不仅记录每个字段type, key, rows, Extra的含义更积累了大量的真实案例将“糟糕的执行计划”与“优化后的执行计划”进行对比并附上当时的优化思路。例如看到Using filesort和Using temporary同时出现通常意味着需要审查ORDER BY和GROUP BY的字段与索引关系。索引设计与优化模块索引是数据库的“魔法”用不好就是“灾难”。笔记详细记录了BTree索引的原理、最左前缀匹配原则的多种边界情况、覆盖索引的妙用、以及如何通过pt-index-usage等工具发现冗余索引。还有一个独立章节讨论不同类型的索引哈希、全文、空间索引的适用场景。事务、锁与并发控制模块这是数据库领域最复杂也最容易出线上问题的地方。笔记以MySQL InnoDB为例深入梳理了事务的ACID特性如何通过redo log、undo log和多版本并发控制MVCC实现。重点记录了不同隔离级别Read Committed, Repeatable Read下的锁表现、幻读问题与Next-Key Lock机制并附带了大量死锁案例的分析日志和解决方案。架构与高级特性模块随着学习深入这部分内容不断扩充。包括读写分离、分库分表的策略与中间件选型如ShardingSphere、数据库高可用方案主从复制、MGR、Galera Cluster、以及像窗口函数、公共表表达式CTE、JSON类型等高级特性的实战应用心得。注意模块划分不是一成不变的。最初我的笔记只有前三个模块随着项目复杂度和个人职责的提升才逐渐衍生出第四、第五模块。建议初学者从前两个模块开始逐步扩展。3. 笔记的创作方法论从零到十万字的实践3.1 工具选型为什么是 Obsidian Git工欲善其事必先利其器。我尝试过Notion、语雀、OneNote最终选择了Obsidian作为主力笔记工具并用Git进行版本管理。原因如下双向链接与知识图谱Obsidian的核心优势。当我在“索引模块”中写到“覆盖索引”时可以轻松链接到“性能优化模块”中一个利用覆盖索引解决Using filesort的案例。长期积累后通过图谱视图能直观看到知识点之间的关联激发新的思考。纯本地Markdown文件所有数据掌握在自己手中格式通用无需担心服务商倒闭或功能变更。Markdown的简洁性也让内容聚焦于文字本身。Git版本控制数据库知识是不断修正的。今天你认为正确的优化手段明天可能发现更好的或者意识到在某些边界条件下有缺陷。用Git管理可以清晰地追溯每一次修改的历史甚至为重要的认知升级打上Tag例如v1.0-mysql-index-understanding。我的目录结构大致如下database-notes/ ├── .git/ # Git版本库 ├── 0-基础知识/ │ ├── SQL语法精要.md │ ├── 数据类型与设计陷阱.md │ └── ... ├── 1-性能优化/ │ ├── 执行计划全解.md │ ├── 慢查询日志分析实战.md │ └── 案例库/ │ ├── 案例1-分页查询优化.md │ └── ... ├── 2-索引艺术/ │ ├── BTree原理深入.md │ ├── 索引设计准则.md │ └── 索引失效场景汇编.md ├── 3-事务与锁/ │ ├── InnoDB锁机制详解.md │ ├── 事务隔离级别实验报告.md │ └── 死锁分析与预防.md ├── 4-架构演进/ │ ├── 主从复制原理与延迟处理.md │ └── 分库分表策略选型.md └── _attachments/ # 存放执行计划截图、监控图表等3.2 内容填充如何将碎片知识系统化积累不是一蹴而就的。我的内容主要来源于四个渠道日常开发与排查记录这是笔记素材的第一来源。每次解决一个线上慢查询我会立即将EXPLAIN结果、优化前后的SQL、性能数据QPS、响应时间截图以及完整的排查思路记录到“案例库”中。思路比结果更重要它记录了你是如何从现象慢定位到原因全表扫描再推导出解决方案加索引的。阅读源码与官方文档的笔记看官方文档时切忌泛读。我会带着问题去读比如“InnoDB的innodb_flush_log_at_trx_commit参数不同设置下性能和持久化究竟如何权衡”然后将文档要点、自己的测试验证结果和结论记录下来。阅读相关源码解析文章时亦然。专题学习与总结当需要系统学习某个领域如“数据库的锁”我会集中一段时间查阅书籍、论文、优质博客然后用自己的语言从原理到实践重新组织成一篇完整的笔记。这个过程是深度内化的关键。技术讨论与分享的复盘团队内部分享、技术论坛的讨论经常能碰撞出火花。讨论后我会将达成的共识、存在的争议以及自己新的理解补充进相关笔记中。3.3 一个具体的笔记样例深度解读EXPLAIN的type字段以下是我笔记中关于执行计划type字段的一个片段展示了如何记录标题EXPLAIN输出中type字段的逐级解析与实战意义内容type字段描述了MySQL决定如何查找表中的行是判断查询性能优劣的关键。从最优到最差常见的有systemconsteq_refrefrangeindexALL。const通过主键或唯一索引的一次查找就能找到一行。这是最优情况。实战场景SELECT * FROM users WHERE id 1;id为主键。原理笔记查询优化器将其转化为一个常量只需读取一次。eq_ref通常出现在多表JOIN中对于前表的每一行在后表中通过主键或唯一索引进行单行匹配。实战场景SELECT * FROM orders JOIN users ON orders.user_id users.id WHERE users.id 10;users.id是主键。注意事项确保JOIN字段是另一表的主键或唯一键否则不会是eq_ref。ref使用非唯一索引进行单值查找或者使用索引的最左前缀匹配。可能会返回多行。实战场景SELECT * FROM orders WHERE user_id 100;user_id上有普通索引。性能思考虽然比eq_ref差但依然是高效的。需要关注rows字段如果扫描行数过多说明索引区分度可能不够基数低。range利用索引进行范围扫描如BETWEEN、、IN()。实战场景SELECT * FROM logs WHERE create_time BETWEEN 2023-01-01 AND 2023-01-31;create_time有索引。避坑指南小心IN()子查询如果IN列表过长优化器可能认为全表扫描更快导致索引失效。我曾遇到一个IN列表超过200项导致type降为ALL的案例。index全索引扫描。遍历整个索引树来获取数据比全表扫描ALL快因为索引文件通常比数据文件小。实战场景查询的列全部包含在某个索引中覆盖索引但需要扫描索引的全部条目。例如SELECT id FROM large_table;id是主键。优化方向如果出现index思考查询是否真的需要返回这么多数据能否加WHERE条件缩小范围ALL全表扫描。性能杀手必须优化。触发原因无可用索引、索引失效如对索引列做了函数计算、需要读取表中大部分数据时优化器认为全表扫描成本更低。紧急处理立即分析WHERE条件考虑为常用查询条件建立索引或重写查询语句。实操心得不要孤立地看type。必须结合key实际用到的索引、rows预估扫描行数、Extra额外信息一起分析。一个ref访问类型如果rows高达几十万性能也可能很差。一个index访问类型如果配合Using index覆盖索引且需要的数据就在索引中性能可能非常好。4. 笔记的实战应用从知识到解决问题的能力4.1 场景一快速定位并解决突发慢查询某日监控报警一个核心接口的p99响应时间从50ms飙升至2s。通过日志定位到是一条统计SQL变慢。传统排查流程登录服务器 - 打开慢查询日志 - 找到SQL -EXPLAIN分析 - 思考优化方案。这个过程可能需要10-30分钟。基于笔记的排查流程拿到慢SQL其WHERE条件包含status SUCCESS和create_time 2023-10-01。我立刻回忆笔记中“索引失效场景汇编”里的一条“对索引列使用函数或运算会导致索引失效但、BETWEEN等范围查询如果放在复合索引的最后会导致其后的索引列失效”。检查表结构发现有一个索引idx_status_time (status, create_time)。根据最左前缀原则这个索引是有效的。执行EXPLAIN发现type为range但rows仍然很大几十万。Extra中有Using index condition。翻看笔记“执行计划全解”中关于rows的说明它是基于统计信息的估算值可能严重不准。同时“案例库”中有一个类似案例原因是status字段的区分度极低只有‘SUCCESS’, ‘FAILED’两种值导致索引筛选效果差。结合业务我意识到SUCCESS状态的订单占了95%以上。优化方案不是调整这个索引而是增加一个条件利用区分度更高的索引。我建议业务上是否可以增加一个user_id或product_id的条件来快速缩小范围或者考虑按时间进行分区表。整个分析过程在5分钟内完成因为核心的判断逻辑和案例参考早已内化在笔记体系中。4.2 场景二设计高并发下单系统的表结构在新项目设计阶段需要设计订单表。凭借笔记我系统性地进行了评估数据类型选择笔记“数据类型与设计陷阱”提醒我货币金额使用DECIMAL而非FLOAT/DOUBLE避免精度丢失。状态字段使用TINYINT而非VARCHAR节省空间并提升比较效率。索引设计根据“索引设计准则”我为(user_id, status)创建了复合索引用于快速查询用户订单列表。为(product_id, create_time)创建索引用于商品维度的销售分析。同时笔记提醒要避免索引过多影响写入性能定期审查冗余索引。并发控制笔记“事务与锁”部分强调下单涉及库存扣减必须使用悲观锁SELECT ... FOR UPDATE或乐观锁版本号来防止超卖。我选择了在库存表中增加version字段实现乐观锁并在笔记中记录了选型理由下单场景冲突概率相对较低乐观锁能获得更好的并发性能。分库分表预判笔记“架构演进”中提到单表数据量超过千万级或写入QPS过高时需考虑分片。根据业务增长预估我在设计之初就为订单表增加了shard_key用户ID哈希为未来平滑迁移到分片集群做好准备。5. 维护与迭代让笔记成为活的知识体系一份笔记如果写完就束之高阁很快就会过时。数据库技术本身在快速发展如MySQL 8.0的新特性个人的认知也在不断更新。我的维护策略如下定期回顾与重构每季度我会花时间通读一遍笔记。对于已经熟练掌握、成为肌肉记忆的内容可以适当简化对于新的理解或者发现了旧笔记中的错误立即修正。Git的提交历史完美记录了这段认知演进史。建立“待研究”清单在笔记中专门有一个TODO.md文件记录暂时没搞懂、或需要深入研究的点。例如“PostgreSQL的BRIN索引在时序数据中的具体性能表现如何”、“OceanBase的分布式事务实现与Spanner有何异同”。这成为我下一步学习的路标。输出倒逼输入尝试将笔记中的部分内容整理成团队内部的分享文档或技术博客。在准备分享的过程中为了讲清楚你不得不把知识梳理得更系统、更透彻常常会发现之前的理解还有模糊之处从而驱动你去查资料、做实验反过来补充和完善笔记。与工具链集成我将一些常用的排查命令如SHOW ENGINE INNODB STATUS的分析脚本、性能基准测试脚本也放在笔记的_attachments目录下形成“知识-工具”一体的解决方案。6. 常见问题与避坑指南实录在构建和使用这份笔记的过程中我踩过不少坑也总结了一些经验。Q1感觉无从下手不知道记什么A1从解决今天遇到的一个具体问题开始。哪怕只是一个SQL syntax error记下错误信息、你的排查步骤和最终解决方案。积累十个这样的“小点”你就会自然发现它们之间的关联从而产生分类和梳理的需求。不要追求一开始的体系完美先动起来。Q2笔记记了很多但感觉杂乱用的时候找不到A2这是工具和习惯问题。首先善用双向链接和标签。在Obsidian中给每篇笔记打上如#索引、#事务、#案例等标签。在写索引相关的内容时用[[链接到具体的案例文件。其次建立一份“总纲”或“索引页”就像一本书的目录列出所有核心概念和重要案例的链接。定期整理这个目录。Q3原理性的东西自己理解不透怎么记A3我的方法是“费曼学习法”笔记版。尝试用自己的话像教给一个完全不懂的同学一样把某个原理比如MVCC写下来。过程中卡住的地方就是你没真正理解的地方。立刻去查资料、看源码解析直到能流畅地“讲”明白。这个“讲稿”就是最好的原理笔记。不要复制粘贴大段的官方描述。Q4如何保证笔记的准确性和时效性A4保持怀疑动手验证。对于从网络博客看到的“秘籍”尤其是涉及性能优化的比如“这个参数调优后性能提升N倍”一定要在自己的测试环境或低峰期实例上验证。将验证步骤和结果一并记入笔记。对于官方文档的变更关注数据库的Release Notes重要的变更在笔记中高亮标出。Q5团队如何共享和协作知识笔记A5个人笔记是基础团队知识库是延伸。我们团队的做法是鼓励每个人维护自己的Obsidian库同时建立一个共用的Git仓库用于存放经过评审和验证的、与业务强相关的核心知识沉淀如“订单库分表规范”、“慢查询排查SOP”。个人笔记是思考过程团队库是共识成果。两者通过定期的技术分享进行同步和融合。回顾这十几万字的积累它对我而言早已超出了一份简单的笔记。它是一个外化的技术思维模型一个可检索的故障排查手册一个个人能力的成长日记。技术之路漫长记忆并不可靠但写下来的文字和结构化的思考会成为你最坚实的垫脚石。如果你也想在数据库领域或者任何技术方向上构建起自己的深度认知和快速解决问题的能力不妨就从今天遇到的第一个问题开始写下第一行笔记。

相关新闻

AI编码协作习惯检测实战:微软AI‑Engineering‑Coach部署、规则二次开发与落地踩坑

AI编码协作习惯检测实战:微软AI‑Engineering‑Coach部署、规则二次开发与落地踩坑

摘要:大量开发人员日常直接复制AI生成代码,不会复盘自身和AI编码助手的交互行为。微软放出开源项目AI‑Engineering‑Coach,它不做代码语法检查,专门抓取本地AI编码会话,对人的使用习惯打分。本文完整走完本地部署、自…

2026/10/18 2:54:23 阅读更多 →
ConcurrentHashMap 面试八股 vs 生产踩坑:三个事故让你重新理解线程安全

ConcurrentHashMap 面试八股 vs 生产踩坑:三个事故让你重新理解线程安全

叙事框架:面试题 → 标准答案验证 → 三个翻车现场 → 边界分析 → 升级版答案上篇讲了线程池参数面试和生产场景的落差,这篇我们来看另一道高频面试题——ConcurrentHashMap。线程安全?标准答案背得滚瓜烂熟,但组合操作照样翻车。…

2026/10/18 1:52:27 阅读更多 →
把重复工作交给 AI,OpenClaw Win10 环境配置详解(含安装包)

把重复工作交给 AI,OpenClaw Win10 环境配置详解(含安装包)

OpenClaw🦞Win10|零代码实现电脑自动化,安装 排坑全记录 摘要🌟:还在手动处理大量重复电脑操作?OpenClaw 这款桌面 AI 智能体,可以读懂自然语言,自动执行电脑各类操作。本文基于 v2…

2026/10/18 2:54:32 阅读更多 →

最新新闻

Hermes Agent接入飞书:TaoToken统一Key打通消息与任务流

Hermes 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/18 23:13:21 阅读更多 →
Windows 下 Neo4j 5.25.1 安装配置与避坑指南

Windows 下 Neo4j 5.25.1 安装配置与避坑指南

简介:Neo4j社区版5.25.1的Windows安装包,面向在Windows环境下开发图数据库应用的开发者、技术团队及图数据库初学者。它解决的是复杂关联数据的高效存储与查询问题,适用于社交网络分析、推荐系统、欺诈检测、知识图谱构建等场景,社…

2026/10/18 23:13:21 阅读更多 →
Sharpe为负也值得学:读懂ml-quant-trading-synthetic-mlp的metrics.json回测指标与成本拖累

Sharpe为负也值得学:读懂ml-quant-trading-synthetic-mlp的metrics.json回测指标与成本拖累

【免费下载链接】ml-quant-trading-synthetic-mlp 项目地址: https://ai.gitcode.com/hf_mirrors/dddyym/ml-quant-trading-synthetic-mlp 点击查看 免费下载 新手第一次看量化交易项目的回测报告,最常见的困惑是:为什么这个模型的夏普比率&…

2026/10/18 23:13:21 阅读更多 →
大模型做视频的真相:五步流水线从代码到成片

大模型做视频的真相:五步流水线从代码到成片

1. 先厘清一个被标题带偏的认知:模型不产视频,产的是"可渲染的中间态"很多人第一次看到"用大模型做视频"这个说法,脑子里浮现的画面是:敲一句话,模型吐出一个 mp4 文件。我一开始也这么以为&#…

2026/10/18 23:13:21 阅读更多 →
DeepSeek Harness 插件化底座:从零搭建可扩展 Agent 系统

DeepSeek Harness 插件化底座:从零搭建可扩展 Agent 系统

1. 从"模型即产品"到"模型即底座"的认知转变过去两年,绝大多数人接触大模型的方式,是打开一个对话框,输入问题,等待回答。这种交互模式把模型本身当成了最终产品——你用的是"某个模型"&#xff0c…

2026/10/18 23:13:21 阅读更多 →
SINUMERIK STEP 7 Toolbox V16.0 配置加速器实战指南

SINUMERIK STEP 7 Toolbox V16.0 配置加速器实战指南

简介:本资源是西门子SINUMERIK数控系统专用编程工具箱SINUMERIK STEP 7 Toolbox V16-0的完整安装包,面向自动化工程师、数控系统调试人员及工业控制领域技术人员,用于高效开发、仿真与调试SINUMERIK平台下的PLC逻辑与运动控制程序。压缩包共1…

2026/10/18 23:12:20 阅读更多 →

日新闻

基于GMM的语音识别系统原理与MATLAB实现详解

基于GMM的语音识别系统原理与MATLAB实现详解

说到基于高斯混合模型(GMM)的语音识别系统,很多人第一反应就是一堆数学公式,觉得门槛很高。但如果你真的在MATLAB里把它落地跑通,会发现核心其实就是三件事:把声音变成特征向量,用GMM给每个类别…

2026/10/18 0:00:55 阅读更多 →
数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理这四个字听起来挺唬人,但落到具体操作上,无非就是让计算机按你的想法“摆弄”像素。我在一个模拟项目X里用了一套特别经典的基础处理流程:对图像做反白、改调色板、彩色转灰度,最后把像素数据导出成txt文件。单看每一…

2026/10/18 0:00:55 阅读更多 →
机器人大脑技术盘点:具身智能的感知、决策与数据闭环

机器人大脑技术盘点:具身智能的感知、决策与数据闭环

如果你的信息流最近也天天刷到“机器人大脑”这个词,你会发现一个很有意思的现象:每个人说的“大脑”根本不是同一个东西。有人指的是大语言模型,有人指的是运动控制系统,还有人指的是能理解物理世界的端到端模型。在2026年这个时…

2026/10/18 0:00:55 阅读更多 →

周新闻

基于GMM的语音识别系统原理与MATLAB实现详解

基于GMM的语音识别系统原理与MATLAB实现详解

说到基于高斯混合模型(GMM)的语音识别系统,很多人第一反应就是一堆数学公式,觉得门槛很高。但如果你真的在MATLAB里把它落地跑通,会发现核心其实就是三件事:把声音变成特征向量,用GMM给每个类别…

2026/10/18 0:00:55 阅读更多 →
数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理这四个字听起来挺唬人,但落到具体操作上,无非就是让计算机按你的想法“摆弄”像素。我在一个模拟项目X里用了一套特别经典的基础处理流程:对图像做反白、改调色板、彩色转灰度,最后把像素数据导出成txt文件。单看每一…

2026/10/18 0:00:55 阅读更多 →
机器人大脑技术盘点:具身智能的感知、决策与数据闭环

机器人大脑技术盘点:具身智能的感知、决策与数据闭环

如果你的信息流最近也天天刷到“机器人大脑”这个词,你会发现一个很有意思的现象:每个人说的“大脑”根本不是同一个东西。有人指的是大语言模型,有人指的是运动控制系统,还有人指的是能理解物理世界的端到端模型。在2026年这个时…

2026/10/18 0:00:55 阅读更多 →

月新闻

我发现了一个新思路:用 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/18 0:55:02 阅读更多 →
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/17 17:22:31 阅读更多 →
黑夜航拍船只数据集训练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/18 12:16:16 阅读更多 →