原创 設計模式

設計模式 設計模式是一套被反覆使用、多數人知曉的、經過分類的、代碼設計經驗的總結。其實就是經過前人反覆使用總結使用得出在不同場景有對應的解決方案。 使用設計模式是爲了重用代碼、讓代碼更容易被他人理解、保證代碼可靠性。 設計原則

原创 ConcurrentHashMap(1.7|1.8)閱讀

ConcurrentHashMap jdk1.7 ConcurrentHashMap 和 HashMap非常類似,ConcurrentHashMap在實現上採取了分段鎖的思想來實現的。 ConcurrentHashMap在內部採用

原创 建造者模式

建造者模式 定義 將一個複雜對象的構造與它的表示分離,使同樣的構建過程可以創建不同的表示,這樣的設計模式被稱爲建造者模式。(創建型模式) 使用場景 1 創建一些複雜的對象時,這些對象的內部組成間的構建順序是穩定的,但是對象的內部組成構件面

原创 裝飾器模式

裝飾器模式 介紹 裝飾器模式允許向一個現有的對象添加新功能,同時又不改變其結構。(結構型模式) 這種形式在沒有原類文件和使用繼承的情況下動態的擴展了一個對象的功能。類的繼承是在編譯是時候增加的功能,而裝飾器模式在運行時增加的功能 裝飾器

原创 ubantu16.04安裝 nginx

Nginx (“engine x”) 是一個高性能的 HTTP 和 反向代理 服務器,也是一個 IMAP/POP3/SMTP 代理服務器。 Nginx 是由 Igor Sysoev 爲俄羅斯訪問量第二的 Rambler.ru 站點開發的,

原创 迭代器模式

迭代器模式 介紹 迭代器模式:提供一種方法訪問一個容器對象中各個元素,而又不暴露該對象的內部細節。(行爲型模式) 迭代器模式是應該是java中使用的最多的一種設計模式,迭代器模式如下: 抽象容器:一般是一個接口,提供一個itera

原创 橋接模式

橋接模式 介紹 橋接適用於把抽象化與實現化解耦,使得二者可以獨立變化。(結構型模式) 用來解決兩個或者多個緯度的變化,使用橋接模式可以降低複雜度。將兩個角色之間的繼承關係改爲聚合關係,這樣兩者可以獨立的變化。 例子 就像大話設計模式中講

原创 雙重檢查鎖定

雙重檢查鎖定 產生原因 在寫Java程序的時候,有時候會推遲高開銷對象的初始化,在使用的時候在進行初始化,達到lazy loading的效果.但是進行延遲初始化的時候可能會產生很多問題(多線程環境),例如: public class Un

原创 過濾器模式

過濾器模式 介紹 過濾器模式允許開發者用不同的標準過濾一組對象。(結構型模式) 使用過濾器模式可以很方便的進行擴展,單獨一個過濾器的執行是獨立的,不依賴其他過濾器。 DEMO 例如,一個Person類有姓名、性別、婚姻狀況屬性 : pa

原创 linux tail 命令

linux tail 命令 linux tail 命令是按照要求將指定的文件的最後部分輸出到標準設備。 tail語法 tail [ -f ] [ -c Number | -n Number | -b Number | -k Number

原创 責任鏈模式

責任鏈模式 介紹 在責任鏈模式裏,很多對象由每一個對象對其下家的引用而連接起來形成一條鏈。請求會在這個鏈上傳遞,直到鏈上某一個對象可以處理這個請求。(行爲型模式) 結構圖 責任鏈模式的結構像下面這樣: 抽象處理者角色(handler)

原创 命令模式

命令模式 介紹 在軟件系統中,行爲請求者與行爲實現者通常是一種緊耦合關係,但是有時候,比如需要對行爲進行記錄、撤銷或重做、事務等處理時,這種無法抵禦變化的緊耦合關係就不大合適。 將一個請求封裝成一個對象,從而是你可用不同的請求對客戶進

原创 外觀模式

外觀模式 介紹 爲子系統中的一組接口提供一個一致的界面,定義一個高層接口,這個接口使得這一子系統更加容易使用。(結構型) 就像下圖,facade把衆多子系統中通過一個接口統一起來: 適用場景 設計初期階段,應該有意識的將不同層分離

原创 設計模式--單例模式

單例模式 定義 一個類有且僅有一個實例,並且自行實例化向整個系統提供。(創建型模式) 設計模式中比較簡單的幾種之一,單例模式就是讓一個類在系統運行過程中只會產生唯一的一個實例,單例模式主要: 單例類只能有一個實例。 單例類必須自己創建

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

抽象工廠模式 介紹 爲創建一組相關或相互依賴的對象提供一個接口,而且無需指定他們的具體類。(創建型模式) 和工廠模式區別 工廠模式提供一個產品的結構,而抽象工廠模式提供多個產品的結構,可以組成一個產品族。 QQ換皮膚可以使用抽象工廠模式