原创 詳解synchronized 和ReentrantLock兩種鎖實現原理

概述 Java 中的併發鎖大致分爲隱式鎖和顯式鎖兩種。隱式鎖就是我們最常使用的 synchronized 關鍵字,顯式鎖主要包含兩個接口:Lock 和 ReadWriteLock,主要實現類分別爲ReentrantLock 和 Reent

原创 spring基於註解的方式註冊bean的集中方式

        spring容器幫我們管理bean,因此需要將bean註冊在spring容器中,而bean可以通過xml或者註解的方式進行註冊,基於xml的配置一般是通過<bean>、<context:component-scan>等xm

原创 JVM反射調用優化,導致發生大量異常時log4j2線程阻塞

在使用log4j2打日誌時,當發生大量異常時,造成大量線程block問題的問題。 大量線程block原因 發生異常,打印異常棧時,會調用org.apache.logging.log4j.core.impl.ThrowableProxy.t

原创 BeanDefinitionRegistryPostProcessor和BeanFactoryPostProcessor以及BeanPostProcessor執行先後順序

1、BeanDefinitionRegistryPostProcessor和BeanFactoryPostProcessor以及BeanPostProcessor都屬於Spring的後置處理器,可以實現它們以達到動態註冊bean定義,動態

原创 SpringMVC支持版本管理的Restful接口

原文鏈接:https://www.cnblogs.com/jcli/p/springmvc_restful_version.html 需求 移動互聯網時代的到來,軟件開發的模式也在變化。記得以前

原创 JVM的逃逸分析詳解

        即時編譯(Just In Time,簡稱JIT)是一種通過在運行時將字節碼翻譯成機器碼,從而改善字節碼編譯語言性能技術。逃逸分析並不是直接的優化手段,而是一個代碼分析,通過動態分析對象的作用域,爲其他優化手段,如同步消除、

原创 圖解分佈式一致性協議Paxos

原文鏈接:https://www.cnblogs.com/hugb/p/8955505.html Paxos協議/算法是分佈式系統中比較重要的協議,它有多重要呢? <分佈式系統的事務處理>:

原创 redis分佈式鎖RedLock解析

原文鏈接:https://www.01hai.com/note/av178105 設計分佈式鎖需要哪些條件? 首先應該是互斥性,即無論任何情況下,只能有一個客戶端能夠獲得分佈式鎖; 其次應該是安

原创 使用Disruptor實現高效隊列

關於Disruptor,本文就不做過多介紹,重點介紹項目引入Disruptor實現高效隊列功能。 1、pom文件引入依賴 2、編寫高效隊列處理模板 3、編寫數據包裝類 4、編寫默認異常處理類   5、一個業務基礎隊列類,繼

原创 spring整合Drools規則引擎

           項目中有一個特殊需求,需要根據一定的規則監控可疑的開票,鑑於規則的複雜性以及多變性,放棄硬編碼的想法,引入Drools規則引擎,以規則腳本的形式存放在文件中,使得規則的變更不需要修正代碼重啓機器就可以立即在線上環境生

原创 使用@TransactionalEventListener結合@Async在事務提交之後異步進行Event的處理

        Spring的發佈訂閱模型實際上並不是異步的,而是同步的來將代碼進行解耦。而TransactionEventListener仍是通過這種方式,只不過加入了回調的方式來解決,這樣就能夠在事務進行Commited,Rollba

原创 基於Java Instrument以及Attach api的Agent實現

0 介紹 使用 Instrumentation,使得開發者可以構建一個獨立於應用程序的代理程序(Agent),用來監測和協助運行在 JVM 上的程序,甚至能夠替換和修改某些類的定義。有了這樣的功能,開發者就可以實現更爲靈活的運行時虛擬機監

原创 TransactionSynchronizationAdapter結合ThreadPoolExecutor實現事務後處理功能

         項目中有一個功能涉及多個業務流程,且在同一個事務中,每個業務流程結束後都需要進行RPC調用,考慮到RPC調用的代價,決定做成異步調用,但是由於每個調用都必須在業務流程結束後進行,這時候就想到TransactionSync

原创 curator筆記-分佈式鎖的實現與原理

1.分佈式鎖 在我們進行單機應用開發,涉及併發同步的時候,我們往往採用synchronized或者Lock的方式來解決多線程間的代碼同步問題。但當我們的應用是分佈式部署的情況下,那麼就需要一種更加高級的鎖機制來處理這個進程級別的代碼同步問

原创 基於redisson實現快速緩存

package com.*.servicecore; import com.google.common.collect.*; import org.redisson.api.*; import java.util.*; import