作业-day-240521

news2024/7/6 19:34:55

多点思维导图

面试题

1、项目中如何实现TCP的并发

1)、一般的TCP服务器通信,只能完成一个客户端的操作。要实现多客户端的通信,可使服务器端循环创建并收发客户端的通信。

2)、但仅循环服务器使用的情况,由于accept、send、recv函数都是阻塞函数,必须等上一个任务执行完成后,才能执行下一个任务。

3)、为了解决上述问题,可以采用多进程和多线程的的方式实现多任务并发。

4)、多进程实现原理:

父进程:用于接收客户端的连接请求,并创建子进程。

子进程:只负责和客户端进行通信。

5)、多线程实现原理:

主线程:用于客户端的连接请求,并创建分支线程。

分支线程:只负责和客户端进行通信。

6)、注意资源回收:

子进程结束时,非阻塞形式(waitpid)回收资源。

分支线程创建时,设置分离态,结束时自动回收资源。

2、TCP通信的三次握手、四次挥手过程

三次握手:

1)主机A向主机B发送连接请求

2)主机B向主机A发送同意回复并发送连接请求

3)主机A向主机B发送收到回复

四次挥手:

1)主机A向主机B发送断开请求

2)主机B向主机A发送同意回复

3)主机B向主机A发送断开请求

4)主机A向主机B发送收到回复

TCP/IP协议分层及常见的协议

共有4层

应用层:

HTTP超文本传输协议(万维网的数据通信的基础)

FTP文件传输协议(用于在网络上进行文件传输的一套标准协议,TCP传输)

TFTP简单文件传输协议(用于在网络上进行文件传输的一套标准协议,UDP传输)

SMTP简单邮件传输协议(一种提供可靠且有效的电子邮件传输的协议)

传输层:

TCP传输控制协议(是一种面向连接的、可靠的、基于字节流的传输层通信协议)

UDP用户数据报协议(是一种无连接、不可靠、快速传输的传输层通信协议)

网络层:

IP网际互连协议(能够在多个不同网络间实现信息传输的协议)

ICMP互联网控制信息协议、IGMP互联网组管理

数据链路层:

ARP地址解析协议(通过IP地址获取对放mac地址)

RARP逆向地址解析协议(通过mac地址获取IP地址)

3、UDP传输丢包原因?发生在哪一层?

主要发生在网络层

丢包原因:

1)发送频率过快:UDP的sendto函数不会造成线程阻塞,不会像TCP中的send函数那样,直到数据完全发送才会return回调用函数,它不保证当执行下一条语句时数据是否被发送。

2)发送的报文过大,超过接受者缓存导致丢包。

3)网络连接不稳定

避免方法:

1)发送端控制发送评论。发送时使用usleep(1)延迟1微秒发送,即发送频率不要过快,延迟1微妙发送。

2)增大接受端缓存区。设置socket接收缓冲:

int nRecvBuf=64*1024;//设置为64K

setsockopt(rfd,SOL_SOCKET,SO_RCVBUF,(const char*)&nRecvBuf,sizeof(int));

3)使用可靠的网络连接

4、同步和异步的区别?TCP是同步还是异步?

同步:多任务间有计划顺序的去执行。

异步:多任务间无指向顺序,哪个任务抢到时间片即指向。

TCP为同步,

服务器端任务执行顺序:收到客户端连接---->收到客户端信息---->返回信息到客户端

客户端任务执行顺序:和服务区端建立连接---->先服务器端发送信息---->接收服务器端的返回信息

5、TCP沾包现象?如何避免?

当TCP发送的多个数据包较小且前后间隔时间很短时,两个文件可能会被沾成一个数据包发送。

避免方式:

1)发送数据间间隔一段时间sleep。

2)格式化数据:每条数据有固定的格式(开始符、结束符)

3)发送数据长度:发送每条数据时,将数据长度一起发送。

6、组播和广播的异同

相同点:

1、都是一对多通信,所有接收端都会收到信息;2、都是通过UDP实现;3、都需加入相应的地址组才能接受到信息;4、都分为接收端和发送端;5、信息只能在当前网络中传输,无法通过路由。

不同点:

1、广播占用的网络带宽较大,容易影响通信。组播占用的网络带宽较小;

2、广播使用的地址:网络号+255

        组播使用的地址:D类网络[224.0.0.0~~239.255.255.255]

7、阻塞IO和非阻塞IO的区别

阻塞IO:当程序执行IO操作时,会发生阻塞直到操作完成。

1)针对阻塞IO的系统调用(如read, write)可能因为无法完成而被系统挂起,直到等待的事件发生为止。举例:read和write,通常IO操作都是阻塞I/O的,也就是说当你调用read时,如果没有数据收到,那么线程或者进程就会被挂起,直到收到数据。

