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

深圳网站建设售后服务产品营销策略有哪些

深圳网站建设售后服务,产品营销策略有哪些,千图app的下载方式,怎么查询网站备案文章目录 1、了解LRU Cache(Least Recently Used缩写)2、代码实现 1、了解LRU Cache(Least Recently Used缩写) Cache是缓存,在磁盘和内存之间,内存和寄存器之间都存在,CPU和内存之间存在三级缓…

文章目录

  • 1、了解LRU Cache(Least Recently Used缩写)
  • 2、代码实现


1、了解LRU Cache(Least Recently Used缩写)

Cache是缓存,在磁盘和内存之间,内存和寄存器之间都存在,CPU和内存之间存在三级缓存,是一个三层结构。缓存用于两个速度不一致的硬件之间,提高效率用。缓存空间有限,满了以后,新数据要进入,旧数据应当怎么办?操作系统中有个热数据概念,意思是经常被使用的数据,可能放进缓存就被拿出来,再次放进后又被拿出来使用,对应的,也有很少被使用的,也就是LRU的意思,缓存满了后,新数据进来,这些很少被使用的就出去。

设计一个LRU Cache不难,设计一个高效的,任意操作都是O(1)的LRU Cache不简单,但只有这样才能满足要求。LRU Cache最主要的操作是get和put,这两个接口必须以O(1)的时间复杂度进行。

2、代码实现

看一个题

146. LRU 缓存

在这里插入图片描述
在这里插入图片描述

看在不在,可以看地址是否在缓存中。整个操作有查找,更新,新增。虽然可以用unordered_map作为缓存,做到查找,更新都O(1),但如何找到LRU?这涉及到顺序问题,还有时间问题,这里的解决办法就是用vector或list来控制LRU,比如list,在这个list里,让处于尾部就是最久未被使用的,用一个数据就把它提到头部,list<pair<int, int>> _LRUList。但这两个结合还是做不到O(1)。因为更新时无法做到O(1),更新时可以直接修改map里的数据,但在list中更新时需要先找到这个数据再放到头部,所以不是O(1)。

以上问题的解决办法是找到key时,就同时找到key对应存储数据在list中的位置。把map中value的类型换成list的迭代器,这样map[key]中存的就是一个指针,指向list中的对应的元素,如果要使用这个数据时就用指针把它拿出来,然后头插即可。

private:typedef list<pair<int, int>>::iterator LtIter;unordered_map<int, LtIter> _hashMap;list<pair<int, int>> _LRUList;
class LRUCache {
public:LRUCache(int capacity) :_capacity(capacity){}int get(int key) {auto ret = _hashMap.find(key);if(ret != _hashMap.end()){//更新key对应值的位置LtIter it = ret->second;//方案1: erase + push_front 更新迭代器,原迭代器失效//方案2: list的splice接口可以转移节点_LRUList.splice(_LRUList.begin(), _LRUList, it);return ret->second->second;//第一个second对应迭代器,第二个second对应list的pair}else{return -1;}}void put(int key, int value) {//1、新增//2、更新auto ret = _hashMap.find(key);if(ret == _hashMap.end())//新增{if(_capacity == _hashMap.size()){pair<int, int> back = _LRUList.back();_hashMap.erase(back.first);_LRUList.pop_back();  }_LRUList.push_front(make_pair(key, value));_hashMap[key] = _LRUList.begin();}else//更新{LtIter it = ret->second;it->second = value;_LRUList.splice(_LRUList.begin(), _LRUList, it);}}
private:typedef list<pair<int, int>>::iterator LtIter;unordered_map<int, LtIter> _hashMap;list<pair<int, int>> _LRUList;size_t _capacity;
};

结束。

http://www.ritt.cn/news/20628.html

相关文章:

  • 深圳市做网站知名公司有哪些百度人工客服24小时电话
  • .net网站内容管理系统永久免费域名注册
  • 烟台网站建设企汇互联见效付款免费推广公司的网站
  • 库易网网站电商怎么做推广
  • 十大高端网站建设百度seo关键词优化软件
  • 建德网站建设公司seo算法
  • 网站版心怎么做关键词在线挖掘网站
  • 广州市网站建设花钱推广的网络平台
  • 中国医药集团有限公司seo教程有什么
  • 织梦怎么做手机网站网络营销的方法有哪些?
  • 网站建设主题迅雷磁力
  • 网站的专题模板制作软件网络营销所学课程
  • 学校网站建设制作方案站长工具权重
  • 厚街手机网站制作汕头百度网络推广
  • 网站备案表格样本网络营销的成功案例有哪些
  • 巩义做网站晚上网站推广软件免费版
  • 建材行业门户网站源码查关键词的排名工具
  • 专业开发网站公司长春网站关键词推广
  • 阿里云网站建设的功能推广平台app
  • 网站上的广告位是怎么做的在线crm网站建站
  • 怎么向网站添加型号查询功能网络营销专业
  • 浏阳 做网站湖北网络推广seo
  • 成都网站建设托管培训心得总结
  • 海北wap网站建设公司网站建设公司排名
  • 电子商城网站建设方案北京seo代理计费
  • 建设网站能赚钱吗免费推广网站排行榜
  • 品牌策划全案公司seo优化网站快速排名
  • 来个网站吧好人一生平安百度一下官网首页百度
  • 做设计常用网站有哪些成都达洱狐网络科技有限公司
  • 博客类网站建设免费收录软文网站