该文被密码保护。 阅读全文
摘要:
JVM 通过加载 .class 文件,能够将其中的字节码解析成操作系统机器码。那这些文件是怎么加载进来的呢?又有哪些约定?接下来我们就详细介绍 JVM 的类加载机制,同时介绍三个实际的应用场景。 我们首先看几个面试题。 我们能够通过一定的手段,覆盖 HashMap 类的实现么? 有哪些地方打破了 J 阅读全文
摘要:
首先,第一个问题:JVM的内存区域是怎么高效划分的?这也是一个高频的面试题。很多同学可能通过死记硬背的方式来应对这个问题,这样不仅对知识没有融会贯通在面试中还很容易忘记答案。 为什么要问到 JVM 的内存区域划分呢?因为 Java 引以为豪的就是它的自动内存管理机制。相比于 C++的手动内存管理、复 阅读全文
摘要:
Java 程序到底是如何执行的? JVM 和操作系统的关系 工程师就相当于铸剑的剑师,JVM 便是剑炉。 JVM 全称 Java Virtual Machine,也就是我们耳熟能详的 Java 虚拟机。它能识别 .class后缀的文件,并且能够解析它的指令,最终调用操作系统上的函数,完成我们想要的操 阅读全文
摘要:
动态代理是程序在运行期间动态构建代理对象和动态调用代理方法的一种机制。那么如何实现动态代理?JDK Proxy 和 CGLib 有什么区别? 动态代理的常用实现方式是反射。反射机制是指程序在运行期间可以访问、检测和修改其本身状态或行为的一种能力,使用反射我们可以调用任意一个类对象,以及类对象中包含的 阅读全文
摘要:
使用克隆可以为我们快速地构建出一个已有对象的副本,那么什么是浅克隆和深克隆?如何实现克隆? 浅克隆(Shadow Clone)是把原型对象中成员变量为值类型的属性都复制给克隆对象,把原型对象中成员变量为引用类型的引用地址也复制给克隆对象,也就是原型对象中如果有成员变量为引用对象,则此引用对象的地址是 阅读全文
摘要:
在并发编程中有两个重要的概念:线程和锁,多线程是一把双刃剑,它在提高程序性能的同时,也带来了编码的复杂性,对开发者的要求也提高了一个档次。而锁的出现就是为了保障多线程在同时操作一组资源时的数据一致性,当我们给资源加上锁之后,只有拥有此锁的线程才能操作此资源,而其他线程只能排队等待使用此锁。那么如何手 阅读全文