原创 20200103 高併發情況下id唯一生成器

互聯網快速發展的今天,分佈式應用系統已經見怪不怪,在分佈式系統中,我們需要各種各樣的ID,既然是ID那麼必然是要保證全局唯一,除此之外,不同的業務還需要不同的特性,比如像併發巨大的業務要求ID生成效率高,吞吐大;比如某些銀行類業務,需要按

原创 20191127 數據庫查詢優化方案

不能跨庫查詢是一種理念,每個庫所有的數據出口、入口,只能有一箇中間件,要統一收口,要不然不能確定數據從哪裏落庫的,從哪裏出去的。   -- 不爲null這個條件經常忘記 select pd.id,ai.id from p_doctor

原创 20191219 門面設計模式

門面設計模式 外部與一個子系統的通信必須通過一個統一的門面(Facade)對象進行,這就是門面模式。   使用哪種設計模式屬於詳細設計。 門面模式就是動裏不動外,讓外層好調用。使用門面設計模式。 門面設計模式:網關聚合層;接口定義不動,只

原创 20191220 CAS理論

CAS比較替換 CAS是項樂觀鎖技術,當多個線程嘗試使用CAS同時更新同一個變量時,只有其中一個線程能更新變量的值,而其它線程都失敗,失敗的線程並不會被掛起,而是被告知這次競爭中失敗,並可以再次嘗試。CAS是一種非阻塞式的同步方式。 樂觀

原创 Spring Cloud項目開發中遇到的問題

Spring Cloud微服務 1、某個微服務是供內部調用還是前端調用?如果是內部調用,直接引用jar即可;如果是前端調用,需要通過api-ws進行訪問。(doctor服務,hospital服務) 上游服務和下游服務之分,只有上游服務才能

原创 20191114 分佈式job調度中心

分佈式job調度中心 開源項目很多,不需要自己開發。 把當前服務註冊到調度中心。 定時器,接口名稱,接口參數; 定時任務:定時調用接口,http請求。 調度中心也要進行分佈式部署,否則調度中心掛了怎麼辦? 分佈式鎖 不可能四臺機器全部掛掉

原创 20191202 淺拷貝、深拷貝、原型模式

如圖所示 淺拷貝、深拷貝原型模式 深拷貝和淺拷貝的區別(copy的是值還是引用) 1.淺拷貝: 將原對象或原數組的引用直接賦給新對象,新數組,新對象/數組只是原對象的一個引用 2.深拷貝: 創建一個新的對象和數組,將原對象的各項屬性的“

原创 20191219 策略模式

策略模式:指的是對象具備某個行爲,但是在不同的場景中,該行爲有不同的實現算法。 策略模式使用的就是面向對象的繼承和多態機制,從而實現同一行爲在不同場景下具備不同實現。 策略模式本質:分離算法,選擇實現。   主要解決 在有多種算法相似的情

原创 20200114 ASM框架

用了一下BeanUtils.copyPropertie和PropertyUtils.copyProperties()的方法,發現其效率非常低。 原理是通過JDK自帶的反射機制動態的去get,set從而去轉換我們的類。 使用ASM框架來動態

原创 20191204 支付後端文檔

JSAPI支付:公衆號接入文檔(支付系統對比.pdf 文檔) 商戶已有H5商城網站,用戶通過消息或掃描二維碼在微信內打開網頁時(公衆號),可以調用微信支付完成下單購買的流程。   立即支付---->確認支付---->支付成功 調起微信支付

原创 20191220 使用Redis實現樂觀鎖

鎖機制: 樂觀鎖:1)通過版本號來實現,先查詢獲取版本號,在更新的時候校驗版本號並修改。 悲觀鎖:同步關鍵字就是悲觀鎖,也稱爲排它鎖。 樂觀鎖還讓用戶查詢當前版本號,悲觀鎖如果不釋放,查都不讓查詢。 樂觀鎖存在多種實現方式:mysql數據

原创 20200115 k8s的原理

Docker:開源的容器引擎。 Images(Docker鏡像) Container(容器)容器是鏡像的可運行實例。鏡像和容器的關係有點類似於面向對象中,類和對象的關係。 Docker Registry是一個集中存儲與分發鏡像的服務。構建

原创 20200427 補償模式

微服務架構應滿足數據最終一致性,實現最終一致性的三種模式:可靠事件模式、補償模式、TCC模式。   事務補償機制 事務補償即在事務鏈中的任何一個正向事務操作,都必須存在一個完全符合回滾規則的可逆事務。如果是一個完整的事務鏈,則必須事務鏈中

原创 20200428 Java中Lock和synchronized的比較和應用

synchronized在語法上已經足夠簡單了,在JDK 5之前只能藉助此實現,但是由於是獨佔鎖,性能卻不高,因此JDK 5以後就開始藉助於JNI來完成更高級的鎖實現。 JDK 5中的鎖是接口java.util.concurrent.lo

原创 20200428 線程安全(上)--徹底搞懂volatile關鍵字

計算機在處理數據的過程中爲什麼會出現線程不安全的問題。 計算機在執行程序時,每條指令都是在CPU中執行的,而執行指令過程中會涉及到數據的讀取和寫入。由於程序運行過程中的臨時數據是存放在主存(物理內存)當中的,這時就存在一個問題,由於CPU