原创 十句勵志電影臺詞

1."There is no certainty,only opportunity."V for Vendetta(2005) 沒有一定會怎樣,只有可能會怎樣。——《V字仇殺隊》,V(雨果·威明) 2."A good plan tod

原创 《深入理解java虛擬機》學習筆記9——併發編程(一)

隨着多核CPU的高速發展,爲了充分利用硬件的計算資源,操作系統的併發多任務功能正變得越來越重要,但是CPU在進行計算時,還需要從內存讀取輸出,並將計算結果存放到內存中,然而由於CPU的運算速度比內存高几個數量級,CPU內的寄存器數量和容量

原创 使用JMockit編寫java單元測試

之前《有效使用Mock編寫java單元測試》一文中層介紹過使用EasyMock和PowerMock來編寫java單元測試,今天介紹一個更加強大的工具——JMockit。 引用單元測試中mock的使用及mock神器jmockit實踐中的ja

原创 《深入理解java虛擬機》學習筆記10——併發編程(二)

Java的併發編程是依賴虛擬機內存模型的三個特性實現的: (1).原子性(Atomicity): 原子性是指不可再分的最小操作指令,即單條機器指令,原子性操作任意時刻只能有一個線程,因此是線程安全的。 Java內存模型中通過read、lo

原创 《java解惑》讀書筆記3——更多字符串之謎

1.字符串替換: 問題: 下面這段程序把類全路經名中的"."替換爲"/",代碼如下: package com.javapuzzlers; public class Test { public static void main(St

原创 《Effective java》讀書筆記9——線程併發

synchronized同步關鍵字: synchronized同步關鍵字可以保證在同一時刻,只有一個線程可以執行某一個方法,或者某一個代碼塊。 線程同步不僅可以阻止一個線程看到對象處於不一致的狀態之中,還可以保證進入同步方法或者同步代碼塊

原创 《Effective java》讀書筆記4——泛型

數組與泛型集合的區別: (1).數組是協變的,即如果Sub爲Super的子類型,那麼數組類型Sub[]就是Super[]的子類型; 泛型是不可變的,即對於任何兩個不同類型Type1和Type2,List<Type1>既不是List<Typ

原创 《Effective java》讀書筆記7——異常

Java中異常的類體系結構如下: Throwable類是java語言中所有錯誤和異常的超類,它擁有兩個子類: (1).Error:用於指示合理的應用程序不應該試圖捕獲的嚴重問題,例如java虛擬的錯誤程序無法處理,只能由java虛擬機

原创 《Effective java》讀書筆記6——方法重載

很多人分不清java的方法重載(Overload)和方法覆蓋(Override),方法重載是方法名相同,而方法的參數不同(參數個數或者類型,注意不能通過參數名稱和方法返回值來進行方法重載),編譯器在編譯的時候就已經確定了合適的目標方法,也

原创 《java解惑》讀書筆記1——表達式之謎

《java解惑》是Google公司的首席Java架構師Joshua Bloch繼《Effective java》之後有一力作,專門揭示了很多java編程中意想不到的疑惑,很多有多年工作經驗的java開發人員在看完本書之後甚至都懷疑自己會

原创 《Effective java》讀書筆記10——序列化

對象序列化是一個提供將對象編碼成字節流,並從字節流編碼中重新構建對象的框架,包括以下兩個過程: 序列化:將對象編碼成字節流。 反序列化:從字節流編碼中重新構建對象。 一旦對象被序列化後,對象的字節流編碼就可以從一臺正在運行的java虛擬機

原创 《java解惑》讀書筆記2——字符串之謎

1.字符拼接: 問題: 程序員幾乎在每天編程中都遇到和處理字符串拼接的問題,但是是否對其瞭解的足夠深入,且看下面的程序: public static void main(String[] args) { System.out.pri

原创 使用PULL方式解析XML

在Java開發中大家常用SAX或者DOM解析XML文件,兩者的特點也很明顯:SAX基於事件驅動,速度快,佔用內存少;DOM一次性把文件讀入內存中,以樹的方式操作XML數據更靈活。 PULL是第三種優秀的XML解析方式,其工作原理和SAX類

原创 《Effective java》讀書筆記3——覆蓋equals方法的通用約定

滿足下列四個條件之一的就不需要覆蓋equals方法: (1).類的每個實例本質上都是唯一的,如枚舉等。 (2).不關心類是否提供了“邏輯相等”的測試功能。 (3).超類已經覆蓋了equals方法,從超類集成過來的行爲對於子類也是合適的。

原创 java多線程模擬M/M/C(馬科洛夫隊列)

M/M/C(馬科洛夫隊列)是一個多服務器的排隊模型,每個客戶到來的時候選擇等待隊列最短的服務窗口排隊等待服務,在商場,銀行等服務行業應用廣泛,模型如下: 使用服從指數分佈的隨機數(平均值爲lamda)模擬每個客戶到達間隔時間,使用服從正