LRU 缓存淘汰算法

LRU 缓存淘汰算法,第1张

当要缓存某个数据的时候,先在链表中查找这个数据。如果没有找到,则直接将数据放到链表的尾部;如果找到了,我们就把它移动到链表的尾部,然后淘汰头部数据。

因为查找数据需要遍历链表,所以单纯用链表实现的 LRU 缓存淘汰算法的时间复杂很高,是 O(n)。如果我们将散列表和双向链表两种数据结构组合使用,可以将这三个 *** 作的时间复杂度都降低到 O(1)。

因为我们的散列表是通过链表法解决散列冲突的,所以每个结点会在两条链中。一个链是刚刚我们提到的双向链表,另一个链是散列表中的拉链。前驱和后继指针是为了将结点串在双向链表中,hnext 指针是为了将结点串在散列表的拉链中。

这整个过程涉及的查找 *** 作都可以通过散列表来完成。其他的 *** 作,比如删除头结点、链表尾部插入数据等,通过双向链表都可以在 O(1) 的时间复杂度内完成。所以,这三个 *** 作的时间复杂度都是 O(1)。

至此,我们就通过散列表和双向链表的组合使用,实现了一个高效的、支持 LRU 缓存淘汰算法的缓存系统原型。

散列表中数据是经过散列函数打乱之后无规律存储的,但是 LinkedHashMap可以 做到按照数据的插入顺序来存储。

每次调用 put() 函数,往 LinkedHashMap 中添加数据的时候,都会将数据添加到链表的尾部,再次将键值为 3 的数据放入到 LinkedHashMap 的时候,会先查找这个键值是否已经有了,然后,再将已经存在的 (3,11) 删除,并且将新的 (3,26) 放到链表的尾部,访问到 key 为 5 的数据的时候,我们将被访问到的数据移动到链表的尾部。

所以按照访问时间排序的 LinkedHashMap 本身就是一个支持 LRU 缓存淘汰策略的缓存系统。

散列表这种数据结构虽然支持非常高效的数据插入、删除、查找 *** 作,但是散列表中的数据都是通过散列函数打乱之后无规律存储的。也就说,它无法支持按照某种顺序快速地遍历数据。如果希望按照顺序遍历散列表中的数据,那我们需要将散列表中的数据拷贝到数组中,然后排序,再遍历。

因为散列表是动态数据结构,不停地有数据的插入、删除,所以每当我们希望按顺序遍历散列表中的数据的时候,都需要先排序,那效率势必会很低。为了解决这个问题,我们将散列表和链表(或者跳表)结合在一起使用。

散列码就是通过一种不可逆的散列(Hash)算法,对一个数据进行计算,获得一个“唯一”的值。这个值可以对这个数据进行标识,在查找数据的时候,可以通过这个值来快速定位数据,从而有效减少开销。

由于散列长度是有限和固定的,因此在数据极多的情况下散列值会出现重复,用术语讲就是“碰撞”。这个时候就需要其它方法来消除这种碰撞,比如再散列、拉链算法等。

举个例子,设计一个散列算法,这个算法是把比划数相加。

“知道”的散列值就是20,

“你好”的散列值就是13。(我数对没有? :))

通常在实际的 *** 作过程中,多数选择USB-HDD或USB-HDD+,一些只支持USB-ZIP的主板才选择USB-ZIP或USB-ZIP+模式。U盘写入模式有USB-HDD、USB-HDD+、USB-ZIP、USB-ZIP+、USB-CDROM和USB-FDD等。

以下就是各种U盘启动模式的区别:

(一)USB-HDD的优缺点以及启动模式

1、USB-HDD是 USB Hard Drives 的缩写,表示硬盘仿真模式,启动后U盘的盘符为C,该模式需注意区分U盘和本地硬盘,USB-HDD模式兼容性很高。

2、但对于一些只支持USB-ZIP模式的电脑则无法启动。(推荐使用此种格式,这种格式普及率最高。)

(二)USB-ZIP的优缺点以及启动模式

USB-ZIP表示大容量软盘仿真模式,在一些主板较老的主板上USB-ZIP是唯一的启动模式,启动后U盘盘符为A,USB-ZIP对于新主板电脑来说兼容性并不好,也不兼容2GB以上的U盘。

(三)USB-FDD的优缺点以及启动模式

1、USB-FDD是Floppy Disk Drive的缩写,表示软驱磁盘驱动器,目前已经被淘汰,只存在于早期的电脑中。FDD模式把U盘模拟成软驱模式,启动后U盘被认作软盘,盘符显示为A。

