IO网络通信

IO

Bio:

   同步阻塞,一个线程一次连接,基于字符流/字节流

   

Nio:同步非阻塞

一个线程多个连接,多个请求注册到多路复用selector上,多路复用器轮训连接

   面向缓冲区, 从某通道读取数据到缓存区, 当前有则处理 无可处理其他工作

   线程向通道写入数据,一旦写入 不需要等待写完就可处理其他工作

元素
channel双向,可读写

   fileChannel文件读写,datagramChannel:udp数据包收发

   serverSocketChannel服务器tcp数据包收发,socketChannel客户端tcp数据包收发

buffer:可读写内存块

   channel读写文件或网络都要经过buffer

   byteBuffer类型化数据存取,支持byte char int long double做好类型匹配

   mappedByteBuffer可文件内容直接在堆外内存被修改

selector(监听多个channel事件)

   对应一个处理线程,注册多个channel,每个channel对应一个buffer

   

Aio:

   异步非阻塞,操作系统完成客户端间read/write,操作系统通知线程去处理后面的工作

零拷贝

直接io:

    磁盘 --> 内核缓冲区pageCache 4k --> 应用程序内存 ---> socket缓冲区 ---> 网络

内存映射文件技术:

    应用程序内存和内核缓冲区做了映射,数据直接从内核缓冲区到socke缓冲区再到网络

零拷贝:内核缓冲区和socket缓冲区做了地址映射

  底层网卡驱动程序读取数据并发送网络

ssize_t sendfile(int out_fd, int in_fd, off_t *offset, size_t count);

TCP/IP

 点对点连接,封装传输数据帧 寻址 传输 路由 接收

七层ISO

数据链路层:mac地址表  做映射 

arp协议,同一子网内开始都不知道对方的ip,先广播arp请求,对方收到给出响应 本地更新arp表

在数据封装时,数据经过每个层都会打上该层特定标识,添加上头部

 窗口大小:流量控制 

校验和计算:数据包验证

一文讲透TCP/IP协议 | 图解+秒懂+史上最全-CSDN博客

socket

应用层与tcp/ip协议通信中间软件抽象层

https://blog.csdn.net/huanxiajioabu/article/details/131894903

三次握手建立连接:

半连队列hash表,全连队列链表

send发送数据 recv接收数据,不会马上执行,放到缓冲区 等内核 / 应用程序

  当应用程序recv没有数据,进入等待队列 进程休眠

nio

netty

   异步,基于事件驱动的网络应用框架;

设计优雅,可拓展 高性能 大吞吐量 零拷贝技术 安全传输 多主流协议 多种编码功能

原理

主从reactor多线程模式

channelHandler处理io交给下一个channelHandler处理,责任链

  读 解码 处理 编码 发送 

  ChannelInboundHandler ChannelOutboundHandler ChannelOutboundHandler

taskQueue:任务提交速度大于线程处理速度缓冲 / 异步处理selector监听io事件

45 张图深度解析 Netty 架构与原理-腾讯云开发者社区-腾讯云

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

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

相关文章

Android:adb命令

执行adb命令的窗口如下 Mac或Linux系统里的终端窗口; window系统运行输入cmd打开的指令窗口; Android Studio 里控制下面的Terminal窗口 1. 查看已链接的设备和模拟器 adb devices -l 2. 查看Android内核版本号 adb shell getprop ro.build.version.re…

数据结构和算法:哈希表

哈希表 哈希表(hash table),又称散列表,它通过建立键 key 与值 value 之间的映射,实现高效的元素查询。具体而言,向哈希表中输入一个键 key ,则可以在 𝑂(1) 时间内获取对应的值 va…

CSS样式表 样式优先级 选择器以及选择器的权重优先级

CSS组成 css由选择符和声明组成,声明又分为属性和属性值 属性必须放在花括号里面,属性与属性值必用冒号连接 每条声明用分号结束 当一个属性有多个属性值的时候,属性值与属性值部分先后顺序,用空格隔开 在书写样式过程中、空格、换…

软文营销塑造品牌形象,迅推客助力企业成功求发展

企业可以选择适合自身的新闻宣传方法。迅推客作为互联网整合营销机构,积极推动软文营销,助力企业塑造高端品牌形象。 1、新闻稿战略规划。 新闻宣传前要有明确的战略规划。在新闻稿的创作过程中,企业的需求与消费者的需求巧妙地融合在一起。…

室内3D模型选择指南:哪家更值得信赖?

如今室内设计的3D模型已经成为了一种重要的设计工具。它们能够帮助设计师们更好地向客户展示他们的设计想法,同时也让客户能够更直观地理解他们的需求。然而,面对市场上众多的室内3D模型网站,我们该如何选择呢? 室内3D模型选择指南&#xff…

echarts系列:echarts增加loading

