原创 第四條:通過私有構造器強化不可實例化的能力

想要一個類不被外部實例化,就不能提供公有構造器,如果不提供顯示的公有構造器,編譯器會自動提供一個公有的,缺省的構造器,這種情況下,外部還是可以實例化類.解決方案就是,顯示提供一個私有的構造器,這樣外部就不能實例化它:public clas

原创 第三條:用私有構造器或者枚舉類型強化Singleton屬性

Singleton指僅僅被實例化一次的類,Java1.5之前,實現Singleton有兩種方式,這兩種方式都要把構造器保持爲私有的,並導出公有的靜態成員。第一種:公有靜態成員是個final域public class Elvis {

原创 第五條:避免創建不必要的對象

一般來說,我們最好能夠重用對象,而不是每次需要的時候都去創建一個相同的對象。重用對象即快速,又流行,如果對象時不可變的,它就始終可以被重用。下面有一個反面的例子:String s=new String("string");該語句每次被執行

原创 第一條:考慮用靜態工廠方法代替構造器

首先看一下下面這個將boolean 轉爲Boolean對象的方法:public static Boolean valueof(boolean b){ return b ? Boolean.TRUE : Boolean.FALSE

原创 Exchanger 線程之間交換數據

Exchanger是用於線程之間交換數據的工具類,它提供一個同步點,在這個同步點,兩個線程可以彼此交換數據。這兩個線程通過exchange方法,當兩個線程都到達同步點時,這兩個線程就可以交換數據,將本線程生產出來的數據傳遞給對方。注意:E

原创 Spring cloud Hystrix 服務容錯保護---斷路器(4)- 請求合併

因爲依賴服務的線程池有限,將出現排隊等待與響應延遲的情況,爲了優化這些問題,Hystrix提供了HystrixCollapser來實現請求的合併,以減少 通信消耗和線程數的佔用。 HystrixCollapser實現了在HystrixCo

原创 Spring cloud Hystrix 服務容錯保護---斷路器(3)- 請求緩存

Hystrix有兩種方式來應對高併發場景:請求緩存和請求合併。 請求緩存:當系統併發量越來越大,每個微服務都要承受很大的壓力,因爲請求依賴服務的資源需要通過通信來實現,如果每一此都去服務提供者的服務器去請求服務,獲得數據,那麼高併發的情況

原创 Guava-EventBus 詳解

   EventBus是一個事件(消息)發佈訂閱框架,使用了觀察者模式,可以同步也可以異步。選擇同步還是異步就根據個人場景來進行選擇。AsyncEventBus就是異步的,是在EventBus的基礎上,加入了Executor來異步執行訂閱

原创 Spring cloud Ribbon 客戶端負載均衡

Ribbon幾乎存在於每一個Spring cloud構建的微服務和基礎設施中,因爲微服務之間的調用,API網關的請求轉發等內容實際上都是通過Ribbon來實現的,是一個客戶端負載均衡的工具類框架。 通過Spring Cloud Ribbo

原创 Spring cloud eureka服務治理(2)

本文主要講解eureka的基礎架構、服務治理機制、和一些配置詳解 一、基礎架構: Eureka整個服務治理基礎架構的三個核心要素:服務註冊中心,服務提供者、服務消費者;很多時候服務端提供者也會是消費者。 二、服務治理機制 服務提供者 (1

原创 dockerfile文件中命令詳解

FROM:指定基礎鏡像,比如你要創建一個springboot項目的鏡像,那麼就需要jre作爲基礎鏡像; 查找需要的基礎鏡像的方法:docker serch xxxx  或者去docker hub上查找;   RUN:構建容器運行的命令,格

原创 Spring cloud Hystrix 服務容錯保護---斷路器(1)

在微服務架構中,存在着那麼多服務單元,而且單元與單元之間存在着很多調用,萬一某一個服務單元出現問題,就很有可能因爲依賴關係而引發故障的蔓延,最終導致整個系統癱瘓,所以我們需要斷路器。 在分佈式架構中,斷路器模式也是一樣的,當某個服務單元發

原创 Spring cloud Eureka 服務治理(1)

Spring cloud eureka是用來實現服務的註冊和發現;既包含了服務端組件也包含了客戶端組件。 Eureka的服務端也成爲服務註冊中心,支持高可用配置,Eureka客戶端主要處理服務的註冊與發現,Eureka的客戶端向註冊中心註

原创 docker-compose 啓動springboot和mysql服務

直接進入正題: 1:首先創建一個springboot項目 2:創建一個測試用的controller: @RequestMapping(value="/test") @RestController public class TestCon

原创 Docker-compose的理解

Docker-compose是docker的服務編排工具,主要是用來構建多個服務,一般是構建構建多個有關聯的服務,比如要部署一個Spingboot項目,那麼一般都需要關係型數據庫,有可能還需要NOSQL,比如redis;如果利用docke