当前位置: 首页 > 面试题库 >

JSON编码数据包的压缩算法?

弘焕
2023-03-14
问题内容

在通过网络发送数据包之前压缩数据包的最佳压缩算法是什么?数据包使用JSON编码。LZW会是一个不错的选择吗?还是有更好的选择?


问题答案:

我认为有两个问题会影响您的答案:

1)在不知道程序的任何特定运行情况下会如何预测数据的组成?例如,如果您的数据包如下所示:

{
    "vector": {
        "latitude": 16,
        "longitude": 18,
        "altitude": 20
    },
    "vector": {
        "latitude": -8,
        "longitude": 13,
        "altitude": -5
    },
    [... et cetera ...]
}

-那么您可能会通过创建一个不断出现在数据中的文本字符串的硬编码字典来获得最佳压缩,并用适当的字典索引替换每个出现的文本字符串之一。(实际上,如果你的数据是 这个 规律,你可能要发送 刚刚 过线的值,只需编写一个函数到客户端从值构造一个JSON对象是否需要一个JSON对象。)

如果您无法预测将使用 哪些 标头,则可能需要使用LZW或LZ77,或另一种方法来查看已通过的数据,以找到可以以特别紧凑的形式表示的数据。然而…

2)数据包是否需要彼此分开压缩?如果是这样,那么LZW绝对 不是
您想要的方法。它将没有时间来构建其字典,使其字典的大小可以在单个数据包的末尾得到实质性的压缩结果。在这种情况下,真正获得实质性压缩的唯一机会,恕我直言,是使用硬编码字典。

(以上所有内容的附录:正如Michael
Kohne所指出的那样,发送JSON表示您可能正在发送所有文本,这意味着您使用的带宽不足,该带宽能够发送比您使用的字符范围更大的字符但是,如何将属于0-127范围的字符打包到容纳值0-255的容器中的问题很简单,我认为可以说,这是“读者的一种练习”。)



 类似资料:
  • 我在SE上看到过关于压缩算法的问题,但没有一个完全符合我的要求。显然,真正均匀分布的数据无法压缩,但我们能做到多近? 我(可能是错误的)想法:我会想象通过转换数据(以某种方式标准化?),您可以强调几乎一致的数据的非均匀性方面,然后使用转换集进行压缩,可能与逆变换或其参数一起进行。但也许我完全错了,当数据接近均匀性时,它们的表现都一样糟糕? 当我查看(无损)压缩算法列表时,我看不出它们对某些类型的数

  • 我想知道我们可以在多大程度上进行无损数据压缩;我无法找到一个无损算法的在线模拟器来执行一些经验测试。我可以自己做一个,但不幸的是,我在这段时间没有足够的时间;我仍然对我的直觉感到好奇,我将解释一下。 让我们只看两种更流行的算法:

  • 我想在java中解压缩一个字符串,它在Python中被gzip压缩。 这是Java中的解压缩代码: }

  • 原始文件:429,7 MIB 通过 它和压缩通过: 原始压缩xz文件: 几乎没有时间=预期的大小增加 所以可以观察到的是: xz压缩的☺真好 base64-编码的数据压缩不好,它比未编码的压缩文件大2倍 base64-then-compress明显比compress-then-base64差且慢 我知道base64然后压缩文件是没有意义的,但大多数情况下,人们无法控制输入文件,而且我会认为,由于b

  • 问题内容: 我正在使用以下代码来压缩和解压缩字符串数据,但是我面临的问题是,它很容易被压缩而不会出错,但是decompress方法会引发以下错误。 线程“主”中的异常java.io.IOException:不是GZIP格式 仍然不知道如何解决此问题!!! 问题答案: 这是因为 发送您可以从中获得的,并在其中使用它来构建您的。以下是需要在代码中进行的更改。

  • 我希望使用log4j2 RollingFileAppender和定制的压缩算法(ZStd)。 目前为止支持的压缩算法似乎是FileExtension枚举(zip,gz,bz2,...)中的压缩算法,请参见https://github.com/apache/logging-log4j2/blob/efa64bfad3f67c5b5fed6b25d65ef5ca2212011b/log4j-core/