自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(5)
  • 收藏
  • 关注

原创 ConcurrentHashMap底层实现原理

ConcurrentHashMap是内部线程安全的Map,但外部并非线程安全,比如多个线程同时put去使得某个key的value累加时,得到的结果通常不会相同,所以该加锁时还得加锁ConcurrentHashMap在jdk1.7是基于分段锁实现,但我们重点讨论jdk1.8的版本,也就是使用数组加链表加红黑树,分段锁改为基于cas和Synchronized实现当hash冲突造成链表长度等于8,且nodes数组长度大于64时,链表结构会转变为红黑树结构,之所以要等于8是基于时间和空间的考量,当链表长度小于6

2020-10-13 15:43:21 742

原创 volatile底层原理

**volatile底层原理**cpu的运算速度是很快的,要比内存和I/O操作快更多了,但是cpu通常是要使用内存或I/O设备中的数据进行运算的,为了最大化利用CPU的运算速度,屏蔽内存或I/O的性能短板,为CPU进行了三种优化:1 为CPU增加了高速缓存2 引入了线程和进程的概率,通过切换CPU的时间片,尽可能更多的利用CPU的性能3 CPU指令优化,也就是指令重排序**CPU的高速缓存**在CPU读取内存数据时,会阻塞等待内存将数据返回,为了避免CPU资源被浪费,CPU引入了高速缓存

2020-10-12 10:29:39 111

原创 Java 完全理解强软弱虚和ThreadLocal

什么是强软弱虚?强引用就是普通的new出来的对象,当没有引用再指向它时,它才会被GC回收,否则哪怕内存溢出也不会被GC回收,当然如果将引用重新赋值为null,则该引用对象就不再是强引用了软引用是当将要发生内存溢出前,就会被GC回收,通常适合用来做网页或图片等资源的内存中的缓存,这样既使得图片这种占用内存比较多的资源可以更快的被回收,又降低了重新从磁盘或者网络加载这些资源的频率。弱引用是每次GC都会被回收,ThreadLocal底层就是使用了弱引用虚引用是在对象即将被回收前将其放入一个虚引用队列中,然

2020-09-15 21:03:41 145

原创 全方位深入理解学习Java HashMap

Hashmap是一种非常常用的、应用广泛的数据类型,最近研究到相关的内容,就正好复习一下。网上关于hashmap的文章很多,但到底是自己学习的总结,就发出来跟大家一起分享,一起讨论。1、hashmap的数据结构要知道hashmap是什么,首先要搞清楚它的数据结构,在java编程语言中,最基本的结构就是两种,一个是数组,另外一个是模拟指针(引用),所有的数据结构都可以用这两个基本结构来构造的,hashmap也不例外。Hashmap实际上是一个数组和链表的结合体(在数据结构中,一般称之为“链表散列“),请看

2020-09-10 10:04:29 234

原创 全方位深入理解学习Java String字符串类

深入理解剖析Java String什么是 String?String是java.lang包下的一个类,它不是一个基本数据类型,String类是java语言最常用的数据类型之一,所有类似"ABC"的字面量都是String类的实例对象,以下为String类的部分源码:// An highlighted blockpublic final class String implements java.io.Serializable, Comparable<String>, CharSequ

2020-09-09 21:48:42 294 1

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除