Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/330.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/logging/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 带读卡器的循环缓冲区_Java_Logging_Fifo - Fatal编程技术网

Java 带读卡器的循环缓冲区

Java 带读卡器的循环缓冲区,java,logging,fifo,Java,Logging,Fifo,我需要一个支持可查找读卡器的循环缓冲区实现。我的用例: 在我的代码中,我收集日志消息。最终,用户可能会访问一个页面,该页面显示了良好的格式。为了确保消息不会填满RAM,我需要一个固定大小的FIFO结构。如果用户长时间不访问该页面,则会删除消息。没关系 只要用户停留在页面上,新的日志消息就应该附加到页面上。通过JavaScript,用户可以定义要保留多少条消息。这与我的应用程序中的缓冲区大小完全无关。所以我需要一个关于数据结构的阅读器,我可以用它来迭代任何新元素 如果用户重新加载页面或第一次加载页

我需要一个支持可查找读卡器的循环缓冲区实现。我的用例:

在我的代码中,我收集日志消息。最终,用户可能会访问一个页面,该页面显示了良好的格式。为了确保消息不会填满RAM,我需要一个固定大小的FIFO结构。如果用户长时间不访问该页面,则会删除消息。没关系

只要用户停留在页面上,新的日志消息就应该附加到页面上。通过JavaScript,用户可以定义要保留多少条消息。这与我的应用程序中的缓冲区大小完全无关。所以我需要一个关于数据结构的阅读器,我可以用它来迭代任何新元素

如果用户重新加载页面或第一次加载页面,我需要将读卡器设置为FIFO中最早的元素

添加消息时,必须更新读卡器。如果浏览器无法足够快地获取新消息,读卡器最终应指向FIFO中最早的消息。这意味着用户可能会错过几条消息。这并不完美,但这应该是一个罕见的情况。如果读者能告诉我“错过了5条信息”,那就太好了,但我可以没有它


你知道有一个现有的实现提供这种功能吗?

试试看,看看那里的循环缓冲区。

试试看,看看那里的循环缓冲区。

在我的例子中毫无用处。所有这些实现都只提供破坏性读取(通过
remove()
)或getter,这将迫使读卡器代码知道哪些消息已被处理。您可以使用迭代器读取:迭代器在向缓冲区添加元素时不会得到更新。缓冲区已满时也会阻塞。我需要一个循环缓冲区,对我来说没用。所有这些实现都只提供破坏性读取(通过
remove()
)或getter,这将迫使读卡器代码知道哪些消息已被处理。您可以使用迭代器读取:迭代器在向缓冲区添加元素时不会得到更新。缓冲区已满时也会阻塞。我需要一个循环缓冲区。