原创 springboot 創建自定義filter 非常規寫法

先來一個很普通的例子, springBoot創建自定義filter public class MyFilter implements Filter { @Override public void init(Fil

原创 一個複雜業務樹的構造工具類

因公司業務需求,需要構造各種類型組織關係樹。 有同種模型的關係樹,例如 單位、子單位關係樹 也有不同模型的關係樹,例如 單位、子單位、部門、子部門關係樹 那麼基於這種複雜的關係樹,我們需要將樹的基本結構關係以及業務代碼做分離 源碼

原创 domain代碼生成修改工具,批量生成swagger、javax.validation註解,減少重複工作

在這個微服務化爲主流的階段,domain的重要性不言而喻,他即體現了一個服務的業務能力,又是服務間通信的契約, 市面上已經有一些很成熟的domain代碼生成工具,比如Mybatis-Generator, 但是基本沒看到可以支撐do

原创 springCloud feign 源碼解析

基於NetFlix Feign實現,整合了SpringCloud Ribbon 和 SpringCloud hystrix, 同時封裝了Http調用流程,更適合面向接口化的編程習慣 該圖片摘自https://www.jianshu.

原创 springCloud Ribbon源碼淺析

springboot 版本2.1.3.RELEASE springCloud版本Greenwich.RELEASE LoadBalancerAutoConfiguration 截取重要部分 @Configuration @Condit

原创 SpringBoot自動裝載機制

springBoot是建立在spring的基礎上,所以我們先來看下spring中類似的bean裝載功能 一、ImportSelector,DeferredImportSelector ImportSelector接口只定義了一個sel

原创 spring AOP 淺析

說到spring的Transactional,必須先了解spring AOP的原理,先看個簡單的例子 //一個普通的類 public class CyclicA { public void printlnMethod(

原创 spring-bean 全生命週期時序圖

先來一段簡單的代碼 //獲取資源 ClassPathResource resource = new ClassPathResource("spring-core.xml"); //獲取 BeanFactory DefaultList

原创 CyclicBarrier 1.8 解析

前置基礎,強烈建議先閱讀AbstractQueuedSynchronizer解析、condition實現解析 CyclicBarrier的描述:“讓一組線程到達一個屏障時被阻塞,直到所有的線程都到達屏障時,屏障纔會打開,所有被屏障攔截

原创 CountDownLatch 1.8 解析

CountDownLatch 的描述是“允許一個或者多個線程等待其他線程完成操作” 下面先看一個簡單的例子“出門三部曲” public static void checkGoOut() throws InterruptedEx

原创 ReentrantLock 1.8解析

ReentrantLock , 可重入鎖, 和 synchronized 有着相同的內存語義 比較下這倆者之間的相同以及區別 相同點: 倆者有着相同的內存語義, 1、當線程獲取鎖時,JMM會把線程對應的本地內存置爲無效,然後臨界區的

原创 condition實現解析 1.8

任意一個java對象,都擁有一組監視器方法(定義在java.lang.Object上),主要包括wait()、wait(long timeOut)、notify()、notifyAll()方法,這些方法與synchronized同步

原创 AbstractQueuedSynchronizer解析 1.8

AbstractQueuedSynchronizer簡稱AQS,即隊列(CLH隊列)同步器。它是構建鎖或者其他同步組件的基礎框架(如ReentrantLock、ReentrantReadWriteLock、Semaphore等),JU

原创 java8 函數式編程讀書筆記

1.2 什麼是函數式編程 每個人對函數式編程的理解不盡相同。但其核心是:在思考問題時,使用不可變值和函 數,函數對一個值進行處理,映射成另一個值。 第二章 Lambda表達式 2.2 辨別Lambda表達式 Runnable noAr

原创 HashMap解析(1.8版)

Java8 對 HashMap 進行了一些修改,最大的不同就是利用了紅黑樹,所以其由 數組+鏈表+紅黑樹 組成。 瞭解下一些重要的成員變量 //tab默認容量 16 static final int DEFAULT_INI