c++八股5

  1. TCP与UDP,HTTP的区别:
    ○ TCP (Transmission Control Protocol) 是面向连接的、可靠的传输层协议。它提供数据包按序到达、错误检测和重传机制,确保数据完整性和顺序性,但相对UDP来说有更高的开销。
    ○ UDP (User Datagram Protocol) 是无连接的传输层协议,不保证数据包的顺序或可靠性,但传输速度快且延迟低,适用于实时应用如视频会议、在线游戏等场景,其中数据丢失可接受或通过上层协议处理。
    ○ HTTP (Hypertext Transfer Protocol) 是应用层协议,默认基于TCP,主要用于万维网的数据通信,包括网页请求和响应。HTTP定义了客户端(如浏览器)与服务器之间交换数据的标准格式。

  2. STL在项目中的应用与原理组成: STL(Standard Template Library,标准模板库)是C++中一组强大的容器类、算法和迭代器的集合。在项目中,STL被广泛应用以简化数据结构管理和算法实现,例如:
    ○ 容器:std::vector用于动态数组;std::list用于双向链表;std::map用于关联数组(键值对)等,这些容器可用于存储和管理项目中的各种数据类型。
    ○ 算法:std::sort进行排序;std::find查找元素;std::copy复制数据等,可以方便地操作容器中的元素,无需手动编写循环逻辑。
    ○ 迭代器:作为容器和算法之间的桥梁,允许算法透明地作用于不同的容器之上,提供了统一的访问接口。

  3. 项目中举例说明完成的任务(假设示例): 在一个网络服务项目中,使用std::unordered_map来快速存储和检索用户的会话信息,其内部哈希表结构提供了O(1)平均时间复杂度的存取性能。同时,利用std::vector维护用户消息队列,并用std::deque处理先进先出的消息广播。在需要优化数据排序时,调用std::sort函数根据特定条件对数据进行排序。

  4. TCP拥塞控制原理: TCP拥塞控制是为了防止过多的数据注入到网络中,导致网络资源耗尽而无法正常传输数据。它主要通过四个算法阶段实现:
    ○ 慢启动(Slow Start):当连接刚建立或之前出现丢包时,拥塞窗口(cwnd)从1开始指数级增长,直到达到阈值或发生丢包事件。
    ○ 拥塞避免(Congestion Avoidance):当窗口达到一定的阈值后,窗口大小按照线性规律增长,每次往返时间内增加1/cwnd。
    ○ 快重传(Fast Retransmit):如果收到连续三个重复ACK,认为某个分组可能已丢失,立即重新发送未确认的数据包,而不必等待重传定时器超时。
    ○ 快恢复(Fast Recovery):在快重传之后,进入快恢复状态,调整拥塞窗口大小,然后回到拥塞避免阶段。

  5. Linux基础命令: (仅列举部分)
    ○ ls:列出目录内容
    ○ cd:切换工作目录
    ○ mkdir:创建目录
    ○ touch:创建空文件或更新文件时间戳
    ○ cat / more / less:查看文件内容
    ○ rm:删除文件或目录
    ○ cp:复制文件或目录
    ○ mv:移动或重命名文件或目录

  6. Vim分屏命令:
    ○ :sp [filename] 或 :split:水平分割屏幕并打开新文件
    ○ :vsp [filename] 或 :vsplit:垂直分割屏幕并打开新文件
    ○ Ctrl-w + hjkl:在不同窗口间切换(h左、j下、k上、l右)
    ○ Ctrl-w + + 或 -:增大或减小当前窗口的高度
    ○ Ctrl-w + _:最大化当前窗口的高度
    ○ :q:关闭当前窗口(如果该窗口是唯一打开的,则退出Vim)

  7. 对实时性的理解: 实时性通常是指系统能够及时响应外部事件并在规定的时间内完成处理任务的能力。对于实时系统而言,它强调的是响应时间和处理结果的确定性。例如,在实时操作系统中,关键任务必须在预设的时间内完成,否则可能导致系统功能失效或产生严重的后果。实时性分为硬实时和软实时两种:
    ○ 硬实时:要求严格满足截止时间,否则将导致系统崩溃或安全问题。
    ○ 软实时:尽可能在指定时间内完成任务,即使偶尔错过截止时间也不会造成灾难性影响,但仍可能降低系统服务质量。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/631589.shtml

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

