![](https://img-blog.csdnimg.cn/20201014180756923.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
java基础
文章平均质量分 73
时不我予de哀愁
这个作者很懒,什么都没留下…
展开
-
内存屏障和JVM相关指令,内存布局等
目录保证特定情况下不乱序VolatileVolatile的实现细节(字节码层(源码刚编译完,变量包含Access flage)、JVM层(虚拟机读到flage的时候明也就是 Access flage))Synchornize的实现细节对象在内存中的存储布局,以及大小 ?对象大小(64位机)普通对象包含4个部分数组对象实验指针压缩。对象头具体包括什么?标志位分析 -- 联合Synchronized锁升级对象的Hashcode。轻量级锁分带年龄偏向锁对象如何定位?1、句柄池2、直接指针(hotspot使用该原创 2021-11-25 14:56:11 · 890 阅读 · 0 评论 -
JAVA反射
背景:以前都是零零散散的去学习反射,对于用法很模糊、还有原理也是只知一二,最近在学习Sprint源码,IOC容器中创建对象都是使用反射进行创建对象的,还有动态代理也是使用了反射,足以证明java反射对于以后的高阶学习是一个极其重要的部分。所以这期博客用来整理JAVA反射相关的知识。整理将用,1、JAVA反射原理;2、用法;3、使用场景;4、反射带来的优点和劣点;5、使用场景,这几个纬度进行整理!文章目录为什么要用JAVA反射JAVA反射原理反射运行流程类加载过程JAVA反射的基本使用通过反射获取Cl原创 2021-11-23 19:11:07 · 819 阅读 · 1 评论 -
使用Comparable/Comparator实现集合的自定义排序。
自定义List类型,Pair里面有两个int元素:first,Second。List简写为A={[1,2],[1,1],[8,5],[6,3]}。如何对A中所有数据第一个数字进行排序,如果第一个数字相同用第二个数字排序?排序结果为A={[1,1],[1,2],[6,3],[8,5]}使用Comparable接口,在需对比的实体类上实现该接口的 conparaTo方法class Pair implements Comparable<Pair> { private int fir.原创 2021-08-11 15:14:36 · 162 阅读 · 0 评论 -
AQS的底层原理
AbstractQueuedSynchronizer(AQS)概括一句话为:可快速实现一个同步容器(比如同步阻塞队列).ReadWriteLock、ReentrantLock,或者 CountDownLatch 与 Semaphore,甚至是线程池类 ThreadPoolExecutor 都继承了 AQS他的作用: AQS的实现,依赖她内部的同步队列(FIFO双向链表),当前线程竞争失败,AQS把当前线程+当前线程等待信息构造成node放入同步队列,同事阻塞该线程,当获取锁的线程释放资源后,A原创 2021-08-09 09:09:53 · 351 阅读 · 0 评论 -
为什么要重写hashCode()、equals()。
借鉴一下大佬的文章:https://zhuanlan.zhihu.com/p/78249480场景当对HashMap进行操作的时候 我们想完成这样的目的:在HashMap的“键”部分存放自定义的对象。原始get首先经过Hashcode值判断、在经过equals()判断才能取到值。(不对的地方请指正)import java.util.HashMap;2 class Key {3 private Integer id;4 public Integer getId原创 2021-08-03 09:39:26 · 55 阅读 · 0 评论