当前位置: 首页 > news >正文

设计本网站是用什么做的网站设计步骤

设计本网站是用什么做的,网站设计步骤,wordpress腾讯云cdn配置教程,网站建设费可以一次性冲费用吗阅读文本大概需要3分钟。0x01#xff1a;FIFO算法FIFO(First in First out)#xff0c;先进先出。其实在操作系统的设计理念中很多地方都利用到了先进先出的思想#xff0c;比如作业调度(先来先服务)#xff0c;为什么这个原则在很多地方都会用到呢#xff1f;因为这个原则… 阅读文本大概需要3分钟。0x01FIFO算法  FIFO(First in First out)先进先出。其实在操作系统的设计理念中很多地方都利用到了先进先出的思想比如作业调度(先来先服务)为什么这个原则在很多地方都会用到呢因为这个原则简单、且符合人们的惯性思维具备公平性并且实现起来简单直接使用数据结构中的队列即可实现。  在FIFO Cache设计中核心原则就是如果一个数据最先进入缓存中则应该最早淘汰掉。也就是说当缓存满的时候应当把最先进入缓存的数据给淘汰掉。在FIFO Cache中应该支持以下操作;  get(key)如果Cache中存在该key则返回对应的value值否则返回-1  set(key,value)如果Cache中存在该key则重置value值如果不存在该key则将该key插入到到Cache中若Cache已满则淘汰最早进入Cache的数据。  举个例子假如Cache大小为3访问数据序列为set(1,1),set(2,2),set(3,3),set(4,4),get(2),set(5,5)  则Cache中的数据变化为  (1,1)                               set(1,1)  (1,1) (2,2)                       set(2,2)  (1,1) (2,2) (3,3)               set(3,3)  (2,2) (3,3) (4,4)               set(4,4)  (2,2) (3,3) (4,4)               get(2)  (3,3) (4,4) (5,5)               set(5,5)   那么利用什么数据结构来实现呢  下面提供一种实现思路  利用一个双向链表保存数据当来了新的数据之后便添加到链表末尾如果Cache存满数据则把链表头部数据删除然后把新的数据添加到链表末尾。在访问数据的时候如果在Cache中存在该数据的话则返回对应的value值否则返回-1。如果想提高访问效率可以利用hashmap来保存每个key在链表中对应的位置。0x02LFU算法  LFU(Least Frequently Used)最近最少使用算法。它是基于“如果一个数据在最近一段时间内使用次数很少那么在将来一段时间内被使用的可能性也很小”的思路。  注意LFU和LRU算法的不同之处LRU的淘汰规则是基于访问时间而LFU是基于访问次数的。举个简单的例子  假设缓存大小为3数据访问序列为set(2,2),set(1,1),get(2),get(1),get(2),set(3,3),set(4,4)  则在set(4,4)时对于LFU算法应该淘汰(3,3)而LRU应该淘汰(1,1)。  那么LFU Cache应该支持的操作为  get(key)如果Cache中存在该key则返回对应的value值否则返回-1  set(key,value)如果Cache中存在该key则重置value值如果不存在该key则将该key插入到到Cache中若Cache已满则淘汰最少访问的数据。  为了能够淘汰最少使用的数据因此LFU算法最简单的一种设计思路就是 利用一个数组存储 数据项用hashmap存储每个数据项在数组中对应的位置然后为每个数据项设计一个访问频次当数据项被命中时访问频次自增在淘汰的时候淘汰访问频次最少的数据。这样一来的话在插入数据和访问数据的时候都能达到O(1)的时间复杂度在淘汰数据的时候通过选择算法得到应该淘汰的数据项在数组中的索引并将该索引位置的内容替换为新来的数据内容即可这样的话淘汰数据的操作时间复杂度为O(n)。  另外还有一种实现思路就是利用 小顶堆hashmap小顶堆插入、删除操作都能达到O(logn)时间复杂度因此效率相比第一种实现方法更加高效。  如果哪位朋友有更高效的实现方式(比如O(1)时间复杂度)不妨探讨一下不胜感激。0x03LRU算法LRU算法的设计原则是如果一个数据在最近一段时间没有被访问到那么在将来它被访问的可能性也很小。也就是说当限定的空间已存满数据时应当把最久没有被访问到的数据淘汰。而用什么数据结构来实现LRU算法呢可能大多数人都会想到用一个数组来存储数据给每一个数据项标记一个访问时间戳每次插入新数据项的时候先把数组中存在的数据项的时间戳自增并将新数据项的时间戳置为0并插入到数组中。每次访问数组中的数据项的时候将被访问的数据项的时间戳置为0。当数组空间已满时将时间戳最大的数据项淘汰。  这种实现思路很简单但是有什么缺陷呢需要不停地维护数据项的访问时间戳另外在插入数据、删除数据以及访问数据时时间复杂度都是O(n)。  那么有没有更好的实现办法呢  那就是利用链表和hashmap。当需要插入新的数据项的时候如果新数据项在链表中存在(一般称为命中)则把该节点移到链表头部如果不存在则新建一个节点放到链表头部若缓存满了则把链表最后一个节点删除即可。在访问数据的时候如果数据项在链表中存在则把该节点移到链表头部否则返回-1。这样一来在链表尾部的节点就是最近最久未访问的数据项。  总结一下根据题目的要求LRU Cache具备的操作  1)set(key,value)如果key在hashmap中存在则先重置对应的value值然后获取对应的节点cur将cur节点从链表删除并移动到链表的头部若果key在hashmap不存在则新建一个节点并将节点放到链表的头部。当Cache存满的时候将链表最后一个节点删除即可。  2)get(key)如果key在hashmap中存在则把对应的节点放到链表头部并返回对应的value值如果不存在则返回-1。推荐阅读Spring Boot 最流行的 16 条实践SSM框架的面试常见问题【分布式】缓存穿透、缓存雪崩缓存击穿解决方案阿里P7给出的一份超详细 Spring Boot 知识清单关注我每天进步一点点你点的每个在看我都认真当成了喜欢
http://www.zqtcl.cn/news/851539/

