MIT 6.006算法导论:从数据结构到动态规划的完整学习指南
这次我们来看一个来自 MIT 的经典算法课程资源——《MIT 6.006 算法导论从数据结构到动态规划·完整32讲》。对于任何希望系统学习算法、准备技术面试或夯实计算机科学基础的人来说这都是一份不可多得的宝藏。它不是一个新的开源工具而是一套完整的、结构化的视频课程与配套材料。核心价值在于它由麻省理工学院MIT顶尖教授讲授内容覆盖了从基础数据结构到高级算法设计的完整知识体系并且提供了中英双语字幕极大地降低了学习门槛。本文将带你全面了解这套课程资源它包含哪些核心内容学习路径如何规划配套的讲义、作业和代码在哪里获取对于自学者如何最高效地利用这套材料我们将围绕这些实际问题展开提供一份可直接上手的学习指南和资源索引帮助你避开自学算法时常见的坑真正掌握这些核心思想并应用于实践。1. 核心内容与资源速览在深入细节之前我们先通过一个表格快速了解这套《MIT 6.006》课程的全貌明确你能获得什么。项目说明课程名称MIT 6.006 Introduction to Algorithms (算法导论)课程形式完整的32讲视频课程每讲约50-80分钟。语言支持中英双语字幕。视频为英文讲授字幕可切换对非母语学习者极其友好。核心讲师Prof. Erik Demaine, Prof. Srini Devadas 等 MIT 知名教授。内容范围从基础数据结构数组、链表、栈、队列、哈希表到高级算法排序、搜索、图算法、动态规划、贪心算法等。配套材料课程官网提供完整的讲义Lecture Notes、作业Problem Sets、小测验Quizzes及部分解决方案。实践环节包含算法实现的编程作业通常使用 Python强调理论联系实际。学习门槛需要具备基本的编程知识如 Python 或类似语言和离散数学基础。对计算机科学核心思想感兴趣的任何人都适合。获取方式可通过 MIT OpenCourseWare (OCW) 等官方或公开教育平台免费获取视频与资料。核心价值体系化学习避免碎片化知识。权威讲解理解算法背后的深刻洞见而非死记硬背。实战结合通过作业巩固理论。这套课程不是让你“跑起来一个服务”而是帮你“构建起一套坚实、可迁移的算法思维框架”。接下来我们将具体拆解如何利用它。2. 适用人群与学习目标在投入时间之前先明确这套课程最适合谁以及它能帮你达到什么目标。最适合的三类学习者计算机科学在校生或自学者希望补充或深化学校算法课程理解顶尖学府的授课思路和深度。准备技术面试的求职者LeetCode 刷题遇到瓶颈需要回归算法本质理解“为什么这样设计”而不仅仅是“怎么写代码”。6.006 覆盖了面试中绝大多数高频算法考点。希望提升工程能力的开发者在日常开发中遇到性能瓶颈或复杂系统设计时扎实的算法与数据结构基础是做出最优决策的关键。通过本课程你可以达成的核心目标建立完整知识体系将散落的知识点如“动态规划”、“Dijkstra算法”串联成网理解它们之间的关联与演进。掌握分析工具熟练运用渐进分析大O表示法来评估算法的时间与空间复杂度这是设计和选择算法的基石。深化对经典算法的理解不止于实现更要理解其设计思想、证明正确性、分析边界情况。例如为什么快速排序的平均复杂度是 O(n log n)哈希表冲突解决策略各有什么优劣获得解决新问题的能力学会将未知问题建模成已知的算法问题这是算法学习的最高阶目标。需要注意的边界本课程是“算法导论”而非“算法竞赛进阶”。它侧重于计算机科学的核心经典算法和理论基础对于特别刁钻的竞赛技巧涉及较少。课程作业有一定挑战性需要投入足够的时间思考和编程实践不能仅停留在观看视频。3. 学习环境与前置准备工欲善其事必先利其器。开始学习前做好以下准备能让过程更顺畅。1. 心理与时间准备承诺持续投入32讲视频加上完成作业和复习建议规划2-4个月的持续学习时间。主动思考观看时随时暂停尝试自己推导下一步或回答教授提出的问题。2. 技术环境准备编程语言课程示例和作业主要使用Python。你需要一个可运行的 Python 环境推荐 Python 3.6。确保熟悉 Python 的基本语法、列表、字典、类等概念。开发工具任何你熟悉的代码编辑器或 IDE如 VSCode, PyCharm即可。数学基础需要基本的离散数学知识如集合、逻辑、简单的证明方法归纳法、对数概念。课程中会用到但教授通常会回顾关键点。笔记工具准备电子或纸质笔记本用于记录核心思想、证明思路和自己的疑惑。3. 资源获取与组织视频源搜索“MIT OpenCourseWare 6.006”或“MIT 6.006 Introduction to Algorithms”即可找到官方页面。许多视频平台如B站、YouTube也有搬运且通常已集成中文字幕。资料下载在 MIT OCW 课程页面可以下载完整的讲义PDF、作业题目PDF和小测验。建议在本地建立课程文件夹结构化存放这些资料。MIT_6.006/ ├── Videos/ # 存放或索引视频文件 ├── Lecture_Notes/ # 讲义 PDF ├── Problem_Sets/ # 作业题目 ├── Solutions/ # 如有作业参考解答 └── My_Code/ # 自己实现的作业代码4. 课程结构与学习路径规划MIT 6.006 的课程结构经过精心设计遵循从易到难、从基础到综合的原则。下面是一个推荐的学习路径和内容概览你可以将其作为学习地图。第一阶段基础奠基第1讲 ~ 第10讲这个阶段目标是建立扎实的基础理解算法分析的基本语言和最基本的数据结构。第1-3讲算法分析基础。重点中的重点渐进符号大O, Θ, Ω、分治法、递归树、主定理。这是分析任何算法的通用工具必须彻底掌握。第4-7讲基本数据结构。深入讲解哈希表Hashing、二叉堆Heaps、平衡二叉搜索树AVL树。不仅讲操作更讲其内部实现原理和复杂度分析。第8-10讲排序与选择。包括堆排序、快速排序、线性时间选择算法如快速选择。理解不同排序算法的设计哲学与适用场景。第二阶段图论算法第11讲 ~ 第18讲图是建模复杂关系的关键数据结构这部分是算法课程的核心模块。第11-14讲图的基础与遍历。图表示法、广度优先搜索BFS、深度优先搜索DFS及其应用如拓扑排序、强连通分量。第15-18讲最短路径与最小生成树。Dijkstra算法、Bellman-Ford算法、Floyd-Warshall算法以及Kruskal和Prim算法。掌握它们的原理、证明和实现差异。第三阶段高级主题与综合应用第19讲 ~ 第32讲这部分涉及更复杂、更优化的算法设计范式是提升问题解决能力的关键。第19-24讲动态规划Dynamic Programming。这是课程的重难点也是面试高频区。从斐波那契数列引入到最长公共子序列、背包问题、最短路径变种等学习如何识别最优子结构和重叠子问题并构建状态转移方程。第25-28讲贪心算法Greedy Algorithms。理解贪心选择性质并与动态规划进行对比。案例如霍夫曼编码、最小生成树复习、任务调度等。第29-32讲高级主题。可能涵盖字符串匹配如KMP算法、NP完全性简介、并行算法基础等根据不同年份的课程版本有所差异。学习路径建议按顺序推进强烈建议严格按照课程顺序学习因为后续内容经常依赖前面的知识。“视频 - 讲义 - 作业”循环针对每一讲 a.观看视频跟随教授思路中英字幕辅助理解。 b.阅读讲义复习和深化视频中的要点讲义通常更精炼、包含更多细节和图示。 c.完成作业这是将知识内化的最关键一步。即使很难也要独立思考和尝试。组建学习小组如果可能与朋友或线上伙伴一起学习讨论作业和疑难问题效果倍增。5. 核心知识点深度解析与实战联系为了让你不仅“学过”而且“学透”我们挑选几个核心知识点解析其学习重点并建立与实战如面试、开发的联系。5.1 动态规划Dynamic Programming课程讲解重点教授不会直接给出状态转移方程而是引导你经历“暴力递归 - 发现重叠子问题 - 记忆化搜索自顶向下- 制表法自底向上”的完整思考过程。这是理解 DP 本质的关键。实战联系面试面试中面试官期待你展示的正是这个思考过程。例如面对“最长回文子串”问题你可以从递归定义出发逐步优化到 DP 解法。自我测试方法能否清晰定义问题的状态dp数组的含义能否写出状态转移方程能否确定初始条件和边界情况能否分析算法的时间和空间复杂度能否将空间复杂度优化例如二维DP降为一维5.2 图算法Dijkstra vs. Bellman-Ford课程讲解重点6.006 会严格证明 Dijkstra 算法在非负权边下的正确性并引入优先级队列堆优化。同时会讲解 Bellman-Ford 如何处理负权边和检测负权环。对比学习是核心。实战联系开发在网络路由、地图导航、状态机代价计算等场景中你需要根据图的特点是否有负权边选择合适的算法。理解其原理能避免误用。对比表格特性Dijkstra 算法Bellman-Ford 算法适用图类型非负权有向/无向图任意权有向图可处理负权核心思想贪心策略每次从优先队列中取出当前最短路径节点松弛操作对所有边进行 V-1 轮松弛时间复杂度O((VE) log V) (使用二叉堆)O(VE)空间复杂度O(V)O(V)额外功能无法检测负权环可以检测图中是否存在负权环实战选择地图导航距离非负、网络链路状态路由金融套利检测、有负权的最短路径问题5.3 哈希表Hashing深度理解课程讲解重点不止于使用dict课程会深入讲解哈希函数设计、冲突解决方法链地址法、开放寻址法、负载因子与再哈希、以及从数学角度分析平均查找时间。实战联系开发理解这些原理你就能在设计和调优系统时做出正确决策。例如为何高并发下 Java 的ConcurrentHashMap使用分段锁自定义对象作为键时如何正确重写hashCode()和equals()方法关键问题自测为什么一个好的哈希函数应该是“均匀随机”的链地址法和开放寻址法各自的优缺点是什么分别在什么场景下使用当哈希表负载因子过高时再哈希Rehashing的过程是怎样的6. 作业实战与代码实现指南课程作业是检验学习成果的试金石。以下是如何高效完成作业的指南。1. 作业获取与理解从 MIT OCW 网站下载指定学期的 Problem Sets (PS)。仔细阅读每个问题的描述确保理解输入、输出格式以及具体要求。MIT 的作业往往对算法效率和正确性有明确要求。2. 独立实现步骤第一步理论设计。不要急于编码。针对每个问题在纸上或笔记中设计算法并用伪代码描述。分析其时间与空间复杂度。第二步编写代码。使用 Python 实现你的设计。注重代码清晰度和可读性使用有意义的变量名和函数名。第三步测试验证。创建多种测试用例简单用例边界条件如空输入、单个元素。中等规模用例。大规模随机生成的用例用于测试性能和时间复杂度。# 示例测试一个排序算法的简单框架 def test_my_sort(): # 测试1: 空列表 assert my_sort([]) [] # 测试2: 单个元素 assert my_sort([5]) [5] # 测试3: 已排序列表 assert my_sort([1,2,3]) [1,2,3] # 测试4: 逆序列表 assert my_sort([3,2,1]) [1,2,3] # 测试5: 随机列表 import random test_list [random.randint(1, 100) for _ in range(100)] assert my_sort(test_list) sorted(test_list) print(All tests passed!)第四步性能分析。对于要求效率的作业使用 Python 的time模块或timeit库来测量你的算法在不同输入规模下的运行时间验证其是否符合预期的渐进复杂度。3. 寻求帮助与核对独立尝试后若仍卡住可以查阅课程是否提供了部分提示或解决方案。但务必先自己充分思考。在 GitHub 上搜索“MIT 6.006 solutions”可以找到往届学生分享的代码实现用于对比和参考思路但切忌直接抄袭。7. 利用中英双语字幕高效学习双语字幕是本资源的一大优势利用好它能极大提升学习效率。第一遍以英文字幕为主。尝试跟随教授的英文讲解锻炼听力并接触原汁原味的专业术语。遇到不理解的长句或术语时快速扫一眼中文字幕。第二遍复习时重点关注中文翻译。对于复杂的概念性讲解如定理证明、算法思想切换到中文字幕确保理解无误。建立个人术语表将重要的英文术语如 “Amortized Analysis” - 摊还分析“Invariant” - 循环不变式及其标准中文翻译记录下来形成自己的知识卡片。挑战关闭字幕在后期复习或对内容比较熟悉后尝试关闭字幕观看检验自己的理解程度。8. 常见学习困难与应对策略自学这套课程可能会遇到一些挑战以下是常见问题及应对方法。问题现象可能原因应对策略证明部分看不懂数学基础不牢或对形式化证明不熟悉。1.抓核心思想先理解证明想达成的目标如证明算法正确性、复杂度。2.结合示例用一个小例子手动模拟证明过程。3.暂时跳过如果某处证明过于晦涩可以先接受结论继续学习后续应用回头再攻破。作业毫无头绪问题抽象程度高不知如何建模。1.分解问题将大问题拆解成已知的小问题。2.暴力法起步先想一个最直观可能效率低的解法再思考如何优化。3.类比课程案例思考这个问题和课上讲的哪个经典问题类似能否套用或修改其思路听完就忘被动接收信息缺乏主动加工。1.费曼学习法假装你要把刚学的内容教给一个初学者用自己的话复述。2.建立知识关联图用思维导图工具连接不同章节的知识点。3.间隔重复定期如每周回顾之前的讲义和笔记。无法坚持内容密集周期长产生倦怠。1.设定小目标不以“学完32讲”为目标而以“本周学完第5-7讲并完成作业”为目标。2.加入社群寻找一起学习的小伙伴互相督促分享。3.联系实际每学一个算法想想它能在什么实际项目或LeetCode题目中用上增加成就感。9. 进阶学习与资源拓展完成 MIT 6.006 后你的算法之旅才刚刚开始。以下是几条清晰的进阶路径1. 理论深化MIT 6.046J (Design and Analysis of Algorithms)这是 6.006 的进阶课程涵盖更多高级主题如网络流、线性规划、近似算法、随机算法等。《算法导论》CLRS经典教材MIT 6.006 的推荐教材之一。可以将它作为权威的参考书随时查阅更严谨的定义和证明。2. 面向面试/竞赛LeetCode / Codeforces开始系统性刷题。运用在 6.006 中学到的分析方法和算法思想去解决问题。建议按专题如动态规划、图论刷题。《剑指Offer》针对国内技术面试的经典书籍结合算法理论理解面试题的考察点。3. 领域专精数据库/搜索引擎深入学习B树、倒排索引、跳表等数据结构。分布式系统研究一致性哈希、Paxos/Raft共识算法。机器学习理解其背后的优化算法如梯度下降、概率数据结构等。4. 项目实践尝试用所学的算法解决一个实际问题。例如实现一个简单的文本压缩工具使用霍夫曼编码。实现一个地图路径规划后端使用 A* 或 Dijkstra 算法。实现一个缓存组件使用 LRU 缓存策略结合哈希表和双向链表。MIT 6.006 提供的是一套强大的内功心法。掌握它你便拥有了理解和创造更复杂系统的钥匙。现在就从第一讲“算法分析”开始踏上这段充实而富有挑战的旅程吧。建议将本指南收藏在学习过程中随时回顾对照检查自己的进度和方法。

