数据结构

后缀数组(Suffix Array)深度实战:从前缀倍增、SA-IS 到 LCP 数组与模式匹配的工程全解

后缀数组(Suffix Array,SA)是字符串处理领域最基础、最高效的索引结构之一。它把"一个字符串的所有后缀按字典序排序后的起始位置"紧凑地存成一个长度 n 的整数数组,却能在 O(m log n) 内完成任意模式串的精确匹配、在 O(n) 内求最长重复子串、不同子串计数、最长公共子串等经典问题。它比后缀树省内存、比后缀自动机易实现,是生物信息学(DNA 比对)、全文检索(FM-index …

哈希表深度实战:从散列函数、拉链/开放寻址到 Robin Hood、完美哈希与并发哈希映射的工程全解

哈希表(Hash Table,又称散列表)是计算机科学里把「均摊 O(1) 查找」从理论变成工业现实的基石:字典、缓存、索引、去重、集合、计数、符号表,底层几乎都是它。本系列已覆盖布隆过滤器、Count-Min Sketch、HyperLogLog、Cuckoo 哈希等「概率/高性能」变体,却独缺最通用的那一枚——标准哈希表本身。本文从散列函数的第一性原理讲起,拆解拉链法与开放寻址的本质差异、负载…

从零构建 Redis-like 服务器:RESP 协议、跳表索引与过期淘汰策略的 Rust 工程实践

在构建高性能服务时,键值存储是最基础也最重要的组件之一。Redis 凭借其出色的性能和简洁的设计,成为了事实上的标准。本文将从零开始,用 Rust 构建一个兼容 Redis 协议的最小可用服务器,深入探讨 RESP 协议解析、跳表(Skip List)索引实现、键过期淘汰策略以及事件驱动架构的设计思路。