2、需要注意的是,支持USB-FDD的机器也会找不到该模式的U盘。

(四)USB-CDROM的优缺点以及启动模式

USB-CDROM表示光盘仿真模式,DOS启动后不占用盘符,大多数主板都支持这个模式,该模式的U盘可以和光盘一样使用来安装系统,制作时需根据U盘型号进行量产。

(五)USB-HDD+的优缺点以及启动模式

USB-HDD+是USB-HDD的增强模式,兼容性高于USB-HDD模式,但对仅支持USB-ZIP的电脑仍然无法启动,在DOS下启动后U盘盘符也显示为C盘。

(六)USB-ZIP+的优缺点以及启动模式

1、USB-ZIP+是USB-ZIP的增强模式,在DOS启动后盘符显示A,也有些显示C:盘(根据电脑的BIOS支持情况不同),支持USB-ZIP/USB-HDD双模式启动,从而达到很高的兼容性。

2、有些支持USB-HDD的电脑会将此模式的U盘认为是USB-ZIP来启动,从而导致大容量U盘的性能有所降低。

扩展资料:

HDD/FDD/ZIP方式简介

①HDD(英语:Hard Disk Drive,简称HDD),硬盘是电脑主要的存储媒介之一,由一个或者多个铝制或者玻璃制的碟片组成。碟片外覆盖有铁磁性材料。

硬盘有固态硬盘(SSD 盘,新式硬盘内有sata固态、m2固态、pci-e固态,而m2固态又有nvme的m2和sata的m2)、机械硬盘(HDD 传统硬盘内有32寸、64寸的,还有4300转和7200转)、混合硬盘(HHD 一块基于传统机械硬盘诞生出来的新硬盘)。SSD采用闪存颗粒来存储,HDD采用磁性碟片来存储,混合硬盘(HHD: Hybrid Hard Disk)是把磁性硬盘和闪存集成到一起的一种硬盘。绝大多数硬盘都是固定硬盘,被永久性地密封固定在硬盘驱动器中。

磁头复位节能技术:通过在闲时对磁头的复位来节能。

多磁头技术:通过在同一碟片上增加多个磁头同时的读或写来为硬盘提速,或同时在多碟片同时利用磁头来读或写来为磁盘提速,多用于服务器和数据库中心。

②FDD:是移动通信系统中使用的全双工通信技术的一种,与TDD相对应。FDD采用两个独立的信道分别进行向下传送和向上传送信息的技术。为了防止邻近的发射机和接收机之间产生相互干扰,在两个信道之间存在一个保护频段。

FDD *** 作时需要两个独立的信道。一个信道用来从基站向终端用户传送信息,另一个信道用来从终端用户向基站发送信息。

③Zip是一个英文单词,名词意思是拉链。实际应用中,Zip有多重指向,有的是指一种软驱,有的指计算机文件压缩算法,有的指 zip code,国际通用的邮政编码方式。

参考资料来源:百度百科-硬盘

参考资料来源:百度百科-FDD

参考资料来源: 百度百科-ZIP

1、使用微信小程序的接口来获取用户的openid,然后根据openid来生成一个随机的分组;

2、可以使用微信小程序的消息推送功能,将用户分组的信息推送给用户;

3、可以使用微信小程序的数据库功能,将用户的openid和分组信息存储起来,以便以后使用;

4、可以使用微信小程序的云函数功能,实现定时自动分组,以及定时自动推送分组信息;

5、可以使用微信小程序的客服消息功能,实现用户主动查询自己的分组信息;

6、可以使用微信小程序的客服消息功能,实现用户主动申请更改分组信息;

7、可以使用微信小程序的客服消息功能,实现用户主动申请取消分组信息;

8、可以使用微信小程序的客服消息功能,实现用户主动申请查看其他用户的分组信息;

9、可以使用微信小程序的客服消息功能,实现用户主动申请查看某一分组的所有用户信息;

10、可以使用微信小程序的客服消息功能,实现用户主动申请查看某一分组的所有用户的openid。

以上就是关于LRU 缓存淘汰算法全部的内容,包括:LRU 缓存淘汰算法、Java相关:什么是散列码、HDD/FDD/ZIP方式的区别等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/sjk/9739509.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-01
下一篇2023-05-01

发表评论

登录后才能评论

评论列表(0条)

    保存