原创 初探Tomcat源碼 —— 關閉鉤子

                 在Tomcat中,通過Catalina的start()來啓動服務器Server等組件;然後監聽ShutDown命令來調用stop()關閉。         但是,如果程序沒有走上面的流程,非正常關閉,那麼

原创 JDK1.7-StringBuilder源碼詳解

         StringBuilder是一個可變字符序列 (字符串)。和String相比,兩者都是字符串,都是字符的有序排列;不同的是,String是不可變的,而StringBuilder是可變的。        StringBui

原创 String字符常量池和intern()

    常量池(Constant Pool)指的是在編譯期被確定,並被保存在已編譯的class文件中的一些數據。它包括了關於類、方法、接口等中的常量,也包括字符串常量。     JVM在運行的時候,會裝進存在於.class文件中的常量池。

原创 Linux常用命令筆記-ftp/sed/awk

FTP             FTP (File TransferProtocol文件傳輸協議),就是專門用來傳輸文件的協議。         FTP服務器,是互聯網上提供存儲空間的計算機,它們依照FTP協議提供服務。        

原创 Reactor反應器模式

         最近學習NIO,看《Netty權威指南》的時候,講JDK1.5的NIO提到了Reactor模式。          我到網上看了一下,發現Reactor模式一開始在ACE(AdaptiveCommunication En

原创 初探JVM-ClassLoader源碼

        之前簡單介紹了一下JVM中的ClassLoader (見《JVM類加載機制-ClassLoader》),現在我們再來看看ClassLoader的源碼。 ClassLoader          首先,我們看看Class

原创 JDK-Future 模式和實現

        最近的項目用到了多線程,發現java.util.concurrent.Future蠻好用的。         像平時,寫多線程一般使用Thread/Runnable,直接扔給線程池執行就好

原创 ThreadLocal失效

         在JDK中,解決線程衝突問題,有兩種解決方案:l  給臨界區加鎖;l  本地化臨界區。 第一種解決方案的典型代表是Synchonized。第二種的典型代表是ThreadLocal。而CopyOnWrite是這兩種方案的融

原创 初探Java序列化(2)-writeObject/readObject

        上一篇《初探Java序列化(Serialization)》給我們大體介紹了什麼是序列化和反序列化,以及解析了一下序列化出來的文件。接着我們看看JDK具體如何序列化一個Object。         在序列化過程中,虛擬機會

原创 單例 變 多例--多ClassLoader實例加載

           最近做項目,想要把一個服務線程Worker做成單例模式。但是,發現在多ClassLoader實例加載下,很難控制Worker實例的數量,實現全局的單例。 類加載層次          我們系統爲了方便各個服務熱啓動

原创 反射破壞單例的私有構造函數保護

        Java的反射破壞單例的私有構造函數保護,最典型的就是Spring的Bean注入,我們可以通過改造私有構造函數來防止。           在Singleton中,我們只對外提供工廠方法(獲取單例),而私有化構造函數,來

原创 生成唯一序列號 Unique ID

         唯一的序列號Unique ID,在程序的各個方面都有所應用,特別是數據存儲方面。很多數據庫都需要一個自增的唯一的序列號作爲Primary Key。            最簡單的Unique ID就是在內存中維護一個lo

原创 Unique ID的特性需求分析

         UniqueID在一個真實的系統裏可能也可以承擔更多的作用。概括起來主要有以下幾點: l  唯一性 l  時間相關 l  粗略有序 l  可反解 l  可製造            下面我分別講每個作用後面的考慮和權衡,

原创 JDK自動拆箱下,三目運算符的潛規則

         最近發現了一個很詭異的NullPointerException,在下面這個方法拋出,一開始怎麼都沒想明白,dSrc即使爲null,那直接賦值給distinct也沒問題啊。 private Doubledisti

原创 初探Java序列化(Serialization)

        Serialization(序列化)是一種將對象以一連串的字節描述的過程;反序列化Deserialization是一種將這些字節重建成一個對象的過程。【字節流的來回轉換】         Java中,一切都是對象,在分佈式