登录
首页 >  Golang >  Go问答

Golang:zlib.NewWriterLevelDict / zlib.NewReaderDict 的作用是什么?

来源:stackoverflow

时间:2024-04-20 08:27:37 162浏览 收藏

大家好,我们又见面了啊~本文《Golang:zlib.NewWriterLevelDict / zlib.NewReaderDict 的作用是什么?》的内容中将会涉及到等等。如果你正在学习Golang相关知识,欢迎关注我,以后会给大家带来更多Golang相关文章,希望我们能一起进步!下面就开始本文的正式内容~

问题内容

我不清楚将 dict 与 zlib 一起使用时会做什么?有谁知道它的目的是什么或者它是如何工作的?我一直在谷歌和 YouTube 上搜索,但没能了解它在做什么。我的假设是它正在过滤输入和输出,但似乎并非如此。看起来它正在使用它作为某种压缩和解压缩的密钥。那是对的吗?如有任何帮助,我们将不胜感激。


正确答案


在未压缩数据中的每个点,zlib 使用之前的 32K 未压缩数据来搜索与当前位置的数据匹配的字节序列。大部分压缩来自于对距离和匹配序列的长度进行编码,而不是字节本身。

当zlib从未压缩数据的开头开始时,没有前面的32K!对于前 32K,zlib 的运行有些不利,因为没有完整的 32K 历史记录。

提供字典可以让 zlib 抢占先机,因为它可以提供不需要压缩的“先前”32K 数据。您将尝试使用您可能希望在压缩的数据中看到的字节序列填充该字典。

您与 zlib 达成的协议是,您将在解压端提供完全相同的 32K 字典,这样 zlib 就不必将其包含在压缩数据中。然而,zlib 会在标头中对该字典的检查值进行编码,以便您可以(在某种程度上)验证另一端是否有正确的字典,甚至可能使用该检查值在多个字典中进行选择被使用。

如果您要压缩大输入,那么在第一个 32K 上的领先优势实际上不会产生太大影响。但是,如果您尝试压缩短字节序列,并且知道这些短序列中会发生什么,那么字典可以发挥巨大作用。

以上就是《Golang:zlib.NewWriterLevelDict / zlib.NewReaderDict 的作用是什么?》的详细内容,更多关于的资料请关注golang学习网公众号!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>