原创 vmware centos7 設置靜態IP

1.在vmware菜單欄選擇編輯→ 虛擬網絡編輯器,打開虛擬網絡編輯器對話框,選擇NAT網絡連接方式,設置子網IP,點擊NAT設置頁面,設置如圖。 2、設置本機的VMnet8,子網掩碼和網關和第一步一致 3、設置vmware用vm

原创 代理詳解(cglib動態代理-源碼分析)

上篇文章講完了jdk的動態代理,基本上對jdk動態代理的原理有了基本認識,比如按class結構填充class文件,通過反射調用方法等。但是jdk有一些問題,比如必須要實現接口,對類的直接代理無法完成,cglib就解決了此類問題,允許直接對

原创 TX-LCN分佈式事務框架源碼解析(服務端-2-TxLcnInitializer初始化之TMRpcServer)

上篇文章我們通過註解@EnableTransactionManagerServer瞭解了服務端的啓動初始化流程。最重要的TxLcnInitializer#init我們在本篇文章詳細說明 先看下服務端實現了TxLcnInitializer接

原创 tomcat三大參數max-threads,accept-count,max-connections

max-threads 最大工作線程數 當有請求到達tomcat是,會構建一個線程去處理這個請求,最多隻允許max-threads線程數同時處理請求 max-connections 最大連接數 tomcat在同一時刻允許max-conne

原创 TX-LCN分佈式事務框架源碼解析(服務端-1-@EnableTransactionManagerServer執行流程)

  前面的代理都是爲了寫源碼做鋪墊的,因爲LCN模式就是用的靜態代理,採用對數據庫連接的代理來完成分佈式事務的。 首先看我們的服務端,前面在例子中已經把服務端和客戶端的代碼都貼出來了,服務端很簡單,只需要一個註解就能開啓分佈式事務服務端功

原创 @Value的用法 @Value數據來源 @Value動態刷新的問題

從用法和底層梳理,比較詳細。原鏈接地址 總結下編程思想: 無論何種介質的配置,加載到本地後封裝好,在初始化bean時碰到@Value註解,就去去封裝好的類中去解析得到key對應的value,賦值到類的屬性。動態刷新時,碰到需要動態刷新的類

原创 TX-LCN分佈式事務框架源碼解析(基於lcn模式下的異常流程源碼分析)

前一篇文章我們講了lcn模式下的正常流程是如何運作的。這篇講下在發生異常時框架是怎麼進行回滾的,同樣調用鏈還是A>B>C 正常流程圖是這樣的,前一個模塊的doBusinessCode執行的是後一個模塊的所有邏輯。我們從後向前看   C模

原创 TX-LCN分佈式事務框架源碼解析(基於lcn模式下的正常流程源碼分析)

TX-LCN中的LCN模式是通過代理數據庫連接進而對事物進行控制的。通過靜態代理的方式包裝的原本來的connection,設置爲手動提交,根據事物狀態控制提交與回滾。 所以如果用LCN模式的分佈式事務,必須有本地連接,即要操作本地數據庫。

原创 TX-LCN分佈式事務框架源碼解析(客戶端-@EnableDistributedTransaction執行流程)

有了前面服務端的基礎,客戶端代碼比較好理解,在一些方面代碼是一樣的。 我們從註解@EnableDistributedTransaction開始,這個註解是開啓事物客戶端的唯一註解。 @Retention(RetentionPolicy.

原创 TX-LCN分佈式事務框架源碼解析(服務端-5-TxLcnInitializer初始化之TMAutoCluster)

最後一個TxLcnInitializer。 TMAutoCluster從名稱上看是自動集羣,當我們啓動一個新的服務端時,不用額外的配置也不需要重新啓動客戶端。所有的客戶端都會感知到新的服務端並且與之鏈接。 整體的邏輯是這樣的,如果啓動一個

原创 TX-LCN分佈式事務框架源碼解析(服務端-4-TxLcnInitializer初始化之RpcNettyInitializer)

這個內容很少,但是前面都分開寫了這裏就爲它寫一篇 public void init() throws Exception { RpcCmdContext.getInstance().setRpcConfig(rpcCon

原创 TX-LCN分佈式事務框架源碼解析(服務端-3-TxLcnInitializer初始化之EnsureIdGenEngine)

上篇講了TMRpcServer的init方法,按照執行順序接下來的TxLcnInitializer類是EnsureIdGenEngine 這是一個id生成器類,用來生成機器id號 下面看init方法 public void init()

原创 netty 中LengthFieldPrepender與LengthFieldBasedFrameDecoder

這兩個類通常一起使用來解決半包與粘包的問題 LengthFieldPrepender編碼器 作用:將當前發送消息的二進制字節長度,添加到緩衝區頭部;這樣消息就有了固定長度,長度存儲在緩衝頭中 構造方法 public LengthFiel

原创 Spring Aop 動態代理詳解(jdk與cglib)

前面通過四篇文章講了代理 包括靜態代理,jdk動態代理,cglib動態代理,jdk與cglib動態代理比較,比較詳細的瞭解了兩者的用法以及源碼,知道了兩者的機制,接下來我們要分析的spring aop 算是一個動態代理的具體例子,實際去看

原创 netty 中 IdleStateHandler

IdleStateHandler 空閒狀態處理器,是用來檢測當前Handler的ChannelRead()的空閒時間。 構造方法如下 public IdleStateHandler( long readerIdl