1. LRU1.1. 原理 LRU(Least recently used,最近最少使用)算法根据数据的历史访问记录来进行淘汰数据,其核心思想是“如果数据最近被访问过,那么将来被访问的几率也更高”。 最常见的实现是使用一个链表保存缓存数据,详细算法实现如下: 1. 新数据插入到链表头部; 2. 每当 ...
分类:
编程语言 时间:
2016-08-04 06:44:01
阅读次数:
288
内核主要有4种LRU链表: enum lru_list { LRU_INACTIVE_ANON = LRU_BASE, LRU_ACTIVE_ANON = LRU_BASE + LRU_ACTIVE, LRU_INACTIVE_FILE = LRU_BASE + LRU_FILE, LRU_ACTI ...
分类:
其他好文 时间:
2016-08-02 11:10:28
阅读次数:
205
在缓存设计中有两点是必须要考虑的: 缓存的数据和目标数据的一致性问题 缓存的过期策略 其中,缓存的过期策略是重点,因为缓存的存储空间往往是有限的,当缓存中的存储块被用完,就需要把过期的缓存移除掉,所以我们需要设计一种良好的缓存淘汰算法来实现。业界中常用的淘汰算法有 LRU和LFU的区别是,LFU算法 ...
分类:
其他好文 时间:
2016-08-02 01:00:51
阅读次数:
207
前言: 在学习LRU算法的时候,看到LruCache源码实现是基于LinkedHashMap,今天学习一下LinkedHashMap的好处以及如何实现lru缓存机制的。 需求背景: LRU这个算法就是把最近一次使用时间离现在时间最远的数据删除掉,而实现LruCache将会频繁的执行插入、删除等操作, ...
分类:
编程语言 时间:
2016-07-31 09:11:53
阅读次数:
255
一、Memcached介绍国外社区网站LiveJournal团队开发,通过缓存数据库查询结果,减少数据库访问次数,从而提高动态Web站点性能。官方站点http://memcached.org基于C/S架构,协议简单基于Libevent的事件处理自主内存存储处理(Slaballowcation)数据过期方式:LazyExpiration和LRU..
分类:
系统相关 时间:
2016-07-25 10:39:38
阅读次数:
337
题意: n个数,长度为k的缓存,每次询问,每个数以pi的概率被选,如果不在缓存区则加入,如果缓存区满了,则第一个进缓存的出来,问10^100次询问以后每个数在缓存的概率 思路: 状压DP,看了hzwer的代码 f[x]表示当前状态为x的概率 枚举不在缓存区的数:f[t]+=f[x]*(p[i]/to ...
分类:
其他好文 时间:
2016-07-24 20:49:17
阅读次数:
169
innodb_lru_scan_depth:每个缓冲池刷脏页的能力 innodb_io_capacity: iops inoodb_buffer_pool_instances=8 :缓冲池的个数 .关系: innodb_io_capacity >= innodb_lru_scan_depth * i ...
分类:
数据库 时间:
2016-07-22 18:38:00
阅读次数:
524
innodb_lru_scan_depth是5.6新增加的参数,根据 官方文档 描述,它会影响page cleaner线程每次刷脏页的数量, 这是一个每1秒 loop一次的线程。在Innodb内部,这个参数对应变量为srv_LRU_scan_depth,grep了一把,有几个地方会涉及到这个参数 1 ...
分类:
数据库 时间:
2016-07-21 19:30:14
阅读次数:
287
CacheDispatcher
CacheEntry和DiskBasedCacheCacheHeader
DiskBasedCacheCountingInputStream
缓存的核心DiskBasedCache
初始化逻辑initialize函数
pruneIfNeeded
get和put
else
思考
LRU算法一定合理吗如何增大缓存的命中率
文件名重复问题
首先研究一下Volley的磁盘缓存...
分类:
其他好文 时间:
2016-07-21 16:20:34
阅读次数:
327
一,LRU算法介绍 LRU算法是最近最少未使用算法。当内存缺页时,总是优先选出距离当前最久未使用的页面换出,并把当前的缺页换入。该算法可用栈模拟实现。 栈顶总是保存当前最近访问的页面号,栈底则总是保存最久未访问的页面号。对于下一个页面,有两种情况: ①命中,则需要:更新栈顶元素。即将当前命中的页面号 ...
分类:
编程语言 时间:
2016-07-20 13:15:20
阅读次数:
169