Java - 压缩大字符串

Java - Compress large string

在我的 Java 应用程序中,我从一些计算中得到了一个非常长的字符串(从非常长的字符串我的意思是大约 600000 个字符左右)。 但是我需要将这个字符串发送给客户端进行处理,因此我需要压缩后的字符串最大为1000个字符。

我尝试过使用 GZIPOutputStream 和 Inflater 和 Deflater 类,在最好的情况下我得到了 300000 个字符的输出字符串,这是很好的压缩,但在我的情况下这还不够。

我也试过压缩字符串 n 次,但是输出比前一次大,所以只能 一次压缩成功。

那么,你建议我尝试什么?

谢谢。

我同意@Peter Lawrey 的观点,严格按照这些要求,可能无法向客户传递这么大的消息。

无论如何,我仍然建议三种可能的解决方案,具体取决于您的要求有多灵活:

  1. 如果您输入的所有字符串都有受限词汇(它不允许自由、随机地组合字母、符号和数字,但它仅限于某个设置业务词、标识符和值),还有一个简单的语法,你可以尝试设计你自己的压缩算法.示例:

input symbol compressed symbol ------------ ----------------- client 1 bill 2 date 3 amount 4 value 5 price 6 tax 7

如果语法简单但词汇量不受限制,您可以执行初始自定义压缩以尽可能多地压缩文档结构,然后进行第二次 GZIP 压缩以压缩数据。

并且不要忘记您必须将客户端应用程序与相应的解压器捆绑在一起。

总之,这不是一件容易的事,我承认。

  1. streaming 中将响应传送到客户端应用程序。如果协议是 HTTP,您可以使用 Chunked Transfer Coding.

  2. 如果一切都失败了,你将不得不分页结果并按需分页将它们提供给客户:客户进行查询,服务器执行它并只提供第一页结果。然后,客户可以选择阅读下一页。