LRU缓存淘汰算法(链表)
LRU(Least recently used)最近最少使用策略算法:
是根据数据的历史访问记录(按时间排序)来进行淘汰数据的,理念:假如一个数据在最近没有被访问过,那么将来被访问的可能性也很小,当缓存空间已满的时候,假如有新的缓存数据进来,将会删除时间最早的那条数据;
1.一个空的缓存链表长度为5,依次进入
E => D => C => B => A
2.当ABCDE这5个节点中任何一个需要增加到缓存链表中,先查找链表中有没有这个值,假如存在,将该节点删除,并重新增到表头;
B => E => D => C => A
3.链表中插入新一个数据,先遍历原价的数据,能否存在,不不存在将删除最后一个节点,并将最新的节点放在链表的表头;
A => E => D => C => B
public static void LRU() { //假设链表的长度为3 LinkedList<int> l = new LinkedList<int>(); l.Insert(1); l.Insert(2); l.Insert(3); bool isExist = false; Node<int> newNode = new Node<int>(4); Node<int> temp = l.Head; int i = 1; if (newNode.Data != temp.Data) { while (temp.Next != null) { i++; temp = temp.Next; if (temp.Data == newNode.Data)//链表中存在数据 { l.Delete(i); l.Insert(newNode.Data,1);//插入到第一个位置 break; } } if (!isExist) { l.Delete(i);//i = 链表长度 删除最先进入链表的数据 l.Insert(newNode.Data, 1);//插入到第一个位置 } } }说明
1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长!
2. 分享目的仅供大家学习和交流,您必须在下载后24小时内删除!
3. 不得使用于非法商业用途,不得违反国家法律。否则后果自负!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
5. 如有链接无法下载、失效或广告,请联系管理员处理!
6. 本站资源售价只是摆设,本站源码仅提供给会员学习使用!
7. 如遇到加密压缩包,请使用360解压,如遇到无法解压的请联系管理员
开心源码网 » LRU缓存淘汰算法(链表)
1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长!
2. 分享目的仅供大家学习和交流,您必须在下载后24小时内删除!
3. 不得使用于非法商业用途,不得违反国家法律。否则后果自负!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
5. 如有链接无法下载、失效或广告,请联系管理员处理!
6. 本站资源售价只是摆设,本站源码仅提供给会员学习使用!
7. 如遇到加密压缩包,请使用360解压,如遇到无法解压的请联系管理员
开心源码网 » LRU缓存淘汰算法(链表)