原创 mysql 索引相關(InnoDB存儲引擎)

索引的常見模型  索引的出現是爲了提高查詢效率,但是實現索引的方式卻有很多種,所以這裏也就引入了索引模型的概念。可以用於提高讀寫效率的數據結構很多,介紹三種常見、也比較簡單的數據結構,它們分別是哈希表、有序數組和搜索樹。 哈希表     

原创 進程的各種ID

pid(進程ID) UNIX進程總是會分配一個號碼用於在其命名空間中唯一的標識他們。該號碼被稱爲進程ID號,簡稱PID。用fork或者clone產生的每個進程都由內核自動的分配一個新的唯一的PID值。 #include <sys/t

原创 redis 源碼分析--鏈表

簡介        鏈表在Redis中的應用非常廣泛,比如列表鍵的底層實現之一就是鏈表。當一個列表鍵包含了數量表較多的元素,又或列表中包含的元素都是比較長的字符串時,Redis就會用鏈表作爲列表鍵的底層實現。 redis鏈表實現所需的結構

原创 kafka協議

一、簡介 Kafka 是一個高吞吐量、分佈式的發佈—訂閱消息系統。據Kafka 官方網站介紹,當前的Kafka 已經定位爲一個分佈式流式處理平臺(a distributed streaming platform),它最初由LinkedIn

原创 SMTP_POP3與MIME協議整理

郵件協議整理 寫在前面 最開始的郵件傳輸是根據SMTP實現的,但由於歷史原因,Internet上的很多網關不能正確傳輸8 bit內碼的字符,比如漢字等。所以出現了對郵件內容編碼的需要。這樣,在郵件協議中除了smtp、pop外,又增加了與編

原创 redis 源碼分析--整數集合

簡介 整數集合是集合鍵的底層實現之一,當一個集合只包含整數值元素,並且這個集合的元素數量不多時,Redis就會使用整數集合作爲集合鍵的底層實現。 實現 typedef struct intset { // 編碼方式

原创 linux 網絡編程各種坑

TCP/IP協議相關 1、延時ack 當協議棧接受到TCP數據時,並不一定會立刻發送ACK響應,而是傾向於等待一個超時或者滿足特殊條件時再發送。對於Linux實現,這些特殊條件如下: 1)收到的數據已經超過了 full frame si

原创 redis 源碼分析--字典

簡介    字典,又稱爲符號表(symbol table)、關聯數組(associative array)或者映射(map),是一種用於保存鍵值對(key-value pair)的抽象數據結構。   Redis 的字典使用哈希表作爲底層實

原创 緩衝與非緩衝I/O、直接與非直接I/O、阻塞與非阻塞I/O、同步與異步I/O

文件讀寫方式的各種差異,導致I/O的分類多種多樣。最常見的有緩衝與非緩衝I/O、直接與非直接I/O、阻塞與非阻塞I/O、同步與異步I/O。 根據是否利用標準庫緩存,可以把文件I/O分爲緩衝I/O與非緩衝I/O。 緩衝I/O,是指利用標準

原创 redis 源碼分析--跳躍表

簡介 跳躍表(skiplist)是一種有序的數據結構,它通過在每個節點中維持多個指向其他節點的指針,從而達到快速訪問節點的目的。跳躍表支持平均O(logN)、最壞O(N)複雜度的節點查找,還可以通過順序性操作來批量處理節點。 Redis只

原创 redis 源碼分析--字符串

簡介 Redis雖然是由C語言實現的,但是Redis沒有直接使用C語言傳統的字符串表示,而是構建了一種名爲簡單動態字符串(simple dynamic string, SDS) 的抽象類型,並將SDS用作Redis的默認字符串表示。 SD

原创 一個簡單的內存池

在研究nginx源碼,以下代碼完全摘抄自nginx內存池源碼。 mem_pool.h #ifndef _MEM_POOL_H #define _MEM_POOL_H typedef unsigned char u_char; t

原创 中國支付清算系統簡介

| 中國的支付清算有兩套體系 當你去ATM取錢時,用的是央行的CNAPS(中國現代化支付清算系統) 當你用支付寶買買買時,用的是第三方支付的清算系統 這裏先介紹第一部分:CNAPS | 當你在ATM取錢時,銀行都做了什麼? 我們先

原创 Linux vmstat命令詳解

vmstat是Virtual Meomory Statistics(虛擬內存統計)的縮寫,可對操作系統的虛擬內存、進程、CPU活動進行監控。是對系統的整體情況進行統計,不足之處是無法對某個進程進行深入分析。 別   我們知道,直接從物理內

原创 git checkout 文件 Permission denied錯誤

git 切換來切換去,出現一個文件被修改,然後執行git checkout出現如下問題, 環境是本地文件掛載到服務器上的 1、查看權限發現沒有問題。 2、git 上執行rm 刪除,沒有報錯但是查看文件還是存在,執行git status 還