存储

首页 标签 存储
# 存储 #
关注
192955内容
01 | 线性结构检索:从数组和链表的原理初窥检索本质
本文探讨数组与链表的检索原理及效率。数组依托连续存储支持随机访问,适合二分查找,实现O(log n)高效检索;链表则因非连续存储仅支持顺序访问,检索效率为O(n),但插入删除更灵活。通过理解二者存储特性对检索的影响,掌握“合理组织数据以缩小查询范围”的核心思想,为构建高效算法和数据结构打下基础。
07 | NoSQL 检索:为什么日志系统主要用 LSM 树而非 B+ 树?
B+树适用于关系型数据库,但在日志、监控等高频写入场景下性能受限。LSM树通过将数据分内存(C0树)和磁盘(C1树)两层,利用批量写入、WAL日志恢复与滚动合并机制,大幅提升写入效率,更适合写多读少的大数据应用。
14 | 空间检索(下):「查找最近的加油站」和「查找附近的人」有何不同?
本文探讨了动态范围内查找“最近的k个”地理对象的高效检索方案。针对查询范围不固定的应用场景,如找最近加油站或医院,传统GeoHash分块检索效率低。文章提出利用四叉树、非满四叉树和前缀树优化:四叉树通过层次化空间划分支持快速范围扩展;非满四叉树动态分裂节点,提升稀疏数据下的存储利用率;前缀树则适用于GeoHash字符串编码的索引,实现高效路径匹配。进一步介绍了k-d树在高维空间的应用局限,并引出高维场景下的近邻检索挑战。
二叉树基础及常见类型
二叉树是最核心的数据结构之一,不仅是红黑树、堆、字典树等复杂结构的基础,更体现了递归的思维方式。掌握二叉树,等于掌握了算法与数据结构的钥匙。从满二叉树、完全二叉树到二叉搜索树,各类变体应用广泛。通过链式存储或邻接表均可实现,是刷题与实战的必备基础。
04 | 状态检索:如何快速判断一个用户是否存在?
本文探讨高效判断对象是否存在的技术方案,对比有序数组、二叉树、哈希表的查询性能,引出位图与布隆过滤器。位图利用bit级存储,节省空间;布隆过滤器通过多哈希函数压缩数组长度,实现O(1)查询,适用于允许误判的场景,如用户注册、网页抓取去重。二者在时间与空间效率上优于传统结构,广泛应用于缓存、搜索引擎等系统中。
17 | 存储系统:从检索技术角度剖析 LevelDB 的架构设计思想
LevelDB是Google开源的高性能键值存储系统,基于LSM树优化,采用跳表、读写分离、SSTable分层与滚动合并等技术,结合BloomFilter、缓存机制与二分查找,显著提升读写效率,广泛应用于工业级系统中。(239字)
13 | 空间检索(上):如何用 Geohash 实现「查找附近的人」功能?
本文介绍了如何高效实现“查找附近的人”功能,针对大规模系统提出基于区域划分与Geohash编码的检索方案。通过将二维空间划分为带编号的区域,并利用一维编码(如Geohash)建立索引,可大幅提升查询效率。支持非精准与精准两种模式:前者直接查所在区域,后者结合邻近8区域扩大候选集以保证准确性。Geohash将经纬度转为字符串编码,便于存储与比较,广泛应用于Redis等系统。适用于社交、餐饮、出行等LBS场景。
09 | 索引更新:刚发布的文章就能被搜到,这是怎么做到的
本文介绍了工业界倒排索引的高效更新机制。针对小规模内存索引,采用Double Buffer实现无锁读写;对于大规模索引,则使用“全量+增量”索引方案,结合删除列表处理删改操作,并通过完全重建、再合并或滚动合并等策略管理增量数据,提升检索效率与系统稳定性。
05 | 倒排索引:如何从海量数据中查询同时带有「极」和「客」的唐诗?
本文通过唐诗检索的类比,深入浅出地讲解了正排索引与倒排索引的核心原理。正排索引以文档ID为键,适用于精确查找;而倒排索引则以关键词为键,指向包含该词的文档列表,极大提升了多关键词联合查询效率。文章详细介绍了倒排索引的构建过程、链表归并求交集的查询优化方法,并拓展到作者维度检索等实际应用场景,揭示其在搜索引擎、数据库全文检索等系统中的核心地位。
容器命令
介绍Docker容器常用命令,涵盖创建、启动、端口映射、日志查看、文件拷贝及数据卷挂载等操作,详解交互式与守护式容器运行模式、exec与attach区别、commit提交镜像、容器继承数据卷等核心知识点,助力掌握容器生命周期管理。
免费试用