5.23-

 回顾

I0多路复用的原理?

  • 程序首先向操作系统发起一个IO多路复用请求,告诉操作系统需要监视哪些IO通道。这些IO通道可以包括网络套接字、文件描述符等
  • 操作系统随后会将这些IO通道放入一个队列中,并在某个IO通道就绪时(如数据到达、文件可读等)向程序发送一个事件通知
  • 程序接收到事件后,可以立即处理该IO通道的操作。这意味着,程序可以在单个线程中同时监听多个输入流,并在有数据可读或可写时进行相应的处理,而不需要为每个通道创建一个独立的线程

实现I0多路复用可以使用哪些函数完成?

  • 可以使用 select、poll、epoll这些函数来完成

select和poll的区别?

        select

  • 支持的最大文件描述符数量是有限制的
  • 采用轮询方式,将所有待检测的文件描述符放在一个fd_set集合中,每次轮询需要遍历整个集合
  • 是标准POSIX接口,在几乎所有操作系统上都能使用
  • 对于返回状态码不够清晰明了,需要使用FD_ISSET宏来判断哪些文件描述符已经就绪
  • elect函数仅支持三种事件标志:可读、可写和异常

        poll

  • 没有相关限制,可以处理任意数量的文件描述符
  • 采用链表方式,将所有待检测的文件描述符放在一个链表中,每次检查时只需要遍历该链表即可,处理大量文件描述符时,poll效率更高
  • 不是标准接口,在一些老旧的操作系统上可能无法使用
  • 返回后直接通过revents字段来判断哪些文件描述符已经就绪,这使得poll的返回结果更加直观
  • 支持更多的事件标志,包括可读、可写、异常、连接断开、优先级带数据和错误事件等

在UDP通信过程中,能否使用connect函数?为什么?有什么好处?

  • 可以使用
  • 使用connect函数为UDP套接字设置了一个目标地址后,后续调用send或sendto函数发送数据时,就可以省略目标地址参数。这可以使代码更简洁,减少出错的可能性。
  • 当UDP套接字未连接时,send或sendto函数调用失败时,errno可能被设置为ENOTCONN或EDESTADDRREQ。而使用connect函数后,这些问题可以得到简化
  • 在某些实现中,使用connect函数连接UDP套接字可能会提高性能,因为系统可以优化网络路径和缓存
  • 通常,UDP套接字使用recvfrom函数来接收数据,因为它需要知道数据来自哪个源地址。但是,如果使用connect函数连接了UDP套接字,那么也可以使用recv函数来接收数据,因为系统已经知道数据应该来自哪个地址。这允许你在同一端口上创建多个套接字,这在某些应用程序中可能是有用的

0SI 7层网络体系结构有哪些?

  • 应用层::应用层位于OSI参考模型的最高层,它的主要任务是通过应用程序间的交互来完成特定的网络应用
  • 表示层:表示层从应用层接受数据,这些数据是以字符和数字的形式出现的(如Chinese、666)
  • 会话层:会话层负责建立、管理和终止会话。会话层通过提供单会话或多会话管理、同步以及重新同步服务,来控制哪些应用进程正在通信,并负责建立、管理和终止会话。
  • 传输层:传输层的主要任务是将从下层接收的数据进行分段和传输,并在到达目的地址后再进行重组
  • 网络层:网络层的主要任务是选择合适的网间路由和交换节点,以确保数据分组(Packet)从发送端到达接收端
  • 数据链路层:数据链路层通常也叫做链路层,它位于物理层和网络层之间
  • 物理层:物理层是OSI参考模型的最低层,它直接面向实际承担数据传输的物理媒体(如通信链路),负责传送比特流(即由“1”和“0”表示的二进制数串)的功能

四层网络体系结构:

  • 网络接口层:这一层没有规定具体内容,目的是互联全世界各种不同的网络接口,如有线的以太网接口,无线局域网的Wi-Fi接口。
  • 网络层:主要负责建立两个节点之间的连接,通过寻址来选择合适的路由和交换节点,确保数据能够正确无误地按照地址传送给目的端的传输层。IP协议是这一层的核心。
  • 传输层:负责在机器之间建立用于会话的端到端连接(用于数据传输),并提供可靠、透明和优化的数据传输服务机制。该层的核心协议包括TCP(传输控制协议)和UDP(用户数据报协议)。
  • 应用层:主要为用户提供针对性的服务,包含大量的应用协议,如HTTP(超文本传输协议)、HTTPS(安全的HTTP)、FTP(文件传输协议)、SMTP(简单邮件传输协议)、POP3(邮局协议第3版)等