2)阻塞IO是同步的,应用程序必须等待IO操作完成。

3)执行IO操作时,线程被阻塞,不能执行其他任务。

4)阻塞IO往往是单线程处理IO请求。

非阻塞IO:允许程序在进行IO操作时继续执行其他任务。

1)针对非阻塞IO的系统调用总是立刻返回,不管事件是否发生,如果事件没有立刻发生就返回-1,并且设置errno。对于accept,recv 和 send,事件未发生时,errno 通常被设置成 EAGAIN。

2)非阻塞IO是同步的,但可以通过设置非阻塞标志来实现异步效果。

3)执行IO操作时,线程不会被阻塞,可以继续处理其他任务。

4)非阻塞IO往往需要使用循环轮询或选择机制来判断IO操作是否就绪。

8、并发和并行的区别

并发:对于单核CPU,通过时间片分配机制,宏观上显示多个任务同时在执行,但微观上,在同一时间片中,只有一个任务在执行。
并行:对于多核CPU,同一个时间片中,会有多个任务在执行。

区别:

1)并行是指两个或者多个事件在同一时刻发生;而并发是指两个或多个事件在同一时间间隔内发生。

2)并行在多核处理器系统中存在,而并发可以在单核处理器和多核处理器系统中都存在。

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

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

相关文章

股指期权和股指期货的区别

今天期权懂带你了解股指期权和股指期货的区别。在金融衍生品市场,既有股指期货又有股指期权,期货与期权是两种不同的资产。 股指期权和股指期货的区别 权利与义务: 股指期货是一种协议,买卖双方都有义务在合约到期时按照约定的价…

CSS demo演示 20240524

说明&#xff1a;不修改父盒子的样式&#xff0c;只在子盒子上设置定位&#xff0c;让子盒子定位在父盒子右侧。 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>Document</title><style>…

CGAN|生成手势图像|可控制生成

&#x1f368; 本文为&#x1f517;365天深度学习训练营 中的学习记录博客&#x1f366; 参考文章&#xff1a;TensorFlow入门实战&#xff5c;第3周&#xff1a;天气识别&#x1f356; 原作者&#xff1a;K同学啊|接辅导、项目定制 CGAN&#xff08;条件生成对抗网络&#xf…

项目十二:简单的python基础爬虫训练

许久未见&#xff0c;甚是想念&#xff0c;今日好运&#xff0c;为你带好运。ok&#xff0c;废话不多说&#xff0c;希望这门案例能带你直接快速了解并运用。&#x1f381;&#x1f496; 基础流程 第一步&#xff1a;安装需要用到的requests库&#xff0c;命令如下 pip inst…

Vue3实战笔记(41)—自己封装一个计时器Hooks

文章目录 前言计时器钩子总结 前言 在Vue项目中&#xff0c;封装一个计时器挂钩&#xff08;Hook&#xff09;是一种实用的技术&#xff0c;它允许你在组件中方便地管理定时任务&#xff0c;如倒计时、计时器等&#xff0c;而无需在每个使用场景重复编写相同的逻辑代码。 计时…

uniapp如何使用自定义的图标

http://t.csdnimg.cn/8KenC 以上是原文章,下面内容是从这篇文章转发的 一、导入 1.在官方&#xff08;iconfont-阿里巴巴矢量图标库&#xff09;选择自己想要的图标&#xff0c;加入购物车 2. 在点击购物车下载代码 3.解压文件夹 并更改名字 4.将文件夹&#xff08;iconfont&…

Xline社区会议Call Up|在 CURP 算法中实现联合共识的安全性

为了更全面地向大家介绍Xline的进展&#xff0c;同时促进Xline社区的发展&#xff0c;我们将于2024年5月31日北京时间11:00 p.m.召开Xline社区会议。 欢迎您届时登陆zoom观看直播&#xff0c;或点击“阅读原文”链接加入会议&#xff1a; 会议号: 832 1086 6737 密码: 41125…

软件开发成本估算 5大注意事项

一般来说&#xff0c;软件开发成本估算分为&#xff1a;软件规模估算、工作量估算、成本估算和确定软件开发成本等四个过程&#xff0c;其估算基本流程如下&#xff1a; 软件开发成本估算流程 为了进一步确保估算的准确性&#xff0c;提高资源规划和分配效率&#xff0c;确保软…

Redis篇 在linux系统上安装Redis

安装Redis 在Ubuntu上安装Redis 在Ubuntu上安装Redis 在linux系统中,我们安装Redis,必须先使它有root权限. 那么在linux中,如何切换到root用户权限呢? sudo su 就可切换到用户权限了. 在切换到用户权限后,我们需要用一条命令来搜索Redis相关的软件包 apt search redis 会出现非…

