原创 c++ template之trait技法總結
Trait技法的最初目的是爲了管理模板參數,有的時候模板中需要幾個參數,但是往往有些參數是與main parameters緊密相關的,這時候可以使用trait技巧,從幾個主要的模板參數中推導出相應的secondary template a
原创 zoj 1100
這題是簡單的狀態壓縮,和黑書的那個bug公司類似,不過更簡單。代碼如下:(當然,可以打表) #include <iostream> #include <cstdio> #include <cstring> using name
原创 zoj 1025
這題剛開始直接dp求最長非遞減子序列,再加上next數組,於是WA。結合網上的代碼,才發現,其實就是求最少組的非遞減子序列,直接從小到大掃描就可以了。自己還是太水了,後悔大學不努力呀! /* * zoj_1025,就是求最少組的非遞減子
原创 nginx http_core模塊 配置文件解析 2
上一篇講述了配置文件的整體結構,下面重點分析htt_core模塊的配置信息結構,得到如下的一幅圖: 從上面很明顯可以看出需要合併的ngx_http_core_srv_conf_t、ngx_http_core_loc_conf_t結構體。
原创 Tornado 之 IOLoop類分析
源代碼 Tornado 1-2-1 IOLoop類是Tornado的邊緣觸發事件驅動模型,在Linux平臺下面封裝的是epoll模型,這個類的代碼也很簡單,比Nginx好看多了。 先看屬性:
原创 虛擬繼承、多態的內存佈局
測試平臺,Ubuntu 12.04--x64 代碼如下: #include <iostream> #include <cstdio> using namespace std; class A { public: long a
原创 B+tree 實現
/** BPlusTree.h 2012/6/24--2012/7/5 hpghy, [email protected] **/ #ifndef BPLUSTREE_H_ #define BPLUSTREE_H_ #in
原创 B+樹
爲什麼說B+-tree比B 樹更適合實際應用中操作系統的文件索引和數據庫索引? 1) B+-tree的磁盤讀寫代價更低 B+-tree的內部結點並沒有指向關鍵字具體信息的指針。因此其內部結點相對B 樹更小。如果把所有同一內部結點的關鍵字
原创 表達式模板 expression templates 測試
表達式模板,在《c++ template》中是爲了同時支持數組操作的優雅性和高效性,並說,metaprogramming主要適用與小的大小固定的數組,而expression templates適用於中性和大型數組的
原创 B-樹 實現3
上次有了B-樹的兩種不同的實現,現在我們來測試一下兩種實現的效率,由於命名一樣,我設置了不同的名字空間,下面是測試代碼: #include <iostream> #include <string> #include <cmath>
原创 B-樹 實現
B-樹主要用在文件系統中,關鍵字爲文件名,值爲文件在磁盤中的地址。分支因子很大,一般爲50到2000,一個節點就用一個磁盤塊存儲。 按照《算法導論》的描述,節點有如下性質: 1、至少有t-1個關鍵字,至多2*t-1個關鍵字,關鍵字以升序排
原创 B-樹實現2
/** * BTree.h * * 採用網上流傳已久的插入刪除算法——回溯方式 * 與《算法導論》中的不一樣,但是效率更高 * * [email protected] * 2012/3/5 * **/ #i
原创 grub rescue:
ubuntu和Win7的雙系統,不知怎麼搞成了“error: unknown filesystem grub rescue:”,使用以下的方法: http://www.cnblogs.com/samcn/archive/2011/03
原创 zoj 3234
#include <iostream> #include <algorithm> #include <cstring> #include <cstdio> using namespace std; struct Point { int
原创 zoj 2107
這題做了很久,一直都是1秒多,真不知道他們300ms是怎麼做出來的。看了網上的代碼,大部分都是O(nlgnlgn),於是絞盡腦汁,寫了個O(nlgn)的代碼,但是時間上沒有顯著地提高。 /** * O(nlogn) *