java
文章平均质量分 61
刹那的娜娜
这个作者很懒,什么都没留下…
展开
-
Lombok使用@Tolerate实现冲突兼容
使用Lombok能够减少程序员的重复工作提高工作效率,而Lombok的注解基本是基于标准的(如,标准的Builder模式),而实际开发的时候有时候为了实现某些能力会对标准实现做一些变形,而这个时候Lombok的标准实现就会无法满足需求。 例如,这样一个场景: 使用@Builder对一个DTO实现一个构造器,但是在做Json反序列化的时候发生错误, 原因就是缺少无参公共的构造函数, 而手动写一个无参构造函数的时候编译错误,就是和@Builder冲突,虽然标准的@Builder没法是需要私有化构造...原创 2021-01-29 11:17:44 · 5682 阅读 · 0 评论 -
线程安全的单例模式
面试的时候,常常会被问到这样一个问题:请您写出一个单例模式(Singleton Pattern)吧。好吧,写就写,这还不容易。顺手写一个: publicfinalclassEagerSingleton { privatestaticEagerSingletonsingObj=newEagerSingleton(); privateEagerSingleton(){ } publicstaticEagerSinglet...原创 2021-01-28 09:09:02 · 160 阅读 · 0 评论 -
Java堆内存模型及其gc回收机制
目录[-] 堆内存 GC 堆 GC 日志 JVM 参数选项 堆内存 Java 中的堆是 JVM 所管理的最大的一块内存空间,主要用于存放各种类的实例对象。 在 Java 中,堆被划分成两个不同的区域:新生代 ( Young )、老年代 ( Old )。新生代 ( Young ) 又被划分为三个区域:Eden、From Survivor、ToSurvivor。 这样划分的目的是为了使 JVM 能够更好的管理堆内存中的对象,包括内存的分配以及回收。 堆的内存模型大致为: 从图中可以看出:..原创 2020-12-22 19:52:41 · 86 阅读 · 0 评论 -
yum安装jdk环境变量配置
系统版本 [root@localhost ~]# cat /etc/redhat-release CentOS Linux release 7.4.1708 (Core) #安装之前先查看一下有无系统自带jdk rpm -qa |grep java rpm -qa |grep jdk rpm -qa |grep gcj #如果有就使用批量卸载命令 rpm -qa | gre...原创 2020-03-29 20:36:37 · 1347 阅读 · 0 评论 -
java内存模型详解
我们知道,计算机CPU和内存的交互是最频繁的,内存是我们的高速缓存区,用户磁盘和CPU的交互,而CPU运转速度越来越快,磁盘远远跟不上CPU的读写速度,才设计了内存,用户缓冲用户IO等待导致CPU的等待成本,但是随着CPU的发展,内存的读写速度也远远跟不上CPU的读写速度,因此,为了解决这一纠纷,CPU厂商在每颗CPU上加入了高速缓存,用来缓解这种症状,因此,现在CPU同内存交互就变成了下面的样子...原创 2019-04-07 15:22:25 · 227 阅读 · 0 评论 -
Java垃圾回收:GC在什么时候对什么做了什么
GC在什么时候对什么做了什么? 要回答这个问题,先了解下GC的发展史、jvm运行时数据区的划分、jvm内存分配策略、jvm垃圾收集算法等知识。 先说下jvm运行时数据的划分,粗暴的分可以分为堆区(Heap)和栈区(Stack),但jvm的分法实际上比这复杂得多,大概分为下面几块: 1、程序计数器(Program Conuter Register) 程序计数器是一块较小的内存空间,它是当前线程执行字...原创 2019-04-07 15:38:48 · 287 阅读 · 0 评论