原创 JVM的類加載機制與“雙親委派”模型

之前關於反射的文章也說過java類的加載過程,但是因爲主題原因沒有很系統的介紹,這裏系統學習介紹下。 一、類的生命週期  一個類型從被加載到虛擬機內存中開始,到卸載出內存爲止,整個生命週期將會經歷加載(Loading)、驗證(Veri

原创 常見 JVM垃圾回收器 與 內存分配策略

垃圾收集(Garbage Collection,下文簡稱GC),垃圾收集的歷史遠遠比Java久遠。經過半個世紀的發展,今天的內存動態分配與內存回收技術已經相當成熟,一切看起來都進入了“自動化”時代,那爲什麼我們還要去了解垃圾收集和內存分配

原创 JVM運行時數據區域、內存溢出是怎樣的?

一、Java內存區域 Java虛擬機在執行Java程序的過程中會把它所管理的內存劃分爲若干個不同的數據區域。這些區域有各自的用途,以及創建和銷燬 的時間,有的區域隨着虛擬機進程的啓動而一直存在,有些區域則是依賴用戶線程的啓動和結束而

原创 Sping中bean的生命週期(代碼展示)

一個Bean從生到滅要經歷很多過程,總體分爲定義、實例化、屬性賦值(依賴注入)、初始化、生存期、銷燬。 如下圖,是個概括圖,後面重點介紹Bean的定義、初始化、銷燬過程: 下面是一個細化的Bean生命週期圖:  一、Bean的定義

原创 Spring MVC調度流程

一、Spring MVC的由來  在最早期WEB系統有前端到後端是: 請求+JSP+Java Bean + 數據庫 的模式,這種JSP和Java Bean前後端耦合在一起會帶來很多麻煩,這種模式下JSP身兼多職,既要負責視圖層的數據展

原创 rebase 和 merge 的區別麼?

大概來說,git merge和git rebase都是用來做代碼合併的,兩者從最終效果來看沒有任何區別,都是將不同分支的代碼融合在一起。  但是在遇到衝突和具體使用場景上有一些不同。   一、rebase rebase會把你當前分支的 c

原创 線程池 是啥?

一、爲什麼要用線程池 一個線程執行某個任務的時間片可以分成3塊,創建線程T1,執行任務T2,銷燬線程T3,現實中往往是 T1+T3>T2,也就是真正執行任務花費的時間很短,反而是創建與銷燬線程更耗時,也是就是若我們需要多個線程去執行任

原创 IDEA怎麼實現遠程調試

一、什麼是遠程調試? 兩個VM之間通過debug協議進行通信,然後以達到遠程調試的目的。兩者之間可以通過socket進行通信。換句話說,就是你可以在本地測試非本地環境的應用,比如在你本地直接調試生產環境的代碼。這就比較爽了,線上出現問題你

原创 深入理解策略設計模式

目錄 一、what is 策略? 二、what is 策略模式? 2.1  策略模式中的角色 2.2  策略模式通用實現 2.3  案例改寫 三、策略模式核心思想 四、策略上下文角色的作用 4.1  從策略上下文獲取數據 4.2  策略實

原创 RabbitMQ消息隊列工作原理及集成使用

  目錄 一、應用場景 1.1  系統間解耦  1.2  異步提升效率 1.3  流量削峯 1.4  統一通信標準 二、什麼是消息隊列? 三、RabbitMQ 3.1  介紹 3.2  RabbitMQ中的重要術語 3.2.1  Exch

原创 Spring知識點梳理 之 “知其然”

(源碼鏈接:https://pan.baidu.com/s/1i-afXQ2tBGded6t8Psea8g 提取碼:bh0r) 一、What is the Spring? Spring框架是由於軟件開發的複雜性而創建的,換句話說

原创 責任鏈模式(嵌套攔截器)

  一、what is 責任鏈模式? 我前面的文章介紹過動態代理模式,該模式設計者只需要向開發者暴露攔截器即可。當有多個攔截器時,就衍生出了責任鏈。 什麼是責任鏈?比如請假流程:請假單看成對象,你要請假需要經過開發經理、部門經理、人事部門

原创 工廠模式(簡單工廠模式、工廠模式、抽象工廠模式)

一、工廠模式的分類: 二、簡單工廠模式 2.1 簡單工廠模式角色分配 2.2 簡單工廠實例 2.3 適用場景 2.4 利用反射優化簡單工廠模式 三、工廠模式 3.1 工廠模式和簡單工廠模式區別 3.2 適用場景 3.3 工廠模式角色分配

原创 工具IDEA2019安裝

工欲善其事必先利其器,IDEA幾乎是朝夕相伴的,下面記錄一下安裝過程。 首先是安裝包 百度網盤地址(包含註冊文件):https://pan.baidu.com/s/1zKq_2i4USjGqAJO5RyRSjA&shfl=sharepse

原创 JAVA集合類(代碼手寫實現,全面梳理)

  目錄   一、集合類關係圖  二、Iterator 三、ListIterator 四、Collection 五、List (1)ArrayList 1)Array和ArrayList區別 2)實現自己的ArrayList (2)Lin