原创 什麼是反射?

什麼是反射? Java 反射,就是在運行狀態中。 獲取任意類的名稱、package信息、所有屬性、方法、註解、類型、類加載器等 獲取任意對象的屬性,並且能改變對象的屬性 調用任意對象的方法 判斷任意一個對象所屬的類 實例化任意一個類的對象

原创 LongAdder 與AtomicLong有什麼區別?

LongAdder 與AtomicLong有什麼區別? AtomicLong 是基於 CAS 方式自旋更新的;LongAdder 是把 value 分成若干cell,併發量低的時候,直接 CAS 更新值,成功即結束。併發量高的情況,CAS

原创 常見的異常類有哪些?

常見的異常類有哪些? 異常非常多,Throwable 是異常的根類。 Throwable 包含子類 錯誤-Error 和 異常-Exception 。 Exception 又分爲 一般異常和運行時異常 RuntimeException。

原创 javap 指令

javap是 Java class文件分解器,可以反編譯,也可以查看java編譯器生成的字節碼等。 javap命令參數 javap -help 用法: javap <options> <classes> 其中, 可能的選項包括: -

原创 Chapter 6、使用 Spring aop 模塊完成動態代理功能

衆所周知,spring aop 的模塊的實現,藉助動態代理了。那麼我們看一下,如何使用spring aop模塊,完成 Chapter1 中的兩個需求 打印每個請求從開始到結束的耗時 校驗某些請求的當前用戶是否登錄   1、增加對 spri

原创 ReadWriteLock 如何使用?

ReadWriteLock 如何使用? ReadWriteLock,讀寫鎖。 ReentrantReadWriteLock 是 ReadWriteLock 的一種實現。   特點: 包含一個 ReadLock 和 一個 WriteLock

原创 synchronized 和 volatile 的區別是什麼?

synchronized 和 volatile 的區別是什麼? 作用: synchronized 表示只有一個線程可以獲取作用對象的鎖,執行代碼,阻塞其他線程。 volatile 表示變量在 CPU 的寄存器中是不確定的,必須從主存中讀取

原创 synchronized 和 ReentrantLock 區別是什麼?

synchronized 和 ReentrantLock 區別是什麼? synchronized 競爭鎖時會一直等待;ReentrantLock 可以嘗試獲取鎖,並得到獲取結果 synchronized 獲取鎖無法設置超時;Reentra

原创 ThreadLocal 是什麼?有哪些使用場景?

ThreadLocal 是什麼?有哪些使用場景? ThreadLocal 是線程本地存儲,在每個線程中都創建了一個 ThreadLocalMap 對象,每個線程可以訪問自己內部 ThreadLocalMap 對象內的 value。 經典的

原创 Chapter 4、JDK 動態代理

爲了解決靜態代理的帶來的問題: 代理類需要實現與目標類一樣的接口,會導致代理類數量較多,不易維護 一旦接口增加方法,目標類和代理類都需要維護 JDK 提供了動態代理,實現動態代理滿足下列條件: 代理類實現 InvocationHandle

原创 Chapter 5、CGLib 動態代理

爲了解決 JDK 的動態代理無法代理不實現接口的類的問題,可以使用 CGLib 的實現動態代理。 CGLib(Code Generator Library)是一個強大的、高性能的代碼生成庫。底層使用了ASM(一個短小精悍的字節碼操作框架)

原创 throw 和 throws 的區別?

throw 和 throws 的區別? throw: 表示方法內拋出某種異常對象 如果異常對象是非 RuntimeException 則需要在方法申明時加上該異常的拋出 即需要加上 throws 語句 或者 在方法體內 try catch

原创 synchronized 底層實現原理?

synchronized 底層實現原理? 一、作用 確保線程互斥的訪問同步代碼 保證共享變量的修改能夠及時可見 有效解決重排序問題   二、用法 修飾普通方法 修飾靜態方法 修飾代碼塊   三、原理 同步代碼塊是通過 monitorent

原创 Excel 文件的擴展名 .xls 與 .xlsx 的區別

Excel 文件的擴展名 .xls 與 .xlsx 的區別 .xls 是 Excel 1997-2003 版本的格式;.xlsx 是 Excel 2007 版本的格式 .xls 是二進制的複合文檔類型的結構;.xlsx 是用新的基於XML

原创 Java 中的代理

Chapter 1、爲什麼要加代理? Chapter 2、不使用代理 Chapter 3、靜態代理 Chapter 4、JDK 動態代理 Chapter 5、CGLib 動態代理 Chapter 6、使用 Spring aop 模塊完成動