2

シーク可能なリーダーをサポートする循環バッファーの実装が必要です。私のユースケース:

私のコードでは、ログ メッセージを収集します。最終的に、ユーザーは適切にフォーマットされたページにアクセスする可能性があります。メッセージで RAM がいっぱいにならないようにするには、固定サイズの FIFO 構造が必要です。ユーザーが長時間ページにアクセスしないと、メッセージがドロップされます。それで大丈夫です。

ユーザーがページにとどまっている限り、新しいログ メッセージがページに追加されます。JavaScript を介して、ユーザーは保持するメッセージの数を定義できます。これは、アプリのバッファ サイズとは完全に無関係です。したがって、新しい要素を反復処理するために使用できるデータ構造のリーダーが必要です。

ユーザーがページを再読み込みするか、初めて読み込む場合は、リーダーを FIFO 内の最も古い要素に設定する必要があります。

メッセージが追加されると、リーダーを更新する必要があります。ブラウザーが新しいメッセージを十分な速さで取得できない場合、リーダーは最終的に FIFO 内の最も古いメッセージを指す必要があります。つまり、ユーザーはいくつかのメッセージを見逃す可能性があります。これは完璧ではありませんが、まれなケースです。読者が「メッセージを 5 つ逃した」と言ってくれれば完璧ですが、それがなくても生きていけます。

これを提供する既存の実装を知っていますか?

4

1 に答える 1

0

http://commons.apache.org/collections/を試して、循環バッファを見てください。

于 2011-05-26T08:20:58.870 に答える