数组实现LRU缓存淘汰策略

本文介绍了LRU缓存淘汰算法的基本思想,通过维护一个数组来实现这一策略,当新数据访问时,会根据最近使用原则更新数组。如果数据已存在则移到头部,若缓存满则删除最久未使用的数据。
摘要由CSDN通过智能技术生成

LRU简介

LRU 缓存淘汰算法就是一种常用策略。LRU 的全称是 Least Recently Used,也就是说我们认为最近使用过的数据应该是是「有用的」,很久都没用过的数据应该是无用的,内存满了就优先删那些很久没用过的数据。

过程思考

我的思路是这样的:我们维护一个数组,越靠近数组尾部的结点是越早之前访问的。当有一个新的数据被访问时,我们遍历数据
1.如果此数据之前已经被缓存在数组中了,我们遍历得到这个数据,返回成功,并将其从原来的位置删除,然后再插入到数组的头部。
2.如果此数据没有在缓存在数组中,又可以分为两种情况:

  • 如果此时缓存未满,则将此数据直接插入到数组的头部;
  • 如果此时缓存已满,则将数组最后一个数据删除,将新的数据结点插入数组的头部。

实现

//数组来实现LRU,整体来说效率不高,这里主要是为了知道该淘汰策略是怎么回事

package main

import "fmt"

type cache struct {
   
	arr []int
	MaxLen int //缓存的最大元素个数
}


func (c *cache)Get(value int)  {
   
	var flag bool
	for i,v:=range c.arr{
   
		if v==value{
   
			flag=true
			//数据在第一个
			if i==0{
   
				return
			}else {
   
				c.arr[i
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值