Time of Update: 2018-12-03
【 聲明:著作權,歡迎轉載,請勿用於商業用途。 聯絡信箱:feixiaoxing @163.com】 我不是項目中的leader,也沒有什麼專案管理的實際經驗,最多就是看過幾本書,帶過幾個徒弟,參加過幾個項目而已。但是,這不妨礙我有一些自己的體會,特別是專案管理上面的體會。很多人都熱衷於pmp認證考試,卻很少反思實際工作中究竟需要什麼方法和工具。 (01)
Time of Update: 2018-12-03
雜湊函數的輸出值(hash value)通常有兩種用途:一種用作地址,比如在雜湊表中要儲存一個元素,首先要針對這個元素產生一個隨機地址;另一種用作fingerprint(或者叫digital summary),比如將密碼字串hash成一個fingerprint,驗證時進行核對。今天我要介紹的這種儲存資訊的方式將以上兩種用途結合了起來:一個hash
Time of Update: 2018-12-03
Partial Bloom Filter焦萌 2007年2月5日 在標準的Bloom Filter中,我們用k個相互獨立的雜湊函數將一個集合映射到長度為m的位元組中,其中每個雜湊函數的對應範圍都為{0, … , m-1}。除了這種標準的實現方式之外,還有一種實現被廣泛採用,就是所謂的Partial Bloom Filter。 Partial Bloom Filter和標準Bloom Filter唯一不同的地方在於雜湊函數的對應範圍。在Partial Bloom
Time of Update: 2018-12-03
Bloom Filter是一個簡潔精緻的資料結構,要對它進行本質上的提高並不容易。多少年來,針對Bloom Filter的變種很多,但實質性的突破並不多,無非Counting Bloom Filter、Compressed Bloom Filter等幾種。很多變種都針對某一特定的應用領域,或是針對某一個方面的問題,離開特定的領域和問題,將它單獨拿出來算不上有分量的突破。 較之Bloom Filter的其它變種,d-left counting bloom
Time of Update: 2018-12-03
Perfect Hashing VS. Bloom Filter在Network Applications of Bloom Filters: A Survey一文中,作者提到了一種基於Perfect hashing的方法,它在維持同樣錯誤率的情況下比Bloom Filter佔用更少的空間。但是這種方法只能使用在靜態集合上,一旦集合發生變化,就需要進行重新計算。 假設我們要表示的靜態集合X有n個元素,我們針對它可以找到一個perfect hash function,記作hx : [1…u] →
Time of Update: 2018-12-03
Bloom filter將集合中的元素映射到位元組中,用k(k為雜湊函數個數)個映射位是否全1表示元素在不在這個集合中。Counting bloom filter(CBF)將位元組中的每一位擴充為一個counter,從而支援了元素的刪除操作。一旦位擴充成了counter,每一個counter就不僅能表示這一地址有無映射,還能表示映射的個數。這一擴充使得儲存的資料包含了更多資訊,然而遺憾的是,CBF僅僅利用這個擴充支援了刪除操作,並沒有將資訊中蘊含的潛力完全挖掘出來。毫無疑問,Spectral
Time of Update: 2018-12-03
應用Bloom Filter的幾個小技巧焦萌 2007年1月29日 下面列舉幾個基於標準Bloom Filter的小技巧: 1. 求兩個集合的並。假設有兩個Bloom Filter分別表示集合S1和S2,它們位元組的大小相同且使用同一組雜湊函數,那麼要求表示S1和S2並集的Bloom Filter,只要將S1和S2的位元組進行“或”操作即可得到結果。 2. 將Bloom Filter“對摺”。 如果想將一個Bloom
Time of Update: 2018-12-03
下面介紹簡單介紹一下d-left hashing。d-left hashing中的d是多個的意思,我們先簡化這個問題,看一看2-left hashing。2-left hashing指的是將一個雜湊表分成長度相等的兩半,分別叫做T1和T2,給T1和T2分別配備一個雜湊函數,h1和h2。在儲存一個新的key時,同時用兩個雜湊函數進行計算,得出兩個地址h1[key]和h2[key]。這時需要檢查T1中的h1[key]位置和T2中的h2[key]位置,哪一個位置已經儲存的(有碰撞的)key比較多,
Time of Update: 2018-12-03
從雜湊儲存到Bloom Filter焦萌 2007年1月28日 先解釋一下什麼是雜湊函數。雜湊函數簡單來說就是一種映射,它可取值的範圍(定義域)通常很大,但範圍相對較小。雜湊函數所作的工作就是將一個很大定義域內的值對應到一個相對較小的範圍內。傳統的雜湊儲存假設要雜湊的集合為S,它有n個元素。傳統的雜湊方法是,將雜湊地區組織成h(h > n)個格子的列表,每一個格子都能儲存S中的一個元素。儲存時將S中的每一個元素映射到{0, 1, … ,
Time of Update: 2018-12-03
1 棋盤問題 從棋盤左下角,走到右上方,每一步只有向上和向右兩種選擇 1111112345136101514102035public static int choose(int m,int n){int[][] a = new int[m][n];for(int i=0;i<m;i++) a[i][0] = 1;for(int j=0;j<n;j++) a[0][j] = 1;for(int i=1;i<m;i++)for(int j=1;j<n;j++)a[i][
Time of Update: 2018-12-03
這幾天有一道Google的面試題在論壇炒得很火,題目如下:“有一個100層高的大廈,你手中有兩個相同的玻璃圍棋子。從這個大廈的某一層扔下圍棋子就會碎,用你手中的這兩個玻璃圍棋子,找出一個最優的策略,來得知那個臨界層面。”下面給出我的分析和解答。 為了得到兩個棋子的最優策略,我們先簡化問題,看看一個棋子的情況。如果手中只有一個棋子,為了得知臨界層面,你只有一種選擇:從2樓開始,一層一層地試,直到棋子被打碎,此時你站的樓層就是所求的臨界層面。在最差的情況下,我們需要投擲99-2+1=98次,你可能奇
Time of Update: 2018-12-03
轉自:http://hi.baidu.com/samzyn/blog/item/b712739b6f7e56b2c9eaf417.htmlDoModal失敗原因1、MFC通常對話方塊不顯示的原因有1 父視窗HWND無效2 在ONINITDIALOG裡用了ENDDIALOG3 無效的對話方塊資源ID4 使用沒有註冊的的自訂控制項5 對話方塊的某些控制項建立失敗,如RICHEDIT,要加上AfxInitRichEdit();最有可能出現的是第3條,因此,又經過仔細分析了對話方塊中的各個資源的ID,
Time of Update: 2018-12-03
Counting Bloom Filter焦萌 2007年1月30日 從前面幾篇對Bloom Filter的介紹可以看出,標準的Bloom Filter是一種很簡單的資料結構,它只支援插入和尋找兩種操作。在所要表達的集合是靜態集合的時候,標準Bloom Filter可以很好地工作,但是如果要表達的集合經常變動,標準Bloom Filter的弊端就顯現出來了,因為它不支援刪除操作。 Counting Bloom Filter的出現解決了這個問題,它將標準Bloom
Time of Update: 2018-12-03
想必大家在剛接觸AIS時,對AIS資料的解碼感到困惑,其是採用6位ASCII壓縮碼傳輸的,所以對AIS資料的正確解析,就是完成任務的關鍵所在。通過最近的一個項目,瞭解了AIS資料的解碼分析過程,現將其流程和相關代碼列出,此參表可以參見快樂鸚鵡的AIS解碼演算法一文http://blog.csdn.net/happyparrot/archive/2007/04/26/1585185.aspx。Public Function fun_Decode(ByVal AISData As
Time of Update: 2018-12-03
一、設定連線物件和串連記錄集: Public gLoginCn As ADODB.Connection '串連Login資料庫 Public gLoginRs As ADODB.Recordset '定義記錄集二、在模組中執行個體化對象:Set gloginCn=new adodb.connectionSet gloginRs=new adodb.Recordset三、三種資料庫的連結方法Oracle strSQL =
Time of Update: 2018-12-03
Qt是一個著名的C++庫——或許並不能說這隻是一個GUI庫,因為Qt十分龐大,並不僅僅是GUI。使用Qt,在一定程式上你獲得的是一個“一站式”的服務:不再需要研究STL,不再需要C++的<string>,因為Qt有它自己的QString等等。或許這樣說很偏激,但Qt確實是一個“偉大的C++庫”。我們所使用的Qt,確切地說也就是它的GUI編程部分。C++的GUI編程同Java不同:GUI並不是C++標準的一部分。所以,如果使用Java,那麼你最好的選擇就是AWT/Swing,或者也可以
Time of Update: 2018-12-03
【 聲明:著作權,歡迎轉載,請勿用於商業用途。 聯絡信箱:feixiaoxing @163.com】 記憶體屏障,英文稱之為memory barrier。產生記憶體屏障的原因很多,有的是因為編譯器最佳化亂碼造成的,有的是因為cpu亂序造成的,還有的是因為cpu cache沒有按順序同步造成的。編譯器最佳化的code很容易理解,但是cpu亂序是怎麼造成記憶體屏障的,卻很少在網上看到相關的說明代碼。今天,很偶然在網上看到網易的何登成同學寫的《CPU Cache and Memory
Time of Update: 2018-12-03
第一種類型:數值傳遞注意:在VB中,預設變數傳遞方式為ByRef為地址,而傳遞值就是用ByVal,還要注意在C++中,int類型的變數是32位的,在VB中要用long型變數來配合。VC++部分:extern "C" _declspec(dllexport) int __stdcall TestCalc(int source){ //AFX_MANAGE_STATE(AfxGetStaticModuleState()); return(++source);}.def檔案EXPORTS
Time of Update: 2018-12-03
【聲明:著作權,歡迎轉載,請勿用於商業用途。 聯絡信箱:feixiaoxing @163.com】 就IT公司而言,都希望自己的程式員在單位時間內生產出效率最高的代碼。但是,不同的人有不同的開發效率。至於說效率之間的差別究竟有多少,還真不得而知。這裡寫了幾個我的觀點,只是有感而發,歡迎大家討論。這九個層次只是一個大概,沒什麼實質的標準。 【一層樓】 不能及時完成開發工作單位,任務經常延期,開發的代碼經常引入新的問題。 【二層樓】
Time of Update: 2018-12-03
【 聲明:著作權,歡迎轉載,請勿用於商業用途。 聯絡信箱:feixiaoxing @163.com】 快速排序是編程中經常使用到的一種排序方法。可是很多朋友對快速排序有畏難情緒,認為快速排序使用到了遞迴,是一種非常複雜的程式,其實未必如此。只要我們使用好了方法,就可以自己實現快速排序。 首先,我們複習一下,快速排序的基本步驟是什麼: 1、 判斷輸入參數的合法性 2、把數組的第一個資料作為比較的原點,比該資料小的資料排列在左邊,比該資料大的資料排列在右邊 3、按照(