原创 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)。在大部分情況下,跳錶的效