如果檔案非常大,如何快速的取到檔案的最後n行資料呢?
使用strace 命令跟蹤下,發現如下的輸出:
strace tail -1000 test.log 2>&1 | grep lseek
lseek(3, 0, seek_cur) = 0
lseek(3, 0, seek_end) = 52876697
lseek(3, 52871168, seek_set) = 52871168
lseek(3, 52862976, seek_set) = 52862976
lseek(3, 52854784, seek_set) = 52854784
...
使用seek_end找到檔案的大小(為52876697)
然後使用seek_set定位到檔案的最後乙個page,從上面這個case看,page大小是8192,最後乙個page沒滿8192位元組,seek到52876697 - 52876697 % 8192 == 52871168這個position
讀取這乙個page的所有資料,統計總共出現多少個換行
如果裡面的行數不到n,再往前seek乙個page(52871168-8192 == 52862976),讀取資料,統計行數。
迴圈步驟4,直到取到n行資料。
順序讀取資料,輸出n行資料。
專案中類似wiki功能
應用場景如下 專案採集的資料不是很完整,陳舊,不理想。希望使用者在使用過程當中,一些業務操作可以給貢獻部分資料 系統採集的資料放到一張系統表a中,使用者通過操作業務,會對我們給它填充的資料進行校驗,修改一些資料,使用者如果對錶進行了修改,那麼我們就保留他修改的資料到臨時表b 下面就是要有乙個審核的問...
類似Access查詢中的記憶功能
procedure t locatefrm.locatebtnclick sender tobject varsetlooptions tlocateoptions i integer slkeys tstrings begin if bobox1.items.indexof bobox1.text...
類似省市聯動的查詢功能實現
實現思路 由於 省市 一般是一對多 主外來鍵 關係 所以當你要通過下拉框選中一級選單 省 出現對應 市 的時候 首先要把所有的 省 從資料庫中取出來 然後通過 省 的外來鍵 id 拿到 市 jsp 省級選單 function loadproducttype category querybyobjec...