原创 使用final修飾局部變量???

在編程中我們偶爾會看到如下的代碼: public void foo(final int arg){ final int localData = 0; // ... } 以及與之相似

原创 Java-Type簡單分類

(1)ParameterizedType: 參數化類型,例如List<T>。 (2)GenericArrayType: 泛型數組類型,例如T[]。 (3)TypeVariable: 泛型的類型變量,例如T。 (4)Class: 類型對象,

原创 java接口類支持多繼承

一個類只能extends一個父類,只能有一個父類,但可以implements多個接口。java通過使用接口的概念來取代C++中多繼承。與此同時,一個接口則可以同時extends多個接口,卻不能implements任何接口。Java中的接口

原创 重載與重寫(overload and override)

在java編程中經常會遇到重載和重寫,剛接觸java的時候對這對概念比較懵比,也不能理解其中的區別,後來在逐漸的學習中更加深刻的理解了其中的原理。哎,說來還是基礎知識學的不紮實,這些都是大學期間偷懶欠下的帳。 (一)簡單理解

原创 Spring事務那些事兒

(一)事務的隔離級別 大家都知道事務有四個屬性,即ACID(原子性、一致性、隔離性、持久性)。這四個裏面稍微難理解點的是一致性和持久性。所謂的一致性是指:事務執行前後數據的一致性狀態,例如事務執行前用戶有1萬元,事務回滾後用戶仍

原创 JVM中安全點safePoint有哪些?

安全點是jvm選來進行GC的線程中斷點。線程在執行到安全點後詢問GC標誌位,若標誌位標識將要進行GC,則程序主動中斷掛起線程等待GC。安全點的選定基本上是根據"是否具有讓程序長時間執行的特徵"爲標準進行選定的。目前會產生安全點的主

原创 深入瞭解Spring IoC

IoC全稱Inversion of Control即控制反轉,它還有一個別名依賴注入。spring利用Ioc容器幫我們自動構建對象及注入依賴對象,減少了對象構建與業務代碼的耦合,使得我們能夠更加高效愉快的寫bug🐞了( ̄▽ ̄)"。

原创 JVM中GC Root對象有哪些?

衆所周知,我們目前最常用的虛擬機hotspot使用可達性分析來進行垃圾回收,而可達性分析需要依賴GC Root。下面我就來介紹下可以作爲GC Root的對象。 (一)虛擬機棧中引用的對象 虛擬機棧中的引用的對象可以作爲GC R

原创 帶你理解Spring AOP

AOP概述 在我們的日常開發中,除了正常業務邏輯外,還可能經常會需要在業務邏輯的特定位置加入日誌,以便於調試和問題分析。但是這種插入日誌的邏輯和業務邏輯間並不存在連續性和依賴性,這種邏輯侵入隨着項目的不斷髮展,會導致項目越來越來

原创 同步/異步&阻塞/非阻塞

平時開發中經常會聽大家說到什麼同步阻塞、異步非阻塞等等名詞,這裏我談下自己對這兩個名詞的理解,僅僅是個人觀點,並不一定正確。 1.阻塞/非阻塞 我認爲判定阻塞還是非阻塞,取決於線程所做的操作是否需要將線程掛起等待。 舉個例子,我們

原创 從源碼看ConcurrentHashMap

簡介 ConcurrentHashMap是線程安全的HashMap實現,這裏主要研究JDK8後的ConcurrentHashMap,下面是ConcurrentHashMap的簡單結構: ConcurrentHashMap基於Has

原创 一起嘮嘮分佈式鎖

(1)分佈式鎖和分佈式事務的區別 1.分佈式鎖是在集羣環境下,用來控制不同機器對全局共享資源的訪問。 2.分佈式事務是在集羣環境下,用來保證全局事務的一致性,保證多個數據庫的數據整體上能正確的從一個一致性狀態轉到另一個一致性狀態。

原创 cpu執行命令方式

(一)有序處理器 早期的處理器爲有序處理器(In-order processors),有序處理器處理指令通常有以下幾步: 指令獲取 如果指令的輸入操作對象(input operands)可用(例如已經在寄存器中了),則將此指令分發到適當的

原创 【精心總結】java內存模型和多線程必會知識

內存模型 (1)java內存模型到底是個啥子東西? java內存模型是java虛擬機規範定義的一種特定模型,用以屏蔽不同硬件和操作系統的內存訪問差異,讓java在不同平臺中能達到一致的內存訪問效果,是在特定的協議下對特定的內存或高

原创 如何使用log.debug()

log4j是一個開源的日誌,共分爲六個等級:LOG、DEBUG、INFO、WARN、ERROR、和FATAL。 DEBUG是其中的一種日誌級別。一般我們用這個方法的時候都是這樣的: if(log.isDebugEnabled()){