原创 正則表達式之Unicode 字符屬性 Unicode Categories \\p{P} \\p{XXX}

字符簡寫式 匹配各種空白符 https://esoftmobile.com/2013/05/22/regular-expression/ \p{xxx} 匹配xxx屬性的字符 [AHK_L 61+]: Unicode 字符

原创 java jstack prio,tid,nid 參數含義

jstack 入參說明 從簡單來說,jstack就是打印當前指定java進程中每一個線程的工作情況,但實際上遠沒有那麼簡單。這裏我們首先介紹jstack命令的基本使用,在本小節中有一些jstack打印出來的關鍵信息不會立即進行講解

原创 Redis get key error

背景 程序中一直用的key,突然不可以用,於是登錄到redis集羣上,手動get了一下,發現如下錯誤 錯誤 (error) DENIED Redis is running in protected mode because pr

原创 Arthas(阿爾薩斯)- 阿里開源的Java在線診斷工具(火焰圖-實戰篇--正則表達式 優化方法)

背景 目前 分析 因爲耗時主要耗在compile編譯階段 這個階段,在外面還是一個通過樂觀鎖進行競爭的,根據matcher的matcher方法 private void compile() { // Ha

原创 Arthas(阿爾薩斯)- 阿里開源的Java在線診斷工具(理論篇)

Arthas 是什麼? Arthas 是 阿里在 2018 年 9 月開源的 Java 診斷工具。支持 JDK6+, 採用命令行交互模式,提供 Tab 自動補全,可以方便地定位和診斷線上程序運行問題。 當你遇到以下類似問題而束手無

原创 Arthas(阿爾薩斯)- 阿里開源的Java在線診斷工具(火焰圖-實戰篇--string format方法)

火焰圖觀察 發現string的 format方法的採樣佔比佔了整個採樣佔比的6%+ 原因 發現了吧,就是每次請求都會執行這個方法。然後正則的匹配一般偶比較的耗時。 優化 代碼優化,方向就是儘量少使用複雜的正則 使用st

原创 Arthas(阿爾薩斯)- 阿里開源的Java在線診斷工具(火焰圖-實戰篇--spring copyproperties方法)

profiler/火焰圖 火焰圖是基於 perf 結果產生的 SVG 圖片,用來展示 CPU 的調用棧。 y 軸表示調用棧,每一層都是一個函數。調用棧越深,火焰就越高,頂部就是正在執行的函數,下方都是它的父函數。 x 軸表示抽樣

原创 protobuf 3遇到 kryo 的 Map 字段序列化問題

背景 有A ,B,C,D 四個服務 序列化關係如下,其中C服務是一個rpc服務,供很多的服務調用。 由於我是B服務和C服務的維護者,此時A服務和D服務的通信經由我,由於pb字段協議變更。我這個橋樑不得不做變動。 報錯 於是這次增

原创 redis分佈式鎖踩坑——續

繼上次redis分佈式鎖踩坑後,那個坑還沒踩夠。 之前是因爲線程掛掉,然後導致value不過期,然後我改成了原子性的setx方法。 但是由於使用的是同一個key,且value不過期,所以setx方法,是not exist的,那麼永

原创 隊列同步器(AQS)原理簡單介紹(一)

隊列同步器AbstractQueuedSynchronizer,是用來構建鎖或者其他同步組件的基礎框架。 繼承AbstractOwnableSynchronizer 用一個int成員變量表示同步狀態 設置當前狀態 /*

原创 隊列同步器(AQS)原理簡單介紹(二)

獨佔式、共享式鎖的獲取 獨佔式:有且只有一個線程能獲取到鎖,如:ReentrantLock。資源是否可以被訪問被定義爲:只要AQS的state變量不爲0,並且持有鎖的線程不是當前線程,那麼代表資源不可訪問。ReentrantLo

原创 CAS的優缺點

CAS,在Java併發應用中通常指CompareAndSwap或CompareAndSet,即比較並交換。 CAS是一個原子操作,它比較一個內存位置的值並且只有相等時修改這個內存位置的值爲新的值,保證了新的值總是基於最新的信息

原创 synchronized的 偏向鎖、輕量級鎖、重量級鎖的優缺點對比以及其適應場景

鎖 優點 缺點 適用場景 偏向鎖 加鎖和解鎖不需要額外的消耗,和執行非同步方法相比僅存在納秒級的差距 如果線程間存在鎖競爭,會帶來額外的所撤銷的消耗 適用於只有一個線程訪問同步塊場景 輕量級鎖 競爭的線程不會阻塞

原创 No qualifying bean of type 'org.springframework.transaction.PlatformTransactionManager' available:

2020-03-05 16:30:01.380 ERROR 12216 --- [rtTask_Worker-1] i.e.l.e.h.i.DefaultJobExceptionHandler 33 : Job 'com.

原创 kyro序列化踩坑記——提供方DTO新增字段,依賴方則報錯

背景 A服務通過dubbo調用B服務,序列化方式選擇的是kryo,A服務和B服務同時依賴C工程的一個DTO。 C工程的DTO新增了一個字段,deploy了,B服務引了最新的依賴。但是A服務並沒有。 此字段,A服務並使用不上,也不關