原创 hashmap 環形鏈表分析

網上的hashmap衝突太長,太複雜,看的腦仁疼,自己隨便總結下,有不同意的請指正 代碼如下 do {     Entry<K,V> next = e.next; // <--假設線程一執行到這裏就被調度掛起了     int i = i

原创 log4j2 RollingFileAppender 帶zip 源碼分析

背景: 線上出現復現率很小的問題,log4j2帶SizeBasedTriggeringPolicy和CronTriggeringPolicy兩種策略的自定義log,出現覆蓋現象 經分析,不是觸發size 2MB的問題,是cron發生的問題

原创 apollo spring @value 源碼分析

apollo和spring完美結合,自動更新估計也是反射,用起來非常舒服,推薦使用 spring的@value 初始化在下面的代碼裏 初始化 @value SpringApplication private void prepareCon

原创 Java OQL(對象查詢語言)

摘要:下面內容幾乎全部來自《深入理解java虛擬機》-周志明這本書的附錄D附錄D是作者翻譯自EclipseMemoryAnalyzerTool(MAT)的OQL幫助文檔我覺得對於分析內存使用情況查詢OutOfMemory原因,OQL會有很

原创 json轉樹,json層級展開爲list

將json轉成樹狀結構,然後展開成list,有key就取key,沒key就取value,通過遞歸實現 JSONNode 是節點類,其中的key就是json的key,value是如果沒有子節點的json的value 建這倆類唯一的好處就是把

原创 Finalizer(待整理 還有reference queue)

1.創建 擁有一個非常規的finalize()方法的對象在創建時步驟如下 1).jvm創建實例 2).jvm創建Finalizer實例,指向上一步創建的對象實例,同時指向一個queue,方便gc 3).Finalizer.class持有F

原创 關於對網上一則java synchronized 線程同步的分析

爲了看一些synchronized相關的內容,查了網上的一些例子,然後糊塗了一個下午,最終搞懂了,作者可能是好心,但是感覺分析的不徹底,給看的人也容易造成困惑,把我的分析過程貼出來,本來代碼比較亂,但分析的過程中收穫了一些東西 網址如下:

原创 爲啥攔截器在invocation.invoke()之前的代碼,將會在Action之前被依次執行,而在invocation.invoke ()之後的代碼,將會在Action之後被逆序執行?

只是小知識點,有點意思,記下來 因爲 可以簡化成下面兩段代碼: ----------------------------------    before(invocation);             // 調用下一個攔截器,如果攔截

原创 java高併發測試實例(精確到幾百納秒)

其實就是用CountDownLatch來使多個線程同時運行,同時發送請求,雖然post的事件不能保證同時,但發post能保證同時(相差0.2毫秒),通過這種方法,測試了redis的setkey,getkey來保證不重複數據的時間閾值在幾百

原创 LongAdder源碼分析(只分析了兩個方法,add和longAccumulate,也是核心方法)

    public void add(long x) {         Cell[] as; long b, v; int m; Cell a;             if ((as = cells) != null || !cas

原创 ArrayList併發問題分析

併發問題老是感覺很棘手,這次碰到了一個ArrayList在線程池中add出現null數據的問題,雖然之前就知道ArrayList是非線程安全的,但是具體爲啥不安全,爲啥會出現空值,沒有深入去理解,這次出現這個問題,經過自己分析,基本知道了

原创 用jxl將mysql的數據結構導入到excel中,用過poi將oracle表結構導入

效果圖如下: package com.example.test; import java.io.File; import java.io.FileNotFoundException; import java.io.FileOutput

原创 git中ssh-keygen 中生成的 randomart image 用java的實現

首先,先創建一個cube類,方便按路徑移動和畫圖,直接貼碼 package com.test.sshkeygen; import static com.test.sshkeygen.Cube.CubeType.A; import st

原创 匿名內部類,異步回調淺析

這個只是自己記錄的自己看的,語法上不太嚴謹,邏輯還是清楚的 回調(基礎版): A類裏的AA函數不會做某事,就利用自己裏面的CC函數調用B類裏的BB函數做這件事,BB的參數裏面有A類參數,BB把自己的步驟執行完畢後,再調用AA執行後面的操作