`
Tonyguxu
  • 浏览: 279720 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论
阅读更多

包含如下内容:


一. LRU算法

http://nemogu.iteye.com/blog/1415874

http://nemogu.iteye.com/blog/1552318

 

二. 算法实现

实现1 基于LinkedHashMap,线程安全的java实现

 

http://nemogu.iteye.com/blog/1418340

 

实现2 apache.commons.collections.map.LRUMap的java实现


 

 

三. 其他

1.为什么在wxxr-smslog-search项目中IndexWriter和IndexReader要存放在基于LRU算法的LRUMap里?

 

LRU指最近最少使用,该算法的一个运用场合:当一个cache已满,而有新元素会被加进来,势必要从cache里拿出一个元素出来腾出位置,这就涉及一个问题:将cache里的哪个元素拿出来呢?LRU算法可以决定让最近最少使用的元素被逐出。

在这个项目中,出于查询效率的考虑,要求 IndexReaderCache要保留90个IndexReader(最近3个月,每天一个 IndexReader ),当cache满了后,就会经常出现需要将cache中元素逐出的操作。基于上面要求,项目中考虑将IndexWriter和IndexReader存放在实现了LRU算法的LRUMap里。

 

 

四. 其他阅读文章

 

1.O(1)LRU Cache的python实现

http://code.activestate.com/recipes/252524-length-limited-o1-lru-cache-implementation/

 

2.High-Throughput, Thread-Safe, LRU Caching(ebay)

http://www.ebaytechblog.com/2011/08/30/high-throughput-thread-safe-lru-caching/

 

3.stackoverflow里关于LRU

http://stackoverflow.com/questions/221525/how-would-you-implement-an-lru-cache-in-java-6

 

4.Redis as an LRU cache

http://antirez.com/post/redis-as-LRU-cache.html

分享到:
评论

相关推荐

    东南大学操作系统实验——实现LRU算法及其近似算法

    在本实验中,学生将深入理解操作系统的内存管理机制,特别是LRU(Least Recently Used,最近最少使用)页面置换算法。LRU算法是一种常见的虚拟内存管理策略,它根据页面的使用历史来决定替换哪个页面。当内存中的...

    工程师必须了解的LRU缓存淘汰算法以及python实现过程

    大家好,欢迎大家来到算法数据结构专题,今天我们和大家聊一个非常常用的算法,叫做LRU。 LRU的英文全称是Least Recently Used,也即最不经常使用。我们看着好像挺迷糊的,其实这个含义要结合缓存一起使用。对于工程...

    软件设计师专题 专题09:数据结构知识

    在实现缓存系统时,LRU(最近最少使用)策略往往配合哈希表使用。 最后,我们还会涉及到数据结构的实现细节,如动态内存管理、指针操作,以及如何通过源码分析理解数据结构的工作原理。这对于工具开发尤其重要,...

    ORACLE进阶与提高专题讲义.pptx

    ORACLE 进阶与提高专题讲义 ORACLE 进阶与提高专题讲义是关于 ORACLE 数据库优化、RMAN 和 RAC 的高级讲义。该讲义涵盖了数据库优化、操作系统设置不当、数据库参数设置不当、库结构设计不合理、应用程序语句不当...

    Redis面试专题及答案(上).pdf

    为了保证Redis中的数据都是热点数据,可以通过设置合适的过期时间,使用LRU(最近最少使用)算法淘汰不常访问的数据,确保Redis实例的内存中总是存储最近访问频繁的数据集。在有大量数据的数据库系统中,如MySQL,...

    操作系统专题知识点.pdf

    在代码中,`lru()`函数实现了LRU算法。通过跟踪每个页面的最后访问时间,当需要替换页面时,选择时间戳最早的页面(即最长时间未使用的页面)进行替换。 实验内容要求计算不同内存大小(4到20页)时,这两种算法的...

    软件设计师专题 专题03: 操作系统知识

    虚拟内存技术使得程序可以运行在大于物理内存的地址空间中,通过页面替换策略(如LRU、LFU等)处理页故障。 4. **文件管理**:文件系统是操作系统中组织和存储数据的部分。它定义了文件的命名、创建、删除、查找、...

    JAVA_redis面试专题66道.pdf

    2. allkeys-lru:尝试回收最少使用的键(LRU),使得新添加的数据有空间存放。 3. volatile-lru:尝试回收最少使用的键(LRU),但仅限于在过期集合的键。 4. allkeys-random:回收随机的键使得新添加的数据有空间...

    面试专题-Redis专题部分

    - Redis默认使用LRU(Least Recently Used)算法驱逐最少最近使用的数据。 - 可通过配置调整驱逐策略,如LFU(Least Frequently Used)。 8. **布隆过滤器(Bloom Filter)** - 用于判断一个元素是否可能存在集合中,...

    Redis面试专题.pdf

    在 Java 中实现 LRU 缓存,可以使用 LinkedHashMap,其内置了 LRU 功能: ```java import java.util.*; public class LRUCache, V> { private final int capacity; private final Map, Node<V>> map; private ...

    redis阿里大厂面试专题

    2. allkeys-lru:回收最不常用(LRU)的键。 3. volatile-lru:仅回收已设置过期时间的键中最不常用的。 4. allkeys-random:随机回收键。 5. volatile-random:随机回收已设置过期时间的键。 6. volatile-ttl:优先...

    redis面试专题.pdf

    2. **allkeys-lru:**基于最近最少使用的原理(LRU),删除最少使用的键。 3. **volatile-lru:**只针对设置了过期时间的键执行LRU算法。 4. **allkeys-random:**随机删除任意键。 5. **volatile-random:**只针对...

    程序设计大赛算法专题.rar

    例如,跳跃游戏、LRU缓存等经典问题就涉及到这些数据结构。 5. **字符串处理**:KMP、Rabin-Karp和Boyer-Moore是常见的字符串匹配算法,Z-Algorithm和Manacher's Algorithm也有其独特优势。对于字符串操作,了解...

    分布式数据库面试专题系列:Memcached+Redis+MongoDB.zip

    面试时,可能涉及的问题包括Memcached如何解决缓存一致性、其内存管理机制(如Slab Allocation)以及如何处理缓存失效策略(如LRU,Least Recently Used)。 接下来是Redis,一个高级的、开源的、支持网络的、数据...

    Redis面试专题1

    当内存达到上限时,Redis 提供了多种数据淘汰策略,如 noeviction(不删除策略)、allkeys-lru(回收最少使用的键)、volatile-lru(只回收有过期时间的最少使用键)等,来应对内存不足的情况。 Redis 目前没有官方...

    java面试——Redis面试专题.zip

    本专题主要围绕Redis进行深入探讨,旨在帮助求职者准备Java面试中的Redis相关问题。以下是Redis的一些核心知识点和面试常问问题。 1. Redis简介:Redis是一款开源的内存数据结构存储系统,它可以用作数据库、缓存和...

    专题三:操作系统知识.rar

    - **内存管理**:了解页式、段式、段页式等存储管理方式,以及页面置换算法(LRU、FIFO等)。 - **文件系统**:掌握文件的逻辑结构和物理结构,以及文件权限和访问控制。 - **设备管理**:了解I/O模型(同步与...

Global site tag (gtag.js) - Google Analytics