- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我有一个应用程序想要打开许多文件:它会定期收到客户端请求说“向文件 X 添加一些数据”,并且最好已经打开该文件,并且该文件的 header 部分已经解析,因此写入速度很快。但是,保持打开这么多文件是对操作系统来说不是很好,如果我们的数据存储需求增长,可能会变得不可能。
所以我想要一个“给我这个文件句柄,如果没有缓存就打开”的功能,以及一些过程用于自动关闭未写入的文件,例如五分钟。为了在短时间内写入缓存文件句柄的特定情况,这可能就足够了,但这似乎是一个足够普遍的问题,应该有像“给我一个名为 X 的对象,如果可能的话,从缓存中获取”和“我现在已经完成了对象 X,所以让它有资格被驱逐五几分钟后”。
core.cache看起来它可能适合这个目的,但是 documentation是相当缺乏和 source没有提供关于如何使用它的具体线索。它的 TTLCache 看起来很有前途,但同时也是不清楚如何使用它依赖于垃圾收集来驱逐项目,所以我不能干净地关闭一个当我准备好让资源过期时。
当然,我可以自己动手,但是有很多棘手的地方,我相信我会得到一些事情有点不对劲,所以我希望有人能指出我的实现方式功能。我的代码在 clojure 中,但当然使用 java 库会非常好,如果这就是可以找到最佳实现的地方。
最佳答案
查看 Guava's cache implementation .
get
方法提供一个Callable
(或一个CacheLoader
)“如果句柄被缓存,返回它,否则打开,缓存并返回它”语义使用 CacheLoader
稍微修改链接的 Guava 页面中的代码示例:
LoadingCache<Key, Handle> graphs = CacheBuilder.newBuilder()
.maximumSize(100) // sensible value for open handles?
.expireAfterAccess(5, TimeUnit.MINUTES)
.removalListener(removalListener)
.build(
new CacheLoader<Key, Handle>() {
public Handle load(Key key) throws AnyException {
return openHandle(key);
}
});
RemovalListener<Key, Handle> removalListener =
new RemovalListener<Key, Handle>() {
public void onRemoval(RemovalNotification<Key, Handle> removal) {
Handle h = removal.getValue();
h.close(); // tear down properly
}
};
* 免责声明 * 我自己没有以这种方式使用缓存,请确保您明智地进行测试。
关于java - 如何缓存文件句柄?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14842457/
我设置了 Helm 柄和 Helm 柄。我有tiller-deploy。昨天,我可以定期运行了。但今天我收到此错误消息 Error: could not find a ready tiller pod
我以前已将分er安装到特定的 namespace 中。 我设置了一个环境变量来设置'tiller'命名空间-但我不记得该环境变量的名称-而且似乎无法通过网络搜索找到它。 这是什么 key ? 最佳答案
当我在 View 模型中使用如下界面时 class MainViewModel @ViewModelInject constructor( private val trafficImagesR
我正在尝试找到如何在某个 fragment 相关场景中定义 Hilt 的解决方案。我有以下设置: Activity 父 fragment 1 子 fragment 1 子 fragment 2 ...
Hilt 指出如果没有@Provides 注解就不能提供这个接口(interface): interface PlannedListRepository { fun getAllLists()
我的问题非常简单明了:两个注释/示例之间有什么区别: 例子一 @Singleton class MySingletonClass() {} @Module @InstallIn(FragmentCom
我是一名优秀的程序员,十分优秀!