花80亿美元建空间站国际最著名建筑设计大奖

web/2025/10/6 6:04:52/文章来源:
花80亿美元建空间站,国际最著名建筑设计大奖,网页升级访问每天,wordpress导入html本章我们会对失效算法做个简单介绍#xff0c;包括常用的失效算法#xff08;先来先淘汰#xff08;FIFO#xff09;、最久未用淘汰#xff08;LRU#xff09;、最近最少使用#xff08;LFU#xff09;#xff09;的概述、实现方式、典型场景做个说明。 什么是失效算…本章我们会对失效算法做个简单介绍包括常用的失效算法先来先淘汰FIFO、最久未用淘汰LRU、最近最少使用LFU的概述、实现方式、典型场景做个说明。 什么是失效算法 失效算法常见于缓存系统中。因为缓存往往占据大量内存而内存空间是相对昂贵且空间有限的那么针对一部分值就要依据相应的算法进行失效或移除操作。 先来先淘汰FIFO 概述 First In First Out先来先淘汰。这种算法在每一次新数据插入时如果队列已满则将最早插入的数据移除。 实现 可以方便的借助LinkedList来实现 我们借助一个案例来进行理解可以重点关注下注释 package com.ls.cloud.sys.alg.release;import java.util.Iterator; import java.util.LinkedList;public class FIFO {LinkedListInteger fifo new LinkedListInteger();int size 3;//添加元素public void add(int i){fifo.addFirst(i);if (fifo.size() size){fifo.removeLast();}print();}//缓存命中public void read(int i){IteratorInteger iterator fifo.iterator();while (iterator.hasNext()){int j iterator.next();if (i j){System.out.println(find it!);print();return ;}}System.out.println(not found!);print();}//打印缓存public void print(){System.out.println(this.fifo);}//测试public static void main(String[] args) {FIFO fifo new FIFO();System.out.println(add 1-3:);// 添加1-3fifo.add(1);fifo.add(2);fifo.add(3);System.out.println(add 4:);// 添加4会挤出第一个进入的1fifo.add(4);System.out.println(read 2:);// 读取2进行遍历先进来的先打印fifo.read(2);System.out.println(read 100:);// 读取100进行遍历先进来的先打印fifo.read(100);System.out.println(add 5:);// 添加4会挤出第一个进入的2fifo.add(5);} } 结果 add 1-3: [1] [2, 1] [3, 2, 1] add 4: [4, 3, 2] read 2: find it! [4, 3, 2] read 100: not found! [4, 3, 2] add 5: [5, 4, 3]优缺点 实现非常简单不管元素的使用情况哪怕有些数据会被频繁用到时间最久也会被踢掉 最久未用淘汰LRU 概述 LRU全称是Least Recently Used即淘汰最后一次使用时间最久远的数值。FIFO非常的粗暴不管有没有用到直接踢掉时间久的元素。而LRU认为最近频繁使用过的数据将来也很大程度上会被频繁用到故而淘汰那些懒惰的数据。LinkedHashMap数组链表均可实现LRU下面仍然以链表为例新加入的数据放在头部最近访问的也移到头部空间满时将尾部元素删除。 实现 同样我们借助一个案例来进行理解可以重点关注下注释 package com.ls.cloud.sys.alg.release;import java.util.Iterator; import java.util.LinkedList;public class LRU {LinkedListInteger lru new LinkedListInteger();int size 3;//添加元素public void add(int i){lru.addFirst(i);if (lru.size() size){lru.removeLast();}print();}//缓存命中public void read(int i){IteratorInteger iterator lru.iterator();int index 0;while (iterator.hasNext()){int j iterator.next();if (i j){System.out.println(find it!);lru.remove(index);lru.addFirst(j);print();return ;}index;}System.out.println(not found!);print();}//打印缓存public void print(){System.out.println(this.lru);}//测试public static void main(String[] args) {LRU lru new LRU();System.out.println(add 1-3:);// 加入1-3顺序加入lru.add(1);lru.add(2);lru.add(3);System.out.println(add 4:);// 加入4踢出1lru.add(4);System.out.println(read 2:);// 读取22移到首位此时变为[2,4,3]lru.read(2);System.out.println(read 100:);// 读取1002移到首位此时变为[2,4,3]lru.read(100);System.out.println(add 5:);// 加入5踢出最后一个3,5加入最后[5,2,4]lru.add(5);} } 结果 add 1-3: [1] [2, 1] [3, 2, 1] add 4: [4, 3, 2] read 2: find it! [2, 4, 3] read 100: not found! [2, 4, 3] add 5: [5, 2, 4]优缺点 性能较高对于偶发性、周期性的数据没有良好的抵抗力很容易就形成缓存的污染影响命中率 最近最少使用LFU 概述 Least Frequently Used即最近最少使用。它要淘汰的是最近一段时间内使用次数最少的值。可以认为比LRU多了一重判断。LFU需要时间和次数两个维度的参考指标。需要注意的是两个维度就可能涉及到同一时间段内访问次数相同的情况就必须内置一个计数器和一个队列计数器算数队列放置相同计数时的访问时间。 实现 package com.ls.cloud.sys.alg.release;public class Dto implements ComparableDto {private Integer key;private int count;private long lastTime;public Dto(Integer key, int count, long lastTime) {this.key key;this.count count;this.lastTime lastTime;}Overridepublic int compareTo(Dto o) {int compare Integer.compare(this.count, o.count);return compare 0 ? Long.compare(this.lastTime, o.lastTime) : compare;}Overridepublic String toString() {return String.format([key%s,count%s,lastTime%s],key,count,lastTime);}public Integer getKey() {return key;}public void setKey(Integer key) {this.key key;}public int getCount() {return count;}public void setCount(int count) {this.count count;}public long getLastTime() {return lastTime;}public void setLastTime(long lastTime) {this.lastTime lastTime;} }package com.ls.cloud.sys.alg.release;import java.util.Collections; import java.util.HashMap; import java.util.Map;public class LFU {private final int size 3;private MapInteger,Integer cache new HashMap();private MapInteger, Dto count new HashMap();//投放public void put(Integer key, Integer value) {Integer v cache.get(key);if (v null) {if (cache.size() size) {removeElement();}count.put(key, new Dto(key, 1, System.currentTimeMillis()));} else {addCount(key);}cache.put(key, value);}//读取public Integer get(Integer key) {Integer value cache.get(key);if (value ! null) {addCount(key);return value;}return null;}//淘汰元素private void removeElement() {Dto dto Collections.min(count.values());cache.remove(dto.getKey());count.remove(dto.getKey());}//更新计数器private void addCount(Integer key) {Dto Dto count.get(key);Dto.setCount(Dto.getCount()1);Dto.setLastTime(System.currentTimeMillis());}//打印缓存结构和计数器结构private void print(){System.out.println(cachecache);System.out.println(countcount);}public static void main(String[] args) {LFU lfu new LFU();//前3个容量没满1,2,3均加入System.out.println(add 1-3:);lfu.put(1, 1);lfu.put(2, 2);lfu.put(3, 3);lfu.print();//1,2有访问3没有加入4淘汰3System.out.println(read 1,2);lfu.get(1);lfu.get(2);lfu.print();System.out.println(add 4:);lfu.put(4, 4);lfu.print();//23次1,42次但是4加入较晚再加入5时淘汰1System.out.println(read 2,4);lfu.get(2);lfu.get(4);lfu.print();System.out.println(add 5:);lfu.put(5, 5);lfu.print();} }add 1-3: cache{11, 22, 33} count{1[key1,count1,lastTime1701744406838], 2[key2,count1,lastTime1701744406838], 3[key3,count1,lastTime1701744406838]} read 1,2 cache{11, 22, 33} count{1[key1,count2,lastTime1701744406944], 2[key2,count2,lastTime1701744406944], 3[key3,count1,lastTime1701744406838]} add 4: cache{11, 22, 44} count{1[key1,count2,lastTime1701744406944], 2[key2,count2,lastTime1701744406944], 4[key4,count1,lastTime1701744406946]} read 2,4 cache{11, 22, 44} count{1[key1,count2,lastTime1701744406944], 2[key2,count3,lastTime1701744406947], 4[key4,count2,lastTime1701744406947]} add 5: cache{22, 44, 55} count{2[key2,count3,lastTime1701744406947], 4[key4,count2,lastTime1701744406947], 5[key5,count1,lastTime1701744406948]}优缺点 LFU也能够有效的保护缓存相对场景来说比LRU有更好的缓存命中率。由于是以次数为基准因此更加准确天然能有效的保证和提升命中率。 由于LFU须要记录数据的访问频率所以需要额外的空间当访问模式改变的时候算法命中率会急剧降低这也是他最大弊端。 应用场景 redis属于缓存失效的典型应用场景常见策略如下 noeviction: 不删除策略, 达到最大内存限制时, 如果需要更多内存, 直接返回错误信息 比较危险。allkeys-lru对所有key优先删除最近最少使用的 key (LRU)。allkeys-random 对所有key 随机删除一部分听起来毫无道理。volatile-lru只限于设置了 expire 的key优先删除最近最少使用的key (LRU)。volatile-random只限于设置了 expire 的key随机删除一部分。volatile-ttl只限于设置了 expire 的key优先删除剩余时间(TTL) 短的key。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/87774.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

