原创 mysql索引優化-實戰force index

實戰: 創建一張表index_test CREATE TABLE `index_test` (   `id` bigint(20) NOT NULL COMMENT '主鍵',   `uuid` varchar(64) NOT NULL

原创 JVM學習總結——JVM優化(jvm參數)

問題: 最近接觸一個項目,項目灰度測試時發現3次下單2次超時。這就比較恐怖了,業務方之間反饋出來了,通過排查日誌發現一個組裝參數的方法耗時大概300~500ms,現在的RPC接口肯定不能接受。 排查方式: 通過觀察Young GC 發現一

原创 JVM學習總結——Minor GC ,Full GC 觸發條件

       一、Minor GC是什麼時候觸發的?           new 出來的對象(除大對象外)直接在年輕代中的Eden區進行分配,如果Eden區域沒有足夠的空間,           那麼就會觸發YGC(Minor GC),Y

原创 JVM學習總結——垃圾收集器

垃圾收集器 Serial收集器:(搭配 CMS,Serial Old)單線程串行收集器。新生代採用複製算法,老年代採用標記-整理算法。 它在進行垃圾收集工作的時候必須暫停其他所有的工作線程( "Stop The World" ),直到它收

原创 JVM學習總結——JVM與鎖

jvm中有以下三種鎖(由上到下越來越“重量級”): 偏向鎖 輕量級鎖 重量級鎖 其中重量級鎖是最初的鎖機制,偏向鎖和輕量級鎖是在jdk1.6加入的,可以選擇打開或關閉。 如果把偏向鎖和輕量級鎖都打開,那麼在java代碼中使用synchro

原创 字符串匹配算法——KMP

    KMP算法是一種改進的字符串匹配算法,KMP算法的核心是利用匹配失敗後的信息,儘量減少模式串與主串的匹配次數以達到快速匹配的目的。具體實現就是通過一個next()函數實現,函數本身包含了模式串的局部匹配信息。KMP算法的時間複雜度

原创 JVM學習總結——JVM中對象創建和內存分配

創建對象:當java虛擬機遇到new 指令時。                  首先檢查指令參數能否在常量池中定位到一個類的引用、加載、解析、初始化。                   如果沒有那必須先執行相應的類加載過程。 指針碰撞

原创 JVM學習總結——.class文件結構

例子: CA FE BA BE 00 00 00 34  00 25 0A 00 09 00 14 09 00 15 00 16 08 00 17 0A  00 18 00 19 08 00 1A 08 00 1B 08 00 1C 07

原创 JVM學習總結—— JVM內存結構

運行時內存結構(邏輯區分並非物理區分) 1.程序計數器(Program Counter Register) 2.虛擬機棧 3.本地方法棧 4.堆 5.方法區 6.運行時常量池 7.直接內存 1.程序計數器(線程私有)    程序計數器(

原创 JVM學習總結——JVM內存回收算法

那些內存需要回收? Java堆和方法區(廢棄常量,無用的類) 廢棄的常量:沒有任何引用指向常量池中的常量,也沒有使用字面量。 無用的類(類卸載):我們知道,class文件內存加載的時候,會加載到方法區(或元空間)。            

原创 JVM學習總結——常識原理解釋

1. 全局變量使用static關鍵字修飾和不修飾區別。(類變量和實例變量區別?)     區別有兩點:           1) 編譯階段(.java文件編譯爲.class文件)           類變量編譯階段變量值放入自身類的屬性表

原创 JVM學習總結——JVM優化(JIT)

JIT的全稱是Just in time compilation,中文稱之爲即時編譯。 JIT編譯器作用 當虛擬機發現某個方法或代碼塊運行特別頻繁時,就會把這些代碼認定爲 Hot Spot Code 熱點代碼,爲了提高熱點代碼的執行效率,在

原创 JVM學習總結——內存加載.class文件過程。

字節碼(.class)文件如何加載到JVM中?     BootStrapClassLoader總結: 1.根加載器使用 C/C++ 編寫,我們無法在 Java 中獲得其實例 2.根加載器默認加載系統變量 sun.boot.class.

原创 JVM學習總結—— JVM中G1具體回收過程

G1垃圾收集器 創建對象分配策略 1. TLAB(Thread Local Allocation Buffer) 線程本地分配緩衝區 2. Eden區中分配 3. Humongous區分配 Humongous:如果一個對象佔用的空間超過

原创 JVM學習總結——編譯原理

總結 將 .java內容讀取到內存中 readSource(filename)) 詞法分析(將源碼代碼的字符流轉變爲標記(Token)集合) 語法分析(產生語法樹) 填充符號表 註解處理 語義檢查(1.標註檢查。2.數據和控制流分析。3.