相关文章

Tensorflow2.0笔记 - 基础数学运算

本笔记主要记录基于元素操作的,-,*,/,//,%,**,log,exp等运算,矩阵乘法运算,多维tensor乘法相关运算 import tensorflow as tf import numpy as nptf.__version__#element-wise运算,对应元素的,-,*,/,**,//,% tensor1 tf.fill([3,3], 4) ten…

虚化边框背景,让视频不再单调乏味

在繁忙的都市中,我们每天都在为了生活而奔波。有时,我们希望有一个地方,可以让我们暂时远离喧嚣,沉浸在自己的小世界里。而现在,有了这款全新的视频编辑软件——视频剪辑高手,你不仅可以轻松制作出专业级的…

Mac ❀ 如何在MacOS上安装pip软件包

文章目录 1. 安装命令2. 测试 1. 安装命令 # 下载 curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py # 安装 python3 get-pip.py2. 测试 pip -h

Docker篇之修改docker默认磁盘占用目录

一、前言 通常情况下,当我们默认安装docker服务时,在不指定默认存储路径时,docker会自动创建目录,经常会出现打满根目录的情况。 默认存储路径为:/var/lib/docker 下 可通过如下进行查询: docker info输出…

易飞ERP抛转钉钉签核,并自动审核易飞单据

支持易飞ERP所有单据送签到钉钉 (v: rainholy) 1、钉钉界面 2、易飞ERP单据配置 3、钉钉审批完后,自动审核易飞ERP单据

技术视角看Metis未来发展潜力

基本情况 Metis是Optimistic Rollup开发的layer2,于21年主网上线,是最早的上线Rollup的二层网络。并于24年升级为将Optimistic Rollup 架构与零知识证明zk相结合的Hybrid Rollup。 排序器现状 对于每个layer2,用户的交易数据都需要传输到主网ETH上。原则上,用户的交易数…

JAVA代码学习(下)

2023年将会持续于B站、CSDN等各大平台更新,可加入粉丝群与博主交流:838681355,为了老板大G共同努力。 【商务合作请私信或进群联系群主】 六、集合、泛型、枚举 6.1 集合 Java 提供了集合类。集合类主要负责保存、盛装其他数据,因此集合类…

登录页添加验证码

登录页添加验证码 引入验证码页面组件&#xff1a;ValidCode.vue <template><div class"ValidCodeContent" style""><divclass"ValidCode disabled-select":style"width:${width}; height:${height}"click"refre…

手把手教你写 Compose 动画 -- 状态转移型动画 API:animate*AsState()

Jetpack Compose 提供了一系列功能强大且可扩展的 API&#xff0c;可用于在应用界面中轻松实现各种动画效果。这一系列文章会逐个介绍所有的动画 API&#xff0c;通过最直观的 Demo 示例&#xff0c;手把手教你怎么写动画以及带你了解动画背后的原理。 &#x1f4d1; 手把手教你…

Unreal Engine(UE5)中构建离线地图服务

1. 首先需要用到3个软件&#xff0c;Unreal Engine&#xff0c;gis office 和 bigemap离线服务器 Unreal Engine下载地址:点击前往下载页面 Gis office下载地址:点击前往下载页面 Bigemap离线服务器 下载地址: 点击前往下载页面 Unreal Engine用于数字孪生项目开发&#x…

计算机网络、浏览器面试题

