原创 Java 7之傳統I/O - 字符類 StringReader和StringWriter

這兩個類將String類適配到了Reader和Writer接口,在StringWriter類實現的過程中,真正使用的是StringBuffer,前面講過,StringBuffer是一個可變類,由於Writer類中有許多字符串的操作,所以這

原创 調試HotSpot源代碼

之前的文章在Ubuntu 16.04上編譯OpenJDK8的源代碼 已經介紹過在Ubuntu上編譯OpenJDK8的源代碼,這一篇將介紹在Ubuntu上調試OpenJDK8源代碼的2種方式。  1、GDB調試源代碼 在Linux上常用GD

原创 HotSpot的啓動過程

HotSpot通常會通過java.exe或javaw.exe來調用/jdk/src/share/bin/main.c文件中的main()函數來啓動虛擬機,使用Eclipse進行調試時,也會調用到這個入口。main.c的main()函數負責

原创 HotSpot二分模型(1)

HotSpot採用了OOP-Klass模型來描述Java類和對象。OOP(Ordinary Object Pointer)指的是普通對象指針,而Klass用來描述對象的具體類型。 那麼爲何要設計這樣一個一分爲二的對象模型呢?因爲類和對象本

原创 Java 7之集合類型 - ArrayList

轉載請註明出處:http://blog.csdn.net/mazhimazh/article/details/19543911首先來看一道面試題目:ArrayList list = new ArrayList(20);中的list擴充幾次

原创 Java 7之集合類型 - Vector與Stack

轉載請註明出處:http://blog.csdn.net/mazhimazh/article/details/195688671、Vector Vector類也是基於數組實現的隊列,代碼與ArrayList非常相似,只不過在可能發生線程安

原创 Ubuntu16.04上編譯OpenJDK8源代碼

本文將詳細介紹在Ubuntu16.04上對OpenJDK8進行編譯。 1、準備編譯環境 使用的操作系統爲Ubuntu16.04,如果讀者沒有安裝Ubuntu,可以在Windows上使用虛擬機的方式進行安裝,或者可以直接在電腦上安裝多系統,

原创 Java 7之集合類型 - 二叉排序樹、平衡樹、紅黑樹

      爲了理解 TreeMap 的底層實現,必須先介紹排序二叉樹和平衡二叉樹,然後繼續介紹紅黑樹。平衡二叉樹和紅黑樹又是一種特殊的二叉排序樹。二叉排序樹是一種特殊結構的二叉樹,可以非常方便地對樹中所有節點進行排序和檢索。1、排序二叉

原创 Java 7之傳統I/O - 字符類 CharArrayReader和CharArrayWriter

CharArrayReader和CharArrayWriter是字符數組流。它和ByteArrayInputStream、ByteArrayOutputStream類似,只不過ByteArrayXXputStream是字節數組流,而Cha

原创 Java 7之傳統I/O - 其它相關字節輸入輸出流類

1、FilterInputStream和FilterOutputStream類 下面來看一下FilterInputStream和FilterOutputStream類,這兩個類就是裝飾角色,他們實現了InputStream和Outpu

原创 自定義實現類似WeakHashMap集合類

import java.lang.ref.WeakReference; /* * below methods have public idenifer that can be invoked by outer */ public

原创 HotSpot項目結構

之前已經介紹了Ubuntu16.04上編譯OpenJDK8源代碼和調試HotSpot源代碼。這一章將介紹HotSpot項目的目錄結構。 HotSpot目錄下主要由agent、make、src和test這4個子目錄構成。其中agent目錄下

原创 Java 7之傳統I/O - PipedInputStream和PipedOutputStream

       PipedInputStream類與PipedOutputStream類用於在應用程序中創建管道通信.一個PipedInputStream實例對象必須和一個PipedOutputStream實例對象進行連接而產生一個通信管道

原创 Java 7之基礎 - 序列化與反序列化

轉載請註明出處:http://blog.csdn.net/mazhimazh/article/details/20292331使用Java的序列化和反序列化可以實現信息的持久存儲、或者也可以實現Java對象的深克隆。在前面文章講解過使用序

原创 Java 7之傳統I/O - ByteArrayInputStream和ByteArrayOutputStream

先來看ByteArrayOutputStream類中write()方法: // Writes the specified byte to this byte array output stream. public synchr