草庐IT

lru_cache

全部标签

ruby - 高效的 Ruby LRU 缓存

使用任意Ruby对象作为基于最近最少使用算法过期的键来构建缓存的最有效方法是什么。它应该使用Ruby的正常哈希语义(不等于?) 最佳答案 我知道它晚了几年,但我刚刚实现了我认为是Ruby最快的LRU缓存。它还经过测试,可以在多线程环境中安全使用。https://github.com/SamSaffron/lru_redux注意:在Ruby1.9中Hash是有序的,所以你可以在几行代码中欺骗并构建最快的LRU缓存classLruRedux::Cache19definitialize(max_size)@max_size=max_siz

performance - 戈朗 : right way to store map structure in lru cache

我有一个像这样的结构:map[key]value,我想通过一个字符串将它存储在"github.com/golang/groupcache/lru"中键,例如cacheKey。这是我的问题:我发现每当我想更新缓存项时,我都需要先获取:item:=cache.Get(cacheKey)ifv,ok:=item[key];ok{item[key]=new_valuecache.Add(cacheKey,item)}这样做是否正确?或者,正如一些人所建议的,我需要重新设计我的结构,以确保我可以在任何时候更新它时执行cache.Add(cacheKey,item)。或者,我什至应该使用像cach

.net - LRU 文件缓存和在 Windows 目录中查找文件的成本

我有一个应用程序可以下载和缓存至少250,000个8KB*文件,总计约2GB。更新此缓存时,我需要删除最近最少使用的文件。*这些小文件跨越两个4KB扇区。为NTFS格式的5400RPM驱动器上的目录中的此类文件按名称获取文件句柄的相对成本是多少?如果我将所有200K文件存储在一个目录中,仅仅获取一个文件句柄会花费超过几毫秒的时间吗?我可以轻松地将文件存储到不同的目录中。Windows7默认禁用文件的最后访问时间,我不想要求管理员启用此功能。我是否应该在内存中维护一个单独的文件访问时间列表(应用程序退出时序列化到磁盘?)我是否应该考虑将这些文件存储在一个大的平面文件中?如果我使用.NET

javascript - LRU 缓存在 Javascript 中的实现

Java有LinkedHashMapgetsyou99%theretoanLRUcache.是否有LRU缓存的Javascript实现,最好来自信誉良好的来源,即:可以理解高效(分摊O(1)get/put/delete)?我一直在网上搜索,但找不到;我以为我在AjaxDesignPatterns上找到了一个但它掩盖了sendToTail()方法并具有O(n)性能(大概是因为队列和关联数组被拆分了)。我想我可以自己写,但我已经通过艰难的方式了解到,为核心算法重新发明轮子可能会对一个人的健康造成危害:/ 最佳答案 Mapshouldbe

java - Java 中的 LRU 缓存实现

我看过下面的代码,我认为addElement方法的实现中有一个无用的while循环。它不应该碰巧有比size+1更多的元素,因为已经有一个写锁。那么为什么addElement方法要删除元素直到它得到这个条件是的while(concurrentLinkedQueue.size()>=maxSize)任何关于此的指示都会很棒。这里是实现:publicclassLRUCache{privateConcurrentLinkedQueueconcurrentLinkedQueue=newConcurrentLinkedQueue();privateConcurrentHashMapconcurr

DBA面试题:MySQL缓存池LRU算法做了哪些改进?

下图是MySQL(MySQL5.7版本)体系架构图:MySQL的InnoDbBufferPool缓冲池是主内存中的一个区域,用来缓存InnoDB在访问表和索引时的数据。对于频繁使用的数据可以直接从内存中访问,从而加快处理速度。如果一台服务器专用作MySQL数据库使用时,通常将70%~80%(具体看总内存大小而定)的物理内存空间分配给缓冲池。缓冲池由多个缓冲池实例(innodb_buffer_pool_instances)组成,每个实例都有自己的锁和数据结构,这样可以在多线程环境中提高并发性能。缓冲池中的页可以分为干净页和脏页,干净页是指与磁盘上的数据一致的页,而脏页则是指已经被修改但尚未写回磁

java - LinkedHashSet 实现 LRU

我想删除LinkedHashSet中最早的成员,我知道有一个removeEldestEntry方法我必须重写(JavadocforremoveEldestEntry),但我想我必须定义initialcapacity和loadfactor我不在乎,我只是想删除最近最少访问的元素(这里通过访问我的意思是当它已经在集合中或被读取时被put)有什么方法可以不覆盖removeEldestEntry吗? 最佳答案 Iknowthatthere'saremoveEldestEntrymethodthatIhavetooverride这个说法是错误

java - 含咖啡因的 LRU

我正在尝试使用Caffeine作为LRU缓存,因此首先添加的条目将首先被逐出。运行这段代码:finalCachemap=Caffeine.newBuilder().maximumSize(10).initialCapacity(10).build();for(longi=0;i打印:{0=0,1=1,2=2,3=3,4=4,5=5,6=6,7=7,8=8,19=19}但我预料到了{10=10,11=11,12=12,13=13,14=14,15=15,16=16,17=17,18=18,19=19}我做错了什么? 最佳答案 Caff

c++ - C++ 中的 LRU 缓存

这个问题在这里已经有了答案:关闭10年前。PossibleDuplicate:LRUcachedesign我在编程面试中遇到了这个问题。请随意考虑如何回答。您将如何在C++中实现LRU(最近最少更新)缓存?基本上,缓存最多可以容纳N个项目。如果插入了一个新项,并且缓存中的项数小于N,则直接插入。但是,如果插入了一个新项目并且缓存中的项目数已经是N,则应从缓存中删除最近最少使用的项目。想想你的每个操作需要多少运行时间。

【面试深度解析】腾讯音乐校招 Java 后端一面:LRU、HTTPS校验证书、文件下载安全、HashMap、volatile、乐观锁(上)

欢迎关注公众号(通过文章导读关注:【11来了】),及时收到AI前沿项目工具及新技术的推送!在我后台回复「资料」可领取编程高频电子书!在我后台回复「面试」可领取硬核面试笔记!文章导读地址:点击查看文章导读!感谢你的关注!腾讯音乐校招Java后端一面:LRU、HTTPS校验证书、文件下载安全、HashMap、volatile、乐观锁题目分析1、手写LRULRU(LeastRecentlyUsed)其实是一种数据淘汰策略,当数据达到容量上限之后,就会去淘汰最久未使用的数据,Redis中也有LRU内存淘汰策略,用于淘汰位于内存中的数据我们将LRU定义为双向链表,这样以O(1)的复杂度就可以取出表头的表