Time of Update: 2018-12-03
這一節將介紹搜尋功能入口程式TSESearch.cpp的第六步——顯示搜尋結果。該部分中首先定義了一個結果顯示類CDisplayRst的對象iDisplayRst,然後調用了該類的三個成員函數ShowTop,ShowMiddle和ShowBelow分別顯示結果頁面的頭部、中部和底部(即圖1中標註①②③的地區)。下面來看一下這三個函數的原始碼,代碼中加入了詳細的注釋(以“LB_C”開始的注釋為我加入的)進行說明,另外再原始碼之後還有一些問題的分析。1、ShowTopbool
Time of Update: 2018-12-03
今天根據自己的理解重新整理了一下幾個字串hash函數,使用了模板,使其支援寬字元串,代碼如下: /// @brief BKDR Hash Function/// @detail 本演算法由於在Brian Kernighan與Dennis Ritchie的《The C Programming Language》一書被展示而得名,是一種簡單快捷的hash演算法,也是Java目前採用的字串的Hash演算法(累乘因子為31)。template<class T>size_t
Time of Update: 2018-12-03
轉自:http://blogread.cn/it/article/5907 linux核心和其他一些開源的代碼中,經常會遇到這樣的代碼:do{
Time of Update: 2018-12-03
From : http://leetcode.com/onlinejudgeTwo SumGiven an array of integers, find two numbers such that they add up to a specific target number.The function twoSum should return indices of the two numbers such that they add up to the target, where index1
Time of Update: 2018-12-03
《數學之美》2.13的一道題:給定一個長度為N的整數數組,只允許用乘法,不能用除法,計算任意(N-1)個數的組合乘積中最大的一組,並寫出演算法的時間複雜度。 方法一: 最容易想到的辦法是:把所有可能的(N-1)個數的組合找出來,分別計算它們的乘積,並比較大小。由於總共有N個(N-1)個數的組合,總的時間複雜度為O(N*N),但顯然這不是最好的解法。 方法二:
Time of Update: 2018-12-03
字串編輯距離是一個很經典的問題了,以前參加編程比賽、筆試面試的時候經常會碰到,今天看《編程之美》的3.3節中又遇到了該問題,又重新回顧了一邊,順便在這裡總結一下。【問題描述】給定一個源字串和目標字串,能夠對源串進行如下操作: 1.在給定位置上插入一個字元 2.替換任一字元
Time of Update: 2018-12-03
【 聲明:著作權,歡迎轉載,請勿用於商業用途。 聯絡信箱:feixiaoxing @163.com】 hash表,有時候也被稱為散列表。個人認為,hash表是介於鏈表和二叉樹之間的一種中間結構。鏈表使用十分方便,但是資料尋找十分麻煩;二叉樹中的資料嚴格有序,但是這是以多一個指標作為代價的結果。hash表既滿足了資料的尋找方便,同時不佔用太多的內容空間,使用也十分方便。
Time of Update: 2018-12-03
一、更新源和更換原始伺服器Ubuntu下經常會使用 sudo apt-get install *** 的命令,但有時候會出現各種各樣的錯誤,如果命令沒有錯誤的話,八成是軟體源出了問題吧!首先可以嘗試輸入 sudo apt-get update 更新源,再嘗試。也有可能是串連不上源,或者有時可能使用的源非常慢,比如有的
Time of Update: 2018-12-03
/*題目描述:對於一個位元組(8bit)的無符號整形變數,求二進位表示中“1”的個數,要求演算法執行效率儘可能地高*/方法一:直接的方法就是除以2向右移位, 逐個統計,但是用到模數和相除,這個很耗資源。int Count(BYTE v){int num=0;while (v) { if (v%2==1) { num++; } v=v/2;}return num;}////////////////////////////////////////////////////////
Time of Update: 2018-12-03
什麼是生產者消費者模式 在工作中,大家可能會碰到這樣一種情況:某個模組負責產生資料,這些資料由另一個模組來負責處理(此處的模組是廣義的,可以是類、函數、線程、進程等)。產生資料的模組,就形象地稱為生產者;而處理資料的模組,就稱為消費者。在生產者與消費者之間在加個緩衝區,我們形象的稱之為倉庫,生產者負責往倉庫了進商品,而消費者負責從倉庫裡拿商品,這就構成了生產者消費者模式。結構圖如下: 生產者消費者模式的優點 1、解耦假設生產者和消費者分別是兩個類。如果讓生產者直接調用消費者的某個方法,那
Time of Update: 2018-12-03
簡單工廠,Factory 方法,抽象工廠都屬於設計模式中的建立型模式。其主要功能都是協助我們把對象的執行個體化部分抽取了出來,最佳化了系統的架構,並且增強了系統的擴充性。本文是本人對這三種模式學習後的一個小結以及對他們之間的區別的理解。簡單工廠簡單原廠模式的工廠類一般是使用靜態方法,通過接收的參數的不同來返回不同的對象執行個體。不修改代碼的話,是無法擴充的。Factory 方法Factory
Time of Update: 2018-12-03
原文地址:http://www.lingcc.com/2011/08/13/11685/精確的資料流分析是讓編譯最佳化能高效進行的基礎。 SSA就是一種高效的資料流分析技術,目前幾乎所有的現代編譯器,如GCC、Open64、LLVM都有將SSA技術的支援, 不僅僅是編譯器,Jikes RVM, HotSpot JVM, .Net的Mono,Python的Pypy, Andoroid的Dalvik,這些虛擬機器/解譯器中的Just-in-Time Compiler也有了SSA的支援。
Time of Update: 2018-12-03
百科名片所謂的段錯誤就是指訪問的記憶體超出了系統所給這個程式的記憶體空間,通常這個值是由gd tr來儲存的,他是一個48位的寄存器,其中的32位是儲存由它指向的 gdt表,後13位儲存 相應於gdt的下標,最後3位包括了程式是否在記憶體中以及程式的在cpu中的運行層級,指向 的gdt是由以64位為一個單位的表,在這張表中就儲存著程式啟動並執行程式碼片段以及資料區段的起
Time of Update: 2018-12-03
hash表是一種非常強大的資料結構,應用也非常廣泛,在網上可以找到很多介紹的資料,這裡不進行贅述。其實hash表的原理很簡單,隨便找一篇相關的介紹都能看懂,但是如果要應用的話,有一個很重要而且不得不考慮的問題——怎麼選擇或設計hash函數,hash函數的好壞直接影響了資料存取的效率。網上很多關於hash表介紹的文章都只是介紹了hash表的原理,即便是舉的例子也只是用最簡單的“直接定址法”,例如:文章《一步一步寫演算法(之hash表)》(http://blog.csdn.net/feixiaoxi
Time of Update: 2018-12-03
#include <iostream>#include <string>using namespace std;class CBook{public: CBook(string name, int n=0) : m_strName(name), m_nIndex(n) {} void SetIndex(int n) { m_nIndex = n; } int GetIndex() { return m_nIndex;
Time of Update: 2018-12-03
上一節對搜尋功能的入口程式TSESearch.cpp的main函數做了介紹,對搜尋功能的實現的流程有了大概的瞭解,從這節開始講對上節中提到的幾個主要流程——準備資料、擷取使用者輸入、中文分詞、檢索關鍵詞、結果排序和顯示搜尋結果進行詳細的分析。這一節分析準備資料的原始碼。(這一節的內容非常簡單,明白的朋友可以直接略過) (1)載入字典
Time of Update: 2018-12-03
上一節中說到,TSESearch.cpp是實現搜尋功能的入口程式,這一節將分析TSESearch.cpp原始碼。在看原始碼之前,先梳理一下該程式中的主要步驟:(1)準備資料在第二節中介紹了系統中一些重要的資料檔案,這些檔案便是實現搜尋功能所需的資料檔案,如:字典檔案、倒排檔案、網頁索引檔案和URL索引檔案等。程式第一步需要讀取這些檔案的內容為搜尋做好準備。(2)擷取使用者輸入擷取使用者輸入的欲查詢的搜尋字串,這裡需要CGI程式與Web伺服器互動,通過環境變數的方式來擷取使用者輸入的字串。(3)
Time of Update: 2018-12-03
在第一節中已經將查詢服務子系統搭建起來,可以在天網搜尋引擎的首頁中輸入搜尋字串、點擊搜尋按鈕並得到搜尋的結果頁面。那後台到底是怎麼處理的呢?怎麼從網頁擷取使用者輸入然後調用搜尋程式進行搜尋呢?大家在這一節將得到答案。我們從使用者操作開始入手,首先呈現在使用者面前的是天網搜尋的首頁,第一節中已經說明該首頁的分頁檔就是/var/www/html/index.html,我們先看看該檔案中的部分內容,1所示。圖1這裡<tr>和</tr>標籤中定義的內容對應於搜尋網頁面中的輸入框和
Time of Update: 2018-12-03
-->返回組首頁--> Wget 的使用1)支援斷點下傳功能(2)同時支援FTP和HTTP下載方式(3)支援Proxy 伺服器(4)設定方便簡單;5)程式小,完全免費;命令格式:wget [參數列表] [目標軟體、網頁的網址]1、啟動類參數這一類參數主要提供軟體的一些基本資料;-V,--version 顯示軟體版本號碼然後退出;-h,--help顯示軟體協助資訊;-e,--execute=COMMAND 執行一個
Time of Update: 2018-12-03
Curl是Linux下一個很強大的http命令列工具,其功能十分強大。 1) 二話不說,先從這裡開始吧! $ curl http://www.linuxidc.com 斷行符號之後,www.linuxidc.com 的html就稀裡嘩啦地顯示在螢幕上了 ~ 2) 嗯,要想把讀過來頁面存下來,是不是要這樣呢? $ curl http://www.linuxidc.com > page.html 當然可以,但不用這麼麻煩的!