soword科技言
永久公益免费API接口
提供永久免费的API接口,查看更多API接口,如果您有其他免费API资源,请联系我们,造福人类。
提供商务开发:小程序,系统,APP
定制开发,免费评估,免费咨询,价格便宜,售后保障,前往开发服务中心联系开发客服中心
gzip如何工作?

我还不太清楚,但是有很多烂摊子。

昨天我在四处寻找项目。今天中午,我弄清楚了:编写并行的gzip版本 它可以让您进行低级位处理并编写高效的算法,但仍然具有许多不错的高级功能。它看起来也很像Python!

我用来了解gzip如何工作的文档

gzip的基本思想是

  1. 使用一些不太复杂的算法(霍夫曼编码,LZ77压缩)。这些事情听起来像是它们的复杂部分,但到目前为止,它们似乎还不错。从概念上讲。

  2. 做各种琐碎的事情才能真正提高效率。

文章中的一些选择(重点是我的)

  • “ hclen是少于四个的 3位长度代码的声明”(为什么四个?!??)

  • 所有内容都是可变长度编码的,因此,您不仅要提取字节,还必须提取各种长度的位序列。因为效率。霍夫曼编码是使这种变长编码疯狂真正起作用的原因。

  • 每个gzip文件均以“魔术字节”开头 1F8B

这是我编写的用于处理此问题的Julia代码的一个片段!此代码采用8位数组并将其转换为字节。默认情况下,Julia做一些聪明的事情,例如边界检查,但是您可以通过防止使用进行边界检查来使速度更快@inbounds

您可以看到,这种方法看起来很像Python,但速度很快!(我承诺)

function make_int(bv::BitVector)
num = 0x00
for i=1:length(bv)
num = (num << 1) + bv[i]
end
return numend

而已!也许明天我会真正理解gzip如何使用霍夫曼编码。到目前为止,我已经开始解码gzip标头。



2023-03-22 10:04:19

新人小程序+APP定制199元起


发放福利,助力中小企业发展,真正在互联网中受益

点击询问定制

广告服务展示