ARP、HTTP、TFTP、IP、UDP、TCP说出全程和所在层

  • ARP:地址解析协议,它在TCP/IP模型中属于IP层(网络层),在OSI模型中属于链路层。ARP协议用于将计算机的网络地址(IP地址32位)转化为物理地址(MAC地址48位)
  • HTTP:超文本传输协议,它属于应用层协议。HTTP协议是为了实现某一类具体应用的协议,并由某一运行在用户空间的应用程序来实现其功能
  • TFTP:简单文件传输协议,它也属于应用层协议。TFTP是一个在UDP之上建立的简单的、面向文件的传输协议,仅支持文件上传和下载功能
  • IP:网际互连协议,它位于TCP/IP模型的网络层(相当于OSI模型的网络层)。IP协议设计目的是提高网络的可扩展性,如解决互联网问题、实现大规模、异构网络的互联互通等
  • UDP:用户数据报协议,它在TCP/IP模型中属于传输层。UDP是一种无连接的协议,它在传输数据之前不需要建立连接,因此它的传输速度较快,但数据安全性相对较低
  • TCP:传输控制协议,同样位于TCP/IP模型的传输层。TCP协议是一种面向连接的、可靠的、基于字节流的传输层通信协议。在简化的计算机网络OSI模型中,它完成第四层传输层所指定的功能

顺序表和链表的区别?

  • 顺序表
  • 顺序表底层存储空间是连续的,它使用一块连续的内存空间存储元素,并通过下标来访问和操作元素。由于元素在内存中连续存储,顺序表具有快速的随机访问能力,访问元素的时间复杂度为O(1)。
  • 在顺序表中插入和删除元素时,需要移动其他元素以保持顺序,因此插入和删除的时间复杂度较高,为O(n)。此外,顺序表在插入时可能需要扩容,即开辟新空间、拷贝元素、释放旧空间,这也增加了操作的复杂性。
  • 顺序表在存储数据时通常具有较高的空间利用率,因为它使用连续的存储空间,减少了空间碎片。然而,顺序表要求大片连续空间,改变容量不方便。
  • 顺序表的设计相对简单,因为它基于数组实现,可以直接使用数组的下标来访问元素。
  • 链表
  • 链表底层存储空间则是不连续的,它在计算机内存的位置是随机存储的。链表中的元素通过指针链接次序实现逻辑顺序,因此在访问元素时需要从头节点开始逐个遍历,访问元素的时间复杂度为O(n)。
  • 链表在插入和删除元素时则相对简单,不需要移动其他元素。链表中的节点包含数据域和指针域,插入和删除操作只需要修改指针即可,时间复杂度为O(1)。
  • 链表在存储数据时空间利用率相对较低,因为每个节点除了存储数据外还需要存储指向下一个节点的指针。但是,链表在插入新数据时可以向系统申请新的内存空间,数据删除后也可以将空间还给系统,因此更加灵活。
  • 链表的设计则相对复杂,需要定义节点结构、实现节点的链接和遍历等操作。此外,链表在查找数据时也需要按顺序找到该数据为止,无法像顺序表一样进行随机访问

