原创 SpringBoot中的spi機制(2): 實現原理

文章目錄1 @EnableAutoConfiguration2 @Import(AutoConfigurationImportSelector.class)3 AutoConfigurationImportSelector3.1

原创 自定義一個Starter

git地址 自定義starter

原创 Spring中的spi機制(1): 一個Demo瞭解什麼是spi

什麼是spi機制 英文是service provider interface,就是一種拓展點,服務發現的機制。 比如,Spring框架有個接口,框架已經提供三個實現,但是不滿足我的需求,我想寫一個自己的實現,被spring加載,

原创 JVM內存管理(一):內存劃分

JVM內存的引入 當xx.java被編譯成字節碼文件(xx.class)文件的時候,通過類加載機制將其加載到內存中,而字節碼文件裏會包含類的信息、常量、靜態變量、方法等信息,這些信息如何分類放入到JVM,放入到JVM什麼地方?這就

原创 JVM內存管理(二):垃圾判定以及垃圾回收算法

1 如何判斷一個對象是否是垃圾 1.1 引用計數法 如果一個對象被別的地方引用一次就計數+1、否則-1,等於0的時候代表沒有任何引用,可以視爲是垃圾,可以被GC。 缺點 就是一個循環引用的問題,比如對象A和對象B相互引用,但是A沒

原创 Spring如何解決循環依賴問題

什麼是循環依賴?         比如A依賴B,而B又依賴A,當實例化A的時候,要實例化B,B又依賴A。然而A沒有實例化完成,所以就陷入了死循環, Spring是如何解決循環依賴的問題呢? 源碼解讀 在AbstractApplicatio

原创 Mybatis源碼解讀

Mybatis源碼解讀 入口 @Test public void testSelect() throws IOException { String resource = "mybatis-config.xm

原创 ReentrantLock和AbstractQueuedSynchronizer源碼解讀

ReentrantLock lock = new ReentrantLock(); lock.lock(); lock.unlock(); 首先解釋幾個成員變量:   抽象類AbstractQueuedSynchronizer中: 內部

原创 ArrayBlockingQueue源碼分析

ArrayBlockingQueue是阻塞隊列,FIFO先進先出。   阻塞隊列api: 插入: add(e): 添加元素到隊列中,如果隊列滿了,繼續插入元素會報錯,IllegalStateException。 offer(e): 添加

原创 Spring Bean的生命週期

什麼是Spring Bean的生命週期?        在一個 bean 實例被初始化時,需要執行一系列的初始化操作以達到可用的狀態。同樣的,當一個 bean 不在被調用時需要進行相關的銷燬 操作,並從 bean 容器中移除。   下面正

原创 爲何自定義線程工廠(ThreadFactory)

JDK創建線程池如果沒有指定線程工廠則會使用了默認的線程工廠(DefaultThreadFactory) 既然有默認工廠,爲啥還要自定義線程工廠呢?原因如下: 1.可以設置有意見的線程名,這樣方便我們開發調試,問題日誌查找及定位。 2.可

原创 觀察者模式實際應用場景-----Spring事件機制

以下僞代碼是一個保存訂單的功能,並會發送短信消息: /** * Author heling on 2019/1/9 */ @Service public class OrderServiceImpl implements OrderSe

原创 JDK8新特性--------Lambda表達式

demo: 1.遍歷 /** * JDK8新特性1:Lambda表達式 * @param args */ public static void main(String[] args) {

原创 設計模式:六大原則

一、單一職責原則 意思是每個類都只負責單一的功能,切不可太多,並且一個類應當儘量的把一個功能做到極致。 違背該原則代碼示例: package com.whl.sixPrinciple; import java.io.*; /**

原创 JDK8源碼閱讀筆記--------java.util.ArrayList

官方文檔: 該類實現list接口,屬於collections,是一個動態數組,可以存放任何元素包括null,初始容量爲10,添加元素時候容量可以自動增長。該類不是同步的,也就是說不是線程安全的。如果多個線程同時方位一個實例,並且其中一個修