原创 Executors線程池源碼分析

本節學習Executors類源碼首先看一下常用的線程池的幾種創建方式 /** * 創建一個線程池,該線程池重用固定數量的線程,在共享的無界隊列中運行 */ public static ExecutorSe

原创 2018面試題總結

最近這段時間在忙於面試,終於可以抽時間總結一下面試題,供各位同命運的小夥伴參考,問題都很類似,但是深度需要各位小夥伴自己探索了,加油! 1.java基礎   1)常用的集合,之間的區別,底層實現源碼 是否線程安全,爲什麼非線程安全,怎麼保

原创 原子類-AtomicInteger類源碼分析

本節介紹AtomicInteger類源碼首先,AtomicInteger類繼承了Number抽象類,Integer也繼承了Number抽象類。內部維護了一個int數據,且被volatile修飾:private volatile int v

原创 讀寫鎖-ReentrantReadWriteLock源碼解讀

本節一起學習ReentrantReadWriteLock類的源碼:1、首先,可以看到ReentrantReadWriteLock類實現了ReadWriteLock接口,public class ReentrantReadWriteLock

原创 AbstractQueuedSynchronizer抽象類源碼分析

上面幾章節介紹了讀寫鎖和Sync抽象類,這節介紹AQS如何控制同步的1.首先看一下類的定義public abstract class AbstractQueuedSynchronizer extends AbstractOwnab

原创 讀寫鎖-ReentrantReadWriteLock內部類Sync源碼分析

1.首先看類的定義:abstract static class Sync extends AbstractQueuedSynchronizer    Sync是抽象類,且繼承了AbstractQueuedSynchronizer    而

原创 CountDownLatch源碼分析

本節一起學習CountDownLatch類的源碼1.類變量信息 private final Sync sync;2.構造函數 public CountDownLatch(int count) { if (cou

原创 mySql學生成績排名

MySql 實現查詢每個班級學習成績前N的學生首先建一張學生成績信息表:CREATE TABLE t_student (  stu_id int(11) NOT NULL AUTO_INCREMENT COMMENT '學生ID',  s

原创 延時任務實現

延時任務舉例:訂單生成30分鐘內沒有支付,則作廢延時任務實現的幾種思路:1.數據庫實現方式    思路:任務表增加觸發時間字段,當任務插入時,觸發時間等於當前時間+30分鐘,使用Quartz批處理定時輪詢任務,只有到了觸發時間的且未支付的

原创 CopyOnWriteArrayList源碼分析

本節一起學習CopyOnWriteArrayList類的源碼1.首先看一下類的定義public class CopyOnWriteArrayList<E> implements List<E>, RandomAccess, Clo

原创 ApplicationContext和Bean的初始化和銷燬

本節來學習ApplicationContext和Bean的初始化和銷燬首先看一下ApplicationContext容器的初始化和銷燬關閉過程。ApplicationContext啓動的過程是在AbstractApplicationCon

原创 IOC容器的依賴注入

本節來學習IOC容器的依賴注入假設IOC容器已經載入了用戶定義的Bean信息,開始分析依賴注入的原理。首先,依賴注入的過程是用戶第一次向IOC容器索要Bean時觸發的,當然也可以在BeanDefinition信息中通過控制lazy-ini

原创 Bean對IOC容器的感知

本節主要學習Bean對IOC容器的感知容器管理的Bean一般不需要了解容器的狀態和直接使用容器,但在某些情況下,需要在Bean中直接對IOC容器進行操作,這時候就需要在Bean中設定對容器的感知。Spring IOC容器也提供了該功能,它

原创 IOC容器的設計

本節來學習IOC容器的設計:IOC容器的設計UML:從接口BeanFactory到HierarchicalBeanFactory,再到ConfigurableBeanFactory,是一條主要的beanFactory的設計路徑。其中,Be

原创 IOC容器的初始化過程

本節來學習IOC容器的初始化過程IOC容器的初始化由refresh()方法啓動的,具體包含BeanDefinition的Resource定位、載入和註冊三個過程。第一個過程是Resource定位過程。Resource定位指的是BeanDe