相关新闻

从零搭建Hexo+GitHub Pages个人博客:技术栈详解与实战部署

从零搭建Hexo+GitHub Pages个人博客:技术栈详解与实战部署

1. 为什么现在还要自己搭博客? 这个问题我几乎每次分享都会被问到。在社交媒体、公众号、知乎专栏、小红书遍地开花的今天,花几个小时甚至几天去折腾一个独立博客,看起来确实有点“复古”。但作为一个写了十几年博客的老家伙,我依…

2026/10/14 20:53:36 阅读更多 →
解决Linux下GLIBCXX版本缺失:从诊断到修复的完整指南

解决Linux下GLIBCXX版本缺失:从诊断到修复的完整指南

1. 问题初探:当熟悉的依赖库“版本不匹配” 如果你在Linux环境下折腾过Python科学计算、机器学习或者一些C编译的程序,大概率见过这个让人心头一紧的错误: libstdc.so.6: version \ GLIBCXX_3.4.26‘ not found 。这行报错信息&#xff0c…

2026/10/14 1:54:14 阅读更多 →
U盘故障诊断与修复全攻略:从文件系统原理到量产工具实战

U盘故障诊断与修复全攻略:从文件系统原理到量产工具实战

1. 项目概述:从“U盘系统、格式化等问题的解决办法”说起 如果你手头有几个U盘,并且经常在Windows、macOS甚至Linux之间来回倒腾文件,那么“U盘无法格式化”、“文件系统变成RAW”、“提示需要格式化才能使用”这些问题,你大概率都…

