在 上一篇 文章中,我们介绍了几种可以作为索引的数据结构,并指出了它们的适用场景,随后又分析了 InnoDB 索引的数据结构模型。今天我们继续来聊聊跟 MySQL 索引相关的概念。
一条 SQL 查询语句是如何执行的
假设你有个最简单的表 test,表里只有一个 id 字段,在执行 select * from test where id=3
这个查询语句时。我们只看到『输入一条语句,返回了一个结果』,却不知道这条语句在 MySQL 内部的执行过程。所以今天我想和你一起把 MySQL 拆解一下,看看里面都有哪些『零件』。
Java 程序编译与代码优化
因为 Java 代码到机器码之间还存在着字节码,所以 Java 语言的『编译期』其实是一段不确定的过程。它可能是指一个前端编译器把 *.java
文件转变成 *.class
文件的过程;也可能是指虚拟机的运行期编译器(JIT 编译器,Just In Time Compiler)把字节码转变成机器码的过程;还可能是指使用提前编译器(AOT 编译器,Ahead Of Time Compiler)直接把 *.java
文件编译成机器码的过程。
new 一个对象的过程中发生了什么
JVM 在 new 一个对象的时候,会先查看对象所属的类有没有被加载到内存。如果没有的话,就通过类的全限定名来加载,等类加载完成之后,再创建对象。总的来说, new 一个对象可以分为两个过程:类加载和创建对象。
Java 垃圾收集三 实现
前文介绍了常见的对象存活判定算法和垃圾收集算法,Java 虚拟机实现这些算法时,必须对算法的执行效率有严格的考虑,才能保证虚拟机高效运行。下面我们来看看 HotSpot 虚拟机的具体实现。