LRU缓存和实现
来源:互联网 发布:快速弄到钱网络偏门2万 编辑:程序博客网 时间:2024/05/28 05:15
LRU缓存
- 是一种以LRU策略为缓存策略的缓存
- 所谓的缓存策略,就是缓存满了以后又有新的数据加到缓存时,我们怎么替换清理缓存的方法
- LRU是last recently used的缩写,就是近期最少使用算法,依据程序的局部性原理,淘汰数据策略是距离当前最久没有被访问的数据应该被淘汰
相关接口
创建LRU缓存:
– int LRUCacheCreate(int capacity,void **lruCache);
– capacity为入参:缓存容量,lruCache为出参:缓存句柄。返回0成功,-1失败销毁缓存:
– int LRUCacheDestory(void *lruCache);
– lruCache为入参:缓存句柄,返回0成功,-1失败将数据放入LRU缓存中
– int LRUCacheSet(void *lruCache,char key,char data);
– lruCache为入参:缓存句柄,key为入参:数据索引,data为入参:要缓存的数据,当前设为字符,返回0成功,-1失败从LRU缓存中获取数据
– char LRUCacheGet(void *lruCache,char key);
– lruCache为入参:缓存句柄,key为入参:数据索引,返回要get的数据,不存在的话返回’\0’LRU调试接口
– void LRUCachePrint(void *lruCache);
– 按访问时间从新到旧的顺序输出缓存数据
设计思路
双向链表来维护LRU特性,该链表从头到尾的数据根据最近访问时间从最新的到最旧的。
1.需要访问一块数据时,先调用LRUCacheGet尝试从缓存中获取数据。
2.如果缓存中有此数据,则将改数据从链表中删除,重新放入链表表头。
3.如果缓存中没有我们需要的数据,则从外部取得数据,调用LRUCacheSet接口将该数据放入缓存,将新数据插入表头。使用hashmap来保证缓存中数据的访问速度
1.因为数据时存在双向链表中的,如果每次都遍历,效率太低。所以数据维护在双向链表,还将数据维护在一个hashmap中
代码
- 还没写完。。
- LRU缓存和实现
- LRU缓存介绍和JAVA实现
- LRU缓存实现(Java)
- LRU缓存实现(Java)
- LRU缓存实现(Java)
- LRU缓存实现(Java)
- LRU缓存实现(Java)
- LRU缓存算法实现
- LRU缓存实现(Java)
- LRU缓存实现(Java)
- LRU缓存实现(Java)
- LRU缓存实现(Java)
- Java实现LRU缓存
- LRU缓存实现(Java)
- LRU缓存实现(Java)
- LRU缓存实现
- Java实现LRU缓存
- LRU缓存实现(Java)
- Ubuntu手动安装或更新VMware Tools
- Python时间戳与时间,时间与时间戳的相互转换
- SpringBoot小问题记录
- ACM 比赛须知
- android 之 PowerManager 与电源管理
- LRU缓存和实现
- CSS3媒体查询(MediaQuery)技术
- 集合1
- 找出其中有多少种字符,每种字符有几个,并打印出来
- A Dangerous Maze ( 期望 )
- Reorder List
- java串口通信之帧解析
- MySQL 5.7.18免安装版教程
- POJ3268 Silver Cow Party(最短路问题)