原创 線程中斷到底是什麼

提示:更多優秀博文請移步博主的GitHub倉庫:GitHub學習筆記、Gitee學習筆記 我們如何讓線程安全的停止呢? 1. 線程自然終止 自然執行完或拋出未處理異常。 2. stop(),resume(),suspend()

原创 爲什麼我們要用Spring Boot

  最近我面試了不少人,其中不乏說對 Spring Boot 非常熟悉的,然後當我問到一些 Spring Boot 核心功能和原理的時候,沒人能說得上來,或者說不到點上,可以說一個問題就問趴下了! 這是我的問題: 我看你上面寫了熟悉 Sp

原创 向數據庫中插入千萬級數據

1. 數據庫環境 1.1 MySQL版本 我用到的是MySQL5.6.38版本。 1.2 數據表創建 CREATE TABLE `student` ( `id` char(32) NOT NULL, `t_name` va

原创 數據庫索引對高併發環境下查詢時間的提升

1. 環境準備 1.1 數據準備 在對查詢速度進行研究之前,我們需要較大數據量進行支撐。詳見 《向數據庫中插入千萬級數據》 1.2 更改max_connections屬性 默認情況下MySQL對最大連接數的限制爲151(具體值視版

原创 volatile關鍵字到底有什麼作用

提示:更多優秀博文請移步博主的GitHub倉庫:GitHub學習筆記、Gitee學習筆記 volatile是Java提供的一種輕量級的同步機制。Java 語言包含兩種內在的同步機制:同步塊(或方法)和 volatile 變量,

原创 爲什麼wait()、notify()方法需要和synchronized一起使用

提示:更多優秀博文請移步博主的GitHub倉庫:GitHub學習筆記、Gitee學習筆記 Obj.wait()與Obj.notify()必須要與synchronized(Obj)一起使用,也就是wait,與notify必須通過

原创 圖解JDK7及其早期版本HashMap擴容死鎖問題

在JDK7及其早期版本中HashMap在多線程環境下會發生擴容死鎖的問題。 HashMap中在創建時默認會有16個桶,有一個默認加載因子0.75,如果Map中的Entry數量達到閾值(16*0.75)就會進行擴容,將原來的桶的數量

原创 顯示鎖之ReentrantLock

ReentrantLock顯示鎖 在Java 1.5之前,協調對共享對象的訪問可以使用的機制只有synchronized和volatile兩種。Java1.5增加了一種新的機制:ReentrantLock。但ReentrantLo

原创 事務併發所帶來的問題

一個數據庫可能擁有多個訪問客戶端,這些客戶端都可以併發方式訪問數據庫。數據庫中的相同數據可能同時被多個事務訪問,如果沒有采取必要的隔離措施,就會導致各種併發問題,破壞數據的完整性。這些問題可以歸結爲5類,包括3類數據讀問題( 髒讀

原创 一文看懂Spring事務的七種傳播行爲

什麼叫事務傳播行爲?聽起來挺高端的,其實很簡單。 即然是傳播,那麼至少有兩個東西,纔可以發生傳播。單體不存在傳播這個行爲。 事務傳播行爲(propagation behavior)指的就是當一個事務方法被另一個事務方法調用時,這個

原创 使用IDEA導入MyBatis源碼進行調試

一. 下載源碼 GitHub地址:https://github.com/mybatis/mybatis-3 複製上面的地址執行下列命令: git clone https://github.com/mybatis/mybatis-

原创 自定義類加載器實現字節碼文件的加密

標準的字節碼文件是可以被反編譯: 但我們可以對User.class文件進行加密: package _day05._01自定義類加載器; import java.io.*; /** * 加密工具類,對文件進行加密(對每個字

原创 源碼分析——MyBatis與Spring整合後如何保證SqlSession線程安全

在MyBatis架構中SqlSession是提供給外層調用的頂層接口,它是MyBatis對外暴露的最重要的接口,用戶通過該接口即可完成數據庫的全部操作。在上文中我們明白了我們常用的Mybatis動態代理開發實際上底層還是依賴於Sq

原创 源碼分析——MyBatis核心接口SqlSession的實現原理

在上一篇文章中(《MyBatis動態代理調用過程源碼分析》),我們知道了MyBatis動態代理的核心是MapperProxy,在它內部封裝了動態代理的調用邏輯,而我們也知道了在使用動態代理進行操作的時候實際上還是調用的SqlSes

原创 MyBatis反射模塊源碼分析

說明:本文參考至https://www.jianshu.com/p/baba62bbc107 MyBatis 在進行參數處理、結果映射時等操作時,會涉及大量的反射操作。爲了簡化這些反射相關操作,MyBatis 在 org.ap