原创 Mybaits 常見面試題

1、談談你對 MyBatis 的理解? Mybatis是一個半ORM(對象關係映射)框架,它內部封裝了 JDBC,開發時只需要關注 SQL 語句本身,不需要花費精力去處理加載驅動、創建連接、創建 Statement 等繁雜的過程。程序員直

原创 6. 秒殺系統-影響性能的因素和提高系統性能的方法

影響性能的因素        “性能”,服務設備不同對性能的定義也是不一樣的,例如 CPU 主要看主頻、磁盤主要看 IOPS(Input/Output Operations Per Second,即每秒進行讀寫操作的次數)。我們討論的主要

原创 AQS 源碼解析

AbstractQueuedSynchronizer是Java併發包java.util.concurrent的核心基礎組件,是實現Lock的基礎。 1. AQS類結構 屬性 // 屬性 private transient volatil

原创 AQS 詳解

       AQS的全稱 AbstractQueuedSynchronizer,抽象隊列同步器。這個類在 java.util.concurrent.locks 包下面。AQS 是一個用來構建鎖和同步器的框架,使用AQS能簡單且高效地構造

原创 對鎖的理解和手動模擬死鎖

1. 死鎖 死鎖是指兩個線程同時佔用兩個資源,又在彼此等待對方釋放鎖資源,如下圖所示: 演示代碼如下: import java.util.concurrent.TimeUnit; public class LockExampl

原创 synchronized 和 ReentrantLock 源碼解析

1. synchronized 和 ReentrantLock 是如何實現的,它們之間的區別 synchronized 屬於獨佔式悲觀鎖,是通過 JVM 隱式實現的,synchronized 只允許同一時刻只有一個線程操作資源。

原创 ThreadPoolExecutor 的參數含義及源碼解析

1. 線程池 線程池是爲了避免線程頻繁的創建和銷燬帶來的性能消耗,而建立的一種池化技術,它是把已創建的線程放入“池”中,當有任務來臨時就可以重用已有的線程,無需等待創建的過程,這樣就可以有效提高程序的響應速度。若要使用線程池一定離

原创 線程的狀態、工作原理和常見面試題

1. 線程的狀態 線程的狀態在 JDK 1.5 之後以枚舉的方式被定義在 Thread 的源碼中,它總共包含以下 6 個狀態: NEW,新建狀態,線程被創建出來,但尚未啓動時的線程狀態; RUNNABLE,就緒狀態,表示可以運行

原创 HashMap 源碼分析及 JDK8 的優化

1. 底層數據結構 在JDK1.7中HashMap是以數組加鏈表的形式組成的,JDK1.8之後新增了紅黑樹的組成結構,當鏈表大於8並且容量大於64時,鏈表結構會轉換成紅黑樹結構,它的組成結構如下圖所示: 數組中的元素我們稱之爲哈

原创 String源碼解析及常見面試題

一、String 源碼解析 1. 數據結構 以主流的 JDK 版本 1.8 來說,String 內部實際存儲結構爲 char 數組,源碼如下: public final class String implements java.i

原创 Mybatis 中的事務

1. Mybaits中的事務接口Transaction public interface Transaction {     Connection getConnection() throws SQLException;     voi

原创 紅黑樹

       紅黑樹是一個平衡的二叉樹,但不是一個完美的平衡二叉樹。雖然我們希望一個所有查找都能在 lgN 次比較內結束,但是這樣在動態插入中保持樹的完美平衡代價太高,所以,我們稍微放鬆一下限制,希望找到一個能在對數時間內完成查找的數據結

原创 10. 鎖優化

1.  自旋鎖與適應性自旋鎖        若物理機器上有一個以上的處理器,能讓兩個或兩個以上的線程同時執行,我們可以讓後面的請求鎖的那個線程“稍等一下”,但是不放棄處理器的執行時間,看看持有鎖的線程是否會很快就釋放鎖。爲了讓線程等待,我

原创 Synchronized 詳解

一、Synchronized 的基本使用 Synchronized 的作用主要有三個: 確保線程互斥的訪問同步代碼 保證共享變量的修改能夠及時可見 有效解決重排序問題 從語法上講,Synchronized 總共有三種用法: 修飾實例方法,

原创 單點登錄系統的實現1

一、什麼是單點登錄?        單點登錄的英文名叫做:Single Sign On(簡稱SSO)。在初學/以前的時候,一般我們就單系統,所有的功能都在同一個系統上。爲了合理利用資源和降低耦合性,於是把單系統拆分成多個子系統。簡單來說,