自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 美团java面试灵魂9连问

指令重排,第一题中我们得知对象的创建过程,这个过程可能会造成指令重排问题,所以要想完全避免,需要根据你的业务场景判断是否增加 volatile 关键字。对象和数组的存储不同,对象在内存中主要有四种类型,markword,classpoint ,instance data, padding。第三步:内存不大,进入线程本地缓冲区(TLAB),然后进入Eldn(新生代).第二步:通过该对象的构造器,将对象原本初始值赋值给内存空间。第一步:尝试栈上分配,分配成功,对象随栈信息一起pop。空间,将对象实例属性。

2024-01-26 14:46:37 361 1

原创 锁的一些简单理解

2、ByteCode字节码 ACC_VOLATILE。无锁 (new对象)-> 偏向锁(在门上贴个名字) -> 自旋锁(多线程抢进行CAS) -> 重量级锁 (人太多了,近队列)3、JVM虚拟机规范 JVM内存屏障。屏障两边的执行不可以重排!软引用(内存不够用了,回收软引用)弱引用(垃圾回收器看到就回收)虚引用(管理堆外内存,零拷贝)3、JVM的内存屏障。

2024-01-26 14:33:03 269 1

原创 CAS与ABA

否则,不要更改该位置,只告诉我这个位置现在的值即可。当对一个共享变量执行操作时,我们可以使用循环CAS的方式来保证原子操作,但是对多个共享变量操作时,循环CAS就无法保证操作的原子性,这个时候就可以用锁,或者有一个取巧的办法,就是把多个共享变量合并成一个共享变量来操作。,它假设冲突比较少,但使用CAS 更新,进行冲突检测,如果确实冲突就继续尝试直到成功,它是非阻塞式算法,有更新冲突就重试。,它假设更新都是可能冲突的,所以要先获取锁,得到锁才更新,它是阻塞式算法,得不到锁就进入锁池等待。

2024-01-24 14:29:29 754 1

原创 Object o=new Object()在内存中占用多少字节

这参数后面的oop可不是面向对象编程Object Oriented Programming的意思,而是普通对象指针Ordinary Object Pointer。启用每个Class的属性指针(静态成员变量);每个对象的属性指针;普通对象数组的每个元素指针。当然,压缩也不是所有的指针都会压缩,对一些特殊类型的指针,JVM是不会优化的,例如指向PermGen的Class对象指针、本地变量、堆栈元素、入参、返回值和NULL指针不会被压缩。

2024-01-24 11:59:58 1126 1

原创 Java Collections.shuffle方法(用来抽奖很好用)

是一个Java Collections类方法,其工作原理是随机置换指定列表元素。有不同类型的Java shuffle()方法,可以根据其参数进行区分。shuffle(list)方法用于通过使用默认随机性对指定的列表元素进行随机重新排序来工作。shuffle(list,random)方法用于通过使用指定的随机性对列表元素进行随机重新排序来工作。该方法不返回任何东西。

2024-01-24 10:35:38 587 1

原创 Js-基础语法学习-push()方法

1. push() 方法用于向数组的末尾添加一个或多个元素。2. push() 方法将改变原数组的长度。2. item :插入数组中的元素值。往数组的尾部插入一个元素。往数组的尾部插入多个元素。

2024-01-16 10:21:45 373 1

原创 Js-基础语法学习-splice()方法

2. howmany :可选。若不填,则默认删除从index直到数组结尾所有元素。替换数组中从下标为1开始的一共三位元素为item1、item2、item3。1. splice() 方法用于添加或删除数组中的元素。删除数组中从下标为index开始直到结尾的所有元素。1. index : 必填。从何处开始添加或删除。3. item :用于替换的时候替补的值。2. splice() 方法会改变原数组。删除数组中最后一位元素。

2024-01-16 10:19:02 299 1

原创 Js-基础语法学习-unshift()方法

1. unshift() 方法用于向数组的开头插入一个或多个指定元素。2. unshift() 方法将改变原数组的长度。

2024-01-16 09:56:37 952

空空如也

空空如也

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

TA关注的人

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