c语言cache大小,C语言实现LRU缓存

项目简介:

该项目讲解如何使用C语言实现LRU缓存,从中学习LRU缓存的基本概念、C语言相关编程技巧,双向链表的C语言实现以及哈希表的C语言实现。

学习知识点:

LRU缓存的基本概念

C语言基本编程技巧

双向链表的C语言实现

哈希表的C语言实现

什么是缓存

举个例子,去图书馆查资料,一般情况下我们会集中把我们有可能查阅的几本书从书架取下来,放在我们的桌面上,以便交叉查阅,从而避免频繁的从座位上跑到书架旁去取书。在这个例子里,书桌所扮演的就是缓存的角色。

缓存有两个特点:

1.能在某种程度上降低访问数据的成本;

2.其容量远小于外部存储的容量,如本例子中,书桌上能容纳的书本数就远小于书架的。

什么是LRU缓存

LRU缓存是一种以LRU策略为缓存策略的缓存。 而所谓的缓存策略,就是当缓存满了之后,又有新数据需要加入到缓存中时,我们怎么从缓存中删除旧数据为新数据腾出空间的策略。 依旧以图书馆为例,假设我们的书桌上只能容纳3本书,并且已经放了3本书在上面,此时我们需要查阅第4本书,那么我们就必须权衡将原先书桌上的3本书的中的哪一本放回书架去。这个权衡的过程就是所谓的缓存策略。

LRU,Least Recently Used的简写,即近期最少使用算法。该算法依据于程序的局部性原理, 其淘汰旧数据的策略是,距离当前最久没有被访问过的数据应该被淘汰。

看例子,假设我们有一块能够存放5个数据的缓存,并且我们按A->B->C->D->E->A->F的顺序访问数据。

当我们访问了A,B,C三个数据后,缓存应该是这样的:

wm

接着我们访问数据D、E,这时缓存就满了:

wm

然后我们有重新访问数据A,这时数据A已经在缓存中了,所以缓存不变:

wm

当我们访问数据F时,由于缓存已经满了,需要从缓存中淘汰旧数据,此时缓存中的数据B是距离当前时间最久没有被访问过的数据,根据LRU算法,我们会淘汰掉数据B:

wm

设计以及实现:

具体如何用C语言实现LRU缓存,由于篇幅有限,这里就不做详细的介绍,想学习的小伙伴,一定要点击【C语言实现LRU缓存】,详细的开发教程以及代码详解,更有在线开发环境可以跟着动手操作~

实验结果演示:

整个LRU缓存实现源文件:

wm

编译命令:

gcc -o LRUCache LRUCacheImpl.c main.c

实验过程演示:

wm

实验结果:请读者咨询根据LRU缓存特性,分析实验输出结果。

测试用例1

wm

wm

测试用例2

wm

wm

wm

测试用例3

wm

想学习该项目开发的小伙伴,点击【C语言实现LRU缓存】即可,详细的开发教程以及代码详解,更有在线开发环境可以跟着动手操作~

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值