原创 MySQL之日誌

日誌redoundobinlog事務 MySQL日誌有3種: redo 官方文檔:https://dev.mysql.com/doc/refman/8.0/en/innodb-redo-log.html redo log是重做

原创 MySQL之優化

優化慢因優化訪問優化過程優化 慢因 羅列下執行效率變慢的幾個原因: 網絡波動 CPU過載 I/O阻塞 線程上下文切換 調用系統資源阻塞 鎖等待 優化 訪問優化 爲了減少I/O壓力,查詢時,可以通過減少訪問數據量的方式進行優化。

原创 MySQL調優之索引

索引文檔Tree二叉樹BST平衡樹AVL紅黑樹 R-B TreeB-TreeB+Tree結構不同點B+Tree索引種類hash索引優化 文檔 MySQL官網文檔: https://dev.mysql.com/doc/refman

原创 MySQL 調優之執行計劃

執行計劃概述idselect_typetabletypepossible_keyskeykey_lenrefrowsextra 概述 當我們寫完了一條SQL語句給數據庫執行,那數據庫是如何執行的呢?這就涉及到SQL的執行計劃了。

原创 MySQL 調優之性能監控

性能監控MySQL基本架構:show profileperformance schema MySQL基本架構: 想要了解SQL的性能,我們需要先了解下MySQL是如何玩起來的: 連接器:負責跟客戶端建立連接,獲取權限,維持和管

原创 JMockit在工作中的實戰

引入JMockit 項目pom文件中添加插件配置 <plugin> <groupId>com.ctrip.flight.testframework.tools</groupId> <artifactId>ut-m

原创 Redis簡介二(一篇讀懂主從複製)

集羣版一集羣的意義CAP原則集羣實現方案1.解決單點故障問題附帶出現的新問題一致性問題強一致性弱一致性最終一致性數據讀取問題Master單點問題解決Master單點問題Redis的實現2.解決Redis容量問題 在上一篇我們簡單介

原创 JVM之JMM

JMM內存分佈MarkWord運行時數據區棧幀Frame 在上面的Class加載章節中,我們講解了JVM是如何將Class文件加載進內存的。那當我們對這個Class進行實例化之後,JVM又是如何處理這個實例化對象的呢?我們今天來了

原创 硬件級多線程保障

硬件與多線程存儲結構圖數據一致性總線鎖緩存一致性協議緩存行對齊小demoWCBuffer(write combining buffer)CPU亂序執行CPU 內存屏障JVM內存屏障 存儲結構圖 對於現代CPU,廣告中我們經常可以

原创 JVM之Class加載

Class LoadloadClassLoader雙親委派 load 我們編譯後的.class文件是如何被JVM加載進入內存的呢,中間經過了哪些個步驟呢?如下圖: 主要是經過這麼幾個步驟: loading加載:從磁盤讀取xxx

原创 JVM之Class文件

ClassClass解析ClassFile常量表方法表圖示 我們先看下我們的代碼是如何在JVM層面跑起來: JVM能夠執行代碼的關鍵,便是識別這個.Class文件,下面我們一起來認識下這個Class文件。 我們自己隨便定義一個J

原创 讀懂Java線程池

線程池Java容器線程池Executor、Future、FutureTaskExecutorFutureFutureTaskThreadPoolExecutor執行過程實現原理線程複用 Java容器 在Java中,容器共有2大類

原创 Redis簡介四(分區cluster,一致性hash)

今天是哀悼日,向偉大的祖國,以及廣大醫護人員、罹難者致敬。 分區縱向擴展數據該如何拆分?hash散列解決方案一致性hash一致性hash的負載均衡基於一致性hash的客戶端連接hash槽基於hash槽的客戶端連接怎麼接入代理red

原创 kafka簡介一(初識kafka)

kafka簡介消息隊列(MQ)kafka架構存儲有序性存儲時效性消費者消費數據消費組 Consumer Group高吞吐 從這一章節開始,我們開始學習MQ kafka。 簡介 Apache Kafka 是Apache軟件基金會的開

原创 Redis簡介一(單機版)

目錄發展歷程1.0階段2.0階段3.0階段Redis結構圖:二進制安全事務過期淘汰持久化RDB:AOFRedis AOF重寫:執行方式:RDB,AOF混寫 發展歷程 1.0階段 常見文件存儲有兩種方式:磁盤,內存。 涉及到兩種常見