原创 java併發源碼:Synchronized

java併發源碼:Synchronized synchronized加鎖方式: 修飾實例方法:鎖是當前對象。 修飾靜態方法:鎖是當前類的class對象。 修飾代碼塊:鎖是synchronized括號裏配置的對象。 ​ JVM基

原创 Java 源碼閱讀(二) ArrayList

java 源碼閱讀(二) ArrayList ArrayList是一種變長集合類,基於數組實現。ArrayList允許空值和重複元素。當往ArrayList中添加的元素數量超過底層數量時,會進行擴容。ArrayList實現了Ran

原创 java併發源碼:ReentrantReadWriteLock

java併發源碼:ReentrantReadWriteLock 結構 可見ReentrantReadWriteLock實現了ReadWriteLock接口。 ReadWriteLock接口定義了兩個接口: Lock readLo

原创 java併發源碼:Condition

java併發源碼:Condition 比對Object的監視器方法和Condition接口 對比項 Object Condition 前置條件 獲取對象的鎖 調用Lock.lock()獲取鎖

原创 Java併發源碼:ConcurrentHashMap

Java併發源碼:ConcurrentHashMap 爲什麼要使用ConcurrentHashMap 不安全的HashMap 效率低下的HashTable ConcurrentHashMap的鎖分段技術可以有效提升併發訪問率

原创 java 源碼閱讀(一) String

java 源碼閱讀(一) String String的屬性: char[] value; int hash; String的重要方法 intern() /** * Returns a canonical representation

原创 線上故障應用排查:高內存佔用

前一篇介紹了線上應用故障排查之一:高CPU佔用,這篇主要分析高內存佔用故障的排查。 搞Java開發的,經常會碰到下面兩種異常: 1、java.lang.OutOfMemoryError: PermGen space 2、java.lang

原创 java併發源碼:AbstractQueuedSynchronizer

java併發源碼:AbstractQueuedSynchronizer 一、簡介 [外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-pEGdDFSw-1575887227561) ​ AQS(隊列同步器

原创 java 源碼閱讀(五)HashSet

java 源碼閱讀(五)HashSet HashSet是一個無序,允許空值,不允許重複值的集合類。非線程安全類。 繼承/實現 構造函數 private transient HashMap<E,Object> map; priva

原创 java 源碼閱讀(三)LinkedList

java 源碼閱讀(三)LinkedList LinkedList底層採用的是雙向鏈表結構,支持空值和重複值。無法向ArrayList那樣進行擴容,存儲元素時,需要額外的空間存儲前驅和後繼的引用。LinkedList在鏈表頭部和尾

原创 java 源碼閱讀(四)Vector

java 源碼閱讀(四)Vector Vector是一種變長集合類,基於數組實現。ArrayList允許空值和重複元素。當往Vector中添加的元素數量超過底層數量時,會進行擴容。Vector實現了RandomAccess接口,所

原创 java併發源碼:volatile

java併發源碼:volatile volatile的定義: ​ java編程語言運行線程訪問共享變量,爲了確保共享變量能被準確和一致地更新,線程應該確保通過排它鎖單獨獲得這個變量。如果一個變量被聲明成volatile,java線

原创 java併發源碼:ReentrantLock

java併發源碼:ReentrantLock 結構 可見ReentrantLock實現了Lock接口。 lock lock接口定義了五個方法。 void lock();:獲取鎖。 void lockInterruptibly()

原创 Dubbo源碼(一)服務暴露

Dubbo源碼(一)服務暴露 版本介紹 ​ 從官網上直接摘抄下來的。源碼統一爲2.6.X版本。 版本 重要功能 升級建議 1 2.6.x bugfix 建議持續升級最新版本,所有版本生產可用 2 2.5.x 停

原创 Spring源碼(二)bean的創建

Spring源碼(二)bean的創建 ​ 怎麼去獲取一個Spring Bean? ​ 通過BeanFactory定義的getBean()方法,就可以從容器中拿到這個bean的實例。 ​ 所以,我們從getBean方法爲入口,看看S