Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/three.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Compression 流式、就地二进制修补_Compression_Diff - Fatal编程技术网

Compression 流式、就地二进制修补

Compression 流式、就地二进制修补,compression,diff,Compression,Diff,我有一系列大型二进制文件,每个文件都是通过修改前一个文件生成的。它们存储在服务器上。服务器只是一个哑文件存储,我们不能在上面运行程序 为了节省空间,我想将它们存储为diff。下载文件时会出现问题:文件太大,客户端上没有足够的磁盘空间来存储原始文件和差异文件 是否有一种diff算法允许我们将原始文件下载到磁盘,然后在从服务器流式传输时应用补丁?AUI,xdelta和rdiff都不能修改原始文件,只能创建一个新副本,这将占用太多的磁盘空间。很遗憾,简短的回答是否定的。不过 就地修补的问题是插入和引用

我有一系列大型二进制文件,每个文件都是通过修改前一个文件生成的。它们存储在服务器上。服务器只是一个哑文件存储,我们不能在上面运行程序

为了节省空间,我想将它们存储为diff。下载文件时会出现问题:文件太大,客户端上没有足够的磁盘空间来存储原始文件和差异文件

是否有一种diff算法允许我们将原始文件下载到磁盘,然后在从服务器流式传输时应用补丁?AUI,xdelta和rdiff都不能修改原始文件,只能创建一个新副本,这将占用太多的磁盘空间。

很遗憾,简短的回答是否定的。不过

就地修补的问题是插入和引用旧数据的混合。插入需要移动现有数据,以便有足够的位置进行插入,也就是说,向后复制文件的结尾,在一般情况下,速度会非常慢,在最坏的情况下,会采用文件本身的大小。对旧数据的引用需要非常谨慎,以减少最坏的情况

有了所有的限制,使这在客户端上成为可能,并且在补丁期间占用空间方面具有真正的优势,补丁可能比xdelta或rdiff要大得多。修补过程也会慢得多

智能服务器的一种可能性是:

将所有补丁组成一个元补丁 流式传输动态修补的原始文件,从而在线路上进行重新编译 简短的回答是遗憾的不。尽管

就地修补的问题是插入和引用旧数据的混合。插入需要移动现有数据,以便有足够的位置进行插入,也就是说,向后复制文件的结尾,在一般情况下,速度会非常慢,在最坏的情况下,会采用文件本身的大小。对旧数据的引用需要非常谨慎,以减少最坏的情况

有了所有的限制,使这在客户端上成为可能,并且在补丁期间占用空间方面具有真正的优势,补丁可能比xdelta或rdiff要大得多。修补过程也会慢得多

智能服务器的一种可能性是:

将所有补丁组成一个元补丁 流式传输动态修补的原始文件,从而在线路上进行重新编译
实现思想​​同步差异:

将数据裁剪成固定大小的多个块; 计算需要保留在旧数据中的块;可以使用同步算法 按新数据顺序将保留块排序到新位置; 下载缺失的区块进行填充;
其中,最困难的是优化排序块的速度,需要充分利用内存或剩余磁盘空间,以尽量减少磁盘I/O;

的实现思路​​同步差异:

将数据裁剪成固定大小的多个块; 计算需要保留在旧数据中的块;可以使用同步算法 按新数据顺序将保留块排序到新位置; 下载缺失的区块进行填充; 其中,最困难的是优化排序块的速度,需要充分利用内存或剩余磁盘空间,以尽量减少磁盘I/O