原创 經典設計模式之單例模式
一、什麼是單例模式 單例模式確保一個類只有一個實例,並提供一個全局訪問點,實現單例模式的方法是私有化構造函數,通過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