相关文章:

  • 做现金贷网站的公司软件开发设计文档
  • 数据做图网站表示商业网站的域名
  • 网站备案单位备案老域名
  • 黔西南州建设局网站网站建设流程的过程
  • 河南龙王建设集团网站沈阳专业建站
  • 百度网盘app下载安装手机版百度排名优化咨询电话
  • 网站微信公众号链接怎么做免费访问国外网站的应用
  • 东莞网站搜索排名wordpress 小工具居中
  • 网上商城网站源码网站建站中关键字搜索怎么弄
  • 房地产开发公司网站源代码 墨绿色风格河北省建设项目环保备案网站
  • 有没有做机械加工的网站企业网站建站企业
  • 网站自创重庆宣传片制作
  • 如何做美发店网站世界上网站做的好的例子
  • 不会代码可以做网站维护吗成版年蝴蝶视频app免费
  • html5手机论坛网站模板支付商城网站制作
  • 自己主机做多个网站网站备案和服务器备案
  • 长安手机网站建设江西做网站的公司有哪些
  • 泉州微信网站开发万能浏览器有哪些
  • 商丘做网站公司新站seo快速收录网站内容页快速建站工具
  • 质监站网址数字化展厅建设方案
  • 免费网上商城网站建设廊坊十大名牌模板厂
  • 网站建设格式龙泉建设工程有限公司网站
  • 四海网络网站建设咨询深圳网站优化网站
  • 报名网站开发多钱做酒网站
  • 2014年网站设计趋势怎样用代码建设一个网站
  • 手机网站使用微信支付瑞诺国际公司团队介绍
  • 如何做网站内容架构分析网站建站平台eazyshop
  • 网站开发 商标第几类建站模板大全
  • 找事做的网站杭州网站建设有限公司
  • 临沂网站建设搭建短视频如何引流与推广