原创 分佈式事務解決方案--Seata源碼解析

前言 分佈式項目只要有業務交互就會涉及到分佈式事務問題,事務通常分爲三步:創建事務、執行事務、提交事務或回滾事務,單機模式下只要一個事務可以依賴數據庫的事務實現,而分佈式事務往往涉及到多個項目多個數據庫的同步更新操作,此時就需要有一套分佈式

原创 5分鐘徹底瞭解Nginx的反向代理

前言 衆所周知,Nginx是現如今最熱門的反向代理服務器了,並且通Apache一樣都是屬於web服務器。Apache的主要優點是穩定和支持跨平臺,但是受限於Apache誕生的年代較早,互聯網環境遠沒有現如今的複雜,所以Apache設計之初是

原创 JAVA基礎5--註解的實現原理

一、註解簡介 註解也叫元數據,是JDK1.5版本開始引入的一個特性,用於對代碼進行標記說明,可以對包、類、接口、字段、方法參數、局部變量等進行註解修飾 1.1、註解的類型 1、JDK註解和框架註解:JDK本身提供了很多註解比如@Resour

原创 JAVA常用設計模式3--建造者模式

一、建造者模式簡介 1.1、定義 建造者模式指將一個複雜的對象構造過程和對象的表示進行分離。使同樣的建造過程可以創建不同的表示,將構建過程拆分成多個簡單的對象,將不變和變進行分離。不變的是對象的組成部分,變化的是每個部分的具體內容。 比如建

原创 Java常用設計模式2--工廠模式

一、工廠模式簡介 工廠是通常用來批量生產貨物的建築,通過工廠生產的貨物往往可以批量生產同樣的貨物。 在軟件開發中,如果需要創建對象時可以將對象當作是產品,將創建產品的對象叫做工廠。這樣就可以將創建對象和使用對象之間進行解耦,對象引用者無需關

原创 盤點設計模式的六大設計原則(SOLID)

前言 軟件設計中通常有很多的設計模式,設計模式是軟件開發中面對某一類型問題的通用解決方案,這些解決方式是由於有經驗的開發人員在軟件開發的多年經驗中整理、總結出來的,設計模式的目的是爲了讓代碼提升代碼的可讀性、可擴展性、可維護性,以及提供代碼

原创 數據庫連接池之Hikari源碼解析

Hikari連接池目前公認是性能最高的數據庫連接池,同時也是SpringBoot2.0以後默認使用的數據庫連接池。 一、Hikari的使用 1.1、Hikari相關配置 由於Springboot2.0默認就是使用的Hikari連接池,所以無

原创 數據庫連接池之Druid源碼解析

一、Druid的使用 1.1、Springboot項目集成druid 1.1.1、配置maven <dependency> <groupId>com.alibaba</groupId> <artifactId>drui

原创 通透理解連接池

一、連接池簡介 1.1、連接 客戶端想要訪問服務器首先需要和服務器創建一個連接,比如數據庫連接、redis連接等。而連接相當於是一個資源,服務器資源有限,所以同時可以提供的連接數是有限制的。如果併發的客戶端數量較大,就會導致同時需要大量的連

原创 JAVA基礎4---序列化和反序列化深入整理(Hessian序列化)

一、Hessian序列化用法 1、maven依賴 <dependency> <groupId>com.caucho</groupId> <artifactId>hessian</artifactId>

原创 Redis進階二之分佈式鎖的實現

前言 分佈式系統中,由於多個進程之間會存在操作共享數據的情況下,此時就需要一個協調系統進行各個進程之間的協調,避免多個進程之間同時修改數據導致互相影響的情況。通常可以採用數據庫鎖來實現數據不會再同一時間修改,但是數據庫鎖的悲觀鎖,比較影響整

原创 Redis進階一之淺析redis各種部署方案

一、單機模式 單機模式架構圖如下: 單機模式比較好理解,就是整個系統中只有一個redis節點,需要爲所有連接的客戶端提高讀寫服務,在小型項目中通過採用單機模式就可以正常工作。但是在中大型的項目架構中,單節點就會有一些問題會暴露出來。 1、

原创 布隆過濾器實現原理及源碼解析

前言 布隆過濾器的作用是判斷一個元素是否存在於一個集合中。 比如有一個集合存儲了全國所有人的身份證號碼,那麼該集合大小有十幾億的大小,此時如果判斷一個身份證是否存在於該集合中,最簡單也是最笨的辦法就是遍歷集合,挨個判斷是否和校驗的身份證號碼

原创 基於ShardingJDBC的分庫分表詳細整理

前言 傳統應用項目設計通常都是採用單一數據庫作爲存儲方案,但是隨着互聯網的迅猛發展以及應用數據量的增長,數據庫會隨着數據量的增長而漸漸成爲整個應用框架的性能瓶頸。 首先是由於關係學數據庫大多是採用B+Tree類型的索引,當數據量超過一定的閾

原创 NIO之路6--編解碼器的實現源碼解析

前言 每個網絡應用程序都必須定義如何解析在兩個節點之間來回傳輸的原始字節,以及如何將其和 目標應用程序的數據格式做相互轉換。這種轉換邏輯由編解碼器處理,編解碼器由編碼器和解碼 器組成,它們每種都可以將字節流從一種格式轉換爲另一種格式