计算机科学
从算法到系统设计,深入浅出讲解计算机核心知识

【算法图解】排序算法可视化:冒泡、快排、归并
用“交换、分区、合并”三种视角图解冒泡、快排与归并排序,帮你从步骤记忆升级到过程理解,并掌握面试可复述的复杂度与选型逻辑。

【面试】前端面试高频算法题 Top 10
前端面试里的算法题并不追求冷门,而是考察你对常见模板的掌握。本文给出 Top 10 高频题型、解法思路、复杂度和面试表达模板。

【面试】计算机网络面试题精选
整理前后端常见网络面试题:TCP/UDP、三次握手、HTTPS、HTTP/1.1~3、缓存、Cookie/Session/JWT、跨域与状态码,附简洁回答模板。

【算法图解】BFS:层层推进的搜索
BFS(广度优先搜索)像水波纹一样一层层扩散,天然适合最短路径(无权图)与层级遍历。本文讲清队列实现、visited 的必要性、复杂度、常见题型与工程化写法。

【算法图解】冒泡排序:最容易理解的排序
冒泡排序很慢,但它是理解“比较排序”与“交换”的最佳起点。本文用逐轮冒泡过程、边界优化、稳定性分析与可运行代码,让你真正理解它为什么是 O(n²)。

【算法图解】计数排序:不比较也能排序
计数排序用“统计次数”代替比较,能在特定条件下做到 O(n+k) 的线性时间。本文讲清楚适用前提、稳定实现、空间代价与工程注意点。

【算法图解】DFS:一条路走到黑
DFS(深度优先搜索)像走迷宫:先走到底,走不通再回头。本文讲清递归/显式栈实现、visited、回溯关系、复杂度、典型题型(岛屿数量、路径搜索)与工程注意点。

【算法图解】最短路径:Dijkstra 算法
Dijkstra 解决“非负权图”的单源最短路径问题。本文用“每次确定一个最短点”的贪心直觉讲清楚它为什么正确,并给出基于优先队列的实现、复杂度、常见坑与和 BFS 的边界区分。

【算法图解】图的遍历:BFS vs DFS
BFS 像水波纹扩散,DFS 像走迷宫。本文用同一张图对比两者的遍历顺序、数据结构(队列/栈)、复杂度与适用场景,并给出“最短路/连通块/路径枚举”三类题的选型口诀。

【算法图解】堆排序:用堆来排序
堆排序能做到 O(nlogn) 且原地排序,是“稳定性不重要但内存敏感”场景的好选择。本文用最大堆的建堆、下沉(sift down)过程讲清楚堆排序的核心,并给出可运行实现与复杂度分析。

【算法图解】算法面试通关技巧
真正的算法面试不是“写出代码”就结束,而是沟通、建模、边界、复杂度与代码质量的综合战。本文给你一套可复用的通关流程:读题澄清、选型模板、正确性论证、复杂度、测试用例与代码细节。

【算法图解】归并排序:分治思想的典范
归并排序把“分治”体现得最完整:拆分、递归、合并。本文用逐层合并过程讲清楚为什么它是稳定的 O(nlogn),以及为什么它需要 O(n) 额外空间,并给出可运行实现。

【算法图解】单调栈:解决 Next Greater 问题
单调栈用“维护单调性”把看似 O(n²) 的比较问题降到 O(n)。本文讲清楚单调递增/递减栈的含义、入栈出栈时机、典型题型(下一个更大元素、每日温度、柱状图最大矩形)与代码模板。

【算法图解】前缀和:区间查询神器
前缀和把“重复求和”变成一次预处理,让区间和查询从 O(n) 变成 O(1)。本文讲清一维/二维前缀和、差分数组的关系、常见题型(子数组和为 K、二维区域和)与实现细节。

【算法图解】快速排序:面试必问的排序
快排为什么快?为什么最坏会退化到 O(n²)?本文用分区(partition)过程把快排的核心讲清楚,并给出随机 pivot、三数取中、小数组插排等工程化优化,帮你写出“又快又稳”的实现。

