计算机理论

Search in Rotated Sorted Array 旋转数组查找

旋转排序数组查找算法详解,涵盖无重复和有重复元素两种场景。通过二分查找优化时间复杂度,核心思路是判断中点所在区间性质,动态调整搜索边界。针对重复元素问题,采用去重预处理策略。包含LeetCode 33和81题完整解决方案及剑指Offer最小元素查找技巧。

2026年2月5日

Single Number 系列

Single Number系列算法通过位运算实现高效的数字计数器。利用XOR异或运算特性和状态机设计,可解决数组中重复数字问题。核心思想是构建K次重复自动重置的计数器,使重复数字相互抵消,最终保留唯一不重复数字。包含三种变体:寻找单个不重复数、三个重复中的唯一数、以及两个不重复数的分离算法。

2026年2月5日

Word Break 系列

Word Break算法解决字符串拆分问题,通过动态规划和记忆化搜索实现。基础版本验证字符串能否由词典单词完全组成,使用DP数组记录可达状态;进阶版本求出所有可能的组合方案,采用递归分治结合哈希表优化。时间复杂度O(n²),空间复杂度O(n),适用于字符串匹配和自然语言处理场景。

2026年2月5日

单词阶梯系列

单词阶梯问题详解,涵盖单向BFS和双向BFS两种解决方案。通过构建邻接表实现图论算法,时间复杂度O(N²),空间复杂度O(N²)。包含完整C++代码实现,支持最小变换次数计算和所有最短路径回溯。适用于算法竞赛和面试准备。

2026年2月5日

二叉树与链表专题

二叉树转链表算法详解,涵盖先序遍历原地转换和BST转双向链表两种经典场景。通过自底向上递归方法,实现二叉树按先序遍历顺序展开为单向链表,以及二叉搜索树高效转换为有序双向链表的技术方案。

2026年2月5日

正则匹配系列

正则表达式匹配算法详解,涵盖通配符匹配和正则表达式两种场景。通过动态规划方法实现字符串模式匹配,支持特殊字符处理包括问号匹配单个字符、星号匹配任意序列以及点号匹配任意字符。提供完整的C++代码实现和状态转移方程解析。

2026年2月5日

堆和栈

堆和栈是内存管理的核心概念,栈空间从高地址向低地址增长。Go语言采用时间换空间的设计理念,在函数调用时插入检查代码确保安全。现代栈管理通过动态分配更大空间并复制数据解决传统方案中频繁分配释放导致的性能问题,有效避免热分裂现象,提升程序运行效率。

2026年1月31日

理解 CPU Cache 对性能的影响

CPU缓存通过L1、L2、L3层级结构提升性能,以64字节缓存行方式存储数据。伪共享问题发生在多核处理器同时操作同一缓存行的不同变量时,导致MESI协议频繁通信同步,产生性能损耗。解决方案包括缓存行填充技术,使用边界对齐避免多个线程访问相同缓存行,从而优化多线程并发性能。

2026年1月31日

DNS 协议

DNS协议实现域名到IP地址转换的关键技术。当浏览器输入域名时,系统优先查询本地hosts文件,未找到则转向本地DNS解析器,通过配置的首选DNS服务器进行区域解析或缓存匹配。解析过程采用分层架构,从根服务器开始自上而下递归解析。客户端与本地DNS服务器间采用递归查询模式,而DNS服务器间则使用迭代查询方式进行高效交互。

2026年1月29日

HTTP 协议

HTTP协议发展历程涵盖1.0到2.0版本演进,重点介绍多路复用、连接复用等核心技术。包含HTTPS安全机制、常见状态码、请求方法差异及头部字段功能。深入分析XSS、CSRF、SQL注入等安全漏洞防护策略,以及跨域解决方案如CORS和JSONP实现原理与应用场景。

2026年1月29日