原创 select & epoll

同步、異步、阻塞和非阻塞區別   同步:發出一個功能調用時,在沒有得到結果之前,該調用就不返回   異步:當一個異步過程調用發出後,調用者不能立刻得到結果。實際處理這個調用的部件在完成後,通過狀態、通知和回調來通知調用者   

原创 redis學習筆記(3)---字典dict

字典dict   redis中的字典,即hash表,其實現與Java中的HashMap基本類似。同樣是基於數組和鏈表的,通過“拉鍊法”來處理碰撞。   字典中的每一個key都是獨一無二的,當要加入一個key-value對時,如

原创 redis學習筆記(5)---整數集合intset

intset   當一個集合中只包含整數,且這個集合中的元素數量不多時,redis就會使用整數集合intset作爲集合的底層實現。 整數集合的實現 typedef struct intset { uint32_t enc

原创 redis學習筆記(6)---壓縮列表ziplist

ziplist   壓縮列表是列表鍵和哈希鍵的底層實現之一。   當一個列表鍵只包含少量表項,並且每個列表項要麼是小整數,要麼是較短的字符串 ,那麼redis就會使用壓縮列表來作爲列表鍵的底層實現。   當一個哈希鍵只包含少量

原创 redis服務器模型

  redis作爲一個數據庫,其服務端必須支持海量客戶併發,因此必須採用儘可能高效的服務器模型。   redis支持多種IO複用方式,如kqueue、evport、select、epoll。當運行在不同的操作系統上,會選擇最合適

原创 C、C++中的關鍵字總結

一、C語言的關鍵字 共有32個 1 數據類型關鍵字(12個): char double enum float int long short signed struct union unsigned voi

原创 B樹

  常見的動態查找樹有:二叉查找樹(BST)、平衡二叉查找樹(AVL)、紅黑樹(RB-Tree)、B-tree/B+-tree。   由於前面三種樹都屬於二叉樹,因此樹的高度爲(log2N)。樹查找的時間複雜度與樹的高度有關,因

原创 硬盤的讀寫原理

轉載自:http://blog.csdn.net/hguisu/article/details/7408047           硬盤的種類主要是SCSI 、IDE 、以及現在流行的SATA等;任何一種硬盤的生產都要一定的

原创 redis學習筆記(2)---鏈表adlist

adlist   redis通過prev、next指針實現了雙向鏈表adlist,並通過void*指向數據,用來實現泛型。   與list相關的命令主要有:LPOP,LPUSH,RPOP,RPUSH,LLEN   定義 type

原创 多進程&多線程

原文:http://blog.csdn.net/lishenglong666/article/details/8557215 最原始的博主我沒有找到,只能把我從何處轉的此篇博文的鏈接發出來。感覺這篇博文寫的很棒,特此轉載了 進

原创 redis學習筆記(1)---字符串sds

字符串   在C語言中,字符串通常有以下兩種方式來表示: char *buf1="redis"; char buf2[]="redis";   buf1是通過一個char指針指向一個字符串字面量,其內容是不能改變的,即不能使用bu

原创 C++的多態

1、C++多態   多態,對同一個接口有多種實現方式,即“一個接口,多種實現”,   C++有兩種實現多態的方法:   1)編譯時多態:通過函數重載實現   2)運行時多態:通過虛函數實現 2、編譯時多態:   C++同

原创 gdb的工作原理

一、gdb簡介   gdb:GNU debugger   UNIX及UNIX-like下一個強大的命令行的調試工具   gdb調試的整體架構如下圖所示:      可以發現gdb調試不管是本地調試還是遠程調試,都是基於

原创 C++內存管理

轉載自:http://blog.csdn.net/zhanghefu/article/details/5003407 C++內存管理 [導語] 內存管理是C++最令人切齒痛恨的問題,也是C++最有爭議的問題。本文將從內存管理、內

原创 redis學習筆記(4)---跳錶zskiplist

跳錶   跳錶(skiplist)是一種有序的數據結構,它通過在每個節點中維護多個指向其它節點的指針,來達到快速訪問的目的。   跳錶查找的時間複雜度平均爲O(lgn),最壞情況下退化爲單鏈表的O(n)。在大部分情況下,跳錶的效