原创 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) *