原创 Dubbo源碼閱讀——過濾器鏈

文章目錄1. 過濾器的使用1.1 @Activate註解啓用過濾器1.2 xml配置啓用過濾器1.2.1 配置方式1.2.2 過濾器順序1.2.3 剔除過濾器1.2.4 過濾器的疊加2.Dubbo內置過濾器3.Dubbo過濾器實現

原创 線程通信的一百種寫法

文章目錄題目方式1:wait notify方式2:LockSupport方式3:Atomic方式4:忙循環方式5:ReentrantLock Condition方式6:ReentrantLock 2 Condition方式7:Bl

原创 詳解單例模式及性能比較

單例模式是java中廣泛運用的一種設計模式。單例模式的基本原則是一個類對外只提供一個實例,單例對象只會被初始化一次。 實現單例的基本思想是構造函數私有化,自己構造一個實例,對外暴露實例的get方法。它的寫法多種多樣,下面就介紹單例

原创 git詳細教程

文章目錄1 版本控制系統1.1 本地版本控制系統1.2 集中化版本控制系統1.3 分佈式版本控制系統1.4 git的優缺點2 git相關術語3 git配置3.1 git三個配置文件3.2 .gitignore文件4 git文件操作

原创 池化技術原理,手寫數據庫連接池

池化技術在後端開發中應用非常廣泛,有數據庫連接池,線程池,對象池,常量池等。池化技術的出現是爲了提高性能。實際就是對一些使用率較高,且創建銷燬比較耗時的資源進行緩存,避免重複地創建和銷燬,做到資源回收利用。 傳統的數據庫連接池有D

原创 詳解單例模式

單例模式是java中廣泛運用的一種設計模式。單例模式的基本原則是一個類對外只提供一個實例,單例對象只會被初始化一次。 實現單例的基本思想是構造函數私有化,自己構造一個實例,對外暴露實例的get方法。它的寫法多種多樣,下面就介紹單例

原创 JDK源碼閱讀,手寫HashMap

HashMap是jdk提供的最常用的容器之一,jdk 1.7及之前版本,HashMap底層基於數組和單鏈表結構,數組每個元素是一對鍵值對對象,該對象包括hash值,key,value以及單鏈表下一個鍵值對的引用。jdk 1.8對H

原创 運用JDK動態代理手寫攔截器

AOP編程(面向切面編程)的原理是動態代理模式,目標對象實現接口時使用JDK動態代理,沒有實現接口時使用cglib動態代理。攔截器的實現就是一種面向切面編程的典型。程序設計者設計一個攔截器接口供開發者使用,開發者只要知道攔截器接口

原创 虛擬機的鎖優化技術

爲了解決併發操作時的數據一致性問題,java提供鎖機制,通過互斥同步或非阻塞同步來保證線程安全。但只要是同步,就會對程序的執行效率產生影響。從JDK1.6開始,HotSpot虛擬機實現了各種鎖優化技術,如適應性自旋、鎖消除、鎖粗化、輕

原创 深入理解“重載”與“重寫”——分派

java語言雖不是動態類型語言,但它具有動態特性,方法重寫是java語言動態特性的一個重要因素。本文將從虛擬機層次去理解方法重載和方法重寫的實現原理。 一、方法調用 在java語言中,方法調用是程序運行時最普遍、最頻繁的操作。方法調用

原创 JDK源碼閱讀,手寫AtomicInteger

關於java併發的三大特性,原子性、可見性、有序性關乎線程安全問題的基本原理,JDK提供java.util.concurrent.atomic包來對數據類型進行包裝,以實現各數據類型的原子性操作。 關於三大特性與volatile關鍵字

原创 虛擬機棧的棧幀都包含些什麼?

一、虛擬機執行引擎 虛擬機執行引擎是java虛擬機核心組成部分之一。虛擬機是相對於物理機的概念,他們都有代碼執行能力,區別在於物理機執行引擎直接建立在處理器、硬件指令集、操作系統層面,而虛擬機的執行引擎是由自己實現,用於執行虛擬機字節

原创 GC前,判斷對象是否死亡

本文基於jdk 1.7,參考《深入了理解java虛擬機》一書 一、概述 垃圾自動回收機制是java語言相比c++的一大特性,但垃圾收集並不是java語言的伴生物,GC的歷史比java更加久遠。爲什麼我們要了解GC和內存分配呢,當需要排

原创 GC算法與垃圾收集器

本文基於jdk 1.7,參考《深入了理解java虛擬機》一書 一、GC算法 垃圾自動回收機制是java語言相比c++的一大特性,但垃圾收集並不是java語言的伴生物,GC的歷史比java更加久遠。爲什麼我們要了解GC和內存分配呢,當需

原创 java對象的創建、內存佈局和訪問定位

java是一門面向對象的編程語言,在java程序運行過程中無時無刻都有對象被創建。 創建對象的方式有多種:new、克隆、反序列化 1、JVM中創建對象的過程 虛擬機遇到一條new指令,開始通過以下步驟創建對象: 第一步: 檢查這個指令