03 2018 档案
摘要:所谓的「虚拟机字节码执行引擎」其实就是 JVM 根据 Class 文件中给出的字节码指令,基于栈解释器的一种执行机制。通俗点来说,也就是 JVM 解析字节码指令,输出运行结果的一个过程。接下来我们详细看看这部分内容。 方法调用的本质 在描述「字节码执行引擎」之前,我们先从汇编层面看看基于栈帧的方法调
阅读全文
摘要:虚拟机把字节码文件从磁盘加载进内存的这个过程,我们可以粗糙的称之为「类加载」,因为「类加载」不仅仅是读取一段字节码文件那么简单,虚拟机还要进行必要的「验证」、「初始化」等操作,下文将一一叙述。 类加载的基本流程 一个类从被加载进内存,到卸载出内存,完整的生命周期包括:加载,验证,准备,解析,初始化,
阅读全文
摘要:如果计算机的 CPU 只有「x86」这一种,或者操作系统只有 Windows 这一类,那么或许 Java 就不会诞生。Java 诞生之初就曾宣扬过它的初衷,「一次编写,多处运行」,而它之所以能够实现跨平台的一个核心点就在于, Java 引入「字节码」屏蔽了与底层操作系统之间的差异 。 同一段 Jav
阅读全文
摘要:计算机中使用八位的块,或者说是「字节」,作为最小的寻址单元。你可以将整个存储器视作一个超大的「字节数组」,每个字节都有一个唯一的数字编号,这个编号就是所谓的地址,通过这个地址,我们可以唯一的确定一块数据。但是我们代码中定义的各种数值又是如何转换为二进制串存储在这些「字节」里面的呢?为什么两个整数相加
阅读全文
摘要:我们知道,在计算机内部,所有的信息都是以二进制形式进行存储。无论是字符,或是视频音频文件,最终都会对应到一串由 0 和 1 构成的数字串。所以从我们能看懂的人类信息转变为机器级别的二进制语言的过程就可以理解为一种编码的过程,自然,相反的过程就是所谓的解码的过程。 可以这么说, 所有的乱码都是源于解码
阅读全文
摘要:其实很多 Java 程序员在写了很多代码后,你问他 jre 和 jdk 之间有什么关系,jvm 又是什么东西,很多人不知所云。本篇不会讲述 jvm 底层是如何与不同的系统进行交互的,而主要理清楚三者之间的区别,搞清楚我们写的 xxx.java 文件是被谁编译,又被谁执行,为什么能够跨平台运行。 首先
阅读全文
摘要:从零开始,系统得梳理一遍一个合格的 Java web 工程师所必备的所有知识体系,如有不当有误之处,望各位指出以共同进步。 我始终坚信一句话,在这里分享给大家,望共勉:一个人的潜力要高于一切。在我们编程行业,一个人的潜力指的就是他的编程内功。为什么大厂更愿意招基础好的人即便它们什么框架也不会? 其实
阅读全文