原创 Springboot Condition 註解 和EnableAutoConfiguration

1 EnableAutoConfiguration 如果我們想自己寫一個框架,並希望springboot加載時可以將我們自己框架的一些配置加載,那麼該怎麼做呢。 肯定不能直接讓用戶在 scanBasePackages 中將我們的包加進去。

原创 java Fork/Join模型

當我們需要執行大量的小任務時,有經驗的Java開發人員都會採用線程池來高效執行這些小任務。然而,有一種任務,例如,對超過1000萬個元素的數組進行排序,這種任務本身可以併發執行,但如何拆解成小任務需要在任務執行的過程中動態拆分。這樣,大任

原创 spring 技巧

ApplicationContextAware 實現該接口,獲取獲取spring的bean。 InitializingBean ,DisposableBean 實現該接口,可以在bean初始化和銷燬前進行操作 BeanPostProces

原创 Reactor 模型

傳統IO模型: PPC 是 Process Per Connection 的縮寫,其含義是指每次有新的連接就新建一個進程去專門處理這個連接的請求。 TPC shi Thread Per Connection 的縮寫,其含義是每次有新的連接

原创 CompletionService

如果我們現在有一組類似的任務提交給Executor,並希望能夠按照執行時間來獲取最終結果。 我們可以使用Executor 和 BlockingQueue來實現,java已經幫我們實現這個。 1 創建: ExecutorCompletio

原创 多線程步調一致

併發編程三個核心問題:分工、同步、互斥 背景介紹 這裏我們來模擬一下商城對賬單流程,如下圖: 總共分爲4個步驟: 1 查詢未對賬訂單 2 查詢派送單 3 進行對賬 4 將對賬結果寫入差異庫 代碼實現 1 首先我們新建一個類,OrderT

原创 java 併發容器

java併發容器基本可以分爲4個,list,map,set,queue,如下如: 1 1 list  只有一個實現 CopyOnWriteArrayList ,顧名思義就是寫的時候會將共享變量新複製一份出來,這樣做的好處是讀操作完全無鎖。

原创 java 讀寫鎖實現簡單緩存

讀寫鎖規則: 讀與讀不互斥(所以多個線程可以同時讀),讀與寫互斥,寫與寫互斥。 適用於讀多寫少的情況。 public class Cache<K,V> { // 這裏不需要使用線程安全的類,因爲寫就是安全的。 priv

原创 java 簡單數據庫連接池

public class DataSourcePool { private final CopyOnWriteArrayList<Connection> list; //用到了信號量 private

原创 分庫分表中間件

mysql中間件研究,整理互聯網上的一些中間件文章 mysql-proxy是官方提供的mysql中間件產品可以實現負載平衡,讀寫分離,failover等,但其不支持大數據量的分庫分表且性能較差。下面介紹幾款能代替其的mysql開源中間件

原创 跨域請求

1、基本知識  XMLHttpRequest遵守同源策略(same-origin policy),導致我們在不同源的情況下未必可以成功請求道服務器端的接口。在請求接口發生的過程中,瀏覽器會根據需要發起一次預檢(也就是option請求),用

原创 antlr4 實戰 idea

ANTLR 是用JAVA寫的語言識別工具,它用來聲明語言的語法,簡稱爲“元語言”(meta-language)。 ANTLR 語法識別一般分爲二個階段: 1.詞法分析階段 (lexical analysis) 對應的分析程序叫做 lexe

原创 java 動態代理 和動態編程

概述 代理分兩種技術,一種是jdk代理(機制就是反射,只對接口操作),一種就是字節碼操作技術。前者不能算技術,後者算是新的技術。未來將有大的動作或者較爲廣泛的應用和變革,它可以實現代碼自我的編碼(人工智能,代碼智能)。 什麼是動態編程?動

原创 要怎樣才能夠完美的編寫高性能的RPC框架

在 RPC Benchmark Round 1 中,Turbo 性能炸裂表現強悍,並且在 listUser 這一項目中,取得了 10x dubbo 性能的好成績。本文將介紹 Turbo 強悍性能背後的原理,並探討如何編寫高性能的 RPC

原创 mysql冷知識

1.分區 mysql數據庫中的數據是以文件的形勢存在磁盤上的,默認放在/mysql/data下面(可以通過my.cnf中的datadir來查看),一張表主要對應着三個文件,一個是frm存放表結構的,一個是myd存放表數據的, 一個是my