- 博客(5)
- 收藏
- 关注
原创 JUC并发编程基石——AQS深入解读
Java.util.concurrent 是在并发编程中比较常用的工具类,里面包含很多用来在并发 场景中使用的组件。比如ReentrantLock,Semaphore,CountDownLatch、ThreadPoolExecutor等等。并发包的作者是大名鼎鼎的 Doug Lea。文章目录深入解读AQS源码前言什么是CASLockSupport工具类独占模式获取锁释放锁共享模式获取共享锁释放共享锁线程间通信等待通知
2020-10-11 23:02:29 609
原创 散列表&HashMap、LinkedHashMap源码深入解读
散列表的英文叫"Hash Table",我们一般也叫做"哈希表"或者"Hash表",你一定听过它,但是你是不是真的理解这种数据结构呢?散列表用的是数组支持下标随机访问数据的特性,所以散列表其实就是数组的一种扩展,由数组演化而来。可以说,没有数组就没有散列表。那它具体又是如何实现的呢 我们知道散列表将元素散落在各个槽中,无法通过添加的顺序来遍历每一个元素。如果我们想要按照元素添加的先后顺序遍历它该如何实现呢? LRU是
2020-10-02 16:07:51 2503 4
原创 堆、堆排序&PriorityQueue源码分析
堆、堆排序&PriorityQueue源码分析前言 有一个数据流a[],每时每刻都在发生着数据的插入、删除,如何实时动态的获取该数据流的前K大元素呢?另外一个数据流b[],每时每刻数据也发生着变化,如何实时获取该数据流的中位数呢?除了插入排序、快速排序、归并排序等几种常见的排序算法外,还有一种排序叫做堆排序,你知道它是如何实现的么?带着这些问题我们先来看一下什么是堆什么是堆 堆是一种特殊的二叉树,必须满足以下两点: 1.必须是一个完全二叉树 2.堆中的每一个节点的值都必须大于等
2020-09-07 16:54:58 303
原创 经典数据结构之链表、队列、栈&LinkedList源码分析
链表、队列、栈这三种都是线性表数据结构。线性表,顾名思义,就是将数据像一条线一样串起来的一种数据结构。LinkedList是java最常用的一种集合框架,它既可以当作链表来使用,也可以当作队列、栈来使用。所以我们可以分析LinkedList的源码来深入理解链表、队列、栈的底层实现方式
2020-09-01 18:06:04 559
原创 经典数据结构之数组&ArrayList源码分析
数组是我们学习数据结构与算法时第一个解除的数据结构,主流的编程语言都提供了数组这一基本数据类型。它是一种线性表,存储了相同类型的数据,在内存中是一块连续的空间 List集合是java编程最常用的集合框架,它继承自Collection,是一个有序集合,也称序列。用户可以精准的控制每个元素的插入、删除,也可以通过整数索引index访问任一元素,并且可以遍历整个集合搜索某一元素。List集合允许插入重复元素和null元素。
2020-08-30 13:40:10 764
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人