原创 future 實現分析

future異步回調的實現: 本地持有線程池調度的callable和運行的thread的引用,內部持有任務執行狀態和任務獲取的觀察者 future內部持有的狀態如下說明 /** * The run state of this t

原创 設計模式-開放封閉原則

在上一篇文章中我回顧了下單一職責原則,在這篇文章中我來複習下開放-封閉原則 開放封閉原則:開放擴展,關閉修改。當一個業務系統穩定了,當有新增的業務的時候採用增加類的方式來拓展,替代直接對原有業務類的修改。可以利用面向對象繼承

原创 設計模式-設計原則-單一職責

在上一篇文章中我就面嚮對象語言的三大特性進行闡述 這篇文章主要是來分析設計模式中的四大基本準則: 1. 單一職責 2. 開放-封閉 3. 迪米特法則 4. 依賴倒轉

原创 設計模式簡析

近期閱讀了《大話設計模式》一書受益良多,特寫此文以作筆記 本文將從如下三個方面開始講述: 面嚮對象語言的三大特性 簡易設計原則 設計模式分析 面嚮對象語言有三大特性:封裝,繼承,多態 封裝是指將對象所應具有的行爲進

原创 java 服務器 cpu負載過高原因彙總

cpu消耗過高的常見原因如下: 1.編碼邏輯問題,導致死循環 2.程序在運行過程中產生大量生命週期長/無法回收的對象,導致GC線程就不斷GC,佔用CPU 3.使用非線程安全類 例如 HashMap rehash會出現死循環 cpu

原创 關於java8 stream中需要使用final變量的思考

關於java8 stream中需要使用final變量的思考關於final的使用final 變量final 方法final 類關於不能使用final的解釋 關於final的使用 final 變量 final 限制的變量可以是基礎數據

原创 設計模式-狀態模式

狀態模式:一個對象狀態發生改變時會導致其行爲也發生變化。 由圖可見 狀態模式中Context和IState是耦合的,不同的狀態之間行爲是隔離的。因爲這個模式最初的目的是爲了剔除Context中根據不同的State去進行狀態行爲選擇的分

原创 jvm學習總結-垃圾回收

針對垃圾回收本文將從下面四個個方面進行總結: 1.對象存活判定 2.對象分代 3.垃圾回收算法 4.jvm 主流垃圾回收器簡介 注:本文中提及的對象沒有特殊說明一律值得是堆中的對象 一. 對象存活判定

原创 深入理解WeakHashmap-轉載

http://blog.51cto.com/mikewang/880775 寫的理論性較強,便於簡易的區分java中引用的區別,但是不適合深究

原创 設計模式-備忘錄模式

備忘錄模式:在不破壞封裝性的前提下,捕獲一個對象的內部狀態,並在對象外部保存這一狀態,這樣就可以將對象恢復到以前的狀態。 這個模式中主要有三個對象 Originator(發起者),Memento(備忘錄),careTaker(保管者)

原创 設計模式-橋接模式簡析

要理解這個模式我們首先要區分三個概念:組合,聚合和繼承。 聚合是一種弱擁有關係,體現在A對象可以包含B對象,但是B對象不是A對象的一部分。 組合是一種強擁有關係,體現在A對象和B對象一定是整體-部分關係。 繼承是一種強依賴關係,體現在

原创 設計模式-策略模式

上一篇中複習了下簡單工廠模式,今天來回顧一下策略模式。 策略模式:通過將算法的實現和調用相分離,來實現算法行爲實現的任意切換。 在我們編程的初始,我們往往通過if..else or swich 來應對根據運行的狀態來選擇對應的

原创 設計模式-抽象工廠模式

抽象工廠模式:提供一個創建一些系列相關或相互依賴對象的接口,二無需指定他們具體的類。 這個模式就很好的體現了依賴倒轉的設計原則,將客戶端中的交流完全交付於抽象類,通過抽象工廠來生成抽象的產品 進行流轉,比較適合於生產的產品種類相對固定

原创 設計模式-模板方法模式

模板方法模式:定義一個算法的骨架,而將一些步驟延遲到子類中,模板方法使得一個子類可以在不改變一個算法的結構即可重新定義算法中的某些特定的結構。 /** * * @author yanjy * @date 2017/11/20

原创 設計模式-組合模式

組合模式:將對象組裝成樹形結構以表示整體-部分的層次關係。 組合模式適用於整體和部分可以被一致對待的場景,例如:獵頭公司在全國各地的分店,客戶對他們的整體或者分部的業務需求是一致的,且他們的行爲也是一致的,分店之間還有層次關係。 這