自定义博客皮肤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 763

原创 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 130

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

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

2020-09-15 21:03:41 160

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

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

2020-09-10 10:04:29 250

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

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

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

空空如也

空空如也

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

TA关注的人

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