Java基础
本文简要介绍了常见数据结构,包括线性结构(如动态数组、链表、栈、队列)、非线性结构(如优先级队列、哈希表、红黑树、跳表、B+树),并列举了Java中的典型实现类,适用于集合类学习与面试参考。
查找对应的 SSTable 文件
通过分层结构与二分查找快速定位SSTable,结合BloomFilter过滤和索引区加速查询。利用table cache与block cache缓存机制,减少磁盘IO,提升检索效率。整个过程高效有序,适用于大规模数据检索场景。(238字)
6.3【追问】伊甸园、幸存区、老年代细节
对象诞生于伊甸园,经历多次年轻代回收后仍存活则晋升老年代。年轻代用标记-复制算法,老年代用标记-整理或清除算法。不同回收器晋升条件不同:Parallel默认15次回收后晋升,可调MaxTenuringThreshold;幸存区同龄对象超50%则提前晋升。大对象处理因回收器而异:Serial/CMS中超过PretenureSizeThreshold直接入老年代;G1中巨型对象存入巨型区,Region大小为堆/2048或由G1HeapRegionSize设定。注意《深入理解Java虚拟机》部分内容已过时,需批判性阅读。
数据组织
针对频繁变动的数据,有序数组效率低下。宜采用非连续结构并优化组织方式以支持二分查找。二叉检索树(如AVL树、红黑树)和跳表均可实现O(log n)检索。跳表通过随机层级设计,实现更简单且高效。理解其设计逻辑有助于提升算法思维与问题解决能力。(239字)
01 | 线性结构检索:从数组和链表的原理初窥检索本质
本文探讨数组与链表的检索原理及效率。数组支持随机访问,适合二分查找,检索效率为O(log n);链表需顺序遍历,效率为O(n),但插入删除更高效。通过合理组织数据结构,如结合数组与链表优点,可优化检索性能,核心在于快速缩小查询范围。
动态数组代码实现
本文详解动态数组的底层实现,涵盖自动扩缩容、索引越界检查与内存泄漏防范三大关键点,结合Java代码演示增删查改操作及扩容机制,帮助理解数据结构设计原理。
Docker安装Redis
本文介绍Docker安装Redis 6.0.8的单机版与实际应用版配置,涵盖容器卷映射、配置文件设置及集群存储算法。重点解析哈希取余、一致性哈希与哈希槽分区算法,说明Redis集群为何采用16384个槽,及其在数据分布、节点扩容与网络开销间的权衡设计。
树结构
树结构通过二叉搜索树(BST)实现二分查找:每个节点左子树值小于根,右子树值大于等于根。查找时从根节点出发,比较目标值与当前节点值,决定向左或右子树递归,每次排除一半数据,时间复杂度为O(log n),实现高效检索。
精准 Top K 检索
本文介绍搜索引擎中Top K检索的打分排序机制,重点解析TF-IDF与BM25算法。TF-IDF通过词频与逆文档频率衡量词语重要性,而BM25在此基础上引入非线性增长与文档长度归一化,提升排序准确性,是现代搜索系统的核心技术之一。(238字)