2026/10/11 7:07:57 阅读更多 →

最新新闻

iMX8M异构多核开发:A53与M4的Rpmsg核间通信全解析

iMX8M异构多核开发:A53与M4的Rpmsg核间通信全解析

拿到一块iMX8M板卡,A53那边跑着Linux做业务逻辑,M4这边想跑FreeRTOS管实时控制,第一个绕不开的问题就是:这两个核之间到底怎么通信。我在实际项目里试过几种土办法——共享变量太脆弱,串口又太慢,敲了半天代…

2026/10/14 20:53:22 阅读更多 →
802.11-2020 PDF高效阅读指南:条款定位与测试基线实战

802.11-2020 PDF高效阅读指南:条款定位与测试基线实战

简介:此PDF为IEEE 802.11-2020标准的正式版全文,属于无线局域网领域的核心规范,面向网络工程师、通信专业学生与科研人员,用于理解WLAN介质访问控制层与物理层的完整定义。该版本由IEEE计算机协会LAN/MAN标准委员会开发&#xff0…

2026/10/14 20:53:22 阅读更多 →
ArcGIS Pro 2.5发布OSGB三维模型失败原因与修复指南

ArcGIS Pro 2.5发布OSGB三维模型失败原因与修复指南

1. 为什么OSGB在ArcGIS Pro 2.5里突然“变难了”——从模型加载到服务发布的断层真相你是不是也遇到过这样的情况:用ContextCapture或Pix4D生成的OSGB倾斜摄影模型,在本地ArcGIS Pro里打开时缩放流畅、纹理清晰,连瓦片层级切换都丝滑&#xf…

