在实现LRU算法的时候lru_list 开始用的是deque 但是因为害怕其在插入删除上的迭代器失效情况的诡异情况。遂用list代替之。
在数据量比较大的时候性能不是很好。性能优化分析的时候决定用deque替换回来。于是对deque迭代器失效的情况好好研究了一下:
c++ primer如此写道:
1.在deque容器首部或者尾部插入元素不会使得任何迭代器失效。
2.在其首部或尾部...
分类:
其他好文 时间:
2014-10-14 18:24:32
阅读次数:
220
Design and implement a data structure for Least Recently Used (LRU) cache. It should support the following operations:getandset.get(key)- Get the valu...
分类:
系统相关 时间:
2014-10-11 15:57:45
阅读次数:
260
上次讲到lru与缓存重建,这次主要讲一下关于过期处理的一些主要问题。在讨论这个问题之前,有个相关的问题需要大家有所了解。就是对于一个缓存如期只来说,什么东西应该缓存,什么不应该缓存。这是一个比较复杂的问题,涉及到http协议的诸多细节。这里赵永明大哥写了一篇文章,讲得很详细,虽然是以ATS为背景讲的,但是思路是想通的,大家可以点击这里去看一下,文章名字很骚气叫“to cache or not to...
分类:
其他好文 时间:
2014-10-10 20:48:14
阅读次数:
188
题目:LRU cacheDesign and implement a data structure for Least Recently Used (LRU) cache. It should support the following operations: get and set.get(key...
分类:
系统相关 时间:
2014-10-10 20:05:24
阅读次数:
357
LeetCode - LRU Cache 复杂度为O(1)的C++解决方案...
分类:
其他好文 时间:
2014-10-08 17:48:05
阅读次数:
208
使用双向链表+map,实现O(1)时间内的get和set
需要注意的是:
1. set时更新tail
size为0时更新头部
size为capacity时删除头部并且更新头部
2. get时更新节点到tail的位置,同时如果是节点是头部的话要更新头部
附上代码:
class LRUCache{
struct Node{
int key;
int...
分类:
其他好文 时间:
2014-10-08 01:04:54
阅读次数:
274
Design and implement a data structure for Least Recently Used (LRU) cache. It should support the following operations:getandset.get(key)- Get the valu...
分类:
其他好文 时间:
2014-10-02 14:48:03
阅读次数:
261
首先呢 可能会想到用一个windows去放这些东西.可能会想到hashtable去. 但是hashtable 无法用Index去查询.abcabcbb. hashtable: abc 当第二个a来的时候, 我们想bca 貌似不好实现.这种情况就很像LRU. 用 node连接,用hashta...
分类:
其他好文 时间:
2014-10-02 04:12:22
阅读次数:
154
Design and implement a data structure for Least Recently Used (LRU) cache. It should support the following operations:getandset.get(key)- Get the valu...
分类:
编程语言 时间:
2014-10-01 02:29:00
阅读次数:
222
??
/* Map接口
* |-----HashMap:Map的主要实现类
* |-----LinkedHashMap:使用链表维护添加进Map中的顺序。故遍历Map时,是按添加的顺序遍历的。
* |-----TreeMap:按照添加进Map中的元素的key的指定属性进行排序。要求:key必须是同一个类的对象!
* 针对key:自然排序 vs 定制排序
...
分类:
其他好文 时间:
2014-09-30 12:17:18
阅读次数:
157