原创 Java集合系列---List源碼解析(ArrayList和LinkedList的區別)

List源碼主要講ArrayList,LinkedList,Vector三個類 1 ArrayList ArrayList是一個底層基於數組的集合, 首先來看一下它的繼承關係, public class ArrayList<E>

原创 Java集合系列---HashMap源碼解析(超詳細)

1 HashMap 1)特性: 底層數據結構是數組+鏈表+紅黑樹運行null鍵和null值,,非線程安全,不保證有序,插入和讀取順序不保證一致,不保證有序,在擴容時,元素的順序會被重新打亂 實現原理: Hashmap先採用算法將k

原创 二十三種設計模式詳解

1 動態代理 代理是什麼? 代理其實就是代爲處理的意思,個人理解就是產生一個處理類對需要代理的對象進行處理,並且返回該代理對象 靜態代理 首先實現一個Moveable接口,表示代理與被代理的對象都屬於同一個類別 public in

原创 Java集合系列---Collection源碼解析及整體框架結構

集合的整體框架結構及依賴關係 1.Collection public interface Collection<E> extends Iterable<E> {} Collection是一個高度抽象出來的集合,包含了集合添加,

原创 聚合,組合,繼承的區別

繼承 指的是一個類(稱爲子類、子接口)繼承另外的一個類(稱爲父類、父接口)的功能,並可以增加它自己的新功能的能力 比如 a 繼承 b,即 a is b。 在這裏繼承了的下面三種類型的都是car 聚合 聚合是關聯關係的一種特例,他

原创 關於秒殺系統的實現

背景 這個項目是從github上拉下來的一個項目,借鑑項目上的代碼來實現的秒殺系統,主要有 基於Mysql悲觀鎖,樂觀鎖實現,利用redis的watch監控,以及利用AtomicInteger的CAS機制特性等四種方法來實現高併發

原创 Java集合系列---TreeMap源碼解析(巨好懂!!!)

TreeMap底層是基於紅黑樹實現,能實現根據key值對節點進行排序,排序可分爲自然排序和定製排序。 自然排序:TreeMap的所有key必須實現Comparable接口, 定製排序:創建TreeMap的時候,傳入一個Compar

原创 Java集合系列---LinkedHashMap源碼解析

1 首先來看一下LinkedHashMap的繼承關係 public class LinkedHashMap<K,V> extends HashMap<K,V> implements Map<K,V> 可以看出LinkedHash

原创 在SpringBoot中使用Aop功能實現日誌功能

實現背景 主要是爲了熟悉Aop的主要註解及功能,給項目的Controller層加上日誌 首先在pom文件裏面加入aop依賴 <dependency> <groupId>org.springframework.boo

原创 Java集合系列---紅黑樹(基於HashMap 超詳細!!!)

1 平衡因子: 左右子樹 高度之差 LL型 右旋 LR型 -->LL 右旋 RR -->左旋 RL -->RR 左旋 左旋:逆時針旋轉紅黑樹的兩個節點,使得父節點被自己的右孩子取代,而自己成爲自己的左孩子。 右旋:順時針旋轉紅黑樹

原创 Java集合系列---ConcurrentHashMap源碼解析

ConcurrentHashMap是Java併發容器的一員,jdk1.8以後的基本的數據結構和HashMap相似,也是選用了數組+鏈表/紅黑樹的結構,在jdk1,.7以前則是採用了分段鎖的技術。ConcurrentHashMap所