原创 mysql性能優化系列4-在線修改表結構

修改表結構會導致表鎖,數據量大修改數據很長,導致大量操作阻塞。 解決方案:可以使用pt-online-schema-change,它的大致過程爲: 首先創建一個和原表一樣的空的表結構 修改表結構,copy原表中的數據到新表 在原

原创 mysql性能優化系列5-三大範式

1. 三大範式 (1)第一大範式 數據庫表中的所有字段都只具有單一屬性,單一屬性的列是由基本數據類型所構成。 (2)第二大範式 表中只具有一個業務主鍵,也就是說不能存在非主鍵列只對部分主鍵的依賴關係。 (3)第三大範式 每一個非主

原创 數據結構算法系列2-圖

圖是由頂點(vertex)和邊(edge)組成的一種結構。頂點的集合V,邊的集合是E,所以圖記爲G = (V,E)。 有向圖是邊有方向,無向圖是邊之間沒有方向。無向圖頂點的邊數叫度,有向圖頂點的邊數叫出度和入度 。連通圖是圖的任

原创 mysql性能優化系列2-mysql引擎

MySQL中數據以各種不同的方式存儲在文件或者內存中。這些不同的方式以及配套的相關功能被稱作存儲引擎或者表類型。 1. MyISAM mysql5.5之前默認的存儲引擎,它不支持事務,也不支持外鍵,但是訪問速度快。只支持表級鎖,支

原创 Netty系列10-客戶端源碼分析

客戶端的流程和服務端的大致相同,在服務端分析過的這裏不再分析,看這篇文章前可以先看下服務端源碼分析的文章。先大致看下客戶端的代碼。 public void start() throws InterruptedException

原创 數據結構算法系列3-排序算法

1. 冒泡排序 從數組頭開始,比較相鄰的元素。如果第一個比第二個大(小),就交換它們兩個;對每一對相鄰元素作同樣的工作,從開始第一對到尾部的最後一對,這樣在最後的元素應該會是最大(小)的數;重複步驟1~2,重複次數等於數組的長度,

原创 mysql性能優化系列6-慢查詢

1.慢查詢 慢查詢日誌是mysql用來記錄執行時間超過long_query_time參數設定的時間閾值的SQL語句。默認慢查詢日誌是關閉的。 1.1 慢查詢配置 slow_query_log:打開、關閉慢查詢日誌 slow_qu

原创 Netty系列6-TCP粘包拆包

(1)TCP粘包拆包現象 假設客戶端分別發送了兩個數據包D1和D2給服務端,由於服務端一次讀取到的字節數是不確定的,故可能存在以下4種情況。 假設客戶端分別發送了兩個數據包D1和D2給服務端,由於服務端一次讀取到的字節數是不確定的,

原创 Netty系列7-編解碼器

編碼器是將消息轉換爲適合於傳輸的格式,一般是二進制;而對應的解碼器則是將網絡字節流轉換回應用程序的消息格式。因此,編碼器操作出站數據,而解碼器處理入站數據。我們上一篇文章解決粘包拆包用到的也是編解碼器。 1. 解碼器 解碼器是負責將入

原创 Netty系列4-buffer

(1)buffer NIO通信中數據不會和通道直接交互。對於讀來說,數據總是先從通道讀到緩衝,應用程序再讀緩衝的數據。對於寫,數據也是先寫入緩衝,再通過通道把緩衝的數據發送出去。 緩衝區本質上是一塊可以讀寫的內存,這塊內存被包裝成NI

原创 Tomcat系列4-內嵌Tomcat

我們在前邊幾篇文章分析了tomcat的初始化和啓動流程,現在看下springboot等內嵌的tomcat是怎麼啓動的。 1.Tomcat7RunnerCli 內嵌tomcat的入口是在Tomcat7RunnerCli,看下它的main

原创 Netty系列3-BIO、AIO、NIO

客戶端和服務端通信本質上就是服務端監聽端口,客戶端發起連接請求,通過三次握手連接,如果連接成功建立,雙方就可以通過套接字socket進行通信。 根據通信實現方式的不同又分爲BIO、AIO、NIO三種。 1.BIO BIO是同步阻塞模型

原创 Tomcat系列3-啓動階段源碼分析

Tomcat的初始化流程結束後,就開始Tomcat各組件啓動流程。初始化方法是Bootstrap的main方法中的daemon.load(args),啓動就是它後續的daemon.start()。這個方法調用的是Catalina的st

原创 Tomcat系列2-初始化階段源碼分析

從Tomcat的啓動腳本中可以看出Tomcat的入口是Bootstrap類的main方法。 Tomcat啓動分爲初始化init和啓動start兩個階段。我們先分析初始化init階段。 1.Bootstrap類 (1)main方法

原创 Mybatis系列9-mybatis插件源碼分析

mybatis的插件開發使用了責任鏈模式,老規矩先介紹設計模式。 1. 責任鏈模式 責任鏈模式(Chain of Responsibility Pattern)爲請求創建了一個處理請求的鏈。這個請求由責任鏈中的處理器一個接一個的處理。