IO基础-传统I/O模型

关于IO数据流有两种形式,来源于网络和磁盘分别叫做网络IO、磁盘IO。

客户端通过TCP和UDP协议将数据流发往服务端,服务端接收数据这个过程称为网络IO。

服务端读取本地文件数据到服务中的过程称为磁盘IO。

        基于 Linux 一切皆文件的理念,在内核中 Socket 也是以「文件」的形式存在的,也是有对应的文件描述符。

前面提到的 TCP Socket 调用流程是最简单、最基本的,它基本只能一对一通信,因为使用的是同步阻塞的方式,当服务端在还没处理完一个客户端的网络 I/O 时,或者读写操作发生阻塞时,其他客户端是无法与服务端连接的。

于是我们要改进这个网络 I/O 模型,以支持更多的客户端。

一、基础概念

同步:客户端请求服务端会一直等待接收返回数据。

异步:客户端请求服务端,服务端立即返回接收到结果,处理完成后再通知客户端。

阻塞:服务端与客户端建立连接后,其他客户端无法进行连接。

非阻塞:服务端与客户端建立连接后,其他客户端仍然可以连接。

二、BIO和NIO、AIO区别概念

1、BIO模型

注:阻塞IO当前线程会让出cpu控制权。

不占用CPU资源?那是不是代表阻塞模型更好呢?

答案 不是。虽然阻塞状态不会占用CPU资源,但是会发⽣线程的切换,线程切换时会有上下⽂保存转换的过程,需要CPU调度是一个很昂贵的操作。

2、NIO模型

3、AIO模型

三、BIO、NIO、AIO对比

四、BIO模型与NIO模型

我们可以看到每次client请求都需要创建一个线程然后销毁,极大的造成资源浪费。从而我们进行了改进。

NIO模型

核心组件channel 、buffer 、selector。

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

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

相关文章

[大模型]Qwen-7B-Chat WebDemo

Qwen-7B-Chat WebDemo 环境准备 在autodl平台中租一个3090等24G显存的显卡机器,如下图所示镜像选择PyTorch–>2.0.0–>3.8(ubuntu20.04)–>11.8 接下来打开刚刚租用服务器的JupyterLab,并且打开其中的终端开始环境配置、模型下载和运行demo…

AI大模型日报#0419:全球最强开源大模型 Llama 3 发布:15T 数据预训练,参数将超 4000 亿

导读: 欢迎阅读《AI大模型日报》,内容基于Python爬虫和LLM自动生成。目前采用“文心一言”生成了每条资讯的摘要。 标题: 刚刚,全球最强开源大模型 Llama 3 发布:使用 15T 数据预训练,最大模型参数将超 4000 亿 摘要…

【目标跟踪】ByteTrack详解与代码细节

文章目录 一、前言二、代码详解2.1、新起航迹2.2、预测2.3、匹配2.4、结果发布2.5、总结 三、流程图四、部署 一、前言 论文地址:https://arxiv.org/pdf/2110.06864.pdf git地址:https://github.com/ifzhang/ByteTrack ByteTrack 在是在 2021 年 10 月…

书生浦语训练营第2期-第4节笔记

一、为什么要微调? 1. 适应特定任务或领域:虽然预训练的模型通常具有广泛的知识和理解能力,但它们可能不完全适应特定任务的需求。通过在特定的数据集上微调模型,可以使模型更好地理解和处理与特定任务或领域相关的数据。 2. 提高…

【uniapp】微信小程序2024手机号快速验证及无感登录教程(内附代码)

组件:手机号快速验证组件 适用对象:企业/个体 费用:0.03元/次 目录 前言思路前端后端代码无感登录onload事件无感登录方法登录判断后端mini_login2 最后 前言 最近注册了公司,可以注册具有支付能力的小程序了,各种材料…

在Nuxt.js中添加PostCSS自动前缀器

在其他浏览器中,有些 CSS 属性需要带有前缀。如-webkit- | -o- | -ms- 等等 Autoprefixer 是一个 PostCSS 插件,可以将你的CSS代码渲染到浏览器中自动补充厂商前缀,因此你不用担心自己编写的CSS代码有浏览器兼容性问题。 如: .fl…

kaggle咖啡销售分析案例侧重可视化折线图条形图扇形图柱状图

目录 概述 环境依赖 数据描述 代码概述 导包 数据读取 统计缺失值 数据结构概述 描述统计 时间轴数据转换 月交易统计直方图 周交易统计图 小时数据转换 小时折线图 销售关系可视化统计 销售占比扇形图 价格箱线图 各类别多维度条形图统计 商店位置交易量折线…

重磅福利!参与现金红包抽奖活动,赶快行动吧!

