自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(6)
  • 资源 (3)
  • 收藏
  • 关注

原创 synchronized原理及锁优化过程(简单,直白)

1.对象的组成:对象头,实例变量,填充对齐2,对象头的组成:Mark Word,类型指针(指向元数据区对象所属的clss对象)。Mark Word为节省存储空间,在不同场景下存储的内容不同,结构为:3,锁的升级过程为:偏向锁(同步代码一直只被同一线程执行,没有其他线程竞争)----------升级----》轻量级锁(有多个线程会执行代码,但没有冲突过) -------------------------升级----》重量级锁(多线程同时想执行一块代码,发生冲突,等待锁的线程先自旋尝试获取锁

2021-11-14 10:26:25 669 4

原创 HashMap线程不安全底层原理(简单,直白)

1,hashmap在hash冲突时,采用链表方式存储冲突数据2,hashmap扩容时,新建一个两倍容量的数组,将链表复制过去,1.8前采用的头插法,会倒置原来的链表顺序3,多线程执行put方法,同时要扩容时,第一个线程执行到新建扩容的数组后就挂起了。另一个完成扩容操作4,第一个线程回来,本地的haspmap还未扩容的状态,继续扩容,复制链表时,链表最后一个节点本应指向null。但被另一线程完成扩容变成了头节点,指向了下一个元素。此时线程一完成扩容,链表变成环形链表5,后面有人查此处hash的数据时,

2021-10-28 15:41:01 3307

原创 HashMap线程不安全底层原理(简单直白)

1,hashmap在hash冲突时,采用链表方式存储冲突数据2,hashmap扩容时,新建一个两倍容量的数组,将链表复制过去,1.8前采用的头插法,会倒置原来的链表顺序3,多线程执行put方法,同时要扩容时,第一个线程执行到新建扩容的数组后就挂起了。另一个完成扩容操作4,第一个线程回来,本地的haspmap还未扩容的状态,继续扩容,复制链表时,链表最后一个节点本应指向null。但被另一线程完成扩容变成了头节点,指向了下一个元素。此时线程一完成扩容,链表变成环形链表5,后面有人查此处hash的数据时,

2021-10-28 15:33:43 2989

原创 hashMap底层原理(简单直白)

一,基础知识1,数组,数组采用连续的存储单元存储数据,属于顺序存储结构,对于指定下标的查找,时间复杂度是O(1)。2,链表:链表在内存空间上的存储是不连续的,属于链式存储结构。每个节点保存指向下一节点的指针。删除和新增只需新建节点或改变指针,速度快。查询需遍历,比较慢慢。3,hash表,通过对key值的hash计算,确定数据的存储位置。4,Entry:hashMap的内部类,包含一个key和value键值对,一个hash值,以及指向下一个Entry的引用next二,hashMap底层原理1,ha

2021-10-11 14:42:45 1217

原创 对象的结构(简单直白)

对象在内存中的布局分为三个区域:1,对象头、2,实例数据,3,对齐填充一、对象头(又分为两个部分)1,Mark Word区:主要存储对象的运行时数据,如哈希码,锁状态,GC年龄,线程持有的锁等2,类型指针:指向对象所属的类,虚拟机通过此指针判定对象的类型3,如果对象是数组,还有第三个部分,存储数组的长度。二、对象数据部分:对象真正有效的信息,代码中定义的各种变量的字段内容,无论是从父类继承来的,还是在自己定义的,都记录下来。三、对齐填充:仅仅起占位符的作用、HotSpot虚拟机要求对象大小必须是

2021-10-10 21:52:29 1251 1

原创 对象的创建过程(简单直白)

对象的创建过程1,虚拟机遇到new指令时,检查这个指令的参数能否在常量池找到一个类的符号引用,并检查这个类是否加载,解析,初始化。若没有,则执行类的初始化过程。2,虚拟机为新生对象分配内存空间。对象的大小在类加载完后便可完全确定,为对象分配空间相当于把java堆中的确定大小的空间划分出来。当堆中的空闲空间与使用空间都连续,只需将分界点的指针向空闲区域挪移,该方式成为“指针碰撞”。当空闲空间不连续,虚拟机需维护一个列表记录,在列表找到足够的空间分配,称为“空闲列表”3,分配空间后,虚拟机将该空间初始化为

2021-10-10 21:33:34 126

redis主从 fffxdd

redis主从 fffxdd

2022-05-09

springboot+redis+

springboot+redis+

2022-05-09

springboot+reids_rabbitmq

springboot+reids_rabbitmq

2022-05-08

空空如也

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

TA关注的人

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