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.mzph.cn/diannao/13680.shtml

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

相关文章

「YashanDB迁移体验官」Mysql生产环境迁移至YashanDB数据库深度体验

「YashanDB迁移体验官」Mysql生产环境迁移至YashanDB数据库深度体验 1. 前言1.1 产品介绍1.2 产品架构1.3 产品规格1.3.1 数据库版本支持1.3.2 数据类型支持 2. YMP安装2.1 环境说明2.2 执行安装2.3 访问YMP2.3.1 YMP登录界面2.3.2 YMP迁移流程 3. YMP数据迁移3.1 创建数据源3.…

离线模式下载安装gcc-4.8.5

目录 一,下载gcc离线安装包 二,下载gcc依赖包 三,安装gcc 1, 解压 2, 将依赖库放置环境 3, 安装 3.1自动安装 3.1.1 执行依赖库的编译 3.1.2 新建编译目录 3.1.3 配置编译环境 3.1.4 编译 3.1.5 安装 3.2 手动安装 3.2.1 安装GMP-4.3.2 3.2.2 安装mpf…

【pytorch】 Win11下cuda,cudnn以及pytorch环境安装

Win11下cuda,cudnn以及pytorch环境安装 CUDA环境安装1. 查看CUDA版本1.1 打开NVIDIA控制面板,可以点右下角的NVIDIA设置1.2 点击系统信息,选择组件查看CUDA版本 2. 下载对应的CUDA版本3. 安装3.1 启动exe文件安装 4. 验证安装结果 CUDNN 环境…

【MySQL精通之路】InnoDB-启动选项和系统变量

系统变量可以在服务器启动时设置TRUE或FALSE启用禁用,也可以通过使用--skip前缀来禁用 例如: 要启用或禁用InnoDB自适应哈希索引,可以在命令行中使用--skip-innodb-adaptive-hash-index或--innodb-adaptive-hash-index,或者在配置…

JavaSE : 注解 Annotation

注解 Java中的注解(Annotation)是一种元数据形式,用于向编译器或JVM提供有关程序元素(如类、方法、变量、参数和包)的附加信息。注解不会直接影响程序的行为或结构,但它们可以被编译器、开发工具或运行时环…

Apache CXF Aegis databinding SSRF 高危漏洞修复

一、漏洞修复 Apache CXF Aegis databinding SSRF漏洞 Spring Web UriComponentsBuilder URL解析不当漏洞 二、修复步骤 1、Apache CXF Aegis databinding SSRF漏洞修复 步骤: 进入服务器搜索 databinding find -name *databinding* 发现版本是3.1.6 果断…

数据结构~~带环链表的环开始的节点位置**两种方法

1.带环链表环开始的位置 (1)上面的这个测试用例使用的是包含了4个节点的带环链表,我们要找的就是链表里面的环开始的节点的位置,拿这个测试用例而言,就是2这个节点,从这个节点开始,我们的链表就…

【第16章】MyBatis-Spring之SqlSession

文章目录 前言一、SqlSessionTemplate1. 创建2. 使用3. 批量操作3.1 创建SqlSessionTemplate3.2 service3.3 controller 二、SqlSessionDaoSupport总结 前言 在 MyBatis 中,你可以使用 SqlSessionFactory 来创建 SqlSession。 一旦你获得一个 session 之后&#xf…

源码部署EFK

目录 资源列表 基础环境 关闭防护墙 关闭内核安全机制 修改主机名 添加hosts映射 一、部署elasticsearch 修改limit限制 部署elasticsearch 修改配置文件 单节点 集群(3台节点集群为例) 启动 二、部署filebeat 部署filebeat 添加配置文件 启动 三、部署kiban…

单点登录【demo】

前言 2023-07-29 15:44:56 公开发布于 2024-5-22 00:04:56 单点登录【demo】 以下是 Java 实现单点登录的示例代码: 单点登录(Single Sign-On,SSO)是一种身份认证和授权机制,可以使用户在多个应用程序或系统之间使…

SQL常用基础语句(一)-- FGHIJ开头

GROUP BY GROUP BY语法可以根据给定数据列的每个成员对查询结果进行分组统计,最终得到一个分组汇总表。在GROUP BY子句后面包含了一个HAVING子句,HAVING类似于WHERE,(唯一的差别是WHERE过滤行,HAVING过滤组&#xff0…

【C/C++笔试练习】TCP、IP广播、ARP协议、IP路由器、MAC协议、三次握手、TCP/IP、子网划分年、会抽奖、抄送列表

文章目录 C/C笔试练习选择部分(1)TCP(2)IP广播(3)ARP协议(4)IP路由器(5)MAC协议(6)三次握手(7)TCP/IP&#xf…

PHP在线制作表白网源码

PHP在线制作表白网源码,送女友个惊喜吧,无数据库,上传就能用,后台/admin,账号密码都是admin 百度网盘:https://pan.baidu.com/s/1rbD2_8IsP9UPLK-cdgEXfA?pwdre59

AWS安全性身份和合规性之Secrets Manager

AWS Secrets Manager是一项AWS托管的服务,用于安全地存储、管理和轮转敏感信息,如数据库密码、API密钥、OAuth令牌等。AWS Secrets Manager助您在整个生命周期内轻松管理、检索和轮换数据库凭证、API密钥和其他密钥。 关键词:集中管理、加密…

sql使用加和进行合并去重并提升速率

背景 有三张表ltd1 、ltd0051和、ltd0011ltd1作为主表,左关联 ltd0051和ltd0011如果ltd0051有两条重复数据、td0011有两条重复数据,左关联之后就会得到4条,同时ltd0051和ltd0011这两条数据都是正确,基于主键我们需要将两个相同主键…

【全开源】AJAX家政上门服务系统小程序自营+多商家(高级授权)+独立端

基于FastAdmin和原生微信小程序开发的一款同城预约、上门服务、到店核销家政系统,用户端、服务端(高级授权)、门店端(高级授权)各端相互依赖又相互独立,支持选择项目、选择服务人员、选择门店多种下单方式,支持上门服务和到店核销两种服务方式…

深入理解数仓开发(一)数据技术篇之日志采集

前言 今天开始重新回顾电商数仓项目,结合《阿里巴巴大数据之路》和尚硅谷的《剑指大数据——企业级电商数据仓库项目实战 精华版》来进行第二次深入理解学习。之前第一次学习数仓,虽然尽量放慢速度力求深入理解,但是不可能一遍掌握&#xff0…

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

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

代码随想录算法训练营第十六天(py)| 二叉树 | 104.二叉树的最大深度、111.二叉树的最小深度、222.完全二叉树的节点个数

104.二叉树的最大深度 给定一个二叉树 root ,返回其最大深度。 二叉树的 最大深度 是指从根节点到最远叶子节点的最长路径上的节点数。 思路1 迭代法 层序遍历 层序遍历的思路很简单,其结果本来就是按层数记录的,只需返回结果的长度皆可。…

【C语言回顾】联合和枚举

前言1. 联合体1.1 联合体的声明1.2 联合体的特点1.3 联合体的使用 2. 枚举2.1 枚举的声明2.2 枚举的特点2.3 枚举的使用 结语 #include<GUIQU.h> int main { 上期回顾: 【C语言回顾】结构体 个人主页&#xff1a;C_GUIQU 专栏&#xff1a;【C语言学习】 return 一键三连;…