作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我寻找一个队列,该队列在特定时间(即 10 秒)内最多存储 N
个元素,或者如果已满则应处理最旧的值。
我在 Apache Collections (CircularFifoQueue
JavaDoc) 中发现了一个类似的队列,它忽略了生存时间方面的问题。一个完整的消息代理似乎是我的小项目的开销。
你介意给我一个提示,我应该如何实现它吗?我是否应该在轮询元素时过滤掉旧值?
最佳答案
有一个类叫做LinkedHashMap它有一个特殊的方法来删除陈旧的数据。来自文档:
protected boolean removeEldestEntry(Map.Entry eldest)
Returns true if this map should remove its eldest entry.
方法removeEldestEntry
在任何时候被添加到列表(队列)时被调用。如果它返回 true
则删除最老的条目以为新条目腾出空间,否则什么也不会删除。您可以添加自己的实现,它会检查最老条目的时间戳,如果它早于到期阈值(例如 10 秒),则返回 true
。所以你的实现可能看起来像这样:
protected boolean removeEldestEntry(Map.Entry eldest) {
long currTimeMillis = System.currentTimeMillis();
long entryTimeMillis = eldest.getValue().getTimeCreation();
return (currTimeMillis - entryTimeMillis) > (1000*10*60);
}
关于java - 有生存时间的消息队列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37809326/
我每天都进行回归分析。就我而言,这通常意味着估计连续和分类预测变量对各种结果的影响。生存分析可能是我执行的最常见的分析。此类分析通常以非常方便的方式出现在期刊中。下面是一个例子: 我想知道是否有人遇到
我是一名优秀的程序员,十分优秀!