# README
示例
此文件夹包含 Reed-Solomon 编码器的使用示例。
简单编码器/解码器
展示了编码器的基本用法,将单个文件编码为多个数据和奇偶校验分片。这仅作为示例,不适合生产使用,因为存在以下所述的一些缺点。
要构建可执行文件,请使用:
go build simple-decoder.go
go build simple-encoder.go
流式 API 示例
这里有相同功能的流式示例,它们流式处理数据而不是将数据保存在内存中。
要构建可执行文件,请使用:
go build stream-decoder.go
go build stream-encoder.go
使用示例
在 Windows 上,以下命令将生成六个文件 README.md.0
到 README.md.5
.\simple-encoder.exe .\README.md
将 README.md
重命名为 README.md.org
,并删除六个生成的文件中的两个。以下命令将从剩余的四个生成的文件重建 README.md
。
.\simple-decoder.exe .\README.md
请注意,重建的文件可能会包含空填充,如下面的缺点中所解释的。
缺点
- 如果输入文件大小不能被数据分片数整除,输出将包含额外的零
- 如果解码器的分片数与编码器不同,将生成无效输出
- 如果分片中的值发生变化,无法重建
- 如果两个分片被交换,重建将始终失败 您需要按照给定的顺序提供分片
解决这些问题的方法是保存一个包含以下内容的元数据文件:
- 文件大小
- 数据/奇偶校验分片的数量
- 每个分片的哈希值
- 分片的顺序
如果保存这些属性,您应该能够检测分片中的文件损坏,并在剩余所需数量的分片的情况下重建数据。