排序
Java中的序列化和反序列化是什么?
序列化其实就是将对象转化成可传输的字节序列格式,以便于存储和传输。 因为对象在 JVM 中可以认为是“立体”的,会有各种引用,比如在内存地址Ox1234 引用了某某对象,那此时这个对象要传输到...
为什么Java解释和编译都有?
首先在Java经过编译之后生成字节码文件,接下来进入JVM中,就有两个步骤编译和解释。 如下图: 编译性: Java源代码首先被编译成字节码,JIT 会把编译过的机器码保存起来,以备下次使用。 解释性...
Java为什么是跨平台的?
Java 能支持跨平台,主要依赖于 JVM 关系比较大。 JVM也是一个软件,不同的平台有不同的版本。我们编写的Java源码,编译后会生成一种 .class 文件,称为字节码文件。Java虚拟机就是负责将字节码...
spring三级缓存是什么?
三级缓存主要是为了解决单例模式下的循环依赖的问题。 循环依赖指的是两个类中的属性相互依赖对方:例如 A 类中有 B 属性,B 类中有 A属性,从而形成了一个依赖闭环,如下图。 循环依赖问题在Sp...
CPU密集型和IO密集型 N+1和2N具体是如何计算的?
N代表的是CPU核数 CPU密集型:corePoolSize = CPU核数 + 1 IO密集型:corePoolSize = CPU核数 * 2 在《Java并发编程实践》中,是这样来计算线程池的线程数目的: 这种计算方式,我们需要知道上...
垃圾回收器CMS和G1的区别
区别一:使用的范围不一样 CMS收集器是老年代的收集器,可以配合新生代的Serial和ParNew收集器一起使用 G1收集器收集范围是老年代和新生代。不需要结合其他收集器使用 区别二:STW的时间 CMS收...
怎么排查死锁?
产生死锁需要满足以下 4 个条件: 互斥条件:指运算单元(进程、线程或协程)对所分配到的资源具有排它性,也就是说在一段时间内某个锁资源只能被一个运算单元所占用。 请求和保持条件:指运算...