IO-ObjectInputStream

ObjectInputStream 和 ObjectOutputStream 都是和对象 Serializable 有关。

writeObject 的过程

原生数据类型的序列化

创建 ObjectOutputStream 的过程。

阅读全文

IO-InputStream

read

抽象类,提供了一个 read 方法来读取字节。这个方法是一个抽象方法
交由具体的子类来实现。

1
2
3
4
5
public abstract class InputStream implements Closeable {
// 对象要实现 InputStream 的类,
// 需要实现下面的方法。
public abstract int read() throws IOException
}

阅读全文

IO-File

java 中关于文件操作的类

java.io.File

An abstract representation of file and directory pathnames.

阅读全文

IO-FileInputStream

FileInputStream 的初始化

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
public FileInputStream(File file) throws FileNotFoundException {
// FileInputStream 类并没有存储 file 引用,只是使用了
// file.getPath() 来获得文件的存储路径。
String name = (file != null ? file.getPath() : null);
SecurityManager security = System.getSecurityManager();
if (security != null) {
security.checkRead(name);
}
if (name == null) {
throw new NullPointerException();
}
if (file.isInvalid()) {
throw new FileNotFoundException("Invalid file path");
}

// 创建 FileDescriptor 对象,
fd = new FileDescriptor();
fd.incrementAndGetUseCount();

this.path = name;

// 打开文件
open(name);
}

private native void open(String name) throws FileNotFoundException

阅读全文

JVM-java对象模型的实现

JVM 是如何实现 Java 语言的 对象系统呢?

使用 klass-oop 对象模型

深入探究JVM | klass-oop对象模型研究

阅读全文

JVM-JNI

JNIEnv

1
2
3
4
5
6
public class Hello{
private static native void say();
public static void main(String[] args){
say();
}
}

阅读全文

线程-java命令的实现

// 不同平台所共享的入口
java.c hotspot/src/share/tools/launcher

// 不同平台提供相应的实现
java_md.c

  • win32

    hotspot/src/os/windows/launcher

阅读全文

线程-线程本地存储

ThreadLocal内部结构

1
2
3
4
5
6
7
8
public void set(T value) {
Thread t = Thread.currentThread();
ThreadLocalMap map = getMap(t);
if (map != null)
map.set(this, value);
else
createMap(t, value);
}

阅读全文

hadoop-安装

hadoop

hadoop 官网

阅读全文

native方法的调用及JNI

native方法

参考 JVM规范,6.5 Instructions 其中的指令集:

  • invokestatic

阅读全文