8.3day04git+数据结构

news2024/11/16 3:24:13

文章目录

    • 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.coloradmin.cn/o/832329.html

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

相关文章

GROW模型及其应用

一、作用 提供一套可操作的流程来理清现状&#xff0c;创造专注&#xff0c;减少干扰&#xff0c;使执行人从内心找到下阶段目标与达成目标的实施办法。是一套主要用于沟通、绩效辅导中的方法。 二、是什么 GROW模型由确定目标&#xff08;Goal&#xff09;、了解现状&…

神经网络的搭建与各层分析

为什么去西藏的人都会感觉很治愈 拉萨的老中医是这么说的 缺氧脑子短路&#xff0c;很多事想不起来&#xff0c;就会感觉很幸福 一、卷积层 解释&#xff1a;卷积层通过卷积操作对输入数据进行处理。它使用一组可学习的滤波器&#xff08;也称为卷积核或特征检测器&#xff09…

hive通过外表整合es,超详细过程。

参考官网 Apache Hive integration | Elasticsearch for Apache Hadoop [7.17] | Elastic 官网的介绍很简单&#xff0c;我看了很多博客&#xff0c;写的也很简单&#xff0c;但是我搞了半天才勉强成功&#xff0c;分享下&#xff0c;免得各位多走弯路。 环境准备 官网也很…

论文研读|生成式文本隐写发展综述

前言&#xff1a;最近接触了文本隐写这一研究领域&#xff0c;大概率以后深入这个方向开展研究&#xff0c;以下是本人近日对该领域研究现状的调研总结&#xff0c;以及生成式文本隐写代表性工作的相关介绍&#xff0c;便于厘清生成式文本隐写的发展脉络以及探寻未来研究空间。…

Go学习第三天

map的三种声明定义方式 声明map后&#xff0c;一定要make开辟空间&#xff0c;否则会报越界且不能使用 package mainimport "fmt"func main() {// 第一种声明方式// 声明myMap1是一种map类型 key是string value是stringvar myMap1 map[string]string// 判断一下map在…

接口请求(get、post、head等)详解

一&#xff0e;接口请求的六种常见方式&#xff1a; 1、Get 向特定资源发出请求&#xff08;请求指定页面信息&#xff0c;并返回实体主体&#xff09; 2、Post 向指定资源提交数据进行处理请求&#xff08;提交表单、上传文件&#xff09;&#xff0c;又可能导致新的资源的建…