制作php网站wordpress 去版权

随着"一带一路"倡议的深入推进,中国基建企业"走出去"的步伐正在加快。与之相应,建筑模板产品作为工程建设的重要材料,其国际化供应也愈发受到重视。在众多建筑模板生产企业中,贵港市能强优品木业有限公司以其卓越的产品质量和丰富的出口经验,成为了国内知名…

自贡市城市建设投资开发集团有限公司网站小内存 wordpress 优化

pytest特短 pytest是一个非常成熟的全功能的Python测试框架,主要有以下几个特点: 简单灵活,容易上手 支持参数化 能够支持简单的单元测试和复杂的功能测试,还可以用来做selenium/appnium等自动化测试、接口自动化测试&#xff08…

新加坡服务器网站需要备案么建设银行网站怎么登陆密码忘了怎么办

在开发Android Launcher时,需要关注性能、用户体验、权限管理、兼容性等方面,同时遵循相关的开发者政策和最佳实践。有几个重要的注意事项,希望对大家有所帮助。北京木奇移动技术有限公司,专业的软件外包开发公司,欢迎…

哈尔滨网站建设还不如ip代理提取网站源码

WAR包WAR(Web Archive file)网络应用程序文件,是与平台无关的文件格式,它允许将许多文件组合成一个压缩文件。War专用于Web方面。大部分的JAVA WEB工程,都是打成WAR包进行发布的。War是一个web模块,其中需要包括WEB-INF&#xff0…

