我从ORACLE读到以下bit:
我可以在对象的压缩版本上执行方法,例如isempty(zip(serial(x)))吗?
由于对象的编码,这对任意对象都不可行。对于特定对象(如String),您可以比较生成的位流。编码是稳定的,因为每次编码同一个对象时,它都被编码为同一组位。
所以我有了这个想法,比如我有4M长的char数组,是否可以使用GZIPOutputStream
将其压缩到几百个字节,然后将整个文件映射到内存中,并通过比较位进行随机搜索?假如我正在寻找"abcd"
的char序列,我能以某种方式获得"abcd"
的压缩版本的位序列,然后只搜索文件吗?感谢。
答案 0 :(得分:1)
您不能使用GZIP或类似方法来执行此操作,因为在处理流时,每个字节的编码都会发生变化。即确定字节意味着什么的唯一方法是读取之前的所有字节。
如果要随机访问数据,可以将String拆分为更小的部分。这样,您只需要解压缩相对较短的数据部分。