【高光谱图像的去噪算法】通过全变异最小化对受激拉曼光谱图像进行去噪研究(Matlab代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…

HCIP 交换综合实验--企业三层架构

题目 1、内网IP地址使用172.16.0.0/26分配 2、SW1和SW2之间互为备份 3、VRRP/STP/VLAN/Eth-trunk均使用 4、所有PC均通过DHCP获取IP地址 5、ISP只能配置IP地址 6、所有电脑可以正常访问ISP路由器环回 实验步骤 第一步、规划IP地址 R1-R2&#xff1a;100.1.1.0/24 R2-LSW1…

【远程桌面软件NoMachine】

Remote Access for Everybody 特色&#xff1a;快速、安全、跨平台、免费且简单易用&#xff0c;尤其是在带宽低、速率慢的网络环境下&#xff0c;NoMachine仍能保持良好的性能。 官网地址为&#xff1a;https://www.nomachine.com/

c++--简单多状态动态规划问题

PS:以下代码均为C实现 1.按摩师 力扣 一个有名的按摩师会收到源源不断的预约请求&#xff0c;每个预约都可以选择接或不接。在每次预约服务之间要有休息时间&#xff0c;因此她不能接受相邻的预约。给定一个预约请求序列&#xff0c;替按摩师找到最优的预约集合&#xff08;总…

【JAVA】正则表达式是啥?

个人主页&#xff1a;【&#x1f60a;个人主页】 系列专栏&#xff1a;【❤️初识JAVA】 文章目录 前言正则表达式正则表达式语法正则表达式的特点捕获组实例 前言 如果我们想要判断给定的字符串是否符合正则表达式的过滤逻辑&#xff08;称作“匹配”&#xff09;&#xff0c…

2023华数杯数学建模C题思路 - 母亲身心健康对婴儿成长的影响

# 1 赛题 C 题 母亲身心健康对婴儿成长的影响 母亲是婴儿生命中最重要的人之一&#xff0c;她不仅为婴儿提供营养物质和身体保护&#xff0c; 还为婴儿提供情感支持和安全感。母亲心理健康状态的不良状况&#xff0c;如抑郁、焦虑、 压力等&#xff0c;可能会对婴儿的认知、情…

搭建 Vite + Vue3 + Pinia + Element Plus 项目。

一、基础项目搭建&#xff1a; 开发工具推荐 VS Code 开发&#xff0c;配合插件如下&#xff1a; 插件名功能TypeScript Vue Plugin (Volar)用于 TypeScript 的 Vue 插件Vue Language Features (Volar)Vue3.0 语法支持 1. 创建项目 可以通过附加的命令行选项直接指定项目名…

第20节 R语言医学分析:某保险医疗事故赔偿因素分析

文章目录 某保险医疗事故赔偿因素分析源码源文件下载某保险医疗事故赔偿因素分析 我们分析数据集“诉讼”的第一个方法是确定样本数量、变量类型、缩放/编码约定(如果有)用于验证数据清理。 接下来,数据集看起来很干净,没有缺失值,并且对于分类变量,将编码约定替换为实际…

LeetCode 热题 100 JavaScript--543. 二叉树的直径

给你一棵二叉树的根节点&#xff0c;返回该树的 直径 。 二叉树的 直径 是指树中任意两个节点之间最长路径的 长度 。这条路径可能经过也可能不经过根节点 root 。 两节点之间路径的 长度 由它们之间边数表示。 var diameterOfBinaryTree function(root) {var maxDiameter…

leetcode每日一练-第88题-合并两个有序数组

一、解题方法 先合并&#xff0c;再排序 二、code class Solution { public:void merge(vector<int>& nums1, int m, vector<int>& nums2, int n) {for(int i0;i<n;i){nums1[mi]nums2[i];//将 nums2 中的元素逐个复制到 nums1 的尾部}sort(nums1.beg…

基于遗传算法的试题组卷(一)

基于遗传算法的试题组卷 IT企业每年都会在春季和秋季举行校园招聘&#xff0c;对于个性化定制的试卷需求量很大&#xff0c;如何组出又好又快的定制化试题对于IT企业非常重要。组卷技术主要针对知识点覆盖率&#xff0c;题型&#xff0c;难度系数&#xff0c;试题数量等一些试题…

为什么感觉 C/C++ 不火了?

首先C和C是两个非常不一样的编程语言。 C语言在系统开发领域地位非常稳固&#xff0c;几乎没有替代产品。应用层开发近年来略微有被Rust取代的迹象。 C由于支持的编程范式过多&#xff0c;导致不同水平的人写出来的代码质量差异太大&#xff0c;这给软件的稳健性带来了很大的…

C高级_第二讲_shell指令和shell脚本_递归练习

思维导图 递归实现&#xff0c;输入一个数&#xff0c;输出这个数的每一位 int funh(int num){if(0 num){return 0;}else{funh(num/10);printf("%d\n", num%10);} }int main(int argc, const char *argv[]) {puts("请输入一个数");int num 0;scanf(&quo…

C++11中的内存模型

一、几种关系术语 1.1、sequenced-before sequenced-before用于表示同一个线程中&#xff0c;两个操作上的先后顺序&#xff0c;这个顺序是非对称、可以进行传递的关系。 它不仅仅表示两个操作之间的先后顺序&#xff0c;还表示了操作结果之间的可见性关系。两个操作A和操作…