
好吧,今天抽时间回答一下这个问题,最近研究通信原理,有这方面的一点理解。首先说一下quickpar这个软件,他的修复位置是任意的,任意位置出现误码的片段都可以修复,很神奇是不是,接下来给出定性的解释。首先quickpar将文件分块,分的越多越慢。然后选择冗余度,根据这两项计算出你备份的块数。例如你分了1000块,冗余1%,则备份10块。此时,文件中的任意10块内容损坏都可以得到修复(块内无论损坏成什么样子都可以)但是11块就不行了。应当指出,备份的10块内容不是数据,而是经过复杂矩阵计算的具有纠错功能的冗余数据。不相信?可以自己用winhex把文件手动破坏一下,然后在恢复一下。 这种任意的纠错功能是靠复杂的算法实现的,主要是数学界的工作,包括线性分组码、卷积码什么的,这个比较深,一般人很难理解。 别急,给一个类似解释,知道奇偶校验吧?(不知道自己查去,这个都不懂就不要再看下去了),如果将数据做方阵奇偶校验,就可以实现如上功能:如原始数据:1010101 0011100 1010111 1010110 0101001 0001111 0010011写成方阵:1010101001110010101111010110010100100011110010011每行做一次偶校验,(加一位何为偶数):1010101 00011100 11010111 11010110 00101001 10001111 00010011 1纵向也做一个奇偶校验:1010101 00011100 11010111 11010110 00101001 10001111 00010011 1 1111101 0下面我们假设任意一个位置的原始数据发生错误,比如第一行第二位0变为1,这时横向的奇偶校验报错,表示这一行有错误,但不知道是哪一位。检查纵向校验,发现是第二位错误,于是给出错误位置,由于是二进制,很容易纠错。 打字累死了,你有没有恍然大悟的赶脚?给点个赞先, 上述的检验和纠错就具有任意性,而冗大小为8+7=15位,数据量7*7=49位,冗余度30%,quickpar软件当然不会使用这等低端算法,所以效率要高得多,不过思想是类似的。比如人家不是用的方阵,而是多维数组,矩阵尺寸也会有相应的优化,等等等等,