文章目录 粉丝福利 粉丝福利 亲爱的朋友们,令人振奋的消息来啦!本月,我们特地为大家准备了一份特别的粉丝福利!只要您轻轻一点,关注我们的公众号,就有机会抽取现金红包,让您的生活多一份惊喜与喜…

【微信公众平台】扫码登陆

文章目录 前置准备测试号接口配置 带参数二维码登陆获取access token获取Ticket拼装二维码Url编写接口返回二维码接收扫描带参数二维码事件编写登陆轮训接口测试页面 网页授权二维码登陆生成ticket生成授权地址获取QR码静态文件支持编写获取QR码的接口 接收重定向参数轮训登陆接…

游泳耳机哪个牌子好?体验与口碑兼顾的4大游泳耳机汇总!

最近的天气越来越炎热了,许多人选择游泳作为一种既能锻炼身体又能享受清凉的活动。而随着科技的发展,越来越多的运动爱好者希望在游泳时也能享受到音乐的乐趣。因此,游泳耳机应运而生,成为市场上的热门产品。然而,面对…

使用PixVerse使用指定的角色生成视频

PixVerse 是一款可以将文字描述转换为高清视频的AI视频生成工具,它还支持直接生成原神角色的专属动画视频。以下是如何使用PixVerse使用指定的角色生成视频的步骤: 1. 点击PixVerse 网址 访问以下网址:https://app.pixverse.ai/create/vide…

jvm中的垃圾回收器

Jvm中的垃圾回收器 在jvm中,实现了多种垃圾收集器, 包括: 1.串行垃圾收集器 2.并行垃圾收集器 3.CMS(并发)垃圾收集器 4.G1垃圾收集器 1.串行垃圾回收器 效率低,使用较少 2.并行垃圾回收器 3.并发垃圾回…

软件估算的方法、过程、内容解读(估算指南)

4 估算方法 4.1 基于经验的方法 4.1.1 头脑风暴法 4.1.2 Delphi方法 4.1.2.1 过程图 4.1.2.2 组建评估组 4.1.2.3 系统介绍 4.1.2.4 系统分解与假设 4.1.2.5 设定偏差值 4.1.2.6 个人估计 4.1.2.7 估计结果汇总 4.1.2.8 估计差异讨论 4.1.2.9 结束 4.2 分解的方法…

Brainpan(VulnHub)

Brainpan 1、nmap 2、web渗透 随便看看 目录爆破 使用不同工具,不同字典进行爆破 9999端口分析 10000端口分析 字符串信息中,提示这个程序不能运行在DOS模式下,然后有32个A,还有一行关于复制字节到缓冲区的信息,还有一…

谈谈前端CSS盒模型

前言: 什么是CSS盒模型?盒模型的构造? 在前端开发中,CSS 盒模型是一种非常基础且核心的概念,它描述了文档中的每个元素被框架处理的方式。 ---- 打开浏览器开发者工具,查看Elements右侧下的Styles底部。 …

libVLC Ubuntu编译详解

1.简介 有时候,windows上开发不满足项目需求,需要移植到linux上,不得不自行编译libvlc,编译libvlc相对而言稍微麻烦一点。 我使用的操作系统:Ubuntu20.04 查看系统命令lsb_release -a libvlc版本: 3.0.1…

elment-plus 中 table 左对齐

elment-plus 中 table 左对齐 <el-tablev-loading"loading"class"flex-1 !h-auto":data"roleList":header-cell-style"{text-align: left }":row-style"{ height: 55px }":cell-style"{ text-align: left }"&…

Argus DBM 一款开源的数据库监控工具,无需部署Agent

开箱即用 无需部署Agent&#xff0c;开箱即用。我们使用JDBC直连您的数据库&#xff0c;输入IP端口账户密码即可。 全平台支持 Argus目前支持对Mysql, PostgreSQL, Oracle等数据库类型的监控&#xff0c;我们也会尽快适配其它数据库&#xff0c;致力于监控所有数据库。我们提…

AES 加解密(包含JS、VUE、JAVA、MySQL)工具方法

介绍 AES 是 Advanced Encryption Standard 的缩写&#xff0c;是最常见的对称加密算法。AES 在密码学中又称 Rijndael 加密法&#xff0c;是美国联邦政府采用的一种区块加密标准。这个标准用来替代原先的 DES&#xff0c;已经被多方分析且广为全世界所使用。 基本原理&#…

python 使用 Stable Diffusion API 生成图片示例

python 使用 Stable Diffusion API 生成图片示例 一、前言 在无聊的时候&#xff0c;想瞅一下sd生图遂做了一下 二、具体步骤 1、启动SD的api设置 注意&#xff0c;运行后的api相关功能可以在:http://127.0.0.1:7860/docs 查看 比如这一次我们要的生图的地址就是/sdapi/v1…