原创 java 開發模式之十九 :解析器模式

原理或定義 給定一個語言,定義它的文法的一種表示,並定義一個解釋器,這個解釋器使用該表示來解釋語言中的句子。屬於行爲類模式 結構 AbstractExpression:聲明一個抽象的Interpret方法,抽象語法樹中所有的節點都必須實現

原创 java 開發模式之五 : 工廠模式

原理或定義 簡單工廠模式:是由一個工廠對象決定創建出哪一種產品類的實例。是最簡單實用的模式。 工廠方法模式:在工廠方法模式中,核心的工廠類不再負責所有的產品的創建,而是將具體創建的工作交給子類去做。該核心類成爲一個抽象工廠角色,僅負責給出

原创 java 開發模式之二 : 觀察者模式

原理或定義 定義了對象間的一種一對多依賴關係,使得每當一個對象改變狀態,則所有依賴於它的對象都會得到通知並被自動更新。 結構 觀察者Observer:所有潛在的觀察者必須實現觀察者接口,這個接口只有update方法,當主題改變時,它被調用

原创 java 開發模式之十一 : 組合模式

原理或定義 組合模式又叫做部分-整體模式,它使我們樹型結構的問題中,模糊了簡單元素和複雜元素的概念,客戶程序可以向處理簡單元素一樣來處理複雜元素,從而使得客戶程序與複雜元素的內部結構解藕。 結構 Component: 爲參加組合的對象聲明

原创 多線程之七:鎖優化

1.鎖優化的思路和方法    1.1 減少鎖持有時間                 如果需要同步的代碼只是其中小部分,最好用同步塊代替同步方法,並且儘可能減少同步塊裏的代碼量。     1.2減小鎖粒度     將大對象,拆成小對象,

原创 多線程之八:併發調試和JDK8新特性

到了這章,多線程的介紹也到尾聲了,最後介紹一下多線程在Eclipse中是怎麼調試的,還有常見問題的解決方案。多線程調試的方法     使用Eclipse進行多線程調試         -條件斷點                      

原创 多線程之四:無鎖的簡單介紹

1. 無鎖類的原理詳解     1.1.CAS         CAS算法的過程是這樣:它包含3個參數CAS(V,E,N)。V表示要更新的變量,E表示預期值,N表示新值。僅當V 值等於E值時,纔會將V的值設爲N,如果V值和E值不同,則說明

原创 多線程之三:JDK併發包

1. 各種同步控制工具的使用     1.1.ReentrantLock         1.1.1. 可重入 單線程可以重複進入,但要重複退出        1.1.2. 可中斷 lockInterruptibly()        1

原创 java 開發模式之二十二:原型模式

原理或定義 通過一個已經存在的對象,複製出更多的具有與此對象具有相同類型的新的對象。 結構 1. 客戶(Client)角色:客戶類提出創建對象的請求。 2. 抽象原型(Prototype)角色:這是一個抽象角色,通常由一個Java接口或J

原创 多線程之五:線程池

1.線程池的基本使用    1.1. 爲什麼需要線程池         假設一個服務器完成一項任務所需時間爲:T1 創建線程時間,T2 在線程中執行任務的時間,T3 銷燬線程時間。 如果:T1 + T3 遠大於 T2,則可以採用線程池,以

原创 JVM系列之七:字節碼執行

Javap– class文件反彙編工具– javap –verbose Calcjava 文件public class Calc { public int calc() { int a = 500; int b = 200; int

原创 多線程之六:併發設計模式

什麼是設計模式     在軟件工程中,設計模式(design pattern)是對軟件設計中普遍存在(反覆出現)的各種問題 ,所提出的解決方案。     架構模式 – MVC – 分層    設計模式 – 提煉系統中的組件    代碼模式

原创 JVM系列之六:堆分析

內存溢出(OOM)的原因– 在JVM中,有哪些內存區間?堆永久區Java棧直接內存– 堆溢出public static void main(String args[]){ ArrayList<byte[]> list=new A

原创 JVM系列之一:基礎

    今天開始,我們來講下JVM。一個好的工程,除了代碼優化之外,還需要有一個優化的運行環境,我們通過JVM系列來了解JVM和常用的優化手段。JVM的概念    JVM是Java Virtual Machine的簡稱,意爲Java虛擬機

原创 JVM系列之三:常用JVM配置參數

GC參數串行收集器– 最古老,最穩定– 效率高– 可能會產生較長的停頓– 新生代、老年代使用串行回收– 新生代複製算法– 老年代標記-壓縮– -XX:+UseSerialGC 並行收集器– 新生代複製算法,老年代標記-壓縮– -XX:+U