5.23-

news2025/1/17 22:54:33

 回顾

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.coloradmin.cn/o/1682587.html

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

相关文章

Aws EC2 + Aws Cli + Terraform

1 什么是 Terraform? Terraform 是由 HashiCorp 创建的“基础架构即代码”(Infrastructure-as-Code,IaC)开源工具。Terraform 的配置语言是 HashiCorp Configuration Language(HCL),用来替代更加冗长的 JSON 和 XML 等…

7---Linux调试器gdb及拓展知识

一、先决知识补充: 1.1为什么测试人员需要测试的版本必须是release版本而不是debug版本? release版本是用户使用到的版本,release版本能够提供更真实的性能表现、完整的代码逻辑、安全性、稳定性以及用户体验。测试release版本可以确保用户…

基于深度学习PET/CT放射学的预后价值:未来在晚期鼻咽癌个体化诱导化疗中的潜在作用 | 文献速递-深度学习结合影像组学

Title 题目 Prognostic Value of Deep Learning PET/CT-BasedRadiomics: Potential Role for Future IndividualInduction Chemotherapy in AdvancedNasopharyngeal Carcinoma 基于深度学习PET/CT放射学的预后价值:未来在晚期鼻咽癌个体化诱导化疗中的潜在作用 0…

Android 逆向学习【2】——APK基本结构

APK安装在安卓机器上的,相当于就是windows的exe文件 APK实际上是个压缩包 只要是压缩的东西 .jar也是压缩包 里面是.class(java编译后的一些东西) APK是Android Package的缩写,即Android安装包。而apk文件其实就是一个压缩包,我们可以将apk文件的后…

【McCabe度量法】方法详解和软考历年真题

🔎嘿,这里是慰慰👩🏻‍🎓,会发各种类型的文章,智能专业,从事前端🐾 🎉如果有帮助的话,就点个赞叭,让我开心一下!&#x1f…

slam14讲(第9,10讲 后端)

slam14讲(第9,10讲 后端) 后端分类基于滤波器的后端线性系统和卡尔曼滤波非线性系统和扩展卡尔曼滤波 BA优化H矩阵的稀疏性和边缘化H矩阵求解的总结 位姿图优化公式推导 基于滑动窗口的后端个人见解旧关键帧的边缘化 后端分类 基于滤波器的后…

Linux-文件或目录权限

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

Golang | Leetcode Golang题解之第97题交错字符串

题目&#xff1a; 题解&#xff1a; func isInterleave(s1 string, s2 string, s3 string) bool {n, m, t : len(s1), len(s2), len(s3)if (n m) ! t {return false}f : make([]bool, m 1)f[0] truefor i : 0; i < n; i {for j : 0; j < m; j {p : i j - 1if i >…

mysql误删后使用binlog恢复数据

1 预期效果 使用 binlog 恢复数据的预期效果是将误删的数据还原到误删之前的状态&#xff0c;以减少或消除数据丢失的影响。通过正确解析和执行 binlog 中的操作记录&#xff0c;可以重新执行误删操作之后的插入、更新或删除操作&#xff0c;从而恢复被误删的数据。 数据恢复&…

二.Flowable自带Demo(Flowable-UI)体验

问题反馈 如有问题可通过微信公众号“假装正经的程序员”反馈 Flowable-UI是什么 Flowable-UI是flowable自带的一套供开发人员体验的系统&#xff0c;它通过后台的UI建模&#xff0c;让开发人员了解Flowable的工作流程&#xff0c;同时它部署简单&#xff0c;只需要将对应的w…

医学AI最新研究·哈佛医学院·告别切片局限:3D病理如何革新癌症预后

小罗碎碎念 本期文章分享的主要是AI与肿瘤的复发、转移相关的最新研究。 筛选规则如下&#xff1a; (artificial intelligence or deep Learning or convolutional networks or transformer or selfattention or machine learning) and (Tumor metastasis or Recurrence of Ca…

Windows系统安装OpenSSH使用VScode远程连接内网Linux服务器开发

文章目录 &#x1f4a1;推荐 前言1、安装OpenSSH2、VS Code配置ssh3. 局域网测试连接远程服务器4. 公网远程连接4.1 ubuntu安装cpolar内网穿透4.2 创建隧道映射4.3 测试公网远程连接 5. 配置固定TCP端口地址5.1 保留一个固定TCP端口地址5.2 配置固定TCP端口地址5.3 测试固定公网…

视频批量裁剪助手:一键式高效缩小视频尺寸,极速提升工作效率的必备神器!

视频已经成为我们日常生活和工作中不可或缺的一部分。无论是个人vlog、企业宣传片&#xff0c;还是教学视频、广告素材&#xff0c;视频都承载着大量的信息和情感。然而&#xff0c;很多时候&#xff0c;我们手中的视频尺寸并不符合我们的需求&#xff0c;这时&#xff0c;一款…

Xilinx(AMD) FPGA通过ICAP原语读取芯片IDCODE实现方法

1 概述 Xilinx每种型号的FPGA芯片都有一个唯一的IDCODE与之对应&#xff0c;同一型号不同封装的IDCODE是相同的。IDCODE的获取方法包括JTAG、ICAP原语、AXI_HWICAP IP核等。获取IDCODE常用于根据芯片型号改变代码的功能&#xff0c;或者对代码进行授权保护&#xff0c;只能在指…

ROS | 用C++和python实现运动控制功能

基础知识&#xff1a; 用C实现&#xff1a; C代码&#xff1a; 用python实现&#xff1a; Python代码&#xff1a;

【编译原理复习笔记】语法分析-补充(二义性与LR错误处理)

二义性文法的 LR 分析 每个二义性文法都不是 LR 的 但是某些二义性文法更加简短&#xff0c;描述更方便 如 I7 和 I8 具有移进归约冲突 使用优先级和结合性解决冲突 对于 I7&#xff0c;由于乘号优先级高于加号&#xff0c;所以当下一个输入符号为乘号时&#xff0c;我们优…

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

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

设计模式11——代理模式

写文章的初心主要是用来帮助自己快速的回忆这个模式该怎么用&#xff0c;主要是下面的UML图可以起到大作用&#xff0c;在你学习过一遍以后可能会遗忘&#xff0c;忘记了不要紧&#xff0c;只要看一眼UML图就能想起来了。同时也请大家多多指教。 代理模式&#xff08;Proxy&am…

mfc100u.dll缺失怎么解决,详细分析mfc100u.dll文件属性

mfc100u.dll文件缺失是一个常见的问题&#xff0c;这通常由计算机在执行操作时不慎造成的dll文件遗失引起。作为一个关键的dll文件&#xff0c;如果没有mfc100u.dll&#xff0c;可能会导致程序无法启动或系统错误。下面&#xff0c;我们将讨论几种解决mfc100u.dll文件遗失的方法…

弘君资本午评:三大股指全线走低,北证50指数逆市涨逾3%

23日早盘&#xff0c;三大股指低开低走&#xff0c;盘中均跌超1%&#xff0c;北证50指数逆市拉升&#xff0c;一度涨超4%&#xff1b;两市半日成交近5300亿元。 到午间收盘&#xff0c;沪指跌1%报3126.82点&#xff0c;深证成指跌1.19%&#xff0c;创业板指跌0.98%&#xff0c…