Normal 0 7.8 磅 0 2 false false false MicrosoftInternetExplorer4 classid="clsid:38481807-CA0E-42D2-BF39-B33AF135CC4D" id=ieooui>st1/:*{behavior:url(#ieooui) }--> /* Style Definitions */
【 聲明:著作權,歡迎轉載,請勿用於商業用途。 聯絡信箱:feixiaoxing @163.com】 多線程編程是現代軟體技術中很重要的一個環節。要弄懂多線程,這就要牽涉到多進程?當然,要瞭解到多進程,就要涉及到作業系統。不過大家也不要緊張,聽我慢慢道來。這其中的環節其實並不複雜。 (1)單CPU下的多線程
在項目中遇到一個問題,我們需要在一個頁面中動態載入一系列的js,並且要求規定js的載入順序,一開始我們的引用js的方法如下:<script type="text/javascript">var js = document.createElement("script");js.src = '***.js';js.type = "text/javascript";var head = document.head ||
【 聲明:著作權,歡迎轉載,請勿用於商業用途。 聯絡信箱:feixiaoxing @163.com】
【 聲明:著作權,歡迎轉載,請勿用於商業用途。 聯絡信箱:feixiaoxing @163.com】 自10月初編寫演算法系列的部落格以來,陸陸續續以來寫了幾十篇。按照計劃,還有三個部分的內容沒有介紹,主要是(Dijkstra演算法、二叉平衡樹、紅/黑樹狀結構)。這部分會在後面的部落格補充完整。這裡主要是做一個總結,有興趣的朋友可以好好看看,歡迎大家提出寶貴意見。 (1) 排序演算法 快速排序 合并排序 堆排序 選擇排序 基數排序
今天在閱讀Apache Portatble Runtime的原始碼,忽然發現一段簡短的宏定義,才讓我對這個問題產生了思考:如何判斷一個宏被定義為了空,還是被定義成一個數字?APR的判定代碼如下: #if defined(APR_POOL_DEBUG)#if (APR_POOL_DEBUG - APR_POOL_DEBUG -1 == 1)#undef APR_POOL_DEBUG#define APR_POOL_DEBUG 1#endif#else#define APR_POOL_DEBUG 0
由於最近工作中,涉及到生產者消費者設計模式,對此有一些體會,所以總結一下,與大家分享。什麼是生產者消費者模式在工作中,大家可能會碰到這樣一種情況:某個模組負責產生資料,這些資料由另一個模組來負責處理(此處的模組是廣義的,可以是類、函數、線程、進程等)。產生資料的模組,就形象地稱為生產者;而處理資料的模組,就稱為消費者。在生產者與消費者之間在加個緩衝區,我們形象的稱之為倉庫,生產者負責往倉庫了進商品,而消費者負責從倉庫裡拿商品,這就構成了生產者消費者模式。結構圖如下:生產者消費者模式的優點1、解耦
單元測試架構在開發實踐中,我目前常用的單元測試架構主要是兩個:GTest與TUT。關於GTest我會在其他文章中詳細介紹,本文將主要介紹TUT架構的特點及簡單的使用方法。TUT(Template Unit
對大家推薦很好使用的Ubuntu星際譯王系統之前,像讓大家對StarDict系統有所瞭解,然後對Ubuntu星際譯王系統全面講解介紹, 希望對大家有用日常辦公應用中,我們經常會碰到一些陌生的外文單詞或文章需要翻譯,在Windows平台上,可通過很多翻譯工具來幫忙解決。當我們轉到
今天嘗試了一下cygwin下的hadoop搭建,網上有很多文檔(建議參考:http://space.itpub.net/?uid-26812308-action-viewspace-itemid-748143),但是實際嘗試時依然踩了很多坑,標記一下備忘:1. Hadoop版本選擇。雖然現在Hadoop已經發布到1.0以上版本,但是如果希望在cygwin下部署偽分布式的map reduce,建議採用0.20.2,因為更高版本存在兩個重要bug:https://issues.apache.org/
一、安裝ApacheUbuntu提供了3個apache2的軟體包,它們分別是apache2-mpm-worker、apache2-mpm-prefork、apache2-mpm-event。如果你在安裝Ubuntu作業系統《入門篇:ubuntu server
在網路編程中,我們經常會遇到阻塞、非阻塞、同步、非同步這兩組概念,許多人很容易混淆,現在就給大伙兒說說我對著兩組概念的理解。先說說阻塞與非阻塞,這主要和程式等待訊息時的狀態有關1、阻塞程式會阻塞在某一個函數,而不往下執行,就如掛在那裡一樣,所有的其他業務也都不執行,為一直等到訊息到來才往下執行。2、非阻塞程式不會阻塞在某一個函數,不等待訊息到來,立即返回,往下執行。舉個例子,TCP協議中的send,系統會為其分配一塊發送緩衝區,假設現在總的緩衝區的大小為1000.,而緩衝區裡已經有了500個資料
【 聲明:著作權,歡迎轉載,請勿用於商業用途。 聯絡信箱:feixiaoxing @163.com】 從一堆資料中挑選n個最大的數,這個問題是網上流傳的比較廣的幾個問題之一。具體來說,它的意思就是:假設我們有100個資料,我們需要挑選出最大的n個資料(n < 100),那麼有沒有辦法實現這樣一個目標呢?在這裡,我想從排序的角度看看有沒有什麼辦法可以實現這樣一個目標。 在前面的部落格當中,我們實現的排序演算法有下面幾種: (1) 冒泡排序、插入排序、希爾排序 (2)
至此,TSE的查詢服務子系統相關的內容已經全部介紹完畢,從下載編譯原始碼、搭建TSE環境,到原理介紹、原始碼分析全部進行了詳細的介紹。第9節中提到的網頁快照和網頁內容摘要功能,由於TSE系統中實現的非常簡單,所以沒有展開詳細說明,但是在實際的搜素引擎系統中是非常重要的,讀者們可以自行瞭解。下面談談我自己的感受,看完TSE的查詢服務子系統的原始碼實現後,讓我對搜尋引擎的基本原理有了很好的認識和理解,而且理解的更加透徹,而不是停留在原理層面,因為這是通過代碼實現的一個簡易的但是功能完全的搜尋引擎。雖
1. ABI(Application Binary Interface):在Intel或AMD體繫結構下,32位Solaris程式基於i386 ABI,64位程式基於AMD64 ABI;在SPARC體繫結構下,32位程式是基於SPARC V8 ABI,64位的程式基於SPARC V9 ABI。可以用以下命令查看當前Solaris平台支援特性: uname –a 查看作業系統版本 isainfo –v 查看作業系統支援的ABI isainfo –b 查看作業系統核心的位元
1.判斷奇偶if ((a & 1) == 0)判斷a是否是偶數,同理if ((a & 1) == 0)判斷a是否是奇數。2.交換兩數不用第三個變數交換兩個數,如下:void Swap(int &a, int &b) { if (a != b) { a ^= b; b ^= a; a ^= b; }
前面的章節詳細的介紹了查詢服務子系統,可以發現查詢服務子系統是基於一些”資料檔案“實現查詢功能的,這些”資料檔案“在第2節中介紹過,包括:詞典檔案(words.dict)、原始網頁資料庫檔案(Tianwang.raw.2559638448)、網頁索引檔案(Doc.idx)、URL索引檔案(Url.idx.sort_uniq)、倒排索引檔案(sun.iidx),其中words.dict是已經有的、Tianwang.raw.2559638448是爬蟲抓取產生的,其他的檔案就需要程式產生出來,這就是預
實際上Bit-map就是一個hash表,只是該hash表的每一個單元為一個bit,也就是該hash表示一個bit數組,每一條資料(Value)通過hash函數映射到bit數組中的某一位。正因為每一條資料只需一個bit來記錄,所以該資料結構的空間效率是非常高的。我的總結:1、Bit-map不儲存未經處理資料,只標記該資料是否出現過;2、關於Bit-map計數:由於Bit-map每一個單元為一個bit,如果用來計數的話可以記錄出現0次或者1次,也就是Bit-map最常見的應用——用於記錄資料是否出現
所有操作都是在 sudo su 下: 安裝: $ sudo su 進入 # # apt-get install vsftpd # ps -e | grep ftp #查看是否啟動安裝完畢後或許會自動產生一個帳戶”ftp”,/home下也會增加一個檔案夾。如果沒有產生這個使用者的話可以手動來,產生了就不用了:代碼: sudo useradd -m ftpsudo passwd ftp有”ftp”帳戶後還要更改許可權代碼: sudo chmod 777 /home/ftp 配置ftp:
布隆過濾器(Bloom Filter)是1970年由布隆提出的。它實際上是一個很長的二進位向量和一系列隨機映射函數。布隆過濾器可以用於檢索一個元素是否在一個集合中。它的優點是空間效率和查詢時間都遠遠超過一般的演算法,缺點是有一定的誤識別率和刪除困難。Bloom filter的原理可以參考:維基百科【1】、論文【2】、網路文章【3】,還有文章【4】中有簡單的程式實現。我的總結:1、Bloom