原创 Java 之 線程的分類

Java中線程的分類 線程主要可以分爲 主線程:即main()方法 子線程:非主線程皆爲子線程 子線程地分類 守護線程:主要指爲主線程提供通用服務的線程,比如GC線程。主線程一旦結束或者被銷燬,守護線程也同步結束和銷燬。 非守護線程:即用

原创 MyBatis 學習筆記以及心得體會

1.傳統的JDBC方式 註冊JDBC驅動:  Class.forName("com.mysql.jdbc.Driver");          創建連接:  DriverManager.getConnection(DB_URL, USER

原创 Java 線程的啓動和停止原理

線程的啓動和停止原理 線程的啓動 總所周知,我們在Javachen程序中啓動一個線程,需要調用該線程的start()方法來啓動線程。 也就是我們通過Java中定義的start()方法來啓動一個線程 public synchronized

原创 MyBatis 與Spring整合後一級緩存爲什麼會生效

    當我們單獨使用MyBatis的時候,一級緩存在一個會話中存在。當SqlSession對象打開就已經存在,當SqlSession對象關閉時緩存數據被清空      當與Spring整合的時候。Spring對MyBatis中SqlSe

原创 Java 關於對象在內存中的佈局

在Hotspot虛擬機,對象在內存中的存儲佈局可以分爲三個區域 1.對象頭(Header) 對象頭包含兩部分,第一部分存儲自身運行時的數據。 如HashCode  GC分代年齡  鎖狀態標誌  線程持有鎖  偏向線程ID  偏向時間戳 官

原创 MyBatis 需要注意的一些問題

1.使用mybatis二級緩存的時候需要注意的問題 二級緩存中存放的數據量不能過大。二級緩存是基於命名空間的,當多個命名空間同時操作同一張表的時候,不推薦使用二級緩存。因爲當一個命名空間對錶中的數據進行update、insert或dele

原创 SpringMVC運行時序圖以及源碼解析

SpringMVC運行時序圖 SpringMVC工作機制 1.ApplicationContext初始化時用Map保存所有的url和controller對應關係。 2.根據請求URL找到對應的controller,並從controlle

原创 SpringAOP運行時序圖

時序圖

原创 Java---ReentrantReadWriteLock---源碼分析

ReentrantReadWriteLock ReadLock readLock:時序圖 readLock:源碼分析 tryAcquiredShared(int unused) protected final int tryAcqui

原创 Java_ReentrantLock_重入鎖之非公平鎖NonfairSync源碼分析

1.以非公平鎖爲例,來看看 lock 中的實現 1. 非公平鎖和公平鎖最大的區別在於,在非公平鎖中我搶佔鎖的邏輯是,不管有沒有線程排隊,我先上來 cas 去搶佔一下 2. CAS 成功,就表示成功獲得了鎖 3. CAS 失敗,調用 ac

原创 學習Spring之Srping IOC運行時序圖

加載XML文件——創建IOC容器時序圖 源碼理解 首先需要找到入口。IOC容器初始化運行的入口。 回顧 什麼是SpringIOC IOC(Inversion Of Control)控制反轉,所謂控制反轉,就是把我們代碼中需要實現的對象的

原创 Java-進階之問題記錄-001

1.Java什麼時候用重載,什麼時候用重寫? 重載是多樣性,重寫是增強劑。            Java中的重載overload最重要且最常用的應用場景是構造器的重載,構造器重載後,提供多種參數形式的構造器,可以應對不同的業務需求,加強

原创 《MyBatis應用分析與最佳實踐-HomeWork》

1.resultType和resultMap的區別 在MyBatis參考文檔中(版本3.5.1)中是這樣描述的 個人理解和總結 resultType 當我們從數據庫查詢出一個結果,該結果能夠與Java中的對象相匹配的時候,使用resul

原创 Oracle-函數用法積累-two

trunc函數 TRUNC函數返回以指定元素格式截去一部分的日期值(摘自百度百科) 語法格式:TRUNC(date, fmt) date ---- 日期值 fmt ---- 日期格式 常用 trunc(sysdate,'yyyy') --

原创 Oracle-函數用法積累-One

1. 表回退操作。 ALTER TABLE tableOne ENABLE ROW MOVEMENT; FLASHBACK TABLE tableOne TO TIMESTAMP to_timestamp('2018-04-24 0