原创 通用面試題:海量數據去重

那些優雅的數據結構(1) : BloomFilter——大規模數據處理利器 http://www.cnblogs.com/heaad/archive/2011/01/02/1924195.html   mapreducehttp://bl

原创 關於STL迭代器失效的思考.

問題:         有一個stl容器, 有一個已經獲取到的容器的迭代器, 當向stl容器中新增元素或刪除元素時, 先前拿到的迭代器還有用嗎? 也就是迭代器是否失效了?     迭代器失效,有兩個層面的意思,     1) 無法通過迭

原创 time和gettimeofday的性能差異

    兩個都是glibc獲取時間的函數,    gettimeofday支持返回微妙的精度, time返回秒的精度,  在性能上有差別嗎?     基本上沒有性能差別, 因爲time其實就是把gettimeofday包裝了一層. 但是測

原创 如何用gdb在一個文件的全部函數上打斷點?

如何用gdb在一個文件的全部函數上打斷點?   1389Vstux8d0DBXpprTpWzPQo8yEora3knWIqk2MNoiGyS5ocMI 如何用gdb在一個文件的全部函數上打斷點? 有的時候,想理清一個模塊代碼

原创 sunday 字符串匹配算法的實現(支持二進制匹配)

之前在解析multi-part formdata協議的http請求包時, 用字符串匹配的方式尋找包體中的 boundary標記.  這就涉及到了字符

原创 彙編:bsfl 指令

AT&T彙編語法: bsfl op1 op2 含義 掃描操作數op1,找到到第1個非0bit位, 把非0bit位的索引下標(從0計算)存入op2. 掃描從低位到高位掃描(也就是從右->左) 舉例: 操作數:1 第一個非0bit的位置 0

原创 linux kernel 的hash散列函數 : hash_long

教課數上的hash函數一般都是對模數取餘,模數一般就是hash表的長度(桶的個數),通常爲了較好的散列性,還把模數調整爲一個質數.那麼內核中的has

原创 坑爹的宏語法...宏名字和括號間不能有空格!

某日, 寫了一個簡單的內聯彙編腳本, 死活編譯不過去, 和原版的彙編一點一點對比, 基本上都一樣了, 可就是別人寫的可以編譯過去, 我寫的就是編譯不過去. 彙編腳本如下: #undef BYTE_COPY_FWD #define BYTE

原创 LRU Cache

設計一個LRU cache, 如果想時間複雜度O(1), 則必須用到hash. 這裏有一個使用STL實現的lru cache 模板類源碼 LRU cache implementation in C++ http://timday.bit

原创 cpu cache line 原理

參考: 一個講解Direct Mapped Cache非常深入淺出的文章:http://www.cs.umd.edu/class/sum2003/cmsc311/Notes/Memory/direct.html CPU cache

原创 linux 0.11內核源碼 malloc 的實現

這裏分析linux 0.11內核源碼中, 給內核使用的malloc函數(注意,是給內核使用的,不是給應用程序使用的,不是glibc) 直接上圖: 解釋:     這個圖只舉例bucket_size=16的桶列表.    第一個桶描述符

原创 多級hash在內核中應用: 變種radix tree在page cache中的應用

參考: radix tree in kernel : Trees I: Radix treeshttp://lwn.net/Articles/175432/ 普通的radix tree(注意,這不是內核中用的radix tree哦)ht

原创 百度面試題:自己實現strlen,考慮32位,64位機器,考慮性能

沒辦法, 現在的大公司面試就面這個, 你不得不研究下底層的實現.要點:1) 字長邊界對齊以便加快速度. 對齊時也要考慮機器的位數哦. 2) 一次測試4個(或者8個)字節中是否含零的技巧. 3) 需要自適應32bit/64bit機器.   

原创 迅雷面試題: 模擬銀行一天的工作, 統計vip客戶和普通客戶的辦理業務的平均等待時間.

需求如下: 某銀行的個人業務採用比較流行的取號叫號方式,該行的個人用戶分爲金卡用戶和普通卡用戶. 個人業務窗口也分爲金卡窗口和普通卡窗口,金卡窗口有金卡客戶等待叫號時只爲金卡用戶服務, 普通卡窗口在有普通卡用戶等待叫號時置爲普通卡用戶服務

原创 頭文件和.a(庫文件不匹配)導致虛函數錯位,進而導致的bug

頭文件和.a(庫文件不匹配)導致虛函數錯位,進而導致的bug 該bug的快速定位技巧     bt查看函數調用堆棧. 如果堆棧的順序錯亂, 則可能是虛函數表錯亂導致.     本例中, GetTPLContent 的上層很明顯不應該是 D