LRU (Least Recently Used)

原创 2007年10月08日 20:27:00

#include <iostream>
#include <ctime>
#include <windows.h>
#include <climits>
using namespace std;

struct LRUELEM
{
    int data;
    time_t time;
};

#define FREEUP(p) if(p) {delete []p; p = NULL;}

static int getsmalltime(LRUELEM *e, int n);
static int getsameLRU(LRUELEM *e, int data);

int main()
{
    //LRUELEM *e = (LRUELEM*)malloc(3*sizeof(LRUELEM));
   
    int a[5] = {1, 2, 3, 4, 5};
   
    LRUELEM *e = new LRUELEM[3];
   
    for(int i=0; i<3; i++)
    {
        e[i].data = a[i];
        e[i].time = time(NULL);
        Sleep(1000);
    }
   
    for(i=2; i<5; i++)
    {
        if (getsameLRU(e, a[i]) == -1)
        {
            int pos = getsmalltime(e, 3);
            e[pos].data = a[i];
            e[pos].time = time(NULL);
            Sleep(1000);
        } else {
            e[getsameLRU(e, a[i])].time = time(NULL);
            Sleep(1000);
        }
        for(int i=0; i<3; i++)
        {
            cout << e[i].data << "   "<< e[i].time << endl;
        }
        cout << endl;
    }
   
    FREEUP(e);
   
    return 0;
}

static int getsmalltime(LRUELEM *e, int n)
{
    int smalltime = INT_MAX;
    int pos = -1;
    for(int i=0; i<n; i++)
    {
        if(e[i].time<smalltime)
        {
            smalltime = e[i].time;
            pos = i;
        }
    }
    return pos;
}

static int getsameLRU(LRUELEM *e, int data)
{
    for(int i=0; i<3; i++)
    {
        if(e[i].data == data)
        {
            return i;
        }
    }
    return -1;
}

LRU(Least Recently Used)缓存介绍与实现

引子: 我们平时总会有一个电话本记录所有朋友的电话,但是,如果有朋友经常联系,那些朋友的电话号码不用翻电话本我们也能记住,但是,如果长时间没有联系了,要再次联系那位朋友的时候,我们又不得不求助电...
  • dazhi_100
  • dazhi_100
  • 2015年03月11日 16:46
  • 3098

[互联网面试笔试汇总C/C++-21] FIFO 、LRU、LFU的含义、原理和实现-完美世界

题目:请简要介绍FIFO、LRU、LFU的含义和原理 含义: FIFO:First In First Out,先进先出 LRU:Least Recently Used,最近最少使用 LFU:Lea...
  • shishengshi
  • shishengshi
  • 2013年10月24日 10:19
  • 4050

Memcached之你真正理解LRU吗(4)

众所周知,Memcached使用的是LRU(Least Recently Used最近最少使用)算法来回收缓存,将那些属于LRU的数据移出内存,从而腾出空间来加载另外的数据。那么Memcached的最...
  • qianshangding0708
  • qianshangding0708
  • 2015年08月25日 21:58
  • 4269

晦涩的翻译LRU (Least Recently Used) - 最近最少使用?

在学习缓存的原理时候,会碰到这样一种情况,即当缓存不命中且缓存已满的情况,需要选择将缓存中的某一数据块替换为仍在内存中的目标数据块,但是选择缓存中的哪块被替换更高效呢?就有这个替换策略LRU (Lea...
  • u010666109
  • u010666109
  • 2014年12月13日 22:55
  • 1216

FIFO、LRU、LFU的含义和原理

题目:请简要介绍FIFO、LRU、LFU的含义和原理 含义: FIFO:First In First Out,先进先出 LRU:Least Recently Used...
  • yangpl_tale
  • yangpl_tale
  • 2015年04月11日 20:06
  • 11442

利用LinkedHashMap实现一个简单的LUR(Least Recently Used 近期最少使用算法)的cache的两种方法

利用LinkedHashMap实现一个简单的LUR(Least Recently Used 近期最少使用算法)的cache的两种方法在做LeetCode题目的时候遇到的这个算法,简单的学习了下Link...
  • tonyNiko
  • tonyNiko
  • 2016年04月24日 16:09
  • 625

nginx学习(六)——nginx的配置系统3之upstream_module(上)

nginx还有很多的配置,需要用到的时候可以查看nginx网站上的文档。 Alphabetical index of directives...
  • xxcupid
  • xxcupid
  • 2016年09月11日 15:58
  • 1149

LRU的改进算法LIRS

LRU(Least Recent Used)是我们在cache替换算法中最普遍使用的算法,在缓存块已满,而需要缓存新的数据块的时候,这时需要从缓存中找到一个“没有价值”的块用新的数据块去替换它。 ...
  • IT_YUAN
  • IT_YUAN
  • 2013年01月10日 11:08
  • 7891

C语言实现LRU缓存

1
  • Stand1210
  • Stand1210
  • 2017年04月14日 20:39
  • 1001

redis lru实现策略

在使用redis作为缓存的场景下,内存淘汰策略决定的redis的内存使用效率。在大部分场景下,我们会采用LRU(Least Recently Used)来作为redis的淘汰策略。本文将由浅入深的介绍...
  • mysqldba23
  • mysqldba23
  • 2017年03月30日 09:04
  • 1221
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:LRU (Least Recently Used)
举报原因:
原因补充:

(最多只允许输入30个字)