07 2020 档案
摘要:格式化前: /** * 将 key 中储存的数字值增一。 如果 key 不存在,那么 key 的值会先被初始化为 0 ,然后再执行 INCR 操作。 * 如果值包含错误的类型,或字符串类型的值不能表示为数字,那么返回一个错误。 * 本操作的值限制在 64 位(bit)有符号数字表示之内。 * */
阅读全文
摘要:1. FATAL Error: EACCES: permission denied, stat '.i18nrc.json' # log {"type":"log","@timestamp":"2020-07-20T08:06:05Z","tags":["fatal","root"],"pid":2
阅读全文
摘要:synchronized 修饰的对象有以下几种: 修饰一个代码块,被修饰的代码块称为同步语句块,其作用的范围是大括号{}括起来的代码,作用的对象是调用这个代码块的对象; public void test1() { synchronized (this) { System.out.println("修
阅读全文
摘要:ThreadLocal的原理:每个Thread内部维护着一个ThreadLocalMap,它是一个Map。这个映射表的Key是一个弱引用,其实就是ThreadLocal本身,Value是真正存的线程变量Object。也就是说ThreadLocal本身并不真正存储线程的变量值,它只是一个工具,用来维护
阅读全文
摘要:根据分类标准我们把锁分为以下 7 大类别,分别是: 偏向锁/轻量级锁/重量级锁; 可重入锁/非可重入锁; 共享锁/独占锁; 公平锁/非公平锁; 悲观锁/乐观锁; 自旋锁/非自旋锁; 可中断锁/不可中断锁。 以上是常见的分类标准,下面我们来逐一介绍它们的含义。 偏向锁/轻量级锁/重量级锁 这三种锁特指
阅读全文
摘要:1. java.lang.Object#wait() Causes the current thread to wait until another thread invokes the{@link java.lang.Object#notify()} method or the{@link jav
阅读全文
摘要:在 Java 中线程的生命周期中一共有 6 种状态。 1. NEW Thread state for a thread which has not yet started. 新建状态,线程被创建出来,但尚未启动时的线程状态。 2. RUNNABLE A thread in the runnable
阅读全文
摘要:Garbage First(简称G1)收集器是垃圾收集器技术发展历史上的里程碑式的成果,它开创了收集器面向局部收集的设计思路和基于Region的内存布局形式。早在JDK 7刚刚确立项目目标、Oracle公司制定的JDK 7 RoadMap里面,G1收集器就被视作JDK 7中HotSpot虚拟机的一项
阅读全文
摘要:CMS(Concurrent Mark Sweep)收集器是一种以获取最短回收停顿时间为目标的收集器。目前很大一部分的Java应用集中在互联网网站或者基于浏览器的B/S系统的服务端上,这类应用通常都会较为关注服务的响应速度,希望系统停顿时间尽可能短,以给用户带来良好的交互体验。CMS收集器就非常符合
阅读全文
摘要:标记-清除 算法 算法分为"标记"和"清除"两个阶段,首先标记出需要回收的对象。然后统一回收掉之前被标记的所有对象。它是最基础的收集算法,后续的收集算法都是基于这种思想并对其缺点进行改进而产生的。 主要缺点:1. 执行效率不稳定,如果Java堆中包含大量对象,而且其中大部分是需要被回收的,这时必须进
阅读全文
摘要:1. 何为对象的引用? Java中的垃圾回收一般是在Java堆中进行,因为堆中几乎存放了Java中所有的对象实例。在java中,对引用的概念简述如下(引用强度依次减弱) : 强引用: 这类引用是Java程序中最普遍的,只要强引用还存在,垃圾收集器就永远不会回收掉被引用的对象。 软引用: 用来描述一些
阅读全文
摘要:类加载器 Java虚拟机设计团队有意把类加载阶段中的“通过一个类的全限定名来获取描述该类的二进制字节流”这个动作放到Java虚拟机外部去实现,以便让应用程序自己决定如何去获取所需的类。实现这个动 作的代码被称为“类加载器”(Class Loader)。在类层次划分、OSGi、热部署、代码加密等领域有
阅读全文