排序
Java为什么既是编译型也是解释型的?
首先在Java经过编译之后生成字节码文件,接下来进入JVM中,就有两个步骤编译和解释。 如下图: 编译性: Java源代码首先被编译成字节码,JIT 会把编译过的机器码保存起来,以备下次使用。 解释性...
JVM的内存区域和作用
根据 JVM8 规范,JVM 运行时内存共分为虚拟机栈、堆、元空间、程序计数器、本地方法栈五个部分。 还有一部分内存叫直接内存,属于操作系统的本地内存,也是可以直接操作的。 JVM的内存结构主要...
怎么排查死锁?
产生死锁需要满足以下 4 个条件: 互斥条件:指运算单元(进程、线程或协程)对所分配到的资源具有排它性,也就是说在一段时间内某个锁资源只能被一个运算单元所占用。 请求和保持条件:指运算...
快速排序最坏复杂度,最坏是什么情况
快速排序是一种不稳定排序,它的时间复杂度为O(n·lgn),最坏情况为O(n2);空间复杂度为O(n·lgn) 快速排序最坏的情况还得看枢轴(pivot)的选择策略。在快速排序的早期版本中呢,最左面或者是...
spring三级缓存是什么?
三级缓存主要是为了解决单例模式下的循环依赖的问题。 循环依赖指的是两个类中的属性相互依赖对方:例如 A 类中有 B 属性,B 类中有 A属性,从而形成了一个依赖闭环,如下图。 循环依赖问题在Sp...
CompletableFuture原理是什么?
CompletableFuture是由Java 8引入的,在Java8之前我们一般通过Future实现异步。 Future用于表示异步计算的结果,只能通过阻塞或者轮询的方式获取结果,而且不支持设置回调方法,Java 8之前若要...