原创 經典設計模式之單例模式

一、什麼是單例模式 單例模式確保一個類只有一個實例,並提供一個全局訪問點,實現單例模式的方法是私有化構造函數,通過getInstance()方法實例化對象,並返回這個實例。在計算機系統中,線程池、緩存、日誌對象、對話框、打印機、

原创 經典設計模式之適配器模式【Mybatis日誌框架源碼分析】

一、什麼是適配器模式 適配器模式就是將一個系統的接口轉換成另外一種形式,從而使原來不能直接調用的接口變得可以調用。 二、設計模式角色劃分 設計模式涉及三個角色: 源(Adaptee):需要被適配的對象或類型,這裏相當於插頭。

原创 純手寫JDK動態代理【深入瞭解Proxy類底層實現】

一、JDK動態代理原理分析 1、在使用jdk動態代理的時候,必須要實現InvocationHandler接口 public class JdkInvocationHandler implements InvocationHan

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

一、什麼是觀察者模式 在對象之間定義了一對多的依賴,這樣一來,當一個對象改變狀態,依賴它的對象會收到通知並自動更新。 其實就是發佈訂閱模式,發佈者發佈信息,訂閱者獲取信息,訂閱了就能收到信息,沒訂閱就收不到信息。 二、觀察者模

原创 基於Zookeeper實現分佈式鎖

一、什麼是分佈式鎖         分佈式鎖一般用在分佈式系統或者多個應用中,用來控制同一任務是否執行或者任務的執行順序。在項目中,部署了多個tomcat應用,在執行定時任務時就會遇到同一任務可能執行多次的情況,我們可以藉助分佈式鎖,保證

原创 Consul+Upsync+Nginx動態負載均衡環境配置

一、什麼是動態負載均衡 傳統的負載均衡,如果upstream參數發生變化,每次都需要重新加載nginx.conf文件,因此擴展性不是很高,所以我們可以採用動態負載均衡,實現upstream可配置化、動態化,無需人工重新加載ngi

原创 設計模式總結

一、設計模式六大原則 1、開閉原則(Open Close Principle) 開閉原則就是說對擴展開放,對修改關閉。在程序需要進行拓展的時候,不能去修改原有的代碼,實現一個熱插拔的效果。所以一句話概括就是:爲了使程序的擴展性好

原创 基於Zookeeper實現服務Master選舉(哨兵機制)

一、master選舉使用場景及結構         現在很多時候我們的服務需要7*24小時工作,假如一臺機器掛了,我們希望能有其它機器頂替它繼續工作。此類問題現在多采用master-salve模式,也就是常說的主從模式,正常情況下主機提供

原创 Linux環境下Elasticsearch6.4.3安裝

一、安裝說明 Linux內存至少1G! 由於Elasticsearch是Java寫的,所以需要安裝jdk環境。 二、安裝Elasticsearch 1、將安裝包使用上傳工具上傳到Linux上面的/usr/local目錄下並且解壓。

原创 Spring Cloud 之 Spring-Security

一、什麼是SpringSecurity Spring Security是一個能夠爲基於Spring的企業應用系統提供聲明式的安全訪問控制解決方案的安全框架。它提供了一組可以在Spring應用上下文中配置的Bean,充分利用了Spr

原创 Elasticsearch文檔映射

一、文檔映射 把ElasticSearch的核心概念和關係數據庫做了一個對比,索引(index)相當於數據庫,類型(type)相當於數據表,映射(Mapping)相當於數據表的表結構。ElasticSearch中的映射(Mappi

原创 經典設計模式之狀態模式

一、什麼是狀態模式 狀態模式允許一個對象在其內部狀態改變的時候改變其行爲。這個對象看上去就像是改變了它的類一樣。 二、狀態模式應用場景 1.一個對象的行爲取決於它的狀態,並且它必須在運行時刻根據狀態改變它的行爲。 2.操作中

原创 經典設計模式之外觀設計模式【門面模式】

一、什麼是外觀設計模式 外觀模式(Facade),他隱藏了系統的複雜性,並向客戶端提供了一個可以訪問系統的接口。這種類型的設計模式屬於結構性模式。爲子系統中的一組接口提供了一個統一的訪問接口,這個接口使得子系統更容易被訪問或者使

原创 中文分詞器插件ik

一、分詞器 因爲Elasticsearch中默認的標準分詞器對中文分詞不是很友好,會將中文詞語拆分成一個一箇中文的漢字。因此引入中文分詞器-es-ik插件。 傳統分詞器演示效果: 會將詞語拆分成一個一個漢字 二、安裝中文分詞器

原创 使用Kibana進行簡單的CURD和版本控制

一、簡單的CURD操作 先創建一個文檔 ### 創建索引 PUT /xwhy 查看索引信息 GET /xwhy 創建文檔 ### 創建文檔 /索引/類型/id (id屬於主鍵唯一標識,不能重複) PUT /xwhy/us