浏览器从输入url到呈现发生了什么 1、根据输入的网址解析域名到对应的ip地址&#xff0c;查找顺序&#xff1a; 浏览器缓存、操作系统缓存、路由器缓存、DNS 服务器&#xff08;记录这域名和ip地址的映射&#xff09;、根服务器。 2、找到ip地址需要先建立TCP链接 客户端发送 …

4种方法用Python批量实现多Excel多Sheet合并

目录 方法一&#xff1a;使用pandas库 方法二&#xff1a;使用openpyxl库 方法三&#xff1a;使用xlrd和xlwt库 方法四&#xff1a;使用os和glob库 在数据处理中&#xff0c;经常需要将多个Excel文件中的多个工作表进行合并。以下介绍了4种方法&#xff0c;使用Python批量实…

开发安全之:Path Manipulation

Overview 攻击者可以控制 file_get_contents() 文件系统路径参数&#xff0c;借此访问或修改原本受保护的文件。 Details 当满足以下两个条件时&#xff0c;就会产生 path manipulation 错误&#xff1a; 1.攻击者能够指定某一文件系统操作中所使用的路径。 2. 攻击者可以…

js数组长度不够补0 且 够的话则截取到期望长度

当我们需要处理数组的长度不够的情况时&#xff0c;可以通过补0来完成&#xff1b;数组长度够的情况下&#xff0c;需要截取期望的长度。 在示例代码中&#xff0c;我们定义了一个函数padArrZeroSubLength 它接受两个参数&#xff1a;原始数组和期望的长度。 1&#xff09;函…

【Android】为什么在子线程中更新UI不会抛出异常

转载请注明来源&#xff1a;https://blog.csdn.net/devnn/article/details/135638486 前言 众所周知&#xff0c;Android App在子线程中是不允许更新UI的&#xff0c;否则会抛出异常&#xff1a; android.view.ViewRootImpl$CalledFromWrongThreadException: Only the origin…

【Ubuntu18.04安装Labelme】

Ubuntu18.04安装Labelme 1 安装Anaconda并创建conda环境2 安装依赖3 安装Labelme4 安装验证 1 安装Anaconda并创建conda环境 Anaconda3安装教程&#xff1a;https://blog.csdn.net/dally2/article/details/108206234 "ctrlaltt"快捷键打开终端&#xff0c;创建conda…

数据机房中智能小母线与列头柜方案的对比分析

0引言 近年来&#xff0c;我国信息技术行业发展十分迅猛&#xff0c;得益于国家政策的大力支持&#xff0c;政府金融、互联网公司、运营商等客户都在不断地新建和升级数据中心&#xff0c;以匹配其数据业务的增长速度。我国数据中心IT市场一直保持着连续快速增长的态势。国内数…

橘子学Mybatis07之Mybatis关于缓存的设计

很逆天的一件事是&#xff0c;我上一次发mybatis是在2022年10月15号&#xff0c;然后直到今天才开始总结下一篇Mybatis的东西。一年里面忙成那啥了&#xff0c;而且重心都投入在了Elasticsearch的学习上面&#xff0c;基本一年下来都在搞ES&#xff0c;并且考下了ECE认证&#…

【Poco库源码解析】Poco库中的通知

1、介绍 PocoPocoPoco 中的通知&#xff0c;是消息源通过中间载体将消息发送给观察者&#xff0c;通知可以分为 同步通知和异步通知。 下图是同步通知&#xff0c;消息发送流程&#xff1a; 2.同步通知 2.1 消息 class Notification: public RefCountedObject { public:ty…

生产环境LVM磁盘扩容

使用df -Th 命令查看磁盘信息 ,可以看到当前LVM逻辑卷容量是38G [rootZ ~]# df -TH 文件系统 类型 容量 已用 可用 已用% 挂载点 /dev/mapper/centos-root xfs 38G 2.4G 36G 7% / devtmpfs devtmpfs 1.1G 0 1.1G …