原创 GZIP壓縮原理分析(03)——第三章 gzip文件格式詳解(三01) 章前語

網上有人用“算法”來形容gzip,總是gzip算法長、gzip算法短的,其實不然。gzip根本不是一種算法,可以說它是一種壓縮工具(software,見《Data Compression – The CompleteReference》

原创 GZIP壓縮原理分析(06)——第三章 gzip文件格式詳解(三04) gzip文件格式實例分析以及本章總結

這裏簡單提一下字節順序的問題,爲了理解起來更快更清晰,我不說大小端的問題,只要各位看官記住分析套路先把gzip文件格式分析清楚,知道實際的二進制存儲方式即可。後續章節分析壓縮源碼的時候會結合代碼說明。   實例一: 原始文件的文件信息如下

原创 GZIP壓縮原理分析(09)——第四章 基於gzip的HTTP壓縮詳解(四03) 處理細節(關於流壓縮的問題)以及本章總結

我們構建負載均衡設備的模型來描述流壓縮的問題。模型是這樣的:負載均衡設備在服務器前端,客戶端訪問服務器實際上是訪問這個負載均衡設備,由該設備將來自客戶端的請求發送給服務器並將服務器回覆的應答發送給客戶端。HTTP壓縮功能就做在這個負載均衡

原创 GZIP壓縮原理分析(05)——第三章 gzip文件格式詳解(三03) gzip文件尾和文件體

1、文件尾 相比gzip文件頭,gzip文件尾較簡單,只由四個字節構成,  0              1               2             3              4              5     

原创 GZIP壓縮原理分析(02)——第二章 背景簡介

以下文字摘自《數據壓縮導論(第4版)》:“……數據壓縮並不只是對數據的處理,它還是找出數據中已有結構的過程……在數據壓縮中,首先要爲各種數據中的不同結構建立模型,然後利用這些模型(可能還需要最終感知這些數據的一些應用環境),以更緊湊的方式

原创 一個存在重複數字的正整數數列,每個數都不超過32,找出其中所有重複的數字

本文爲小僧在CSDN上的處女貼,最近買了王曉華前輩的書,在序言看到前輩出的一道面試題,非常感興趣,在上班的路上想了出來,雖然題本身不難,但是作爲剛入行的小菜鳥,還是小小興奮了一下,遂決定在此留下一筆,作爲技術修行的開始吧~~~ 話休繁絮,

原创 板卡上的日誌緩衝區只可以記錄1000條日誌,當超過1000條記錄時,新增的日誌將覆蓋舊的記錄(是最舊的記錄)

王曉華前輩在“一個隊列引發的慘案”一節中,說到用循環隊列處理固定長度緩衝區問題,小僧讀到這裏,深深一驚,不禁感嘆算法與數據結構結合的巧妙!!!也許是因爲小僧是菜鳥,也許是因爲小僧少見多怪,也許是因爲小僧……反正不論如何,小僧始終覺得這個想

原创 GZIP壓縮原理分析(12)——第五章 Deflate算法詳解(五03) 預備知識(02) 壓縮“窗口”概念

壓縮的過程使用了“窗口”這一概念。壓縮時,將需要處理的數據拷貝到窗口中,然後直接在窗口中分析並處理這些數據。這個窗口就好比一張工作臺,每次把要處理的東西放到這張工作臺上,人們站在工作臺旁邊收拾這些數據,等到快收拾完的時候(還沒收拾完!!!

原创 GZIP壓縮原理分析(08)——第四章 基於gzip的HTTP壓縮詳解(四02) 原理

經過壓縮的HTTP應答報文是由瀏覽器解壓的,用wireshark抓包可以看到客戶端主機接收到的HTTP應答報文仍然是壓縮的,而且wireshark可以將該HTTP應答解壓(是否讓wireshark解壓是可以設置的,茲不贅述)。比起壓縮,解

原创 GZIP壓縮原理分析(11)——第五章 Deflate算法詳解(五02) 預備知識(01) LZ77算法

詞典,分爲靜態詞典與自適應詞典兩種,而大多數基於自適應詞典的技術都源於Jacob Ziv和Abraham Lempel在1977年和1978年發表的兩篇里程碑式的論文。這兩篇論文提供了兩種不同的方法,用於自適應的構建詞典,每種方法都衍生出

原创 GZIP壓縮原理分析(10)——第五章 Deflate算法詳解(五01) 章前語

本章不對deflate算法背景做過多介紹,但是對Phil Katz的敬重是永遠的!!!   這裏會用整整一個章節的內容來詳細分析第三章中簡略提到的“文件體”,也就是gzip壓縮中的瓤,或者說蝦的身子部分。其實不僅僅是gzip,只要是使用的

原创 GZIP壓縮原理分析(01)——第一章 序言

本系列博客將詳細分析當前主流壓縮技術gzip的原理及其源碼(gzip1.2.4)。暫時只分析無損壓縮(如果後續我能有機會研究有損壓縮,依然會以類似的形式將分析結果發佈到博客中),並對當前網絡上大量使用的HTTP壓縮進行專項分析。希望本系列

原创 GZIP壓縮原理分析(07)——第四章 基於gzip的HTTP壓縮詳解(四01) 章前語

簡單來講,HTTP壓縮就是將HTTP應答報文數據部分壓縮(所謂數據部分,是用於區分HTTP頭的),這對於減小網絡帶寬來講有極大的好處。目前大型網站基本都會使用HTTP壓縮功能,比如百度、騰訊、新浪等,使用wireshark抓包可以非常直觀

原创 GZIP壓縮原理分析(04)——第三章 gzip文件格式詳解(三02) gzip文件頭

文件頭由固定長度的部分和擴展部分組成,擴展部分不一定存在,尤其是網絡傳輸使用的HTTP壓縮,如果使用了gzip格式,那麼對應的壓縮報文一般都不帶擴展部分。gzip文件格式通過將頭部中定長部分的某些比特位置位來標識頭部是否帶有擴展部分,我們

原创 GZIP壓縮原理分析(13)——第五章 Deflate算法詳解(五04) 預備知識(03) 遊程編碼

有關遊程編碼的定義,在網上有很多較爲專業的版本,但我覺得那些較爲專業的版本就是把簡單的東西搞複雜然後看起來高大上罷了,入門太麻煩。這裏我們沿用本章開始提到的那篇博客中的內容:“什麼叫遊程呢?就是一段完全相同的數的序列。什麼叫遊程編碼呢?說