原创 Hashmap底層實現原理(JDK1.8)+紅黑樹

https://segmentfault.com/a/1190000021928659 https://baijiahao.baidu.com/s?id=1645429373049393021&wfr=spider&for=pc

原创 求大神給我指導Java專家的進階路線,必有重謝

感覺又到了Java技術瓶頸,不知道應該怎麼打破。Java虛擬機已經到了自己寫的地步,設計模式都玩得很順,突然感覺沒什麼好學的了,求大神給我指導下。  

原创 Transaction rolled back because it has been marked as rollback-only

前提:事務嵌套才能存在 原因: A事務,調用B事務,B事務拋出異常(transaction被設置爲rollback-only了),然後再A中進行了捕獲,但是沒有拋出該異常, 那麼A事務結束的時候,事務會執commit操作,但是現在事務已經

原创 FutureTask 源碼 併發設計模式

一、代碼 https://www.jianshu.com/p/60f661d95d53 public static void main(String[] args) throws Exception { Callable<Str

原创 mybaties封裝

mybaties封裝 一、 流程圖 二、 好處 方便接口功能擴展 減少開發代碼寫sql語句的麻煩 代碼整潔清晰且易於維護 三、 案例(已一個複雜的查詢爲案例,代碼只給出所需要的代碼) 3.1 代碼入口 package co

原创 分佈式系統中主鍵生成策略

主鍵生成策略 1分佈式系統中主鍵生成的問題 案例,在集羣的寫庫中,生成的主鍵重複的問題。比如說,A庫用戶表插入一條數據,生成主鍵id=1,B庫用戶表插入的數據,生成的主鍵id也爲1,那麼應該怎麼辦讓A,B庫生成的主鍵id不重複,

原创 針對高併發的思路

思路 一數據庫讀寫分離 在實際的項目中,我們對讀的操作是大於寫操作的,如果讀寫都在一個庫的情況下,寫操作會鎖行數據,這個時候查詢數據庫就會很慢,非常影響性能,而且數據庫讀寫切換也是非常耗性能的。 讀寫分離後,對數據庫的讀操作去讀

原创 高併發 - 服務降級與服務熔斷

爲什麼要服務降級 假設一個服務器1秒最大隻能併發處理5W條請求,如果用戶併發請求6萬,那麼多的1萬請求在1秒內多出1W個cpu時間切片,這些cpu時間切片佔用了1秒的資源,導致前面5W請求不夠資源,這個時候大家都要花費時間在等待

原创 Kafka_概念

一Kafka 是一個分佈式、分區的、多副本的、多訂閱者,基於zookeeper協調的分佈式日誌系統 可以當做MQ系統 用於web/nginx日誌、訪問日誌,消息服務等等 主要應用場景:日誌收集系統和消息系統。 作爲一個集羣運行在一個或

原创 Guava Cache

Guava Cache 與ConcurrentMap很相似 ConcurrentMap會一直保存所有添加的元素,直到顯式地移除。而Guava Cache爲了限制內存佔用,通常都設定爲自動回收元素。 在某些場景下,儘管LoadingCa

原创 高併發的一些思路

思路 一數據庫讀寫分離 在實際的項目中,我們對讀的操作是大於寫操作的,如果讀寫都在一個庫的情況下,寫操作會鎖行數據,這個時候查詢數據庫就會很慢,非常影響性能,而且數據庫讀寫切換也是非常耗性能的。 讀寫分離後,對數據庫的讀操作去讀

原创 高併發設計_限流

高併發設計 一思路 緩存、降級和限流。 1. 緩存 提升系統訪問速度和增大系統能處理的容量。 2. 降級 當服務出問題或者影響到核心流程的性能則需要暫時屏蔽掉,待高峯或者問題解決後再打開 3. 限流 用來處理前面2種不能解決的情況

原创 Semaphore調試

一Semaphore 通過許可證管理多個線程的執行,有許可證的線程可以執行,沒有許可證的線程會等待。   二Semaphore方法說明 Semaphore(permits):初始化許可證數量的構造函數 Semaphore(permit

原创 CountDownLatch

一CountDownLatch CountDownLatch是JDK 5+裏面閉鎖的一個實現。 能夠使一個或多個線程等待其他線程完成各自的工作後再執行 與CountDownLatch第一次交互是主線程等待其它的線程,主線程必須在啓動其它

原创 Exchanger類調試

一Exchanger  java.util.concurrent包中 只可以用於兩個線程之間交換信息。 二案例 public class ExchangerTest { public static void main(Stri