进程和线程的区别?

  • 进程
  • 是计算机中的程序关于某数据集合上的一次运行活动,是系统进行资源分配的基本单位,是操作系统结构的基础。它具有独立的功能,可以申请和拥有系统资源,是一个动态的概念,是一个活动的实体。
  • 拥有独立的地址空间和系统资源,包括文本区域、数据区域和堆栈区域等。因此,创建和销毁进程的开销相对较大
  • 是独立的执行单元,具有自己的调度算法,在并发条件下更加稳定可靠。然而,由于进程间的相互制约,进程的执行具有间断性,即进程按各自独立的、不可预知的速度向前推进。
  • 必须通过IPC(进程间通信)进行通信,切换开销相对较大。这是因为每个进程都有独立的地址空间和资源,需要进行复杂的上下文切换操作。
  • 由程序、数据和进程控制块(PCB)三部分组成。一个程序在不同的数据集里就构成不同的进程,能得到不同的结果。
  • 线程
  • 是操作系统能够进行运算调度的最小单位,它被包含在进程当中,是进程中的实际运作单位。与进程相比,线程更为轻量级,共享进程的地址空间和系统资源。每个进程都至少包含一个线程,称为主线程,而其他线程则被称为子线程。
  • 则直接访问其所属进程的地址空间和资源,因此可以方便地共享数据。与进程相比,线程的创建和销毁开销较小,因为它们共享进程的资源
  • 可以并发执行,提高程序的吞吐量和响应性。但由于线程共享进程的资源,线程之间的调度和同步比较复杂,对并发条件的处理需要更多的注意。
  • 可以直接共享进程的地址空间和资源,因此切换开销相对较小。这使得线程之间的通信更加高效和灵活。
  • 一个进程可以包含多个线程,这些线程共享相同的地址空间和资源。这使得线程在编程中更加灵活和高效。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

滴滴三面 | Go后端研发

狠狠的被鞭打了快两个小时… 注意我写的题解不一定是对的,如果你认为有其他答案欢迎评论区留言 bg:23届 211本 社招 1. 自我介绍 2. 讲一个项目的点,因为用到了中间件平台的数据同步,于是开始鞭打数据同步。。 3. 如果同步的时候…

Linux-centos下安装ffmpeg的详细教程

源安装 第一种方式: . 首先需要安装yum源: 这个源安装的ffmpeg版本是3.4 yum install epel-release yum install -y https://mirrors.ustc.edu.cn/rpmfusion/free/el/rpmfusion-free-release-7.noarch.rpm然后可以安装ffmpeg yum install -y ffmpeg ff…

data studio连接到虚拟机上的openGauss

参考:使用DataStudio连接本地虚拟机中的opengauss数据库_big data_白日梦想家_胖七七-华为云开发者联盟 本实验虚拟机安装的是CentOS7 数据库版本是:openGauss-5.0.2-CentOS-64bit-all.tar.gz 1.配置pg_hba.conf 首先使用su - omm登录到omm用户&…

家电维修上门维修小程序怎么搭建制作?

​在家庭生活中,家电的维修问题一直是人们关注的焦点。随着微信小程序的普及,家电维修服务行业也迎来了线上转型的机遇。一款便捷、高效的家电维修上门维修小程序,不仅能为维修服务商带来新的客户,也能为用户带来更便捷的服务体验…

JavaWeb基础(HTML,CSS,JS)

这些知识用了三四天左右学完,因为是JavaWeb,并不是前端,所以只是够用,不是深入,但是这确实是学校一个学期交的东西(JavaWeb课程)。 总结一下网页分为三部分:HTML(内容结构),CSS&…

详解ArcGIS 水文分析模型构建

目录 前言 项目环境、条件 Dem 数据预览 ArcGIS模型构建器 模型搭建 填洼 流向 流量 河流长度 栅格计算器 河流链接 河网分级 栅格河网矢量化 绘制倾泻点 栅格流域提取 集水区 盆域分析 栅格转面 模型应用 导出 py 文件 完善脚本 最终效果 结束语 前言 …

网络安全技术心得体会

网络与信息安全技术心得体会 通过对网络安全这门课程的学习,我进一步了解了网络安全技术的相关知识。大致来说,所谓网络安全指的是对网络系统中各类软硬件和数据信息等提供保护屏障,确保数据信息不受到恶意侵入、窃取等破坏,保证…

modelbox验证expand和condition共用后,是否顺序保持

如图,在expand之后接了个condition,上下两个流中每一对数据buffer的顺序性是否还会保持? 笔者修改让condition在遇到奇数和偶数时的走向不同。 然后在response单元输出每一对数据,发现顺序都不变。且在处理时,输出会卡…

【C语言深度解剖】(16):C语言的文件读写操作

