05 2022 档案

摘要:一、简介 LinkedHashMap内部维护了一个双向链表,能保证元素按插入的顺序访问,也能以访问顺序访问,可以用来实现LRU缓存策略。 LinkedHashMap可以看成是LinkedList + HashMap。 二、继承体系 LinkedHashMap继承HashMap,拥有HashMap的所 阅读全文
posted @ 2022-05-29 14:03 夏尔_717 阅读(66) 评论(0) 推荐(0) 编辑
摘要:一、概述 Enum的全写是Enumeration,这个词的翻译是列举、逐条陈述、细目。在程序语言中,枚举类型是一种特殊的数据类型(常用的数据类型比如字符串、整型),这种数据类型的变量值限定在固定的范围,比如季节只有春夏秋冬,月份是12个。 枚举类型是JDK 5之后引进的一种非常重要的引用类型,可以用 阅读全文
posted @ 2022-05-23 20:14 夏尔_717 阅读(450) 评论(0) 推荐(0) 编辑
摘要:一、Date类 Data·类表示特定的瞬间,精确到毫秒,它是java.util·包下的类,用之前需要先导包 1.1 时区 GMT(Greenwich Mean Time)代表格林尼治标准时间,而CST却同时可以代表如下4个不同的时区: Central Standard Time (USA) UT-6 阅读全文
posted @ 2022-05-23 20:14 夏尔_717 阅读(708) 评论(0) 推荐(0) 编辑
摘要:一、简介 由于LinkedBlockingDeque作为双端队列的实现,采用了单锁的保守策略使其不利于多线程并发情况下的使用,故ConcurrentLinkedDeque应运而生。 它是一种基于链表的无界的同时支持FIFO、LIFO的非阻塞并发双端队列,当许多线程共享对公共集合的访问时,Concur 阅读全文
posted @ 2022-05-19 19:10 夏尔_717 阅读(64) 评论(0) 推荐(0) 编辑
摘要:一、简介 WeakHashMap是一种弱引用map,内部的key会存储为弱引用,当jvm gc的时候,如果这些key没有强引用存在的话,会被gc回收掉,下一次当我们操作map的时候会把对应的Entry整个删除掉,基于这种特性,WeakHashMap特别适用于缓存处理。 二、继承体系 可见,WeakH 阅读全文
posted @ 2022-05-18 10:47 夏尔_717 阅读(23) 评论(0) 推荐(0) 编辑
摘要:一、简介 ConcurrentSkipListSet底层是通过ConcurrentNavigableMap来实现的,它是一个有序的线程安全的集合。 二、源码分析 它的源码比较简单,跟通过Map实现的Set基本是一致,只是多了一些取最近的元素的方法。 // 实现了NavigableSet接口,并没有所 阅读全文
posted @ 2022-05-17 14:29 夏尔_717 阅读(73) 评论(0) 推荐(0) 编辑
摘要:一、概述 fail-fast机制是java集合中的一种错误机制。首先我们看下维基百科中关于fail-fast的解释: In systems design, a fail-fast system is one which immediately reports at its interface any 阅读全文
posted @ 2022-05-17 14:29 夏尔_717 阅读(164) 评论(0) 推荐(0) 编辑
摘要:一、概述 IdentityHashMap利用哈希表实现Map接口,比较键(和值)时使用引用相等性代替对象相等性。换句话说,在IdentityHashMap中,当且仅当(k1==k2)时,才认为两个键k1和k2相等(在正常Map实现(如HashMap)中,当且仅当满足下列条件时才认为两个键k1和k2相 阅读全文
posted @ 2022-05-15 13:15 夏尔_717 阅读(61) 评论(0) 推荐(0) 编辑
摘要:一、简介 ArrayBlockingQueue是java并发包下一个以数组实现的阻塞队列,它是线程安全的,至于是否需要扩容,请看下面的分析。 二、源码分析 2.1 属性 // 使用数组存储元素 final Object[] items; // 取元素的指针 int takeIndex; // 放元素 阅读全文
posted @ 2022-05-14 12:43 夏尔_717 阅读(45) 评论(0) 推荐(0) 编辑
摘要:一、简介 CopyOnWriteArraySet底层是使用CopyOnWriteArrayList存储元素的,所以它并不是使用Map来存储元素的。 但是,CopyOnWriteArrayList底层其实是一个数组,它是允许元素重复的,那么用它来实现CopyOnWriteArraySet怎么保证元素不 阅读全文
posted @ 2022-05-13 22:21 夏尔_717 阅读(147) 评论(0) 推荐(0) 编辑
摘要:一、简介 ConcurrentLinkedQueue只实现了Queue接口,并没有实现BlockingQueue接口,所以它不是阻塞队列,也不能用于线程池中,但是它是线程安全的,可用于多线程环境中。 那么,它的线程安全又是如何实现的呢?让我们一起来瞧一瞧。 二、源码分析 2.1 属性 // 链表头节 阅读全文
posted @ 2022-05-13 22:16 夏尔_717 阅读(69) 评论(0) 推荐(0) 编辑
摘要:一、Enumeration 1.1 简介 Enumeration(列举),本身是一个接口,不是一个类。Enumeration接口本身不是一个数据结构。但是,对其他数据结构非常重要。Enumeration接口定义了从一个数据结构得到连续数据的手段。实现Enumeration接口的对象,它生成一系列元素 阅读全文
posted @ 2022-05-11 16:21 夏尔_717 阅读(470) 评论(0) 推荐(1) 编辑
摘要:一、简介 CopyOnWriteArrayList是ArrayList的线程安全版本,内部也是通过数组实现,每次对数组的修改都完全拷贝一份新的数组来修改,修改完了再替换掉老数组,这样保证了只阻塞写操作,不阻塞读操作,实现读写分离。 写入时复制(CopyOnWrite)思想 写入时复制(CopyOnW 阅读全文
posted @ 2022-05-11 16:21 夏尔_717 阅读(31) 评论(0) 推荐(0) 编辑
摘要:一、简介 LinkedTransferQueue是LinkedBlockingQueue、SynchronousQueue(公平模式)、ConcurrentLinkedQueue三者的集合体,它综合了这三者的方法,并且提供了更加高效的实现方式。 二、继承体系 LinkedTransferQueue实 阅读全文
posted @ 2022-05-11 13:42 夏尔_717 阅读(220) 评论(0) 推荐(1) 编辑
摘要:一、简介 PriorityBlockingQueue是java并发包下的优先级阻塞队列,它是线程安全的,如果让你来实现你会怎么实现它呢? 还记得我们前面介绍过的PriorityQueue吗?点击链接直达Java集合之PriorityQueue源码分析 二、源码分析 2.1 属性 // 默认容量为11 阅读全文
posted @ 2022-05-11 13:41 夏尔_717 阅读(48) 评论(0) 推荐(0) 编辑
摘要:一、简介 优先级队列,是0个或多个元素的集合,集合中的每个元素都有一个权重值,每次出队都弹出优先级最大或最小的元素。 一般来说,优先级队列使用堆来实现。 二、源码分析 2.1 主要属性 // 默认容量 private static final int DEFAULT_INITIAL_CAPACITY 阅读全文
posted @ 2022-05-10 23:31 夏尔_717 阅读(37) 评论(0) 推荐(0) 编辑
摘要:一、简介 HashSet中的元素是无序的,那么有没有什么办法保证Set中的元素是有序的呢?答案是当然可以。LinkedHashSet就有这个功能,它是怎么实现有序的呢? 二、源码分析 LinkedHashSet继承自HashSet,让我们直接上源码来看看它们有什么不同。 package java.u 阅读全文
posted @ 2022-05-09 13:46 夏尔_717 阅读(44) 评论(0) 推荐(0) 编辑
摘要:一、简介 TreeMap使用红黑树存储元素,可以保证元素按key值的大小进行遍历。 二、继承体系 TreeMap实现了Map、SortedMap、NavigableMap、Cloneable、Serializable等接口。 SortedMap规定了元素可以按key的大小来遍历,它定义了一些返回部分 阅读全文
posted @ 2022-05-09 12:35 夏尔_717 阅读(32) 评论(0) 推荐(0) 编辑
摘要:一、简介 HashSet是Set的一种实现方式,底层主要使用HashMap来确保元素不重复,允许存放null值,线程不安全。 二、案例 2.1 案例一 import java.util.HashSet; import java.util.Set; public class HashSetTest1 阅读全文
posted @ 2022-05-08 23:41 夏尔_717 阅读(44) 评论(0) 推荐(0) 编辑
摘要:一、简介 LinkedBlockingDeque来自于JDK1.5的JUC包,是一个支持并发操作的有界阻塞队列,底层数据结构是一个双链表,可以看作LinkedList的并发版本! LinkedBlockingDeque实现了BlockingDeque接口,而BlockingDeque继承了Block 阅读全文
posted @ 2022-05-08 18:56 夏尔_717 阅读(132) 评论(0) 推荐(0) 编辑
摘要:一、概述 Java集合框架主要包括两种类型的容器,一种是集合(Collection),存储一个元素集合,另一种是图(Map),存储键/值对映射。Collection接口又有3种子类型,List、Set和Queue,再下面是一些抽象类,最后是具体实现类,常用的有ArrayList、LinkedList 阅读全文
posted @ 2022-05-08 18:53 夏尔_717 阅读(121) 评论(0) 推荐(0) 编辑
摘要:一、简介 双端队列是一种特殊的队列,它的两端都可以进出元素,故而得名双端队列。 ArrayDeque是一种以数组方式实现的双端队列,内部使用数组进行元素存储,不允许存储null值,可以高效的进行元素查找和尾部插入取出,是用作队列、双端队列、栈的绝佳选择,性能比LinkedList还要好,它是非线程安 阅读全文
posted @ 2022-05-08 18:51 夏尔_717 阅读(73) 评论(0) 推荐(0) 编辑
摘要:# 一、简介 `DelayQueue`是`java`并发包下的延时阻塞队列,常用于实现定时任务。 # 二、案例 ```java public class DelayQueueTest { public static void main(String[] args) { DelayQueue queu 阅读全文
posted @ 2022-05-08 18:46 夏尔_717 阅读(50) 评论(0) 推荐(0) 编辑
摘要:一、简介 TreeSet底层是采用TreeMap实现的一种Set,所以它是有序的,同样也是非线程安全的。 二、源码分析 // TreeSet实现了NavigableSet接口,所以它是有序的 public class TreeSet<E> extends AbstractSet<E> impleme 阅读全文
posted @ 2022-05-08 18:44 夏尔_717 阅读(41) 评论(0) 推荐(0) 编辑
摘要:一、简介 LockSupport是用来创建锁和其他同步类的基本线程阻塞原语。 LockSupport中的park()和unpark(thread)的作用分别是阻塞线程和解除阻塞线程,而且park()和unpark(thread)不会遇到“Thread.suspend和Thread.resume所可能 阅读全文
posted @ 2022-05-08 18:39 夏尔_717 阅读(181) 评论(0) 推荐(0) 编辑
摘要:一、简介 读写锁是一种特殊的锁,它把对共享资源的访问分为读访问和写访问,多个线程可以同时对共享资源进行读访问,但是同一时间只能有一个线程对共享资源进行写访问,使用读写锁可以极大地提高并发量。 二、特性 读写锁具有以下特性: | 是否互斥 | 读 | 写 | | | | | | 读 | 否 | 是 | 阅读全文
posted @ 2022-05-08 18:38 夏尔_717 阅读(55) 评论(0) 推荐(0) 编辑
摘要:一、简介 StampedLock是java8中新增的类,它是一个更加高效的读写锁的实现,而且它不是基于AQS来实现的,它的内部自成一派逻辑。 StampedLock具有三种模式:写模式、读模式、乐观读模式。 ReentrantReadWriteLock中的读和写都是一种悲观锁的体现,StampedL 阅读全文
posted @ 2022-05-08 18:38 夏尔_717 阅读(239) 评论(0) 推荐(0) 编辑
摘要:YML配置 SpringBoot使用一个全局的配置文件,配置文件名称是固定的 application.properties 语法结构:key=value application.yml 语法结构:key:空格value 配置文件的作用:修改SpringBoot自动配置的默认值,因为SpringBoo 阅读全文
posted @ 2022-05-05 17:14 夏尔_717 阅读(462) 评论(0) 推荐(0) 编辑
摘要:一、概述 LinkedList是一个继承于AbstractSequentialList的双向链表。它也可以被当作堆栈、队列或双端队列进行操作。双向链表结构,有一个头结点和一个尾结点,意味着我们可以从头开始正向遍历,或者是从尾开始逆向遍历,并且可以针对头部和尾部进行相应的操作。 LinkedList的 阅读全文
posted @ 2022-05-04 20:32 夏尔_717 阅读(50) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示