学习LFU与LRU缓冲技术的心得(举例说明)
2014-10-23 18:29
302 查看
最近在学习LFU与LRU缓冲算法时对于其怎样对数据进行存储遇到了障碍,想上网查找例子方便理解,但又找不到好的文章。研究了一些问题之后,算是弄懂了其中的原理,在此与各位分享。
LFU算法(最不频繁使用法):LFU记录缓冲池中每个缓冲区的访问次数。当需要一个缓冲区重新存储新信息时,被访问次数最少的缓冲区被认为是包含“最不重要的”信息,接下来就使用这个缓冲区。
LRU算法(最近最少使用法):LRU简单地把缓冲区放到一个链表中。每当访问了一个缓冲区中的信息时,就把这个缓冲区放到链表的最前端。当需要读取新信息时,使用链表最后面的缓冲区(最近最少使用的缓冲区),根据需要丢弃其中“老”信息或把这些信息写回磁盘。 下面举例说明: 缓冲池有5个缓冲区,先后存储一下数据:5 2 5 12 3 6 5 9 3 2 4 1 5 9 8 15 3 7 2 5 9 10 4 6 8 5 首先用LFU算法存储数据: 第一次 5 2 12 3 6(5次数为2) 第二次 5 9 12 3 6(5次数为3,3次数为2) 第三次 5 3 9 2 6 第四次 5 3 9 2 4 第五次 5 3 1 2 4 第六次 5 3 1 9 4 (5次数为4) 第七次 5 3 1 9 8 第八次 5 3 15 9 8 第九次 5 3 15 7 8 (3次数为3) 第十次 5 3 15 7 2 第十一次 5 3 9 7 2 (5次数为5) 第十二次 5 3 9 10 2 第十三次 5 3 9 10 4 第十四次 5 3 6 10 4 第十五次 5 3 6 8 4 (5次数为6) 整理 5 3 4 6 8(从左到右为出现次数由多到少,若次数相同,则从左到右为出现时间为后到先) 再用LRU算法存储数据: 第一次 5 2 12 3 6 第二次 5 9 12 3 6 第三次 5 9 2 3 6 第四次 5 9 2 3 4 第五次 1 9 2 3 4 第六次 1 5 2 3 4 第七次 1 5 2 9 4 第八次 1 5 8 9 4 第九次 1 5 8 9 15 第十次 3 5 8 9 15 第十一次 3 7 8 9 15 第十二次 3 7 8 2 15 第十三次 3 7 5 2 15 第十四次 3 7 5 2 9 第十五次 10 7 5 2 9 第十六次 10 4 5 2 9 第十七次 10 4 5 6 9 第十八次 10 4 8 6 9 第十九次 10 4 8 6 5 整理 5 8 6 4 10(从左到右为出现时间从后到先)
以上为本人所积累的方法,供各位参考,若有不明白之处可以提出,我们共同探讨。
相关文章推荐
- Android中Broadcast的学习(举例说明)
- 黑马程序员——IOS基础---Objective-C第一段视频学习---举例说明面向对象思想
- 与afreez一起学习DSP中浮点转定点运算--举例及编程中的心得
- syslog-ng 学习心得与配置说明
- 斯坦福大学机器学习笔记——机器学习基础以及有监督学习和无监督学习举例说明
- 举例说明python2.7.X和python3.X以上版本的区别记录学习
- 举例说明强化学习以及监督学习的区别
- [转载]LibSvm 使用说明 学习心得
- LibSvm 使用说明 学习心得
- Nunit学习心得
- 学习Dnn心得
- Java 第一天学习心得
- Struts1.2.4学习心得!(四)
- 计算机科学与技术学习心得之计算机理论的一个核心问题--从数学谈起(转载)
- lei6.5学习心得
- Struts1.2.4学习心得!(五)
- JSP学习心得
- Struts1.2.4学习心得!(-)
- Struts1.2.4学习心得!(三)
- Win32调试API学习心得(二)