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)三部分组成。一个程序在不同的数据集里就构成不同的进程,能得到不同的结果。
  • 线程
  • 是操作系统能够进行运算调度的最小单位,它被包含在进程当中,是进程中的实际运作单位。与进程相比,线程更为轻量级,共享进程的地址空间和系统资源。每个进程都至少包含一个线程,称为主线程,而其他线程则被称为子线程。
  • 则直接访问其所属进程的地址空间和资源,因此可以方便地共享数据。与进程相比,线程的创建和销毁开销较小,因为它们共享进程的资源
  • 可以并发执行,提高程序的吞吐量和响应性。但由于线程共享进程的资源,线程之间的调度和同步比较复杂,对并发条件的处理需要更多的注意。
  • 可以直接共享进程的地址空间和资源,因此切换开销相对较小。这使得线程之间的通信更加高效和灵活。
  • 一个进程可以包含多个线程,这些线程共享相同的地址空间和资源。这使得线程在编程中更加灵活和高效。

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

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

相关文章

Servlet的request对象

request对象的继承关系 1.HttpServletRequest接口继承了ServletRequest接口,对其父接口进行了扩展,可以处理满足所有http协议的请求 2.HttpServletRequest和ServletRequest都是接口,不能创建对象,因此在tomcat底层定义实现类并创…

Mysql总结1

Mysql常见日志 (1)错误日志:记录数据库服务器启动、停止、运行时存在的问题; (2)慢查询日志:记录查询时间超过long_query_time的sql语句,其中long_query_time可配置,且…

Python 机器学习 基础 之 数据表示与特征工程 【单变量非线性变换 / 自动化特征选择/利用专家知识】的简单说明

Python 机器学习 基础 之 数据表示与特征工程 【单变量非线性变换 / 自动化特征选择/利用专家知识】的简单说明 目录 Python 机器学习 基础 之 数据表示与特征工程 【单变量非线性变换 / 自动化特征选择/利用专家知识】的简单说明 一、简单介绍 二、单变量非线性变换 三、自…

园区网的基本了解

园区网使用的典型技术---IEEE802.3标准/IEEE802.11标准 封闭式园区网络 ---由内部人员使用,不能访问互联网。 ---制订各式各样的规章制度 ---NAC,网络接入控制 开放式园区网络 ---服务于公众的,认证 园区网的发展 第一代:…

驱动未来:IT行业的现状与发展趋势

前言 随着技术的不断进步,IT行业已成为推动全球经济和社会发展的关键力量。从云计算、大数据、人工智能到物联网、5G通信和区块链,这些技术正在重塑我们的生活和工作方式。本文将探讨IT行业的现状和未来发展趋势,并邀请行业领袖、技术专家和…

如何理解kmp的套娃式算法啊?

概念 KMP算法,全称Knuth Morris Pratt算法 。文章大部分内容出自《数据结构与算法之美》 核心思想 假设主串是a,模式串是b 在模式串与主串匹配的过程中,当遇到不可匹配的字符的时候,对已经对比过的字符,是否能找到…

开源大模型与闭源大模型:技术哲学的较量

目录 前言一、 开源大模型的优势1. 社区支持与合作1.1 全球协作网络1.2 快速迭代与创新1.3 共享最佳实践 2. 透明性与可信赖性2.1 审计与验证2.2 减少偏见与错误2.3 安全性提升 3. 低成本与易访问性3.1 降低研发成本3.2 易于定制化3.3 教育资源丰富 4. 促进标准化5. 推动技术进…

【数学】泰勒公式

目录 引言 一、泰勒公式 1.泰勒公式及推导 (1)推导 (2)公式 2.泰勒中值定理 (1)定理1(佩亚诺余项) (2)定理2(拉格朗日余项) …

pdf文件怎么编辑?分享3个专业的pdf软件!

在数字化时代,PDF文件已成为我们工作、学习中的得力助手。然而,面对需要修改的PDF文件,许多人却感到无从下手。今天,就让我们一起探索如何轻松编辑PDF文件,并介绍几款实用的编辑软件,让你轻松应对各种PDF编…

高中数学:平面向量-数量积(向量与向量的乘积)与投影

一、引题 物理上的力做功 二、数量积与投影 1、数量积 θ的范围是[0,π] 2、投影 向量的投影,依然是一个向量! 3、运算法则 易错点: 4、重要性质 这里对性质(2)要注意一下:如果 a → \mathop{a}\limits ^{\rightarrow…

【Linux】Centos7安装JDK

【Linux】Centos7安装JDK 下载 Oracle 官网下载 JDK17 https://www.oracle.com/cn/java/technologies/downloads/#java17 安装 使用rz命令上传 jdk tar 包,上传失败直接用 xftp 上传 在安装图形界面时,有勾选开发工具,会自动安装 JDK 需要先…

白鲸开源CEO郭炜在2024 DataOps发展大会上获聘专家

2024年5月15日,白鲸开源CEO郭炜在2024 DataOps发展大会上被正式聘任为DataOps专家,并获得了荣誉证书。本次大会由中国通信标准化协会主办,中关村科学城管委会提供支持,大数据技术标准推进委员会(CCSATC601)…

【Andoird开发】android获取蓝牙权限,beacon,android-beacon-library

iBeacon 最先是苹果的技术,使用android-beacon-library包可以在android上开发iBeacon 技术。 iBeacon的发明意义重大。它是一种基于蓝牙低功耗(Bluetooth Low Energy, BLE)技术的定位系统,通过向周围发送信号来标识其位置。这项技…

202472读书笔记|《首先你要快乐,其次都是其次》——快乐至上,允许一切发生

202472读书笔记|《首先你要快乐,其次都是其次》——快乐至上,允许一切发生 《首先你要快乐,其次都是其次》作者林小仙,挺轻松的小漫画,清新的文字。 生而为人,我很抱歉,大可不必。 生活已经很难…

番外篇 | YOLOv8改进之引入YOLOv9的RepNCSPELAN4模块 | 替换YOLOv8的C2f

前言:Hello大家好,我是小哥谈。YOLOv9,作为YOLO(You Only Look Once)系列的最新成员,代表着实时物体检测技术的又一重要里程碑。自YOLO系列算法诞生以来,它就以其出色的性能和简洁的设计思想赢得了广泛的关注和认可。从最初的YOLOv1到如今的YOLOv9,这个系列不断地进行技…

Linux-文件或目录权限

在使用 ll 时,可以查看文件夹内容的详细信息,信息的第1位表示类型,具体信息如下: 类型说明-普通文件d文件夹b块设备文件c字符设备文件p管道文件s套接口文件 第2-10位表示权限, 举例:rwxr-xr-x 类型说明r…

我在去哪儿薅到了5块钱火车票代金券,速薅

哈哈,亲爱的薅羊毛小伙伴们! 刚刚在去哪儿大佬那儿发现了一个超级薅羊毛福利!我只花了短短两分钟,就搞到了一张5块钱火车票代金券,简直是天上掉馅饼的节奏啊! 话不多说,薅羊毛的姿势给你们摆好…

基于python实现搜索的目标站点内容监测系统

基于python实现搜索的目标站点内容监测系统 开发语言:Python 数据库:MySQL所用到的知识:Django框架工具:pycharm、Navicat、Maven 系统功能实现 登录页面 后台的登录一般是为了管理员的管理方便进行一个用户权限的验证。也是为管理员提供的唯…

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

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