作者热门文章
- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我正在编写一个单元,它将检查在过去 10 秒内添加的项目是否超过计数 10 的限制。如果在 10 秒内添加超过 10 个项目,我的应用程序将抛出异常。 Redis 没有机制来为集合或列表中的每个元素添加生存时间。为了解决这个问题,我在 Redis 中的每个调用中以连接格式存储当前的 Millis。每当用户在列表中添加一个项目时,我都会检查 10 个项目的时间戳和当前时间戳的差异是否大于 10 秒,我让它通过。如果不是,我将阻止该操作。
虽然这可行,但我正在寻找一种更好的方法来做到这一点。如果在此过程中有任何问题,需要反馈
最佳答案
您只需要一个 LRU(最近最少使用)缓存。如果您搜索一下,网络上有很多这方面的实现。
这是一个非常简单的例子,说明如何完成实现:
import java.util.LinkedHashMap;
import java.util.Map;
public LRUCache<K, V> extends LinkedHashMap<K, V> {
private int cacheSize;
public LRUCache(int cacheSize) {
super(16, 0.75, true);
this.cacheSize = cacheSize;
}
protected boolean removeEldestEntry(Map.Entry<K, V> eldest) {
return size() >= cacheSize;
}
}
有了这个,您可以将一个项目添加到现金中,最旧的条目将被删除。您还可以检查某个项目是否存在于缓存中,以确定它最近是否已存储在缓存中。
希望对您有所帮助。
关于java - System.currentMillis 用于跟踪 java 中的过期项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36274129/
我需要将标准的长 System.currentmillis 转换为临时访问器,但不知道如何开始。 最佳答案 Instant是一个 TemporalAccessor,因此您可以从纪元以来的毫秒数创建一个
我正在编写一个单元,它将检查在过去 10 秒内添加的项目是否超过计数 10 的限制。如果在 10 秒内添加超过 10 个项目,我的应用程序将抛出异常。 Redis 没有机制来为集合或列表中的每个元
我是一名优秀的程序员,十分优秀!