2026/10/14 20:53:22 阅读更多 →
Wing 模拟器中的 sim.Container:从 entrypoint 测试快照看自定义容器启动与底层实现

Wing 模拟器中的 sim.Container:从 entrypoint 测试快照看自定义容器启动与底层实现

编程语言编译器云原生语言运行时 【免费下载链接】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/14 20:53:22 阅读更多 →
JDK 11.0.15 Linux部署指南:TLS 1.3与GC调优实战

JDK 11.0.15 Linux部署指南:TLS 1.3与GC调优实战

简介:本资源为Linux平台下Java 11.0.15正式版JDK标准发行包(jdk-11.0.15_linux-x64_bin.tar.gz),面向Java初学者、Linux服务器开发者及需要稳定LTS版本JDK的生产环境部署人员,解决跨平台开发、服务端编译运行及JVM调优…

2026/10/14 20:53:22 阅读更多 →
Dubbo服务注册与暴露全流程解析:从Spring容器启动到注册中心

Dubbo服务注册与暴露全流程解析:从Spring容器启动到注册中心

1. 从一次线上故障说起&#xff1a;为什么要搞清楚服务注册与暴露很多同学用 Dubbo 做微服务&#xff0c;配置文件里写个<dubbo:service>或者加个DubboService注解&#xff0c;服务就能被调用了&#xff0c;至于背后发生了什么&#xff0c;基本靠“框架自动搞定”这句话糊…

