残りのコードが英数字データをファイルに記録するために使用するロギングメカニズムを作成しています。システム内の他のすべてのモジュールは、連続してファイルに書き込まれる英数字の文章(最大で2語)を送信します。キャッチは、私は自分のデータ構造とこれらのログメッセージのメモリ内ストレージに使用するために、あらかじめ割り当てられた少量のメモリしか与えられていないということです。インフローがディスクに書き込めるものより多い場合、ログメッセージは破棄されます。事前割り当てメモリを備えたログモジュール
ログモジュールのクライアントとメモリ間の圧縮メカニズムを入れて、できるだけ多くのメッセージを保存できるようにします。これまで
私の現在の設計:
CLIENT ------>ログモジュール---->圧縮とインメモリで保存バッファ1
ライタースレッド: 書き込む時間が来たら、バッファ2と書き込みバッファ1でバッファ1をファイルに切り替えます。この間、クライアントはバッファ2に書き込みます。外
スクリプト: 解凍およびshowログメッセージ
質問: 私は使用することができます良い英数字圧縮アルゴリズムまたは良好なデータ構造である私は(できるだけ多くのデータをキャプチャするために使用することができます上記の圧縮段階の間)?
可能であれば、中間データ構造に圧縮コードを格納しないアルゴリズムが必要です。つまり、システムがクラッシュした場合、これまでにファイルに書き込まれたものを解凍できるようにしたいと考えています。
今まで試みてください: 私たちが使用するすべてのチャレーターにコードを割り当ててください。それほど柔軟性がないようです。私が使用することができます良い英数字圧縮アルゴリズムまたは良好なデータ構造である私は、圧縮中に(できるだけ多くのデータをキャプチャするために使用することができます。
ログメッセージのほとんどは、単純なテキスト文章