the*_*oid 4 c c++ compression embedded delta
这是问题 - 我想在服务器上生成二进制文件的增量(大小> 1 MB),并通过HTTP将增量发送到内存受限(低RAM和无动态内存)嵌入式设备.Deltas是首选(与从服务器发送完整的二进制文件相反),因为通过线路传输数据涉及高成本.
麻烦的是,嵌入式设备无法解码增量并在内存中创建新文件的内容.我已经研究了各种二进制增量编码/解码算法,如bsdiff,VCDiff等,但无法找到支持流媒体的库.
也许,而不是询问是否有合适的库,我可以采取的其他方法仍然可以解决原始问题(通过线路发送最少的数据)?虽然如果有合适的delta库支持流解码(用C或C++编写而不使用动态内存),它肯定会有所帮助.
在嵌入式设备保留的当前文件的服务器上维护一份副本.如果要发送更新,请使用旧版本对文件的新版本进行XOR,并使用任何合理的压缩器压缩生成的流.(允许高成本编码以允许低成本解码的算法在这里特别有用.)将压缩流发送到嵌入式设备,嵌入式设备读取流,对其进行即时解压缩,并直接对目标进行XOR(副本)文件.
如果您的更新使得文件内容随时间变化很小并且保留固定结构,则XOR流将主要为零,并且将非常好地压缩:传输的字节数将很小,解压缩的工作量将会很低,内存要求在嵌入式设备上将是最小的.你的模型离这些假设越远,这种方法就越少.