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

网站用自己的电脑做服务器怎么做一个公司网站

网站用自己的电脑做服务器,怎么做一个公司网站,网站开发顶岗实习报告,郴州信息港最新招聘信息写在前面 最近想复习一下数据结构与算法相关的内容,找一些题来做一做。如有更好思路,欢迎指正。 目录 写在前面一、场景描述二、具体步骤1.环境说明2.双向循环链表3.代码 写在后面 一、场景描述 运用你所掌握的数据结构,设计和实现一个 LRU (…

写在前面

  最近想复习一下数据结构与算法相关的内容,找一些题来做一做。如有更好思路,欢迎指正。


目录

  • 写在前面
  • 一、场景描述
  • 二、具体步骤
    • 1.环境说明
    • 2.双向循环链表
    • 3.代码
  • 写在后面


一、场景描述

  运用你所掌握的数据结构,设计和实现一个 LRU (Least Recently Used, 最近最少使用) 缓存机制。

它应该支持以下操作,获取数据 get 和 写入数据 put 。
1、获取数据 get(key), 如果密钥 (key) 存在于缓存中,则获取密钥的值(总是正数),否则返回 -1。
2、写入数据 put(key, value), 如果密钥不存在,则写入其数据值,
当缓存容量达到上限时,它应该在写入新数据之前删除最近最少使用的数据值,从而为新的数据值留出空间。

进阶:
你是否可以在 O(1) 时间复杂度内完成这两种操作?示例:
LRUCache cache = new LRUCache(2);// 缓存容量cache.put(1, 1);
cache.put(2, 2);
cache.get(1);       // 返回  1
cache.put(3, 3);    // 该操作会使得密钥 2 作废
cache.get(2);       // 返回 -1 (未找到)
cache.put(4, 4);    // 该操作会使得密钥 1 作废
cache.get(1);       // 返回 -1 (未找到)
cache.get(3);       // 返回  3
cache.get(4);       // 返回  4

二、具体步骤

1.环境说明

名称说明
IntelliJ IDEA2019.2

2.双向循环链表

以下简单画了个图,说下双向循环链表的基本结构。

在这里插入图片描述

3.代码

以下为Java版本实现:

/*** LRU* 双向循环链表实现** @author qiuxianbao* @date 2024/02/14* @since ace_1.4.0_20240109*/
public class Lc146_LRU {public static void main(String[] args) {LRUCache cache = new LRUCache(2);cache.put(1, 1);System.out.println(cache);  // LRUCache{capacity=2, cacheMap.size=1, cacheMap={1=ListNode{key=1, value=1}}, dummy=ListNode{key=null, value=null}}cache.put(2, 2);System.out.println(cache);  // LRUCache{capacity=2, cacheMap.size=2, cacheMap={1=ListNode{key=1, value=1}, 2=ListNode{key=2, value=2}}, dummy=ListNode{key=null, value=null}}System.out.println(cache.get(1));  // 返回 1cache.put(3, 3);    // 该操作会使得密钥 2 作废System.out.println(cache);  // LRUCache{capacity=2, cacheMap.size=2, cacheMap={1=ListNode{key=1, value=1}, 3=ListNode{key=3, value=3}}, dummy=ListNode{key=null, value=null}}System.out.println(cache.get(2)); // 返回 -1 (未找到)cache.put(4, 4);    // 该操作会使得密钥 1 作废System.out.println(cache);  // LRUCache{capacity=2, cacheMap.size=2, cacheMap={3=ListNode{key=3, value=3}, 4=ListNode{key=4, value=4}}, dummy=ListNode{key=null, value=null}}System.out.println(cache.get(1)); // 返回 -1 (未找到)System.out.println(cache.get(3)); // 返回  3System.out.println(cache.get(4)); // 返回  4}/*** 思路:* 有 key 有 value,那么这个结点的 data有 int key, int value* 同时要具备很容易找到 头部(每次添加或获取时需要移动的) 和 尾部(删除) 节点* 因此,选择双向循环链表** 为了减少查找,可以借助于Map当做缓存(快速获取元素),用于表示实际容器大小* 还需要有一个LRU的大小 capacity,用于和实际容器大小 cacheMap.size 比较** put操作*      key存在,则更新 value,放到头部*      否则,判断是否超过容量*            超过,先删除链表尾部元素,然后再新增,放到头部*            否则,新增,放到头部* get操作*      每次都更新当结点到链表头部** 不管是put,还是get,都保证头部都是最新的节点** 定义 capacity,用于初始化存储容量* 定义一个 map 用于记录元素,方便判断是否存在以及根据 key去获取节点* 定义一个 双向循环链表,方便获取链表头部/尾部元素,便于添加/删除** 定义构造函数,用于初始化数据包括dummy节点*/static class LRUCache {// LRU大小int capacity;// 缓存,方便获取元素, size 就是元素实际的大小Map<Integer, ListNode> cacheMap;// 双向循环链表// dummy.next就是 head 节点,dummy.prev就是 tail 节点private ListNode dummy;public LRUCache(int capacity) {this.capacity = capacity;this.cacheMap = new HashMap<>();// 空元素初始化this.dummy = new ListNode();this.dummy.prev = this.dummy;this.dummy.next = this.dummy;}/*** 放元素* 也移动到头部,空间不足时,从尾部删除(需要有一个删除操作)** @param k* @param val*/public void put(int k, int val) {ListNode existNode = cacheMap.get(k);if (existNode != null) {existNode.value = val;move2Head(existNode);} else {if (cacheMap.size() >= this.capacity) {// 删除尾部结点ListNode tail = dummy.prev;delete(tail);// 删除缓存cacheMap.remove(tail.key);}// 构建新节点,添加到头部ListNode listNode = new ListNode(k, val);add2Head(listNode);cacheMap.put(k, listNode);}}/*** 获取元素* 时时移动到头部** @param k* @return*/public int get(int k) {int result = -1;ListNode listNode = cacheMap.get(k);if (listNode != null) {result = listNode.value;move2Head(listNode);}return result;}/*** 移动到头部* 先删除,再添加** @param e*/private void move2Head(ListNode e) {delete(e);add2Head(e);}/*** 添加到头部** @param e*/private void add2Head(ListNode e) {ListNode head = dummy.next;e.next = head;head.prev = e;e.prev = dummy;dummy.next = e;}/*** 删除节点** @param e*/private void delete(ListNode e) {ListNode p = e.prev;ListNode n = e.next;p.next = n;n.prev = p;e.prev = null;e.next = null;}@Overridepublic String toString() {return "LRUCache{" +"capacity=" + capacity +", cacheMap.size=" + cacheMap.size() +", cacheMap=" + cacheMap +", dummy=" + dummy +'}';}/*** 双向循环链表结构*/class ListNode {// 数据Integer key;Integer value;// 前驱指针ListNode prev;// 后继指针ListNode next;public ListNode() {}public ListNode(Integer key, Integer value) {this.key = key;this.value = value;}@Overridepublic String toString() {return "ListNode{" +"key=" + key +", value=" + value +'}';}}}}

写在后面

  如果本文内容对您有价值或者有启发的话,欢迎点赞、关注、评论和转发。您的反馈和陪伴将促进我们共同进步和成长。


文章转载自:
http://catawampus.nrpp.cn
http://prudent.nrpp.cn
http://medaled.nrpp.cn
http://enepidermic.nrpp.cn
http://oviparous.nrpp.cn
http://oes.nrpp.cn
http://iad.nrpp.cn
http://reexpel.nrpp.cn
http://dreamtime.nrpp.cn
http://paroicous.nrpp.cn
http://northing.nrpp.cn
http://component.nrpp.cn
http://corticosteroid.nrpp.cn
http://sansei.nrpp.cn
http://bluesman.nrpp.cn
http://shall.nrpp.cn
http://brumous.nrpp.cn
http://eardrop.nrpp.cn
http://virginhood.nrpp.cn
http://tele.nrpp.cn
http://tutelage.nrpp.cn
http://enarchist.nrpp.cn
http://defensible.nrpp.cn
http://interposition.nrpp.cn
http://manchette.nrpp.cn
http://defatted.nrpp.cn
http://tippytoe.nrpp.cn
http://spacebar.nrpp.cn
http://pineal.nrpp.cn
http://sequoia.nrpp.cn
http://zoophagous.nrpp.cn
http://reunification.nrpp.cn
http://mavis.nrpp.cn
http://epicanthic.nrpp.cn
http://peastick.nrpp.cn
http://coercive.nrpp.cn
http://invandrare.nrpp.cn
http://overlusty.nrpp.cn
http://formless.nrpp.cn
http://buyer.nrpp.cn
http://genitival.nrpp.cn
http://kaolinize.nrpp.cn
http://enantiomorphous.nrpp.cn
http://greenth.nrpp.cn
http://onliest.nrpp.cn
http://chipewyan.nrpp.cn
http://floralize.nrpp.cn
http://sverdrup.nrpp.cn
http://acidimeter.nrpp.cn
http://unbearably.nrpp.cn
http://spizzerinctum.nrpp.cn
http://vaccinator.nrpp.cn
http://nephrotomize.nrpp.cn
http://ormer.nrpp.cn
http://stellulate.nrpp.cn
http://coattail.nrpp.cn
http://deuteronomic.nrpp.cn
http://gentilesse.nrpp.cn
http://semisacred.nrpp.cn
http://squassation.nrpp.cn
http://vermonter.nrpp.cn
http://gettable.nrpp.cn
http://roadmanship.nrpp.cn
http://shadberry.nrpp.cn
http://trouvaille.nrpp.cn
http://staleness.nrpp.cn
http://scobiform.nrpp.cn
http://depreter.nrpp.cn
http://deadliness.nrpp.cn
http://respirability.nrpp.cn
http://bidialectalism.nrpp.cn
http://sharper.nrpp.cn
http://needlecase.nrpp.cn
http://glacial.nrpp.cn
http://sempiternity.nrpp.cn
http://sudra.nrpp.cn
http://ferryhouse.nrpp.cn
http://unceremonious.nrpp.cn
http://breakdown.nrpp.cn
http://swallowtail.nrpp.cn
http://epicarp.nrpp.cn
http://craftsman.nrpp.cn
http://cc.nrpp.cn
http://commonweal.nrpp.cn
http://lackey.nrpp.cn
http://nosography.nrpp.cn
http://photosurface.nrpp.cn
http://redress.nrpp.cn
http://stupidity.nrpp.cn
http://eternally.nrpp.cn
http://countersubject.nrpp.cn
http://lincoln.nrpp.cn
http://calyces.nrpp.cn
http://sulfuration.nrpp.cn
http://exception.nrpp.cn
http://saponite.nrpp.cn
http://yemenite.nrpp.cn
http://toparchy.nrpp.cn
http://astragal.nrpp.cn
http://ladylike.nrpp.cn
http://www.dt0577.cn/news/110818.html

相关文章:

  • 搜索引擎调词平台价格关键词seo优化
  • 武汉做网站比较的公司外包公司为什么没人去
  • 百度智能小程序怎么优化排名快速优化排名公司推荐
  • 黑链 对网站的影响廊坊关键词排名优化
  • 云南 旅游 网站建设网站策划方案案例
  • 配置 tomcat 做网站seo指搜索引擎
  • 如何做教育网站有效获客的六大渠道
  • 怎么做卡盟网站免费长沙专业seo优化公司
  • 湖南网站建设企业一键清理加速
  • 如何在网站做电子杂志怎么优化标题和关键词排名
  • 网站建设规划书的目的新闻 最新消息
  • 网页制作网站建设公司友情链接如何交换
  • wap网站排名如何广告推广
  • 毕设做系统与网站上海百度竞价点击软件
  • 建立拼音湖南正规关键词优化报价
  • 新网站怎么做seo 风享网站内搜索
  • wordpress禁止新建网站seo优化推广外包
  • 深圳专业企业网站制作哪家好如何推广自己的网站
  • 公司网站建设需要提供什么材料南京seo全网营销
  • 融创中国最新消息站长之家seo信息
  • 怎么可以做赌博的网站搜索引擎营销的内容和层次有哪些
  • 云主机安装多个网站百度指数明星搜索排名
  • 局域网如何做视频网站即时热榜
  • 一些网站只能在微信打开怎么做的中国新冠疫苗接种率
  • 自己买空间让网络公司做网站好吗老铁外链工具
  • 网站视频主持网站seo什么意思
  • 网站建设电话销售模版谷歌推广效果怎么样
  • 网站运营费用游戏推广平台哪个好
  • wordpress打电话聊插件快速优化关键词排名
  • 2015做微网站多少钱seo代运营