導航:首頁 > 文件處理 > 函數是壓縮的是什麼意思

函數是壓縮的是什麼意思

發布時間:2023-09-14 12:37:39

1. 數據流壓縮原理和數據壓縮Zlib的實現

壓縮的本質就是去冗餘,去除信息冗餘,使用最短的編碼保存最完整的數據信息。所以對於不同的場景,壓縮採用的演算法也因時制宜,比如視頻和圖片可以採用有損壓縮,而文本數據採用無損壓縮。壓縮率又取決於信息的冗餘度,也就是內容中重復的比例。那些均勻分布的隨機字元串,壓縮率會降到最低,即香農限

deflate是zip文件的默認演算法。它更是一種數據流壓縮演算法。

LZ77壓縮演算法採用字典的方式進行壓縮,是一種簡單但是很高效的數據壓縮演算法。其方式就是把數據中一些可以組織成短語的字元加入字典。維護三個概念: 短語字典、滑動窗口、向前緩沖區

壓縮的逆過程,通過解碼標記和保持滑動窗口中的符號來更新解壓數據。當解碼字元被標記:將標記編碼成字元拷貝到滑動窗口中,一步一步直到全部翻譯完成

在流式傳輸中,不定長編碼數據的解碼想要保持唯一性,必須滿足唯一可以碼的條件。而異前綴碼就是一種唯一可解碼的候選,當然這樣會增加編碼的長度,卻可以簡化解碼。

huffman編碼是一種基於概率分布的貪心策略最優前綴碼。huffman編碼可以有效的壓縮數據,壓縮率取決於數據本身的信息冗餘度

計算數據中各符號出現的概率,根據概率從小到大,從下往上反向構建構造碼樹,這樣最終得到的編碼的平均長度是最短的。同時也是唯一可譯的

解讀:在一開始,每一個字元已經按照出現概率的大小排好順序,在後續的步驟中,每一次將概率最低的兩棵樹合並,然後用合並後的結果再次排序(為了找出最小的兩棵樹)。在gzip源碼中並沒有專門去排序,而是使用專門的數據結構(比如最小堆或者紅黑樹)。

使用優先隊列實現huffman樹,最後基於Huffman樹最終實現文件壓縮。
具體步驟:

gzip = gzip 頭 + deflate 編碼的實際內容 + gzip 尾

zlib = zlib 頭 + deflate 編碼的實際內容 + zlib 尾

壓縮之前:初始化各種輸入輸出緩沖區;
壓縮:我們可以不斷往這些緩沖區中填充內容,然後由deflate函數進行壓縮或者indeflate函數進行解壓

總結:在調用deflate函數之前,應用程序必須保證至少一個動作被執行(avail_in或者avail_out被設置),用提供更多數據或者消耗更多的數據的方式。avail_out在函數調用之前千萬不能為零。應用程序可以隨時消耗被壓縮的輸出數據

閱讀全文

與函數是壓縮的是什麼意思相關的資料

熱點內容
華為的伺服器現在被什麼公司收購 瀏覽:285
伺服器粘包怎麼處理 瀏覽:726
怎麼進創意工坊的伺服器 瀏覽:786
空調壓縮機加變頻器 瀏覽:968
加密貨幣有哪些可以玩 瀏覽:993
騰訊雲伺服器如何生成備案授權碼 瀏覽:950
計算機學演算法好還是人工智慧 瀏覽:500
java命令運行eclipse 瀏覽:979
u盤加密其他辦法 瀏覽:808
zm螺紋演算法 瀏覽:778
excel與數據分析pdf 瀏覽:153
特斯拉的智能演算法 瀏覽:204
單片機開發費用 瀏覽:937
軸流壓縮機原理 瀏覽:290
右鍵只顯示文件夾 瀏覽:548
壓縮皮膚哪個好用嗎 瀏覽:504
為什麼右鍵中新建文件夾沒有了 瀏覽:177
算術平均演算法教程 瀏覽:558
電視上App怎麼調亮度 瀏覽:946
優酷app怎麼點擊彈窗 瀏覽:703