宁赦天下不错杀一个-G1垃圾回收器深度解析

12 月 14 日
阅读 5 分钟
84
Garbage-First垃圾回收器,想必各位都不陌生,但涉及到其原理,包括Remembered Set ( RSet )、Card Table、写屏障等一系列名词,只背八股文可能就有些不够了,今天我们还是以“问题-方案”的形式来深入剖析一下其原理。

JUC之基-AQS详解

12 月 7 日
阅读 4 分钟
119
AQSAQS是JUC学习的基石,是JUC中许多锁的底层实现机制,我们今天从ReentrantLock出发来深入源码解读AQS的设计。AQS底层AQS的几个重要属性: {代码...} AQS有一个Node内部类,是将线程封装为了阻塞队列中的节点对象,几个重要属性: {代码...} 整体效果类似这样当然,这里面的state,waitStatus我们还没有介绍含义,我们...

强势归来 - jdk1.8中的HashMap

11 月 21 日
阅读 7 分钟
126
可以看到,除了将Entry对象换为了Node对象,其余核心属性未发生变化。事实上,Enrty对象和Node对象内部也没有任何区别,可以理解为只是换了个名字而已。但下面这点我们就要注意了,1.8中多出来了一个内部类:TreeNode

错误的尝试-HashMap1.7源码分析

10 月 31 日
阅读 6 分钟
216
HashMap,可以说是Java中最重要的集合之一,从jdk1.7到jdk1.8,经历了翻天覆地的变化,这其中发生了什么?我们从jdk1.7中的HashMap看起,一步步揭开其设计的面纱.相信看完会对你有一定帮助.

缺一不可 - equals & hashCode

10 月 15 日
阅读 1 分钟
198
首先,我们要知道这两个方法是做什么的,Java秉承着万物皆对象的理念,而Java中所有对象向上追溯,会有一个共同的祖先--Object类,而equals和hashCode正是Object类中的两个方法,足以证明其重要性

简析Spring中Bean的生命周期

9 月 20 日
阅读 3 分钟
290
在Spring中创建一个Bean,会经历其生命周期,这里有侧重的介绍一下Bean的创建生命周期,总体思路为:UserService.class--->推断构造方法--->普通对象--->依赖注入--->初始化前--->初始化--->初始化后--->Bean对象--->放入单例池Map我们将其拆开,一个步骤一个步骤来看:

抽丝剥茧 - Spring循环依赖与三级缓存

9 月 18 日
阅读 6 分钟
358
循环依赖问题常见三种循环依赖A-->AA-->B 且 B-->AA-->B , B-->C , C-->ASpring中使用了三级缓存来解决循环依赖的问题,我们今天从零出发,一点点揭示三级缓存的面纱。三级缓存通过源码,我们了解到三级缓存分别是第一级缓存 常称为单例池 singletonObjects第二级缓存 earlySngletonObjects第三级缓存...

位运算的妙用

3 月 4 日
阅读 2 分钟
261
在学习算法过程中,第一次接触到了位运算异或及其一些用法,感觉非常妙,写一篇文章来整理一下。异或: {代码...} 下面我们来看一道妙用异或的题:给定一个数组,这个数组中有一个数字出现过奇数次,而其他数字出现过偶数次,找出这个数字。思路:根据异或的结合律,可以将数组中所有数字从头到尾进行异或,偶数次的数字...