LZO基本介紹與除錯總結

2021-09-10 06:09:51 字數 1663 閱讀 1723

一、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 方式一 計算機 右擊管理 服務 方式二 通過管理...