数据结构
文章平均质量分 88
一叶飘零_sweeeet
大家好,我是果酱(ken),公众号:“果酱桑” 。专注 Java 开发与云原生技术领域,持续分享技术实现方案、实战问题排查、干货心得及前沿动态。已入驻阿里云、稀土掘金、个人公众号等平台,博文同步更新~ 若有技术疑问、经验交流或方向指导,欢迎评论区探讨!以技术为桥,共赴成长之路,期待与你一起深耕技术、To be is to do !共同进步~
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
前缀树(Trie)深度解析:字符串匹配的终极方案,从原理到 Java 实战全拆解
本文深入解析了前缀树(Trie)数据结构及其应用。Trie通过共享字符串公共前缀实现高效检索,在自动补全、IP路由等场景表现优异。文章详细拆解了Trie的设计原理、Java实现方案(包含插入、查询、删除等核心操作),并通过SpringBoot实战案例展示了其在搜索引擎自动补全功能中的应用。同时分析了Trie的时间/空间复杂度,介绍了压缩Trie、双数组Trie等优化方案,并与其他字符串结构进行对比。原创 2025-11-26 14:09:55 · 924 阅读 · 0 评论 -
图论底层揭秘:邻接矩阵/表存储原理与DFS/BFS时间复杂度深度推导
本文系统阐述了图的基本概念、存储模型和遍历算法的底层原理。首先介绍了邻接矩阵和邻接表两种存储方式:邻接矩阵适合稠密图,空间复杂度O(n²);邻接表适合稀疏图,空间复杂度O(n+e)。随后深入分析了DFS和BFS遍历算法,指出其时间复杂度在邻接表下均为O(n+e),在邻接矩阵下为O(n²)。文章通过Java代码实例演示了各种实现方式,并对比了DFS(栈结构)与BFS(队列结构)的核心差异。最后提供了存储模型和遍历算法的选型指南,强调应根据图的密度、操作频率等实际需求选择最优方案,为学习更复杂的图算法奠定基础。原创 2025-11-26 13:57:23 · 982 阅读 · 0 评论 -
堆与栈的底层厮杀:Java 内存模型的核心对决
本文深入解析Java内存模型中堆与栈的核心差异:堆用于动态分配对象实例,支持GC管理;栈采用静态分配方式存储方法调用信息。从内存分配机制看,栈由编译器精确计算,线程私有且高效;堆则运行时动态申请,线程共享需GC管理。数据操作特性上,栈直接寻址速度快,堆间接访问灵活但较慢。JVM实现层面,虚拟机栈基于线程私有结构,堆采用分代设计。实战中二者协同工作,通过逃逸分析可实现栈上分配优化。文章还澄清了常见误区并解答面试高频问题,强调理解堆栈原理对性能优化和问题排查的关键作用。原创 2025-11-26 10:16:01 · 1015 阅读 · 0 评论 -
跳表:从理论到 Redis 实战,解锁「空间换时间」的终极数据结构
跳表是一种通过"空间换时间"实现高效查询的数据结构。它在有序链表基础上建立多层索引,将查找时间复杂度降至O(logn)。相比红黑树,跳表实现更简单,范围查询效率更高,并发性能更好,因此被Redis和ZooKeeper等系统采用。跳表通过随机算法动态生成节点层数,保持平衡性,其插入、删除和查找操作的时间复杂度均为O(logn)。工程实践中可通过调整最大层数、优化内存使用等方式提升性能,适用于有序集合、范围查询等高并发场景。跳表的成功体现了"简单即高效的设计哲学。原创 2025-11-25 17:54:41 · 65 阅读 · 0 评论 -
哈希表设计精髓:从哈希函数、冲突解决(开放寻址 / 链地址)到负载因子的数学逻辑
本文深入解析哈希表设计原理与优化策略,涵盖哈希函数设计、冲突解决机制(开放寻址法和链地址法)、负载因子调优等核心内容。通过理论分析结合Java实战案例,展示如何实现高性能哈希表,包括线性探测哈希表、支持红黑树的链式哈希表等。文章还探讨生产级应用中的线程安全、序列化支持等关键问题,并以MyBatis-Plus缓存实现为例演示实际应用场景。最后辨析常见误区,强调哈希表设计的核心在于平衡时间与空间复杂度,根据场景选择最优方案。原创 2025-11-25 13:40:46 · 113 阅读 · 0 评论 -
数组 vs 链表:物理存储的底层逻辑,如何锁死 Java 集合 90% 的性能上限?
本文深入剖析了数组与链表的底层存储差异及其对Java集合性能的影响。数组的连续内存布局使ArrayList具备O(1)随机访问优势,但插入/删除需要移动元素;链表的离散存储让LinkedList在增删操作上表现优异,但查询需遍历节点。通过源码解析和性能测试(ArrayList查询快600倍,LinkedList头部插入快375倍),揭示了HashMap采用数组+链表+红黑树"混合结构的合理性。实战选型建议:频繁查询用ArrayList,头尾增删用LinkedList,键值存储用Hash。原创 2025-11-25 13:16:34 · 54 阅读 · 0 评论 -
B + 树深度解析:从底层原理到数据库索引实战,彻底搞懂!
本文深入解析B+树的核心原理与数据库应用。B+树作为多路平衡查找树,通过非叶子节点仅存索引、叶子节点链表连接等设计,显著优化磁盘IO和范围查询性能。文章详细对比B+树与B树的差异,剖析查找、插入、删除等操作逻辑,并展示其在MySQL InnoDB引擎中的实际应用(聚簇索引与二级索引)。最后提供Java实现示例,验证B+树的高效查询特性。B+树凭借稳定查询深度和高效IO表现,成为数据库索引和文件系统的首选数据结构。原创 2025-11-25 11:21:00 · 572 阅读 · 0 评论 -
B 树深度解析:从底层原理到数据库实战,彻底掌握索引核心
本文深入解析B树的核心原理及其在数据库索引中的实战应用。首先从B树的权威定义出发,详细阐述其多路平衡特性、节点结构和高度计算方法。随后重点拆解B树的查找、插入、删除操作流程,并通过实例演示3阶B树的构建过程。文章还对比分析了B树与B+树的差异,解释数据库选用B+树的原因。在实战部分,提供了Java实现的通用B树代码,并演示如何结合MyBatisPlus优化数据库查询性能。原创 2025-11-25 11:09:16 · 929 阅读 · 0 评论 -
红黑树通关指南:从底层原理到工业级实战,一篇吃透!
红黑树的本质是“用颜色约束替代严格高度平衡”,其设计哲学是工程实用性优先——牺牲少量查找效率换取插入删除的低开销。原创 2025-11-25 10:36:35 · 483 阅读 · 0 评论 -
吃透 2-3-4 树:从底层逻辑到实战
本文深入解析2-3-4树这一多路平衡查找树的核心原理与实现。作为4阶B树,2-3-4树通过允许节点存储1-3个key和2-4个子节点,从根本上解决了二叉搜索树退化为链表的问题,保证所有叶子节点同层,实现O(logn)的稳定时间复杂度。文章详细阐述了2-3-4树的查找、插入(含4节点分裂)和删除(含节点合并)操作原理,并通过Java实现完整展示了节点类设计、核心算法逻辑及测试验证。2-3-4树不仅是理解红黑树的基础,也是数据库索引、文件系统等场景的重要理论基础。相比其他平衡树,2-3-4树具有直观的平衡规则。原创 2025-11-25 10:14:46 · 1045 阅读 · 0 评论 -
AVL 树深度解析:从原理到实战,打造平衡二叉搜索树的终极指南
本文全面解析AVL树的核心原理与实现。AVL树通过平衡因子(BF)和四种旋转操作(LL/RR/LR/RL)确保二叉搜索树始终保持严格平衡,时间复杂度稳定在O(logn)。文章详细展示了节点定义、旋转实现、插入删除等核心代码,并基于SpringBoot项目演示了AVL树在用户管理系统中的应用。相比红黑树,AVL树查询效率更高但旋转更频繁,适合查询密集型场景。该指南从理论到实践,为开发者提供了实现高效有序数据结构的完整方案。原创 2025-11-25 09:59:59 · 692 阅读 · 0 评论 -
二叉树通关指南:从底层逻辑到实战落地,一篇吃透!
二叉树是一种非线性数据结构,每个节点最多只有两个“孩子”(左孩子、右孩子),就像树杈分了两个叉。原创 2025-11-24 16:53:00 · 37 阅读 · 0 评论 -
栈:线性结构中的 “后进先出” 王者,从底层逻辑到实战应用全解析
本文深入解析栈(Stack)数据结构及其应用。栈作为后进先出(LIFO)的线性结构,广泛应用于计算机科学领域。文章首先介绍栈的基本概念和核心操作,对比其与队列的区别。随后详细讲解数组栈和链表栈两种实现方式,分析各自的性能特点和应用场景。重点探讨栈在实际开发中的典型应用,包括括号匹配、表达式转换与求值、浏览器历史记录管理等,并提供完整的Java实现代码。最后通过一个SpringBoot项目案例,展示如何利用栈实现日志系统的撤销/重做功能。原创 2025-11-24 16:28:28 · 1125 阅读 · 0 评论 -
链表:从底层逻辑到实战应用,彻底搞懂线性结构的灵魂!
本文深入解析链表数据结构,对比其与数组的核心差异,分析单链表、双向链表和循环链表的实现原理及操作特性。通过Java代码示例演示链表的基本操作和经典算法(如反转链表、环形检测),并探讨链表在LRU缓存、数据库索引等实际场景中的应用。文章还提供链表性能优化技巧和常见问题解决方案,帮助开发者深入理解链表底层逻辑,掌握高效使用链表的实践方法。原创 2025-11-24 14:48:34 · 1331 阅读 · 0 评论 -
从底层到实战:彻底搞懂队列,让你的代码效率翻倍!
本文深入解析了队列这一基础数据结构,从底层原理到实际应用全面展开。首先介绍了队列的核心特性——先进先出(FIFO)原则,详细对比了基于数组的循环队列和基于链表的链式队列两种实现方式及其优缺点。然后探讨了两种特殊队列:支持双端操作的双端队列(Deque)和按优先级出队的优先级队列(PriorityQueue)。在应用层面,文章通过线程池任务队列、消息队列中间件和广度优先搜索算法等典型场景,展示了队列在工程实践中的重要作用。最后给出了队列性能优化建议和最佳实践,帮助开发者合理选择队列实现方案。原创 2025-11-24 14:41:20 · 854 阅读 · 0 评论 -
数组:线性结构的基石,你真的懂透了吗?
本文深入剖析数组这一基础数据结构,从底层原理到实际应用全面解析。文章首先阐述数组的三大核心特征:线性结构、同类型元素和连续内存存储,揭示其O(1)随机访问性能的根源。通过Java代码示例详细演示数组的增删查改操作,分析不同操作的时间复杂度。特别探讨ArrayList的动态扩容机制及优化策略,并解析多维数组的存储原理。最后结合二分查找算法和用户标签管理系统等实战案例,说明数组在算法和业务中的典型应用场景,同时指出常见使用误区和性能优化技巧。原创 2025-11-24 14:30:18 · 516 阅读 · 0 评论 -
hashmap 插入1万条数据会有什么影响
在 Java 中,HashMap是基于哈希表的 Map 接口的非同步实现。当你向HashMap。原创 2024-05-29 16:23:06 · 1043 阅读 · 0 评论 -
MySQL MyISAM和InnoDB索引底层数据结构解析
MySQL是一种常用的关系型数据库管理系统,广泛应用于各种应用场景中。在MySQL中,有两种常见的存储引擎:MyISAM和InnoDB。原创 2023-07-24 17:58:30 · 4895 阅读 · 1 评论 -
JDK 1.8中为什么HashMap使用红黑树而不是普通的AVL树
在JDK 1.8之前,HashMap使用的是数组和链表的组合来解决哈希冲突。然而,当链表过长时,查询性能会受到影响。为了解决这个问题,JDK 1.8引入了红黑树作为链表的替代结构,提高了HashMap的性能。为什么选择红黑树而不是其他平衡二叉树结构,比如AVL树呢?本文将详细解释这个问题。在JDK 1.8中,HashMap选择使用红黑树而不是普通的AVL树作为链表的替代结构。红黑树相对于AVL树来说,在维护平衡性方面要求更低,实现更简单,并且在实际应用中提供了更好的性能。原创 2023-07-24 17:44:51 · 4177 阅读 · 0 评论 -
各种排序方法的比较
本文介绍了常见的排序算法,包括冒泡排序、选择排序、插入排序、快速排序、归并排序和堆排序,并对它们进行了比较和分析。每种排序算法都有其特点和适用场景,我们可以根据具体的需求选择合适的排序算法来实现排序操作。在实际应用中,我们需要综合考虑算法的时间复杂度、空间复杂度和稳定性等因素,以及对排序结果的要求,来选择最合适的排序算法。原创 2023-07-20 15:51:28 · 3906 阅读 · 0 评论 -
索引底层数据结构红黑树、Hash、B+树详解
索引底层数据结构红黑树、Hash、B+树详解原创 2023-07-05 11:39:07 · 4287 阅读 · 0 评论 -
java 递归删除树节点
需求:按组织树和岗位树查询。(组织org 和岗位都在机构下)问题是:机构树查询出来的是全部的组织机构,需求是按人员所在机构,岗位展示树:上图可理解如下图: nodepath 会显示当前节点的所有父节点:nodePath=1785.1786.1787.1788如标记的无效节点为:2021-12-02 13:20:06.117 INFO 40468 --- [qtp335196473-36] c.g.b.m.service.impl.AgencyServiceImpl : ...原创 2021-12-02 15:20:18 · 2145 阅读 · 0 评论
分享