Java 内存布局与垃圾回收归纳

本文基于由周志明所著的《深入理解 Java 虚拟机》一书的第二部分的内容,同时加入了 JVM 规范以及 Oracle 官方 GC 性能调优指南中的内容,旨在能让读者更好地理解这部分知识。目前本文只会包含 JVM 内存布局与垃圾回收相关的归纳内容,如果以后有机会我会继续更新 JVM GC 调优相关的内容。如果读者对本文的内容组织有更好的建议,欢迎在下方评论处提出。

阅读更多

Java TreeMap 源码解析

在本文中,我们将详细解析 java.util.TreeMap 的源代码。本文将首先讲述红黑树及其相关操作的基本原理,并结合 TreeMap 中的相关代码加深印象,继而再对 TreeMap 中的其他代码进行详析。

阅读更多

Java String Formatting

Printing or producing a simple String message has been really trivial in Java. Most of the time, we use concatenation to create String instance we want:

1
2
int a = 3;
String str = "Integer `a` has value `" + a + "`";

Though modern Java compiler uses StringBuilder to optimize statements like these, using concatention to construct String has its limitations, which include:

  • The pattern of the String is not reusable;
  • The statements can be unacceptably long if we try to construct a complicated message;
  • It is impossible to designate the precision of a floating point number.

Fortunately, Java SE 5.0 brought back the venerable printf method from the C library, which also come with the basic feature of string formatting.

阅读更多

Java8 时间 API

Java8 中最为人津津乐道的新改变恐怕当属函数式 API 的加入。但实际上,Java8 所加入的新功能远不止这个。本文将基于《Java SE8 for the Really Impatient》的第 5 章,归纳一下 Java8 加入的位于 java.time 包下的日期和时间 API。

阅读更多