【算法图解】滑动窗口:双指针的艺术
滑动窗口把“枚举所有子数组”压缩成线性扫描,是字符串与数组题的高频解法。本文讲清窗口不变量、何时扩张/收缩、与前缀和的区别,并用最小覆盖子串、无重复最长子串等题型做模板化总结。

【算法图解】排序算法大比拼:什么时候用哪个
冒泡/快排/归并/堆排/计数排序到底怎么选?本文用“稳定性、时间上界、空间、数据特征、工程约束”五个维度做对比,并给出面试可复述的选择逻辑。

【算法图解】算法面试高频 Top 20
面试刷题不靠数量靠结构。本文把高频题按“滑动窗口、前缀和、双指针、单调栈、并查集、BFS/DFS、最短路、堆、DP”分组,给出每组必会题目清单与背后的套路。

【算法图解】并查集:谁是你的老大
并查集(Union-Find/DSU)用“集合代表元”解决动态连通性问题。本文讲清 find/union、路径压缩、按秩合并、复杂度为何接近 O(1),并给出连通块计数与最小生成树中的典型用法。

【算法图解】分治思想:大问题拆小问题
分治不是“拆开写递归”这么简单,它是一种把复杂度压下来的结构化思维。本文用归并排序、快速排序、二分查找与“最大子数组和”等经典例子,把分治的三步走、递推式与工程化落地讲清楚。

【数据结构】哈希表:O(1) 查找的秘密
哈希表为什么能做到“平均 O(1)”?从哈希函数、冲突处理、负载因子、扩容与 rehash 讲到工程实践与面试追问。读完你不只会用 Map/Object,还能解释它为什么快、什么时候不快。

MySQL 索引原理:揭秘 B+ 树的查询艺术
为什么索引能让查询变快?深入解析 MySQL InnoDB 引擎的索引底层实现,从 B+ 树的结构优势到聚簇索引与二级索引的检索逻辑。

进程与线程:揭秘 Chrome 内存之谜
从操作系统底层视角剖析进程与线程的区别。深入探讨 Chrome 的多进程架构,解释其高性能背后的资源代价,以及前端开发者应如何优化内存占用。

SQL 入门:即便不是程序员,也要学会跟数据库聊天
数据库不是黑盒子。学会 SQL 的 CRUD(增删改查),你就能从海量数据中精准找到你想要的。小明带你用最简单的语言攻克 SQL。

【数据结构入门】队列:公平的排队专家
队列是最重要的数据结构之一,遵循"先来先服务"原则。本文教你理解队列的原理和应用场景。

【算法图解】递归入门:函数调用自己的魔法
递归是算法中的精髓,也是初学者的噩梦。小明带你通过生动的类比和图解,彻底理解递归的执行过程、基准情形以及如何避免死循环。

【算法图解】空间复杂度:内存也是钱
时间复杂度大家都知道,但空间复杂度同样重要。小明带你理解算法对内存的消耗,以及如何在时间和空间之间做权衡。

【数据结构】栈:后进先出的艺术
深入理解“后进先出”(LIFO)的底层原理,探索栈在函数调用、撤销操作以及表达式求值中的精妙应用。

【数据结构】数组 vs 链表:什么时候用哪个?
深入对比数组和链表两种基础数据结构,从内存布局、时间复杂度、实际应用场景出发,帮你彻底搞懂什么时候该用数组,什么时候该用链表。

二分查找:为什么程序员都爱它?
从普通查找到二分查找,用最直观的方式理解这个看似简单却深藏玄机的算法

【网络基础】HTTP/HTTPS 原理图解
用图解的方式深入理解 HTTP 协议的核心概念、请求响应流程、状态码含义,以及 HTTPS 如何保证安全通信。

时间复杂度:从"这代码怎么这么慢"到"原来如此"
用最直观的方式理解时间复杂度,告别死记硬背 O(n)、O(log n),真正明白算法快慢的本质
欢迎来到小明的知识世界
这是 Xiaoming.wiki 的第一篇文章,介绍这个有趣的学习资源社区

【数据结构】数组:最基础也最重要
深入理解数组的底层原理,探索连续内存空间如何实现 O(1) 随机访问,以及在实际开发中如何权衡其优缺点。