原创 設計模式-外觀模式

設計模式-外觀模式 關注公衆號 JavaStrom 解鎖更多知識 外觀模式(Facade Pattern):外部與一個子系統的通信必須通過一個統一的外觀對象進行,爲子系統中的一組接口提供一個一致的界面,外觀模式定義了一個高層接口,通過這個

原创 發生死鎖怎麼辦

鎖的定義:死鎖是指兩個或兩個以上的進程在執行過程中,由於競爭資源或者由於彼此通信而造成的一種阻塞的現象,若無外力作用,它們都將無法推進下去。競爭的資源可以是:鎖、網絡連接、磁盤共享變量等一切可以稱作是 【資源】的東西。 我們使用鎖來保證

原创 設計模式-工廠模式

關注公衆號 JavaStorm 獲取更多精彩 工廠模式定義 工廠方法(Factory Method)模式的意義是定義一個創建產品對象的工廠接口,將實際創建工作推遲到子類當中。核心工廠類不再負責產品的創建,這樣核心類成爲一個抽象工廠角色,

原创 設計模式-模板方法

模板方法 關注公衆號 JavaStorm 獲取更多精彩。 模板方法模式在一個方法中定義了一個算法骨架,並且 final 修飾防止子類重寫。方法中包含一些抽象方法,也就是一些步驟延遲到字類實現。模板方法使得在不改變算法結構的情況下,重新定義

原创 設計模式-命令模式(Command)

關注公衆號 JavaStorm 獲取更多成長。 大約需要6分鐘讀完。建議收藏後閱讀。 命令模式把一個請求或者操作封裝到一個對象中。命令模式允許系統使用不同的請求把客戶端參數化,對請求排隊或者記錄請求日誌,可以提供命令的撤銷和恢復功能。 G

原创 設計模式-單例模式

關注公衆號 JavaStorm ,給你更多精彩。 單例模式(Singleton)也叫單態模式,是設計模式中最爲簡單的一種模式,甚至有些模式大師都不稱其爲模式,稱其爲一種實現技巧,因爲設計模式講究對象之間的關係的抽象,而單例模式只有自己一個

原创 設計模式-裝飾器模式

微信關注公衆號 JavaStorm 獲取最新內容。 裝飾器模式(Decorator),動態地給一個對象添加一些額外的職責,就增加功能來說,裝飾器模式比生成子類更爲靈活;它允許向一個現有的對象添加新的功能,同時又不改變其結構。==裝飾器模式

原创 Spring Boot使用@Async實現異步調用

異步調用對應的是同步調用,同步調用可以理解爲按照定義的順序依次執行,有序性;異步調用在執行的時候不需要等待上一個指令調用結束就可以繼續執行。 我們將在創建一個 Spring Boot 工程來說明。具體工程可以參考github代碼 https

原创 Spring Boot Dubbo 構建分佈式服務

概述: 節點角色說明 節點 角色說明 Provider 暴露服務的服務提供方 Consumer 調用遠程服務的服務消費方 Registry 服務註冊與發現的註冊中心 Monitor 統計服務的調用次數和調用時間的

原创 Synchronized 實現原理

記得剛剛開始學習Java的時候,一遇到多線程情況就是synchronized。對於當時的我們來說,synchronized是如此的神奇且強大。我們賦予它一個名字“同步”,也成爲我們解決多線程情況的良藥,百試不爽。但是,隨着學習的深入,我們知

原创 volatile底層原理詳解

今天我們聊聊volatile底層原理; Java語言規範對於volatile定義如下: Java編程語言允許線程訪問共享變量,爲了確保共享變量能夠被準確和一致性地更新,線程應該確保通過排它鎖單獨獲得這個變量。 首先我們從定義開始入手,官

原创 Java內存模型(Java Memory Model,JMM)

今天簡單聊聊什麼叫做 Java 內存模型,不是 JVM 內存結構哦。 JMM 是一個語言級別的內存模型,處理器的硬件模型是硬件級別,Java中的內存模型是內存可見性的基本保證。從而爲我們 volatile 實現內存可見性提供了基石。主要目

原创 設計模式之-策略模式

定義一組算法,將每個算法都封裝起來,並且使它們之間可以互換。策略模式使這些算法在客戶端調用它們的時候能夠互不影響地變化。(Java的TreeSet集合中,構造方法可傳入具體的比較器對象以實現不同的排序算法。就是利用的策略模式)策略模式的用

原创 ReentrantReadWriteLock讀寫鎖

概述 ​ ReentrantReadWriteLock是Lock的另一種實現方式,我們已經知道了ReentrantLock是一個排他鎖,同一時間只允許一個線程訪問,而ReentrantReadWriteLock允許多個讀線程同時訪問,但不

原创 RabbiMQ原理與SpringBoot使用

RabbiMQ介紹 具體代碼可參考我的github:https://github.com/UniqueDong/springboot-study 一、使用場景 RabbitMQ是一個消息中間件,所以最主要的作用就是:信息緩衝區,實現應