原创 redis系列6-緩存雪崩、緩存擊穿、緩存穿透

我們在使用redis緩存時候常用方案是先查redis,如果redis有返回,沒有則查數據庫,數據庫查出來後放入redis。 1.緩存雪崩 緩存雪崩是指緩存中數據在同一時間大量失效,導致查詢全部落入數據庫。 解決方案: 數據的過期時

原创 redis系列3-發佈訂閱

redis的發佈訂閱很簡單,發佈訂閱的最專業的還是MQ。 MQ裏面發佈訂閱和主題或者隊列打交道。redis裏面發佈和訂閱和channel打交道。 (1)發佈消息 publish channel:aaa “hello” (2)訂閱消

原创 Mybatis系列4-數據源源碼分析

1.工廠模式 mybatis的數據源模塊使用了工廠模式,分析源碼前先講下工廠模式。 (1)簡單工廠模式 簡單工廠模式是工廠類直接根據參數創建不同對象。 public class SimpleFactory { public

原创 Netty系列8-服務器推送

一般客戶端和服務端交互是由客戶端發起一個請求,服務端回答響應。但有時候服務端需要主動的推送數據,比如視頻、彈幕、新聞實時刷新等,這時候就用到了服務器推送技術。 1.Ajax短輪詢 Ajax短輪詢就是前端通過ajax不斷向服務端發送

原创 Docker系列1-Docker介紹

1.Docker優勢 Docker目標是實現輕量級的操作系統虛擬化解決方案。 (1)啓動快 Docker相比於傳統的虛擬機方式要快得多,可以在秒級實現。 (2)資源利用率高 而且對系統資源的利用率很高,一臺主機上可以同時運行數千個

原创 Mybatis系列5-緩存源碼分析

1.裝飾器模式 mybatis緩存模塊用了裝飾器模式,裝飾器模式就是用來在類的原有功能基礎上添加新功能。 裝飾器模式中又四個角色: 組件接口:Component,定義了組件的行爲 組件實現類:ConcreteComponent,

原创 mysql性能優化系列7-索引與執行計劃

1. 索引 1.1 索引分類 (1)主鍵索引 根據主鍵建立索引,不允許重複,不允許空值 (2)唯一索引 索引的列值必須唯一,允許空值 (3)普通索引 普通列構建的索引,無限制 (4)全文索引 用大文本對象的列構建的索引 (5)組合

原创 mysql性能優化系列3-鎖和事務

1. 鎖分類 表級鎖:開銷小,加鎖快,不會出現死鎖。鎖定粒度大,發生鎖衝突的概率最高,併發度最低。適合於以查詢爲主,只有少量按索引條件更新數據的應用。 行級鎖:開銷大,加鎖慢,會出現死鎖。鎖定粒度最小,發生鎖衝突的概率最低,併發

原创 mysql性能優化系列9-分庫分表mycat

1. 分庫分表 如果在數據庫中表的數量達到了一定的量級, 則需要進行分表, 分解單表的大數據量對索引査詢帶來的壓力,方便對索引和表結構的變更 。 如果數據庫的吞吐量達到了瓶頸,就需要增加數據庫實例,利用多個數據庫實例來分解大量的數

原创 mysql性能優化系列8-mysql集羣

1. 爲什麼要使用集羣 (1)可用性 單個數據庫實例宕機,其他的數據庫實例可提供服務,對業務來說基本無感知。同時數據在多個實例之間的複製,提高數據的安全性和可用性。 (2)提高性能 業務對數據的訪問可以分散到不同的數據庫實例上,比

原创 Netty系列5-netty介紹

1.netty的組件 1.1 Channel Channel 是 NIO 基本的結構。官方解釋:它代表了一個用於連接到實體如硬件設備、文件、網絡套接字或程序組件,能夠執行一個或多個不同的 I/O 操作(例如讀或寫)的開放連接。 簡

原创 數據結構算法系列1-哈夫曼樹、AVL樹、紅黑樹

1. 樹的定義 樹是由N個結點構成的有限集合,每個節點都有0個或者多個互不相交的樹,稱爲結點的子樹。 結點的度:結點的子樹個數 樹的度:樹中所有結點中最大的度 葉結點:度爲0的結點 父結點:有子樹的結點是其子樹的根結點的父結點

原创 mysql性能優化系列1-mysql架構

1. mysql性能指標 mysql性能中有兩個重要性能指標:TPS和QPS。 (1)TPS TPS(Transactions Per Second)是指服務器每秒處理的事務數。不過有的存儲引擎不支持事務,無法用這個指標衡量。 T

原创 Tomcat系列1-配置文件

tomcat配置文件目錄是conf目錄,主要配置文件有5個,下面一個個分析下。 1.context.xml Context.xml是Tomcat公用的環境配置,tomcat服務器會定時去掃描這個文件。一旦發現文件被修改(時間戳改變

原创 Netty系列9-服務端源源碼分析

我們以一個入門級別的服務端代碼進行分析。netty其實就是對原生的java nio編程進行了封裝,所以分析中會看到最後調用的都是java原生的API。因爲整個過程代碼比較多,這裏會把一些不是核心流程的代碼省略。 先整體看下服務端的