🤡博客主页:醉竺 🥰本文专栏:《C语言深度解剖》 😻欢迎关注:感谢大家的点赞评论关注,祝您学有所成! ✨✨💜💛想要学习更多C语言深度解剖点击专栏链接查看&…

微服务框架Go-kit 01 - 基础示例

一、Go kit简介 Go kit 是一个用于构建可扩展、灵活和可维护微服务的框架和工具集合。它提供了一系列库和组件,涵盖了微服务开发的各个方面,包括服务发现、负载均衡、通信、日志记录、请求跟踪、限流、熔断等。 Go kit 构建微服务时遵循一种类似于传统…

成都爱尔胡建斌院长提醒近视超过600度,记得每年检查眼底!

高度近视是指近视度数在600度及以上的一种屈光不正的状态。 近视的眼睛必定是变形的。在正常情况下,人的眼球类似球体,但随着近视加深,眼轴变长,眼球体积逐渐增大,整个眼球从圆球型向椭圆球形发展,而眼球壁…

HTTPS 协议原理详解

HTTPS 协议原理详解 什么是 HTTPS 协议什么是 SSL/TSL 层HTTPS 使用到的加密算法HTTPS 中 TLS 层的加密过程详解HTTPS 加密过程中用到的数字证书 什么是 HTTPS 协议 HTTPS (全称:Hypertext Transfer Protocol Secure ),是以安全为…

栈(基于动态顺序表实现的栈)

栈的简单介绍 关于栈的性质咳咳 栈:栈是一种特殊的线性表,其中只让在一端插入和删除元素。 后进先出 进行插入删除的那一端叫栈顶,另一端叫栈底 我们实现的栈是基于一个动态顺序表的的栈,会实现栈的 入栈,出栈,获取…

Python知识点复习

文章目录 Input & OutputVariables & Data typesPython字符串重复(字符串乘法)字符串和数字连接在一起print时,要强制类型转换int为str用input()得到的用户输入,是str类型,如果要以int形式计算的话&#xff0c…

Dijkstra算法在《庆余年》中的应用:范闲的皇宫之旅

❤️❤️❤️ 欢迎来到我的博客。希望您能在这里找到既有价值又有趣的内容,和我一起探索、学习和成长。欢迎评论区畅所欲言、享受知识的乐趣! 推荐:数据分析螺丝钉的首页 格物致知 终身学习 期待您的关注 导航: LeetCode解锁100…

C语言 数组——向函数传递数组

目录 把数组传给函数(Passing Arrays to Functions) 向函数传递一维数组 向函数传递二维数组 数组在学生成绩管理中的应用 例:计算每个学生的平均分 把数组传给函数(Passing Arrays to Functions) 向函数传递一维…

校园霸凌行为监测AI预警系统

校园霸凌行为监测AI预警系统基于AI视觉智能分析算法,校园霸凌行为监测AI预警系统通过已安装的监控摄像头对校园现场画面进行实时监测。校园霸凌行为监测AI预警系统能够自动识别学生的违规行为,包括打架、跌倒、偷偷翻墙、人员聚众、攀高、抽烟等行为&…

【C++】右值引用 移动语义

目录 前言一、右值引用与移动语义1.1 左值引用和右值引用1.2 右值引用使用场景和意义1.3 右值引用引用左值及其一些更深入的使用场景分析1.3.1 完美转发 二、新的类功能三、可变参数模板 前言 本篇文章我们继续来聊聊C11新增的一些语法——右值引用,我们在之前就已…

马蹄集 oj赛(双周赛第二十七次)

目录 栈的min 外卖递送 奇偶序列 sort 五彩斑斓的世界 括号家族 名次并列 栈间 双端队列 合并货物 逆序对 活动分组 栈的min 难度:黄金巴 占用内存:128 M时间限制:1秒 小码哥又被安排任务了,这次他需要要设计一个堆栈,他除了可以满足正常的栈…

Spring Security整合Gitee第三方登录

文章目录 学习链接环境准备1. 搭建基本web应用引入依赖ThirdApp启动类创建index页面application.yml配置访问测试 2. 引入security引入依赖ProjectConfig访问测试 第三方认证简介注册gitee客户端实现1引入依赖application.yml配置文件创建index.html页面启动类InfoControllerPr…