网站建设初期工作方案seo搜索引擎优化介绍

一、原理分析 使用定时器输出PWM(脉宽调制)信号是通过微控制器的定时器模块来生成一种周期性的脉冲信号,通过控制脉冲的高电平时间(占空比)来控制输出信号的平均功率。以下是生成PWM信号的基本原理概述: 定…

网站制作q电子商务公司有什么职位

/etc/profile:此文件为系统的每个用户设置环境信息,当用户第一次登录时,该文件被执行.并从/etc/profile.d目录的配置文件中搜集shell的设置. 英文描述为: # /etc/profile # System wide environment and startup programs, for login setup # Functions and alias…

北京网站定制价格表网址制作

文章目录 学术工作公司为什么要使用日记应用程序?定制总结 本文翻译整理自: https://blog.langchain.dev/langfriend/ (发布于2024 年 3 月 28 日) 在LangChain我们最感兴趣的概念之一就是内存。 每当我们对一个概念感兴趣时,我们都喜欢构建一…

天津猎头公司知名seo电话

转载:http://blog.csdn.net/ljd_1986413/article/details/7940938 服务器程序和客户端程序应当分别运行在两台计算机上。 在运行服务器端的计算机终端执行:./file_server 在运行客户端的计算终端上执行:./file_client ipaddr_server 然后根…

现在网站建站的主流语言是什么免费seo网站优化工具

