摘要: 前言:ConcurrentHashMap是HashMap的线程安全版本,内部使用了数组+链表+红黑树的结构来存储数据,相对于同样线程安全的Hashtable来说,它在效率方面有很大的提升,因此多线程环境下更多的是使用ConcurrentHashMap,因此有必要对其原理进行分析。 注:本文jdk源码 阅读全文
posted @ 2019-09-18 14:45 developer_chan 阅读(2033) 评论(0) 推荐(0) 编辑
摘要: 前言:LinkedHashMap继承HashMap,所以它是线程不安全的,但是它有序,下面就让我们来对其内部原理进行分析。 注:本文jdk源码版本为jdk1.8.0_172 1.LinkedHashMap介绍 LinkedHashMap底层数据结构为双向链表,能保证元素按照插入顺序访问,也能以访问顺 阅读全文
posted @ 2019-09-14 22:25 developer_chan 阅读(624) 评论(0) 推荐(0) 编辑
摘要: 前言:CopyOnWriteArrayList为ArrayList的线程安全版本,这里来分析下其内部是如何实现的。 注:本文jdk源码版本为jdk1.8.0_172 1.CopyOnWriteArrayList介绍 CopyOnWriteArrayList是ArrayList的线程安全版本,因此其底 阅读全文
posted @ 2019-09-14 16:55 developer_chan 阅读(512) 评论(1) 推荐(0) 编辑
摘要: 前言:作为一个常用的List接口实现类,日常开发过程中使用率非常高,因此有必要对其原理进行分析。 注:本文jdk源码版本为jdk1.8.0_172 1.ArrayList介绍 ArrayList底层数据结构是数组(数组是一组连续的内存空间),默认容量为10,它具有动态扩容的能力,线程不安全,元素可以 阅读全文
posted @ 2019-09-14 15:28 developer_chan 阅读(1004) 评论(0) 推荐(0) 编辑
摘要: 前言:WeakHashMap可能平时使用的频率并不高,但是你可能听过WeakHashMap会进行自动回收吧,下面就对其原理进行分析。 注:本文jdk源码版本为jdk1.8.0_172 1.WeakHashMap介绍 WeakHashMap是一种弱引用的map,底层数据结构为数组+链表,内部的key存 阅读全文
posted @ 2019-09-09 10:47 developer_chan 阅读(601) 评论(0) 推荐(0) 编辑
摘要: 前言:LinkedList的底层数据结构是双向链表,下面具体分析其实现原理。 注:本文jdk源码版本为jdk1.8.0_172 1..LinkedList介绍 LinkedList继承于AbstractSequentialList的双向链表,实现List接口,因此也可以对其进行队列操作,它也实现了D 阅读全文
posted @ 2019-09-02 11:27 developer_chan 阅读(1986) 评论(0) 推荐(0) 编辑
摘要: 前言:Hashtable线程安全的集合类,虽然它线程安全,然而在日常开发中使用的频率很低,毕竟锁的颗粒度太大了。但是这并不妨碍我们对其内部原理进行了解。 注:本文jdk源码版本为jdk1.8.0_172。 1.Hashtable基本概念 Hashtable与HashMap一样,都是以键值对的形式存储 阅读全文
posted @ 2019-08-20 20:51 developer_chan 阅读(800) 评论(0) 推荐(0) 编辑
摘要: 前言:String类在日常开发过程中使用频率非常高,平时大家可能看过String的源码,但是真的认真了解过它么,笔者在一次笔试过程中要求写出String的equals方法,瞬间有点懵逼,凭着大致的理解,算是写出来了,可是下来一翻String的源码顿悟,原来自己写得是多么的low,所以有必要把这些基础 阅读全文
posted @ 2019-08-20 11:40 developer_chan 阅读(1429) 评论(0) 推荐(0) 编辑
摘要: 前言:本以为(OutOfMemoryError)OOM问题会离我们很远,但在一次生产上线灰度的过程中就出现了Java.Lang.OutOfMemoryError:Java heap space异常,通过对线上日志的查看,最终定位到ArrayList#addAll方法中,出现这个问题的原因是:由于历史 阅读全文
posted @ 2019-07-14 17:54 developer_chan 阅读(5565) 评论(0) 推荐(2) 编辑
摘要: 前言:我们知道在Spring中经常使用配置文件的形式对进行属性的赋值,那配置文件的值是怎么赋值到属性上的呢,本文将对其进行分析。 首先了解一个类:PropertySourcesPlaceholderConfigurer,该类对程序中使用占位符的方式对属性进行赋值的形式进行解析,如在xml配置文件中进 阅读全文
posted @ 2019-05-08 20:44 developer_chan 阅读(744) 评论(0) 推荐(0) 编辑