2

効率のために一部のデータをバイナリ形式でシリアル化する必要があり (10 ~ 100 MB のファイルが一般的なデータログ)、形式の詳細を検討しています。現実的に、ファイルの破損やエラーの修正などについて心配する必要があるかどうか疑問に思っています。

ファイルの破損が発生する状況はどのようなものですか? 破損に対する堅牢性をバイナリ形式に構築する必要がありますか? それとも、堅牢で破損しないバイト ストリームを何らかのエラー修正コードでラップする必要がありますか? (何か提案はありますか?私はJavaを使用しています)または、これについて心配する必要はありませんか?

編集:私が現在持っている予備のバイナリ形式には、可変長セグメントがたくさん含まれているため、データが破損した場合、それを読み返すと同期が取れなくなり、できないのではないかと少し心配しています。回復 + ファイルの残りを失います。

4

4 に答える 4

2

少なくともチェックサムを追加する必要があります。BER は最新のハード ドライブでは良好ですが、他のメディアではそうではありません。書き込み中の電力損失は、通常、ファイルの末尾を破損します。データが重要な場合、トランザクションをコミットするには、エラー訂正コード、トリプルおよびバッファなしの書き込みなどが必要になります。

EXE にはエラー修正機能がありませんが、1 ビットの変更が劇的な結果をもたらす可能性があります。

ファイルが TCP 経由で転送される場合は、エラーがゼロであると想定できます。

于 2010-05-27T13:35:16.143 に答える
1

インターネット経由で転送されたファイルが破損するということが 1 回か 2 回見られました。SHA256 などのチェックサムを使用してエラー検出を行うことができます。

于 2010-05-27T13:35:58.067 に答える
1

HDF5 のエラー検出コードに関する注意事項に興味があるかもしれません。チェックサムの場所と種類は、データへのアクセス方法と更新方法、およびエラーを検出するのに役立つチャンクによって異なります。

于 2010-05-27T14:05:40.950 に答える
-1

Reed-Solomon エンコーディング システムを採用しました。Google zxingライブラリには、Java でのかなり使いやすいJava 実装があります。

于 2010-07-09T20:15:28.330 に答える