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

8.3day04git+数据结构

文章目录

    • git版本控制学习
    • 高性能的单机管理主机的心跳服务
    • 算法题

git版本控制学习

一个免费开源,分布式的代码版本控制系统,帮助开发团队维护代码
作用:记录代码内容,切换代码版本,多人开发时高效合并代码内容

安装git软件在这里插入图片描述

如何创建git仓库
将本地文件夹转换成git仓库
从其他服务器上面拷贝git文件

创建git本地仓库
git@gitee.com:z-zhou-xin/sky_take_out.git
在这里插入图片描述

高性能的单机管理主机的心跳服务

看了如何将408课程运用起来,设计一个高性能的单机管理主机的心跳服务
,不是很能看得懂

原链接小林coding
在这里插入图片描述

这是设计系统的架构图
需要设计一个识别机器无法工作的程序。

心跳服务的功能就是发现宕机的主机和发现上线的主机

算法设计
不能采用暴力遍历的方式来寻找超时的主机,时间复杂度很高,心跳包开源用双向链表来设计,构成先入先出的队列。
在这里插入图片描述

双向队列的好处是,有新的包直接添加到队尾,头部是最老的心跳包,距现在是否超过设定的秒数,如果超过,则认为宕机了,然后将讲其从双链表中删除

如何在队列中找到旧的心跳包? 由于数据结构是双向链表,直接删除需要寻找时间复杂度是ON,随着队列元素变多了,效率也会变低。

查询效率最高的就是哈希表了,时间复杂度O(1),可以用来优化

哈希表 key表示对应的ip地址,value包含主机在双向链表中的节点。在这里插入图片描述
这样,每当收到心跳包时,先判断其在不在哈希表里。

如果不存在哈希表里,说明是新主机上线,先将其插入到双向链表的尾部,然后将该主机的 IP 作为 Key,主机在双向链表的节点作为 Value 插入到哈希表。

如果存在哈希表里,说明主机已经上线过,先通过查询哈希表,找到该主机在双
向链表里旧的心跳包的节点,然后就可以通过该节点将其从双向链表中删除,最后将新的心跳包插入到双向链表的队尾,同时更新哈希表。

如果超时了,需要将其从哈希表和双链表中都要删除,那么双链表就需要存储一个键值对key -value key是主机的ip,value是主机的信息;

最终的设计图,采用双链表是为了删除的更快。
在这里插入图片描述

下面来实现高并发和传输协议不是看的太懂;

算法题

leetcode 722删除代码中的注释

import java.util.ArrayList;
import java.util.List;//leetcode submit region begin(Prohibit modification and deletion)
class Solution {public List<String> removeComments(String[] source) {//删除对应的注释// //块注释直接忽略右边的所有内容// /* */ 忽略注释块以内的内容// 注释的优先级 第一个注释优先于后来的任意注释// 当不出来块注释的情况下//出现块注释的标志 /*,然后开启块注释,中间都可以忽略//出现行注释标志,就忽略这一行//不再注释内的保留下来,用StringBuilder进行拼接List<String> res=new ArrayList<>();StringBuilder sb=new StringBuilder();boolean blockCom =false;int sIdx; //遍历单个字符串的索引int sLen; //单个字符串的长度char curChar;char nextChar;for (String s:source) {sLen=s.length();sIdx=0;while (sIdx < sLen) {curChar= s.charAt(sIdx++);nextChar = sIdx < sLen ? s.charAt(sIdx) : ' ';if (blockCom) {if (curChar == '*' && nextChar == '/' && blockCom) {blockCom = false;sIdx += 1;}} else {if (curChar == '/' && nextChar == '*') {blockCom = true;sIdx += 1;} else if (curChar == '/' && nextChar == '/') {//如果是行注释 就直接删除break;} else {sb.append(curChar);}}}if (!blockCom && sb.length() > 0) {res.add(sb.toString());sb = new StringBuilder();}}return  res;}
}
http://www.lryc.cn/news/114683.html

相关文章:

  • 04-5_Qt 5.9 C++开发指南_QComboBox和QPlainTextEdit
  • Sqlserver_Oracle_Mysql_Postgresql不同关系型数据库之主从延迟的理解和实验
  • Clickhouse学习系列——一条SQL完成gourp by分组与不分组数值计算
  • 做好“关键基础设施提供商”角色,亚马逊云科技加快生成式AI落地
  • 如何使用 ChatGPT 规划家居装修
  • 题解 | #1002.Random Nim Game# 2023杭电暑期多校7
  • 篇九:组合模式:树形结构的力量
  • 【注册表】windows系统注册表常用修改方案
  • ant-design-vue 4.x升级问题-样式丢失问题
  • 【果树农药喷洒机器人】Part3:变量喷药系统工作原理介绍
  • GoogLeNet创新点总结
  • 不同路径1、2、3合集(980. 不同路径 III)
  • 【云原生】Yaml文件详解
  • ffmpeg下载安装教程
  • uniapp之当你问起“tab方法触发时eventchange也跟着触发了咋办”时
  • TS 踩坑之路(四)之 Vue3
  • 【音视频】edge与chrome在性能上的比较
  • Docker Compose编排部署LNMP服务
  • git使用(常见用法)
  • 用例拆分情况考虑方案
  • 一文搞懂IS-IS报文通用格式
  • 位置参数 关键字参数
  • 【果树农药喷洒机器人】Part5:基于深度相机与分割掩膜的果树冠层体积探测方法
  • 生活小妙招之UE custom Decal
  • DAY02_Spring—第三方资源配置管理Spring容器Spring注解开发Spring整合Mybatis和Junit
  • Icon图标有哪些在线设计的工具推荐
  • 深度学习环境安装依赖时常见错误解决
  • opencv基础47 查找图像轮廓cv2.findContours()详解
  • Splunk Enterprise for mac(可视化数据分析软件)详细安装教程
  • 如何实现环卫项目运营的数字化管理,达到企业降本增效的目的?