首页 > 编程知识 正文

缓存雪崩,golang依赖包管理

时间:2023-05-04 14:54:34 阅读:127811 作者:2846

LRU LRU是最近使用的最近最少的Least Recently Used的缩写。 在实际生活中,它被非常广泛地使用,包括所有手机的后台APP应用。

打开后台APP应用程序时,

最前面显示的一定是最近使用的,包括最新打开的或打开前的; 如果超过了后台限制,关闭最旧的程序。

也就是说,设置一个队列,有两个操作、新建和使用。

如果是新的,请将新输入的元素放在队列的开头,

使用时,从队列中检索要使用的队列的元素,并将其放在队列的开头

队列元素达到上限后,删除队列中的最后一个元素。

packagemainfuncmain { } typelrucachestruct { size int//双向链表的长度capacity int //双向链表容量chche map[int]*DLinkedNode //DLinkedNode //假最终节点}type DLinkedNode struct {//节点维护的信息keyint//keyval int//value prev * dlinkednode//节点前面的节点nnode value int ) dlinkednode ) /新节点returndlinkednode ) key:key,初始化val: value,} func构造器(capacity int ) lrucacator head 3360 initdlinkednode (0,0 )、tail : initdlinkednode (0,0 )、 0 ),l.head.next=l.taill.tail.prev=l.head.next=l.taill.taill.prev ok { LRU.move to head (k ) retururned ) ok3360=lllu ok{LRU.movetohead(k ) k.val=value } else { new node :=initdlinkednode ) key, value ) LRU.chche [ key ]=newnodelru.sizelru.addto head (new node ) } ifl ru.sizelru.capacity { LRU.remove tail } } dlinkednode ) node.next=LRU.head.next node.prev=LRU.headlru.head.next.prev=nodel ru .删除节点(node {LRU.removenode(node ) LRU.addto head (node ) }func ) LRU * lrucache (remove tail ) ) Delete ) LRU.chche,LRU.taitii

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。