一、lzo介紹
lzo 是乙個用 ansi c 語言編寫的無失真壓縮庫。他能夠提供非常快速的壓縮和解壓功能。解壓並不需要記憶體的支援。即使使用非常大的壓縮比例進行緩慢壓縮出的資料,依然能夠非常快速的解壓。lzo遵循gnu 的gpl 使用許可。
lzo 非常適合進行資料的實時壓縮解壓處理,這就是說他更關心操作速度,而不是壓縮比例。
lzo 使用 ansi c 語言編寫,並且壓縮後的資料也被設計為可以跨平台使用的格式。
lzo 擁有如下的特點:
解壓速度很快,並且很簡單;
解壓時不需要記憶體支援;
壓縮的速度還不錯;
壓縮時只需要 64 kib 的記憶體支援;
壓縮比例可以根據需要調節,而這並不影響解壓的效率,提高壓縮比例自然會降低壓縮速度;
壓縮包含了很多的壓縮級別,提供很多選擇;
提供只需要 8 kib 記憶體支援的壓縮級別;
提供執行緒安全;
提供無失真壓縮;
譯)二、**
通過說明性檔案,可以得知:
資料夾b:包含了 dos、windows 等系統的支援檔案
資料夾examples:包含了示例程式**
資料夾include:包含了公共標頭檔案
資料夾minilzo:包含了lzo演算法一種簡化版
資料夾src:包含了lzo原始碼
資料夾util:包含了一些涉及到的指令碼
三、編解碼器的編寫
1、新建工程lzo
2、這裡採用的**原型是******.c檔案,之後新增example資料夾以及src資料夾以及 include資料夾中的相關檔案(具體方法是在執行之後根據debug內容新增相關檔案)
注:在修改**現並克服了以下問題
(1)之前一直顯示找不到.**件,因為是新建了工程,所以引入的.**件不能再使用<>,而應該使用」」。
(2)如果.c檔案引入的.**件和其在乙個檔案裡,使用#include」***.h」 ,如果.**件在和.c檔案同一層的資料夾裡,使用#include」***/***.h」 ,如果.**件和.c檔案所在的資料夾是並列的,使用#include」../***.h」
3、**內容
(1)定義變數
(2)lzo庫初始化
(3)讀取輸入輸出檔案,這裡使用檔案指標,使用buffer存放讀入資料
(4)這裡需要得到輸入檔案的大小,這裡採用fseek()以及ftell()函式。
其中,fseek()函式的用法如下:
fseek(fp,10,0);//就是把指標指向fp檔案開頭10位元組處
fseek(fp,10,1);//就是把指標指向fp檔案離當前位置10位元組處
fseek(fp,10,2);//就是把指標指向fp檔案結尾前10位元組處
ftell()函式的用法如下:
n=ftell(fp);//n即為偏離檔案首字元個數
(5)呼叫lzo1x_1_compress函式進行壓縮,並把資料寫入輸出檔案
(6)呼叫lzo1x_decompress函式進行解壓縮
(7)釋放緩衝區關閉檔案
4、結果
輸入檔案是個自己寫的input.txt
輸出檔案是壓縮後的檔案output.txt
執行結果如下:
從中可以看出1198位元組的input.txt被壓縮成135位元組,後又被解壓成1198位元組,因為存在很多重複字母以及重複排列順序,所以壓縮量是很可觀的。
corefile介紹與gdb除錯
一 什麼是coredump 應用程式由於某些異常或者bug而被強制退出時,linux系統會在當前目錄或指定目錄下生成乙個core檔案,供使用者除錯定位程式異常出現的位置。core檔案包含了程式執行時記憶體 暫存器狀態 函式呼叫堆疊等除錯資訊。二 core file的路徑檢視與設定 1 可通過如下命令...
MongoDB介紹與基本操作
1.設定資料庫儲存位置 mongod dbpath 目錄 e.g 將儲存路徑設定為dbs mongod dbpath dbs 2.設定資料庫監聽埠 mongod port 8080 預設監聽埠為27017 3.進入資料庫互動操作介面 mongo mongo shell 用來操作mongodb資料庫的...
MySQL介紹與基本操作
前身屬於瑞典的一家公司,mysql ab 08年被sun公司收購 09年sun被oracle收購 1 開源 免費 成本低 2 效能高 移植性也好 3 體積小,便於安裝 屬於c s架構的軟體,一般來講安裝服務端 企業版社群版 5.55.6 5.78.0 方式一 計算機 右擊管理 服務 方式二 通過管理...