原创 設計之禪——我只要結果(命令模式)

前言 生活中我們會接收到各種各樣的命令,也會發出各種各樣的命令,雖然命令的事情都各不相同,但是都具有一個共同的特質,那就是對於發出命令的人而言他不需要知道你是怎麼實現的,他只要得到結果就行了,相信大家都會常聽到BOSS這樣對自己說

原创 MongoDB——基本使用及集羣搭建

文章目錄什麼是MongoDb?基本概念與關係型數據庫的比較Mongo的高效性文件存儲基本使用啓動/連接服務基礎操作命令高可用集羣搭建概念環境準備實踐應用場景總結 什麼是MongoDb? 基本概念 MongoDB是一種支持多語言面向

原创 Dubbo——服務發佈原理

引言 在使用Dubbo的時候你一定會好奇它是怎麼實現RPC的,而要了解它的調用過程,必然需要先了解其服務發佈/訂閱的過程,本篇將詳細討論Dubbo的發佈過程。 源碼分析 發佈服務 新學Dubbo大都會比較疑惑,服務啓動時的入口在哪

原创 設計之禪——工廠方法

一、工廠概覽 我們生活中有許許多多的工廠,爲商家提供產品,而我們開發者口中所談論的工廠方法模式產生靈感也是來源於此,結合生活中的實例我們可以非常輕鬆的理解該模式。它是一種創建型設計模式,也是項目開發中用的最多的設計模式之一,用於對

原创 消息隊列——RabbitMQ的基本使用及高級特性

文章目錄一、引言二、基本使用1. 簡單示例2. work queue和公平消費消息3. 交換機三、高級特性1. 消息過期2. 死信隊列3. 延遲隊列4. 優先級隊列5. 流量控制a. 服務端限流b. 客戶端限流6. 消息可靠性a.

原创 消息隊列——ActiveMQ使用及原理淺析

文章目錄引言正文一、ActiveMQ是如何產生的?產生背景JMS規範基本概念JMS體系結構二、如何使用?基本功能消息傳遞P2Ppub/sub持久訂閱消息傳遞的可靠性事務型會話與非事務型會話持久化與非持久化消息的存儲策略消息發送策略

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

引言 觀察者模式也是非常好理解的模式之一,因爲在生活中很容易找到類比,比如報紙、書刊訂閱,手機app消息通知等等,所以僅通過名字大致也就能明白這個模式的作用。不過,從代碼的層次來講卻有非常多的細節需要注意。 定義 觀察者模式定義

原创 設計之禪——解釋器模式(譯文)

前言 解釋器模式在平時基本上用不到,因此筆者也不打算花太多精力在這上面,但強迫症使然,所以翻譯了GeeksForGeeks上面的一篇文章,本文采取意譯及註解方式,原文鏈接Interpreter Pattern 譯文 解釋器模式是一

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

引言 在面向對象編程中,無可避免的是對象之間的引用,引用給我們帶來便捷(對象的複用),但同時也會給類與類之間造成強依賴關係。在一對一的關係中,這看起來並不會造成什麼不良的影響,但若是在一對多中,修改任意的一個對象,都會影響到其它調

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

一、引言 模板方法模式在我們平時開發中是非常常見,也是非常容易理解的,在平時不經意間就會使用到,因此理解其設計思想是非常有必要的。 二、定義 在《Head First設計模式》一書中是如下定義模板方法模式的: 模板方法模式是在一

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

引言 備忘錄模式是非常簡單的一種模式,應用場景非常廣泛,如編輯器的ctrl + z、數據庫事務的回滾、遊戲的存檔等等都符合該模式的思想——備份(比較疑惑爲什麼叫備忘錄模式,叫備份模式不是更貼切麼?)。 詳解 備忘錄模式就是將一個對

原创 設計之禪——外觀模式

概述 平時在我們生活中,我們常常會接觸學習各種各樣的新事物,而能夠快速吸引留住大量客戶的都有一個共性,就是簡單易學好上手。比如,windows和linux系統,前者比後者更加普及的原因也就是不需要經過專業系統的學習就能輕鬆使用。同

原创 設計之禪——橋接模式

前言 橋接模式也是經典的23種模式之一,不過在《HeadFirst設計模式》書中只對其做了一個簡短的描述,本文則是根據網絡上的博客得出的個人理解和總結。 正文 定義 在維基百科上是這樣定義橋接模式的: 橋接模式是軟件設計模式中最

原创 設計之禪——訪問者模式

引言 訪問者模式是遵循單一職責原則,將行爲和屬性分離的一種設計模式,它可以在不改變元素結構的前提下定義元素新的操作。類比到現實當中就像博物館,它是固定不變的,其中有各種各樣的展品,而我們就是訪客,可以是參觀、可以是打掃、也可以是管

原创 記一次Idea+Gradle編譯Spring源碼遇到的坑

打算開始研究Spring源碼,於是照着書上的指導從網上下載了Spring5.0.2版本和Gradle4.0(必須JDK1.8.60以上),本地編譯的時候沒有任何問題,就是導入Idea的時候一直報下面這個錯: 在網上查了很多資料,有