Labelme自定义数据集COCO格式【实例分割】

参考博客 labelme标注自定义数据集COCO类型_labelme标注coco-CSDN博客 LabelMe使用_labelme中所有的create的作用解释-CSDN博客 1制作自己的数据集 1.1labelme安装 自己的数据和上面数据的区别就在于没有.json标签文件&#xff0c;所以训练自己的数据关键步骤就是获取标签文…

x264 码率控制原理:rate_estimate_qscale 函数

rate_estimate_qscale 函数 原理 函数功能:根据目前使用的实际比特数更新一帧的qscale;是一个复杂的决策过程,需要考虑多种因素,如帧类型、编码的复杂度、目标比特率、缓冲区大小等,以确保视频质量和文件大小之间的平衡。函数参数分析:x264_t *h :编码器上下文信息结构…

UDEV规则配置usb摄像头

参考自:【linux】linux下摄像头设置固定的设备名-udev_linux 摄像头的设备文件名-CSDN博客 UDEV规则 在Linux系统中&#xff0c;UDEV&#xff08;Userspace DEV&#xff09;是一个用于管理设备节点和/dev目录下设备文件的动态设备管理器。当你连接USB摄像头或其他USB设备时&am…

【ai】chatgpt的plugin已经废弃

发现找不到按钮,原来是要申请: https://openai.com/index/chatgpt-plugins/ 发现申请已经跳转了,好像是废弃了? 不接受新插件了,但是openai的api 是可以继续用的。 https://openai.com/waitlist/plugins/We are no longer accepting new Plugins, builders can now create…

react中的useEffect()的使用

useEffect()是react中的hook函数&#xff0c;作用是用于创建由渲染本身引起的操作&#xff0c;而不是事件的触发&#xff0c;比如Ajax请求&#xff0c;DOM的更改 首先useEffect()是个函数&#xff0c;接受两个参数&#xff0c;第一个参数是一个方法&#xff0c;第二个参数是数…

Generic Segmentation Offload(GSO)

Generic Segmentation Offload汉语意思是啥&#xff1f; Generic Segmentation Offload&#xff08;GSO&#xff09;的汉语意思是“通用分段卸载”。在网络通信中&#xff0c;GSO 是一种技术&#xff0c;用于在网络栈中将较大的传输单元分段为更小的单元&#xff0c;以提高网络…

自然语言处理实战项目29-深度上下文相关的词嵌入语言模型ELMo的搭建与NLP任务的实战

大家好,我是微学AI,今天给大家介绍一下自然语言处理实战项目29-深度上下文相关的词嵌入语言模型ELMo的搭建与NLP任务的实战,ELMo(Embeddings from Language Models)是一种深度上下文相关的词嵌入语言模型,它采用了多层双向LSTM编码器构建语言模型,并通过各层LSTM的隐藏状…

顶顶通实时质检系统新增一大功能:黑名单功能介绍

文章目录 前言联系我们功能介绍配置方案 前言 顶顶通实时质检系统新增黑名单一大功能。该功能可通过调用质检系统的黑名单接口&#xff0c;对被叫号码进行检测。如果被检测的号码符合所设定的拦截规则&#xff0c;就会对当前呼叫进行拦截&#xff0c;取消呼叫。 联系我们 有意…

数据库系列之MySQL数据库中内存使用分析

在实际系统环境中&#xff0c;MySQL实例的内存使用随着业务的增长缓慢增长&#xff0c;有些时候并没有及时的释放。本文简要介绍下MySQL数据库中和内存相关的配置&#xff0c;以及分析内存的实际使用情况&#xff0c;以进行应急和调优处理。 1、MySQL内存结构 在MySQL中内存的…

运营抖音小店,这件事情每天都需要去做!一个都不能少!

大家好&#xff0c;我是电商小V 咱们的店铺开好之后&#xff0c;然后运营自己的店铺每天需要做好什么事情呢&#xff1f;这个问题是很多新手小伙伴开通抖店之后最关心的问题&#xff0c;咱们今天就来详细的说一下运营抖音小店每天需要做什么呢&#xff1f; 第一点&#xff1a;奖…

Transformer详解常见面试问题

文章目录 1. 各模块解决1.1 输入部分1.2 多头注意力&#xff08;作者使用8个头&#xff09;1.3 残差和LayerNorm1.4 Decoder部分 2.Transformer经典问题2.1 tranformer为何使用多头注意力机制&#xff1f;2.2 Transformer相比CNN的优缺点2.3 Encoder和decoder的区别&#xff1f…