算法之链表的lru
发表于
|
阅读次数:
字数统计:
275
|
阅读时长 ≈
1
先进先出
缓存是一种提高数据读取性能的技术 cpu缓存 数据库缓存 浏览器缓存
最少使用策略
最近最少使用策略
链表通过“指针”将一组零散的内存块串联起来使用。
单链表、双向链表、循环链表
头节点 尾节点(空地址)
维护一个有序单链表 越靠近链表尾部的节点是越早之前访问的
当有一个心的数据被访问的时候,我们从链表头部开始顺序遍历链表
- 如果数据之前已经被缓存在链表当中了,我们遍历得到这个数据对应的结点,并将其从原来的位置删除,然后再插入到链表的头部
- 没有缓存在链表中 缓存未满直接插入到链表的头部;已满,则删除链表尾部结点,将新的数据插入到链表的头部
还可以引入散列表记录每个数据的位置,将缓存访问的时间复杂度降到1
算法之数组
发表于
|
阅读次数:
字数统计:
99
|
阅读时长 ≈
1
数组是一块连续的内存空间,来存储相同类型的一组数据。最大的特点是支持随机访问,但是插入和删除比较低效,平均复杂度是n
平时的开发过程中 可以直接使用编程语言提供的容器类,但是如果是特别底层的开发,直接使用数组更方便。