zoukankan      html  css  js  c++  java
  • 【数据结构&算法】06-链表类型及LRU算法


    前言

    个人认为链表是常用的基础数据结构之一。

    李柱明博客:https://www.cnblogs.com/lizhuming/p/15487315.html

    缓存

    缓存是一种提高数据读取性能的技术,在硬件设计、软件开发中都有着非常广泛的应用,比如常见的 CPU 缓存、数据库缓存、浏览器缓存等等。

    当缓存满时也有对应策略处理:

    • 先进先出策略 FIFO(First In,First Out)。
    • 最少使用策略 LFU(Least Frequently Used)。
    • 最近最少使用策略 LRU(Least Recently Used)。

    各种链表结构

    相对于数组,链表的存储空间是非连续的,靠的是指针把各个数据连接起来。

    链表的结构多种多样:

    • 单向链表。
    • 单向循环链表。
    • 双向链表。
    • 双向循环链表。




    根据链表的数据结构,也可以分为通用链表和非通用链表。

    参考:

    LRU 缓存淘汰算法

    最近最少使用策略 LRU(Least Recently Used)。

    数据管理思路:

    • 主要思路:把当前使用的节点放到链表头。具体思路如下:

    • 维护一个有序单链表,越靠近链表尾部的结点是越早之前访问的。

    • 当有一个新的数据被访问时,我们从链表头开始顺序遍历链表。

      • 如果此数据之前已经被缓存在链表中了,遍历到这个数据对应的结点,将其从原来的位置删除,然后再插入到链表的头部。

      • 如果此数据没有在缓存链表中:

        • 缓存未满,则将此结点直接插入到链表的头部;
        • 缓存已满,则链表尾结点删除,将新的数据结点插入链表的头部。
  • 相关阅读:
    33. 搜索旋转排序数组
    54. 螺旋矩阵
    46. 全排列
    120. 三角形最小路径和
    338. 比特位计数
    746. 使用最小花费爬楼梯
    spring boot的一些常用注解
    SSM整合Dubbo案例
    一些面试题
    Spring Aop和Spring Ioc(二)
  • 原文地址:https://www.cnblogs.com/lizhuming/p/15487315.html
Copyright © 2011-2022 走看看