原创 通用面試題:海量數據去重
那些優雅的數據結構(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