快速搜尋文件神器專案整體框架補充
資料庫是核心,之所以快速,是因為我用到了資料庫sqlite3。
將本地的所有檔案載入到資料庫,通過sql語句來進行檔案的搜尋
那麼如何知道本地檔案和資料庫的檔案是一一對應的,這就需要新增乙個掃瞄模組。先掃瞄本地的檔案,再掃瞄資料庫的檔案,進行比對,如果資料庫檔案少了,則進行插入;如果資料庫檔案多了,則要進行刪除。
而要運算元據庫,則需要把資料庫進行封裝,使**更有可讀性。
但是僅僅封裝了資料庫是沒有意義的,還需要封裝乙個資料庫的資料檔案管理類,用來建立資料庫和表,並且將文件資料進行增刪顯示的操作,才能做到資料庫檔案與本地檔案的一一對應關係。也就是說,在巨集觀上來看,就是運算元據庫檔案,即對資料庫檔案進行增刪查的操作。而不去顯示資料庫底層的實現,只呼叫簡單的呼叫介面,既方便又易懂。
當資料庫檔案準備好之後,就需要去搜尋相關的檔案。但是程式仍存在問題,即是實時性問題。當在本地新增乙個檔案後,需要重新執行程式,去做到本地檔案和資料庫檔案的一一對應,這樣的系統是靜態的死系統,是不能使用的。同樣的道理,如果本地刪除了乙個檔案,而資料庫檔案中還存在本地該檔案,說明它也是靜態的死系統。
所以,為了解決實時性問題,需要利用多執行緒,將整個程式分為兩條線,一條是進行本地檔案和資料庫檔案的掃瞄,另一條線則是進行客戶端的搜尋,這樣就會達到實時性的功能。
為了減少掃瞄的代價,而不是時時刻刻在進行掃瞄的工作,太耗時間,需要增加乙個監控機制,在有檔案有變化的時候去通知掃瞄線程,再進行掃瞄,從而提高效率。
而監控模組只針對監控本地檔案個數是否有變化,它的效率優於本地檔案和資料庫檔案對比的方式,減少掃瞄的壓力,這就是增加監控機制的意義。而監控模組也需要採用多執行緒的原理,但是監控模組和掃瞄模組不能單獨地執行,必須有相應的聯絡,否則監控模組毫無作用
在**中,掃瞄模組不需要資料庫管理的物件了,因為要分開執行。那麼相應的資料庫管理模組也需要單獨進行,方便客戶端的搜尋。
搜尋分為四種搜尋,並且要實現搜尋關鍵字的高亮顯示
1.拼音一般搜尋
2. 拼音全拼搜尋
3.拼音首字母搜尋
而介面只需要簡單的編排就可以實現。
最後,跟everything相比,這個專案各種功能確實還存在很多不足,所以還有不斷學習的空間,everything的原始碼還是值得我去研究,去用心啃的。
10 11周 補充 專案三
檔名稱 main.cpp 作 者 肖雪 完成日期 2016年5月25日 版 本 號 v1.0 include includeusing namespace std class point 定義座標點類 point double x0,double y0 x x0 y y0 double getx d...
10 11 周 補充 專案四
檔名稱 main.cpp 作 者 肖雪 完成日期 2016年5月25日 版 本 號 v1.0 問題描述 定義乙個日期類date,資料成員包括年 月 日,setdate int y,int m,int d 和printdate 函式分別用於設定日期和顯示日期 再定義乙個時間類time,資料成員包括時 ...
第10 11周 補充 專案四
問題及 檔名稱 main.cpp 作 者 賈慶嚴 完成日期 2016年6月15日 版 本 號 v1.0 問題描述 定義乙個日期類date,資料成員包括年 月 日,setdate int y,int m,int d 和printdate 函式分別用於設定日期和顯示日期 再定義乙個時間類time,資料成...