Циклический буфер с ридерами - PullRequest
2 голосов
/ 26 мая 2011

Мне нужна реализация циклического буфера, которая поддерживает поиск читателей. Мой вариант использования:

В своем коде я собираю сообщения журнала. В конце концов, пользователь может посетить страницу, которая показывает их в хорошем формате. Чтобы сообщения не заполняли оперативную память, мне нужна структура FIFO фиксированного размера. Если пользователь не посещает страницу в течение длительного времени, сообщения удаляются. Это нормально.

Пока пользователь остается на странице, новые сообщения журнала должны быть добавлены на страницу. С помощью JavaScript пользователь может определить, сколько сообщений хранить. Это полностью не зависит от размера буфера в моем приложении. Поэтому мне нужен читатель по структуре данных, который я могу использовать для перебора любых новых элементов.

Если пользователь перезагружает страницу или загружает ее в первый раз, мне нужно установить для считывателя самый старый элемент в FIFO.

По мере добавления сообщений читатель должен обновляться. Если браузер не может получить новые сообщения достаточно быстро, читатель должен в конечном итоге указать на самое старое сообщение в FIFO. Это означает, что пользователь может пропустить пару сообщений. Это не идеально, но это должен быть необычный случай. Если бы читатель мог сказать мне «пропустил 5 сообщений», это было бы прекрасно, но я могу жить без этого.

Знаете ли вы существующую реализацию, которая предлагает это?

1 Ответ

0 голосов
/ 26 мая 2011

Попробуйте http://commons.apache.org/collections/, посмотрите на круговые буферы там.

...