Scala 函数(Function) 概述 将一段逻辑进行封装便于进行重复使用,被封装的这段逻辑就是函数。在Scala中,必须通过def来定义函数 基本语法 def 函数名(参数列表) : 返回值类型 {函数体return 返回值 }案例 // 案例:定义函数计算两个整数的…

商业网站的后缀一般为在线爬取网页源码

P2495 [SDOI2011]消耗战 题目描述 详见:P2495 [SDOI2011]消耗战 Solution 此题是虚树的经典版子题吧qwq。 是不是直接贴代码就行了啊(反正不是luogu题解,没有人查)。 大概就是先建出虚树(一般给定一堆关键点的题…

校园网站建设方向做网站的任务书

AI人工智能在建筑智能化工程设计的应用 相关政策: 建筑智能化工程设计资质是为了合理设计各种智能化系统,让它们有机地结合成为有效的整体作用。在工程设计标准中,智能化资质设计全称为建筑智能化系统专项设计资质。企业一旦具备智能化设计资…

各种网站程序的优势揭阳网站建站网站

文章目录 一、线程的概念1. 什么是线程Linux下并不存在真正的多线程,而是用进程模拟的!Linux没有真正意义上的线程相关的系统调用!原生线程库pthread 2. 线程和进程的联系和区别3. 线程的优点4. 线程的缺点5. 线程异常6. 线程用途 二、二级页…

天河建设网站方案深圳龙岩技术科技有限公司

这是关于一个普通双非本科大一学生的C的学习记录贴 在此前,我学了一点点C语言还有简单的数据结构,如果有小伙伴想和我一起学习的,可以私信我交流分享学习资料 那么开启正题 今天分享的是关于二叉树的题目 1.从前序与中序遍历序列构造二叉…

顺德网站建设公司咨询云南省住房和建设厅网站

【BASH】回顾与知识点梳理 二十 二十. 十六至十九章知识点总结及练习20.1 总结20.2 练习 该系列目录 --> 【BASH】回顾与知识点梳理(目录) 二十. 十六至十九章知识点总结及练习 20.1 总结 shell script 是利用 shell 的功能所写的一个『程序 (prog…

网站备案最多需要多久建设网站会员登陆

以3040端口为例 要查看在Linux系统中哪个程序占用了3040端口,可以使用lsof命令或netstat命令结合适当的参数。这里提供两种常用的方法: 方法1:使用 lsof 命令 lsof(List Open Files)是一个查看当前系统打开文件的工…

网站备案查询姓名怎么样开发小程序

文章目录 Sentinel雪崩问题服务保护框架Sentinel配置 限流规则快速入门流控模式流控效果热点参数限流 隔离和降级FeignClient整合Sentinel线程隔离(舱壁模式)熔断降级 授权规则及规则持久化授权规则自定义异常结果持久化 Sentinel 雪崩问题 服务保护框架…

3.建设营销型网站流程wordpress meta 插件

1. 两个栈实现队列 实现一 思路 s1是入栈的,s2是出栈的。 入队列,直接压到s1是就行了出队列,先把s1中的元素全部出栈压入到s2中,弹出s2中的栈顶元素;再把s2的所有元素全部压回s1中 实现二 思路 s1是入栈的&#xff0c…

做追星网站效果图会泽住房和城乡建设局网站

文章目录 前言一、下载并安装Tesseract OCR二、配置环境变量三、Python中安装使用pytesseract总结 前言 Tesseract OCR是一个开源OCR(Optical Character Recognition)引擎,用于从图像中提取文本。Pytesseract是Tesseract OCR的Python封装&am…

公司网站建设推广方案模板网站没更新

参考 Lawrence Systems 的 Youtube,频道有教程。 安装 安装 Collabora,只需要修改 账户,密码,及证书。 新增 dataset,名称 “NextCloud_Database”,其他默认新增 dataset,名称 “NextCloud_Data”&#…

山西智能建站系统价格网站开发 实习报告

计算机网络总复习链接🔗 目录 组帧差错控制检错编码纠错编码 流量控制与可靠传输机制流量控制、可靠传输与滑动窗口机制单帧窗口与停止-等待协议多帧滑动窗口与后退N帧协议(GBN)多帧滑动窗口与选择重传协议 介质访问控制信道划分介质访问控制…