背景 最近在大屏项目研发时,存在多个echarts图表,有些接口获取数据较慢,需要加loading样式; 解决方案 翻阅api,找到showLoading可进行设置 参考: 加载动画效果 显示加载动画效果。可以在加载数据前手动…

10个优秀的Github开源项目

1Panel 是一个现代化、开源的 Linux 服务器运维管理面板 EX-chatGPT-精准搜索工具 feishu-chatgpt-飞一般的工作体验工具 Knife4j-是一个集Swagger2 和 OpenAPI3为一体的增强解决方案 Kooder 是 Gitee 团队开发的一个代码搜索系统 mtbird 是一款低代码可视化页面生成器 S…

docker一键部署若依前后端分离版本

比如这里把文件放到/xin/docker/jiaoZ/的目录下,jar包和下面的配置文件都放在这个文件夹下。 注意要把jar端口改为你实际启动的,映射端口也可以改为你想要的。 这里的映射端口为:nginx监听80端口,jar在8620端口,mysq…

Emotion Prompt-LLM能够理解并能通过情感刺激得以增强

Large Language Models Understand and Can be Enhanced by Emotional Stimuli 情感智能对我们的日常行为和互动产生了显著的影响。尽管大型语言模型(LLMs)被视为向人工通用智能迈进的一大步,在许多任务中表现出色,但目前尚不清楚…

matlab 条件数的倒数

目录 一、概述1、算法概述2、主要函数3、参考文献二、条件设置错误的矩阵的敏感度三、求解单位矩阵的条件四、参考链接本文由CSDN点云侠原创,原文链接。如果你不是在点云侠的博客中看到该文章,那么此处便是不要脸的爬虫。 一、概述 1、算法概述

.locked勒索病毒是什么,企业数据被加密了如何恢复?

.locked勒索病毒介绍 .locked勒索病毒是一种恶意软件,它利用加密技术锁定用户的数据或系统,并以此进行勒索。用户一旦感染此病毒,将无法访问其重要文件,病毒会要求用户支付一笔赎金以获取解密密钥。这种病毒通常使用强大的加密算法…

PMP证书可以挂靠?

PMP项目管理是由美国项目管理协会(PMI)提出的,针对项目管理专业人士的资格认证。它被公认为全球项目管理领域含金量最高的认证,与MBA、MPA并列为三大就业金字招牌。PMP认证在全球190多个国家及地区得到高度认可。通过PMP认证考试可…

面试常问:为什么 Vite 速度比 Webpack 快

前言 最近作者在学习 webpack 相关的知识,之前一直对这个问题不是特别了解,甚至讲不出个123....,这个问题在面试中也是常见的,作者在学习的过程当中总结了以下几点,在这里分享给大家看一下,当然最重要的是…

什么是Java语言的反射机制?

什么是反射 反射(Reflection)主要是指程序可以访问、检测和修改它本身状态或行为的一种能力。(就像照镜子反射一样) Java反射机制是指在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法&…

docker -compose运行时端口被占用异常

解决方法:在docker-compose.yml文件中去掉端口的配置(去掉下图圈住部分),我们要启动5个,配置了端口我们只能启动一个,所以就会报错

Android Studio实现内容丰富的安卓教学学习平台

获取源码请点击文章末尾QQ名片联系,源码不免费,尊重创作,尊重劳动 项目编号088 1.开发环境 android stuido3.6 jak1.8 eclipse mysql tomcat 2.功能介绍 安卓端: 1.注册登录 2.查看教学视频资料 3.播放教学视频 4.浏览作业&#…

超清gif怎么制作?教你制作gif动图的小窍门

Gif动画作为当下非常受欢迎的一种图片格式,在各种社交软件中也经常的常见。而制作gif动图也没有大家想象的那么难,只需要使用gif动态图片制作(https://www.gif.cn/)工具,不用下载软件。上传jpg、png格式的图片&#xf…

奶瓶哪个品牌质量比较好?五大热销奶瓶实力全解析

相信每个宝妈宝爸在选奶瓶的时候都犹豫住了,市面上的款式和品牌五花八门,完全不知道怎么选。而且还有很多商家为了减少成本花销,开始采用大量不耐高温、不防腐蚀的材料进行加工,如果选到这种没有经过优化过的产品带回家&#xff0…

AcWing 796. 子矩阵的和

这个题的重点是仿照一维的数组,所以a[N][N]也是从1索引开始的。画个图举个例子就非常清晰了 之所以不好理解是因为没画格子,一个格子代表一个点,就很好理解了。 java代码: import java.io.*; public class Main{static int N 1…

C语言经典算法-5

文章目录 其他经典例题跳转链接26.约瑟夫问题(Josephus Problem)27.排列组合28.格雷码(Gray Code)29.产生可能的集合30.m元素集合的n个元素子集 其他经典例题跳转链接 C语言经典算法-1 1.汉若塔 2. 费式数列 3. 巴斯卡三角形 4. …