原创 設計模式之狀態模式

狀態模式 狀態模式是一種對象行爲型模式,它封裝一個對象的狀態,使得當這個對象的狀態對象變化時,該對象可改變它的行爲。 定義 允許一個對象在其內部狀態改變它的行爲,對象看起來似乎修改了它的類。 使用場景 一個對象的行爲取決於它的狀態,並且

原创 JVM內存區域劃分

HotSpot作爲JDK和OpenJDK的虛擬機,此節所講的JVM的內存區域劃分也是基於HotSpot的。java虛擬機在執行java程序的過程中會把它所管理的內存劃分爲若干不同的數據區域,這些區域都有各自的用途,以及創建和銷燬的時間,有

原创 JAVA強引用、軟引用、弱引用、虛引用小結

JAVA中將引用類型分爲強引用、軟引用、弱引用和虛引用四種。 強引用(StrongReference) 強引用是我們程序中普遍存在的,比如如下代碼中的obj和str都是強引用類型。如果一個對象具有強引用,那垃圾回收器絕不會回收它

原创 設計模式之迭代器模式

迭代器模式 迭代器模式有叫做遊標(Cursor)模式,是一種對象行爲型模式,它提供一種方法順序訪問一個聚合對象的各個元素,而不需要暴露該對象的內部表示。 定義 提供一種方法順序訪問一個聚合對象的各個元素,而不需要暴露該對象的內部表示。 使

原创 synchronized知識點小結

Java的多線程編程中常用的關鍵字是synchronized,當然也經常用到java.util.concurrent.locks包下的一些類,比如ReentrantLock,還有java.util.concurrent.atomic包下的

原创 設計模式之解釋器模式

解釋器模式 解釋器模式是一種類行爲型模式,它主要是用來解釋特定語言的特定文法表示,雖然這個在實際生產中不常用到,但是我們學習一下還是有幫助的。 定義 給定一個語言,定義它的文法的一種表示,並定義一個解釋器,這個解釋器使用該表示來解釋語言中

原创 設計模式之享元模式

享元模式 享元模式爲了共享對象,這極大地提升了效率和一致性,這裏所指的效率是空間的資源。 定義 運用共享技術有效地支持大量細粒度的對象。 使用場景 一個應用程序使用了大量的對象。 完全由於使用大量的對象,造成很大的存儲開銷。 對象的大

原创 淺析volatile關鍵字

關鍵字volatile的主要作用是使變量在多個線程可見。 volatile保證了可見性 我們先來看一下java線程的工作內存與主內存的關係 從圖中我們會發現,當多個線程操作同一個變量,會引起數據不一致的情況,比如線程A修改了一個

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

模板方法模式 模板方法模式是一種類行爲型模式,模板方法是一個算法的抽象定義,它逐步地定義該算法,每一步調用一個抽象操作或一個原語操作,子類定義抽象操作以具體實現該算法。 定義 定義一個操作中的算法骨架,而將一些步驟延遲到子類中。模板方法使

原创 設計模式之中介者模式

中介者模式 中介者模式是用來降低類類之間的耦合的,因爲如果類類之間有依賴關係的話,不利於功能的拓展和維護,因爲只要修改一個對象,其它關聯的對象都得進行修改。如果使用中介者模式,只需關心和Mediator類的關係,具體類類之間的關係及調度交

原创 設計模式之觀察者模式

觀察者模式 觀察者模式是一種對象行爲型模式,又稱發佈-訂閱模式,依賴模式,其定義了對象間的一種一對多的依賴關係,當一個對象的狀態發生改變時,所有依賴於它的對象都得到通知並被自動更新,常用的場景是訂閱主題,當主題發生更新了,訂閱者就自動獲取

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

備忘錄模式 備忘錄模式又叫Token,是一種對象行爲型模式,在不破壞封裝性的前提下,捕獲一個對象的內部狀態,並在該對象之外保存這個狀態。以便於回滾恢復到原來的狀態,常與命令模式和迭代器模式一起使用。 定義 在不破壞封裝性的前提下,捕獲一個

原创 設計模式之責任鏈模式

責任鏈模式 責任鏈模式使一種對象行爲模式,它將多個對象連成一條鏈,並沿着該鏈傳遞請求,鏈路上的每一個對象都有機會處理這個請求,它提供了一種鬆耦合的機制。 定義 使多個對象都有機會處理請求,從而避免請求的發送者和接受者之間的耦合關係。將這

原创 設計模式之命令模式

命令模式 命令模式是一種對象行爲模式,它將請求封裝在對象中,這樣它就可作爲參數來傳遞,也可以被存儲在歷史列表裏,或者以其他的方式使用,達到解耦的目的。 定義 將一個請求封裝爲一個對象,從而使你可用不同的請求對客戶端進行參數化,對請求排隊

原创 設計模式之代理模式

代理模式 代理模式中,proxy對象作爲其他對象的一個方便的替代或佔位符。它的使用可以有多種形式,例如它可以在局部空間中代表一個遠程地址空間的對象,也可以表示一個要求被加載的較大的對象,還可以用來保護對敏感對象的訪問。代理模式還提供了對對