轉載: http://www.cnblogs.com/heaad/archive/2011/01/02/1924195.htmlBloom Filter是由Bloom在1970年提出的一種多雜湊函數映射的快速尋找演算法。通常應用在一些需要快速判斷某個元素是否屬於集合,但是並不嚴格要求100%正確的場合。 一. 執行個體 為了說明Bloom Filter存在的重要意義,舉一個執行個體: 假設要你寫一個網路蜘蛛(web crawler)。由於網路間的連結錯綜複雜,蜘蛛在網路間爬行很可能會形成“
我利用此方法成功在UBUNTU 10.04下安裝GTK 2.20.1。一、安裝 1、安裝gcc/g++/gdb/make 等基本編程工具$sudo apt-get install build-essential 2、安裝 libgtk2.0-dev libglib2.0-dev 等開發相關的庫檔案$sudo apt-get install gnome-core-devel 3、用於在編譯GTK程式時自動找出標頭檔及庫檔案位置 $sudo apt-get install
本文來源於我在InfoQ中文站翻譯的文章,原文地址是:http://www.infoq.com/cn/news/2012/05/burnett-design-thinking設計思維指的是創造未來而不僅僅是管理現在。它還指的是花費更多的時間來創造價值而非擷取價值。來自斯坦福大學設計規劃的執行總監Bill
轉載 http://www.cnblogs.com/wawlian/archive/2012/06/18/2553061.html 網路爬蟲是捜索引擎抓取系統的重要組成部分。爬蟲的主要目的是將互連網上的網頁下載到本地形成一個或連網內容的鏡像備份。這篇部落客要對爬蟲以及抓取系統進行一個簡單的概述。一、網路爬蟲的基本結構及工作流程 一個通用的網路爬蟲的架構: 網路爬蟲的基本工作流程如下: 1.首先選取一部分精心挑選的種子URL; 2.將這些URL放入待抓取URL隊列;
1. 字串常量NSString *s = @"test";NSLog(@"s:%lx",[s retainCount]); //ffffffffffffffff(即UINT_MAX ( Maximum value an `unsigned int'))因為"test"為字串常量,系統不會收回,也不會對其作引用計數,即使我們對s如何retain或release。 2. stringWithFormatNSString *s = [NSString stringWithFormat:@"%s", "
給定兩個數組A和B,數組的長度相同都為n,兩個數組都分別有序,要求出兩個數組中所有數的中位元。分析:兩個數組中總共有2n個數,有兩個中位元,這裡取較小的那一個。要找出2n個數的中位元,其實就是找出其中第n大的數,用兩個下標p,q分別指向A,B兩個數組中的第一個元素,如果A中元素較小就移動p,如果B中元素較小就移動q,並計錄移動的次數,直到找到第n大的元素為止,總共的移動次數n-1,時間複雜度為O(n)上述方法的時間複雜度已經比較好了,但是每次只移動一位,沒有很好的利用兩個數組分別有序的條件,下面
求RMQ最簡單的方法是遍曆區間,時間複雜度O(n), 但是當查詢次數很多的時候,時間效率並不高。可以用線段樹把演算法最佳化到O(logn) (線上段樹中儲存線段的最值),不過sparse_table演算法是較好的,用O(nlogn)的時間進行預先處理,然後用O(1)時間進行查詢。預先處理:預先處理使用DP的思想,f(i, j)表示[i, i+2^j - 1]區間中的最小值,我們可以開闢一個數組專門來儲存f(i, j)的值。例如,f(0, 0)表示[0,0]之間的最小值,就是num[0], f(0
:根據題目的描述,問題可以轉化為“找到最大權值的完美二分匹配”。但又說:殺雞焉用宰牛刀。暗示了有更簡單的方法。:個人認為用到了貪心的思想“用最差的馬搏最好的馬”。View Code 1 #include <stdio.h> 2 #include <string.h> 3 #include <stdlib.h> 4 #define NL 1100 5 6 int tian[NL], king[NL]; 7 8 int cmp(const void *a,
本文來源於我在InfoQ中文站翻譯的文章,原文地址是:http://www.infoq.com/cn/news/2012/05/await_async新的WindowsRuntime(WinRT)的目標之一就是為開發人員進行非同步編程提供更好的支援。藉助於非同步作業,程式可以在其他動作(諸如檔案I/O或是網路通訊)尚未結束的情況下保持對使用者的響應。這種響應性對於大多數使用者應用來說都是很有用的,包括觸摸介面,使用者在這種情況下希望手勢能有快速的反饋。為了實現這個目的,C#與Visual
這是轉載的一篇文章。1、當你對某件事情抱著百分之一萬的相信,它最後就會變成事實。 2、期望定律 期望定律告訴我們,當我們懷著對某件事情非常強烈期望的時候,我們所期望的事物就會出現。 3、情緒定律 情緒定律告訴我們,人百分之百是情緒化的。即使有人說某人很理性,其實當這個人很有"理性"地思考問題的時候,也是受到他當時情緒狀態的影響,"理性地思考"本身也是一種情緒狀態。所以人百分之百是情緒化的動物,而且任何時候的決定都是情緒化的決定。 4、因果定律
我利用此方法成功在UBUNTU 10.04下安裝GTK 2.20.1。一、安裝 1、安裝gcc/g++/gdb/make 等基本編程工具$sudo apt-get install build-essential 2、安裝 libgtk2.0-dev libglib2.0-dev 等開發相關的庫檔案$sudo apt-get install gnome-core-devel 3、用於在編譯GTK程式時自動找出標頭檔及庫檔案位置 $sudo apt-get install
本文來源於我在InfoQ中文站翻譯的文章,原文地址是:http://www.infoq.com/cn/news/2012/05/Web-Intents本文概要介紹了何為Web Intents,為何說Web Intents是有用的。Google在Chrome 19中啟用了Web Intents,其在Safari上的實現是通過WebKit達成的,同時Mozilla也正在Web Intents上發力。Web Intents是個相對較新的類似於RPC的機制,可以實現Web應用間的通訊,這是通過在用戶端(
使用範圍:實現資料字典,進行資料的判重,集合求交集基本原理:基於bitmap,bitmap中用一個bit位來表示一個數字,而Bloom filter是用多個bit位是否同時存在來判定元素是否存在。它的實現用到了位元組和k個hash函數,存入一個元素時,用k個hash函數分別求值,並將相應的bit位置1,當尋找的時候,根據k個hash值,到k個位置尋找,如果k個位置都存在,表明該元素存在,如果有一個bit位不存在表明元素不存在。很明顯這個過程並不保證尋找結果是百分百正確。同時它也不支援刪除一個已經
#include <iostream>#include <vector>#include <bitset>#include <assert.h>#include <Windows.h>#include <process.h>using namespace std;class CSingleton{private: class CAssistForSingleton { private:
給40億個不重複的unsigned int的整數,沒排過序的,然後再給一個數,如何快速判斷這個數是否在那40億個數當中?http://blog.csdn.net/v_JULY_v/article/details/6279498 看到這個題的第一反應就是使用位元影像,使用記憶體空間為2^32bit =
以下均為Ctrl+C AND
一個有趣的智力題,給定12個大小相同的球,其中只有一個小球的重量和別的小球不同,如何用天枰稱三次來找出其中與眾不同的小球,並且判斷偏重還是偏輕。將小球進行編號,1~12,取出1~4號小球為一組A,取出5~8號小球為一組B,剩下的9~12號小球為一組C將A組和B組小球進行稱量,有三種結果:1. 平衡。那麼問題小球只可能存在於C組的4個小球9~12中,從C中取出小球9,並從A或B中隨意取出另一個小球組成一組D,從C中取出10和11號小球組成一組E,將D和E進行稱量,有三種結果:
本文來源於我在InfoQ中文站翻譯的文章,原文地址是:http://www.infoq.com/cn/news/2012/05/idea11不久前JetBrains發布了IDEA 11,在效能、Groovy與Grails支援以及版本控制外掛程式上進行了一些改進。本文將會介紹新版本所帶來的一些新特性。在測試過程中,我們發現整體效能要比上一版本有顯著提升。即便是大型項目中的程式碼完成的效能也很棒。IDE向Groovy開發人員提供了2.0 Beta版的支援。其中有一些限制,比如說Groovy 2.0
本文來源於我在InfoQ中文站翻譯的文章,原文地址是:http://www.infoq.com/cn/news/2012/05/ef-5-sample-provider近日,微軟的EF團隊發布了一個針對SQL Server的Sample Database Provider Entity Framework 5,支援EF的一些新特性。這個新的Sample Provider支援如下EF 5的新特性:Spatial typesTable Valued
AC自動機是著名的多模式比對演算法,給出n個單詞和一篇含有m個單詞的文章,找出n個單詞中有多少是在文章中出現過。AC自動機的構造分為三步:構造trie樹,構造fail指標,模式串匹配。而常用的單模式串匹配主要用kmp演算法,多模式比對與之有相似之處,因此要學習AC自動機,需要有trie樹和kmp演算法的知識。下邊連結中有對AC自動機以及它的構造比較清晰的描述,筆者也是在一次面試中第一次接觸到AC自動機,學習之後特來實現一下http://www.cppblog.com/mythit/archive