数据结构与算法(五):FIFO, LRU, LFU 缓存淘汰算法
服务器内存有限,不可能持续地往内存中存入数据,就需要对内存中的数据进行淘汰处理,通过制定淘汰策略(算法)以保证内存持续可用,使内存中的数据价值最大化。
应用层的缓存淘汰算法基本都是借用操作系统的内存管理算法,以称为内存页置换算法。
服务器内存有限,不可能持续地往内存中存入数据,就需要对内存中的数据进行淘汰处理,通过制定淘汰策略(算法)以保证内存持续可用,使内存中的数据价值最大化。
应用层的缓存淘汰算法基本都是借用操作系统的内存管理算法,以称为内存页置换算法。
考查对栈的理解,入栈,出栈操作,解题思路。
本篇是上篇 数据结构与算法(三):树 和 二叉树 的延续。
二叉堆 是一种特殊的堆,本质上是一种完全二叉树。二叉堆有两个类型:最大堆 和 最小堆。
优先队列中,元素被赋予优先级。当访问元素时,具有最高优先级的元素最先删除。优先队列具有最高级先出 (first in, largest out)的行为特征。通常采用堆数据结构来实现。
有些数据的逻辑关系并不是简单的线性关系,常常存在一对多,甚至多对多的情况。例如,一个家族的 “家谱”,企业的职级关系等、书本的目录章节等都可以用树型数据结构来描述。
树 和 图 是典型的非线性数据结构。本篇描述对 树 和 二叉树 的理解。
栈 和 队列 也是常见的数据结构。Java 里面的方法栈,消息队列 是 栈 和 队列 数据结构的实际应用。
数组、链表、栈和队列、散列表是基础数据结构,几乎所有的高级开发语言都会涉及到这些数据结构,一些更复杂的数据结构也是基于基础数据结构的扩展。
基础数据结构是数据存储的基础理论,有必要彻底理解它。