2026/10/14 20:52:20 阅读更多 →

日新闻

AnyPS5通用适配层设计:兼容性与性能的工程取舍

AnyPS5通用适配层设计:兼容性与性能的工程取舍

1. 从"AnyPS5"这个名字说起&#xff1a;它到底想解决什么问题第一次看到"AnyPS5"这个标题&#xff0c;我脑子里冒出来的第一个念头是&#xff1a;这大概率是一个围绕"跨平台运行"或者"通用适配"做文章的项目。名字里的"Any"…

2026/10/14 0:00:41 阅读更多 →
Flutter跨平台开发实战:二手交易应用与HarmonyOS适配

Flutter跨平台开发实战:二手交易应用与HarmonyOS适配

1. 项目概述&#xff1a;Flutter跨平台二手交易应用开发作为一名长期从事移动应用开发的工程师&#xff0c;我最近完成了一个基于Flutter框架的二手物品交易平台项目。这个项目最吸引我的地方在于它完美结合了Flutter的跨平台优势与HarmonyOS的生态特性&#xff0c;实现了"…

2026/10/14 0:00:41 阅读更多 →
DFS算法解决飞机降落调度问题实战

DFS算法解决飞机降落调度问题实战

1. 项目背景与核心思路飞机降落问题是一个经典的调度优化场景&#xff0c;也是算法竞赛和面试中的高频题目。这个题目要求我们合理安排多架飞机的降落顺序和时间&#xff0c;确保所有飞机都能安全着陆而不发生冲突。在实际航空管制中&#xff0c;这类问题直接关系到飞行安全和机…

2026/10/14 0:00:41 阅读更多 →

周新闻

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

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

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

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

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

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

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

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

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

2026/10/14 3:29:58 阅读更多 →

月新闻

我发现了一个新思路:用 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/13 22:01:27 阅读更多 →
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/14 7:53:34 阅读更多 →