- 博客(30)
- 收藏
- 关注
原创 数据结构和算法之【阻塞队列】下篇
本文介绍了两种基于链表实现的阻塞队列优化方案:单锁实现和双锁实现。单锁实现使用一把锁控制入队和出队操作,虽然实现简单但存在性能瓶颈。双锁实现则通过分离入队锁和出队锁,使两个操作互不干扰,显著提升并发性能。文章详细展示了两种实现的核心代码,包括队列接口定义、抽象类设计以及具体实现类。双锁方案通过条件变量实现线程间协调,并在临界条件下进行"极联唤醒"优化,进一步减少不必要的线程唤醒开销。两种实现都支持带超时等待的操作,增强了队列的实用性。
2026-04-02 20:44:59
1180
原创 数据结构和算法之【阻塞队列】上篇
本文探讨了阻塞队列的实现及其在多线程环境中的应用。首先通过测试案例展示了普通队列(LinkedList)在多线程操作时存在的线程安全问题,表现为元素数量不一致。接着介绍了阻塞队列的特性,包括队列空时等待获取元素、队列满时等待添加元素的功能。文章详细实现了一个基于单锁的阻塞队列(OneLockListBlockingQueue),使用ReentrantLock和Condition实现线程安全,并通过测试验证了其线程安全性。最后展示了如何使用该阻塞队列实现生产者-消费者模型,演示了不同速度的生产者和消费者之间的
2026-03-30 23:57:19
880
原创 数据结构和算法之【堆】
摘要:本文详细介绍了堆数据结构及其实现,包括大顶堆和小顶堆的定义与特性,以及父子节点位置关系的计算方法。通过Java代码实现了堆的抽象类和具体类,重点解析了堆化(heapIfy)、下潜(siftDown)和上浮(siftUp)等核心操作。文章还展示了堆在优先级队列、堆排序和求第K大元素等实际场景中的应用,提供了完整的代码实现和LeetCode题解。堆作为一种高效的数据结构,在算法和工程实践中具有重要价值。
2026-03-25 23:40:53
1870
原创 数据结构和算法之【二叉树】
本文介绍了二叉树的基本概念和遍历方法。主要内容包括:1.二叉树的定义,区分根节点和叶子节点;2.两种遍历方式:广度优先(层序遍历)和深度优先(前序、中序、后序);3.LeetCode相关题解,分别使用栈和递归实现三种深度优先遍历;4.通用模板实现,包含节点类定义、结果封装类和遍历工具类。通过代码示例展示了如何高效实现二叉树的遍历操作,并提供了完整的解决方案和测试结果。
2026-03-23 23:43:31
633
原创 数据结构和算法之【栈】
本文介绍了栈的定义及两种实现方式(链表和数组),并给出了LeetCode相关题解。栈是一种遵循先进后出原则的线性数据结构,支持压栈和弹栈操作。文章详细展示了基于链表的实现(使用虚拟头节点)和基于数组的实现(从尾部操作元素)。随后提供了LeetCode 102题(有效括号)、232题(用栈实现队列)和225题(用队列实现栈)的解决方案,包括测试结果验证。这些实现和题解展示了栈的基本操作及其在算法问题中的应用。
2026-03-21 23:29:50
933
原创 数据结构和算法之【队列】
本文介绍了队列的数据结构及其实现方式。队列遵循先进先出原则,包含入队(offer)和出队(poll)操作。文章详细展示了基于链表和数组的自定义队列实现,分别采用双向链表和动态扩容数组作为底层结构。同时分析了Java标准库中的队列实现:LinkedList基于双向链表实现队列/双端队列功能,LinkedBlockingQueue则是线程安全的阻塞队列实现。最后通过LeetCode第102题(层序遍历)和第103题(之字形遍历)展示了队列在算法中的应用,分别使用普通队列和双端队列解决问题,并给出了具体的代码实现
2026-03-19 22:53:46
624
原创 Spring之【ConfigurationClassPostProcessor】
介绍Spring中的一个重要组件ConfigurationClassPostProcessor
2025-07-24 15:37:34
1121
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅
2