原创 Springboot啓動原理(二)

一、啓動方法 二、進入run方法,跟蹤下去發現他先調用一個初始化方法initialize ①sources 就是你的啓動對象 ②deduceWebEnvironment()判斷是否是web環境,原理就是判斷如下的兩個類是否存在,存在就

原创 Springboot啓動原理(一)

第一節講@SpringBootApplication註解 一、@SpringBootConfiguration 就一個@configuration註解 二、@EnableAutoConfiguration ①@AutoConfigu

原创 spring拓展執行時機

這是一個被人講爛了的東西,但是我還是會更全面地介紹,並且提出一些坑 一、整體流程 ①BeanFactoryPostProcessor(這個嚴格來說不是bean生命週期,只是他會在容器初始化完會調用,這裏提及,主要爲了說明集中後置處理器順序

原创 springboot Log4jLoggerFactory StackOverflowError

springboot啓動時候有可能會報log4j的棧溢出,目前很多網站上面的回答都是具體衝突是log4j-slf4j-impl-2.10.0.jar和log4j-to-slf4j-2.10.0.jar,然後給出的方案如下: <depen

原创 JVM相關——內存模型以及GC

一、jvm內存模型(注意與JMM——java內存模型區別)在1.7和1.8有了些許改變 盜了一張圖(1.8) 原來的永久代消息,取而代之是元數據區,元數據區也是方法區的一個實現。 從目前多方面資料看下來,jvm內存模型還是分爲2大塊,一

原创 java實現lru

網上說了很多linkhashmap的實現,但是我覺得還是不要用jdk的工具,自己用最原始的方式實現才更有利於理解。 public class Lru { private static final int MAX_NUM = 3

原创 lombok的@EqualsAndHashcode註解

有時候我們在實體類上面會使用@Data註解,這個註解帶了@EqualsAndHashcode註解。 一、用法 ①of 用來指明你要用什麼字段來重寫equals和hashcode(具體怎麼重寫看下文) ②callSuper 這個選項只能用

原创 nextkey-lock出現條件

Next-key lock(只在RR的當前讀有效)  行鎖 + gap鎖。 1、沒有設置索引或者沒有命中索引,表鎖 2、命中非唯一索引,next-key lock 3、命中唯一索引,x鎖

原创 springbean生命週期以及循環依賴

生命週期 注:這篇博文不會每一個方法都細講,因爲主要要說的是生命週期和循環依賴,與這2個主脈絡無關的會直接過。 一、先掃描包,把類封裝成一個beandefinition並且放到beandefinationMap和beandefinitio

原创 強軟弱虛引用以及threadlocal

又是一個被講爛的東西,但是我還是總結一下,日後也可以自己看。 一、強引用 A a = new A(); a是強引用,new A();是對象。我們99%都是用這樣形式,不多說,不舉例。 二、軟引用 軟引用是說當內存不足時,也就是快oom之前

原创 maven子項目打包報錯

一、現象 父級打包可以,用idea工具deploy可以,但是在terminal deploy子項目會報401 二、命令 mvn clean javadoc:jar source:jar deploy -pl parent/child -a

原创 redis&zk分佈式鎖

本文主要介紹redis分佈式鎖,要點1、刪除時確認鎖防止超時誤刪除鎖 2、鎖的續簽 看代碼吧 public class RedisLock { private static String lockkey = "defalut-l

原创 transmittable-thread-local解析

這玩意我第一次用到是在用springcloud時候,有組員跟我說希望可以用線程池異步執行。本來沒啥問題,但是我們希望模塊之間傳遞traceId(方便日誌查詢),我們做法是把traceid放在threadlocal裏,然後feign請求時候

原创 Guava Ratelimit源碼分析以及仿造優化版本

今天介紹Guava的限流RateLimit,主要介紹2個,一個是源碼分析,一個是仿造他的原理寫一個優化版本。 一、源碼分析 首先我個人認爲RateLimit的設計思想很好很優秀,但是寫的有點瑕疵,後面我會說到。 ①create方法 第一

原创 synchronized和lock全面詳細講解

synchronized和lock應該是最常用的鎖,今天講這2個原理和比較。我不粘貼也不摘抄,完全是按我自己理解來說,努力做到大白話。 一、synchronized原理 說原理之前先說synchronized4個狀態,因爲不同狀態的實現原