网络IO模型
文章平均质量分 68
燕然一勒
学技以傍身,然后可立足也
展开
-
面试常问:BIO,NIO,AIO
概念解释Java 中的 BIO、NIO 和 AIO 理解为是 Java 语言对操作系统的各种 IO 模型的封装。程序员在使用这些 API 的时候,不需要关心操作系统层面的知识,也不需要根据不同操作系统编写不同的代码。只需要使用Java的API就可以了。BIO属于同步阻塞IO,(Blocking I/O) NIO属于同步非阻塞IO,(Non-blocking IO) AIO属于异步非阻塞IO,(Asynchronous I/O)1. BIOBIO是典型的一请求一应答通信模型,也叫做每连接每线原创 2021-01-02 20:41:25 · 428 阅读 · 2 评论 -
I/O多路复用技术(select/poll/epoll)
I/O多路复用技术在I/O编程中,当需要同时处理多个客户端接入请求时,可以利用多线程或者I/O多路复用技术进行处理。I/O多路复用技术通过把多个I/O阻塞复用到同一个select阻塞上,从而实现系统在单线程的情况下可以同时处理多个客户端请求。与传统的多线程模型相比,I/O多路复用的最大优势就是系统开销小,系统不需要创建新的线程,也不需要维护这些线程的运行,降低了系统的维护工作量,节省了系统资源。目前支持I/O多路复用的系统调用有select,pselect,poll,epoll,在Linux网络编程原创 2021-01-02 17:16:47 · 814 阅读 · 0 评论 -
Linux的五种IO模型
在《UNIX网络编程 第一卷:套接口API》中,作者提出了五种IO模型,分别是阻塞IO、非阻塞IO、多路复用IO、信号驱动IO、异步IO。0. 基础当在应用程序中,当我们想接收数据,我们会调用套接字库的函数read或recv,它们会调用系统调用来读取数据。为了叙述方便,我们把通过套接字读取数据的操作看作调用了recvfrom系统调用。当一个recvfrom操作发生时,它会经历两个不同的阶段等待数据准备好(等数据从网路中到达,然后将数据拷贝到内核缓冲区) 把数据从内核缓冲区拷贝到用户进程缓冲原创 2020-12-30 20:38:14 · 358 阅读 · 0 评论 -
网络通信的基础知识
1. 两台主机是如何通信的这里,我们不探讨两台主机是如何进行网络连接的,而是探讨两台主机在建立了网络连接后,是如何通过网络进行通信的。如果学习过《计算机网络》的话,你一定知道类似下面的这张图“数据在各层之间传递的过程”。这张图是站在计算机网络协议栈的角度,来说明了两台计算机上的两个进程是如何通信的。既然是协议,协议就是规则,是抽象的。所以通过这个图,我们只知道数据是如何抽象地在网络协议层之间流动的;并且知道两台主机之间的数据传输,实质上是通过它们之间的“物理传输媒体”实现的,简单理解为网线就行,因为这不原创 2020-12-30 15:16:22 · 1374 阅读 · 1 评论 -
网络编程之IO模型
小小开场白Java后端面试几乎必问IO模型,比如BIO、NIO和AIO;比如select、poll和epoll。我将对这块知识进行梳理和总结,一备自己使用,二为提供参考。打开浏览器,输入BIO、NIO和AIO,都是直接讲三者的区别,输入select、poll和epoll也是这样。输入IO模型,也都是直接分析对比Linux的五种IO模型。奈何我这样的小白,连些概念属于什么范畴,之间是什么关系,都不知道。作为小白,情不自禁要写小白友好型文章,所以我会对这些概念的关系进行介绍,因为这很重要。学一个东西之前原创 2021-01-02 20:43:31 · 124 阅读 · 0 评论