ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

io系列浅谈

2021-07-16 11:35:22  阅读:203  来源: 互联网

标签:java 浅谈 io 输入输出 IO 系列 NIO 计算机


io涉及的知识图:
image

IO和网络通讯基础概念

首先要从冯诺依曼说起,由他提出的计算机体系结构:

计算器控制(CPU..) ——> 主存(内存..) ——> 输入输出(硬盘、网卡、显示器、键盘..)

IO说白了就是输入输出,宏观角度讲可以分为IO设备和IO接口两个部分,IO设备就是输入输出设备,IO设备的工作方式可以由程序进行控制的。IO接口可以理解为 计算机和其他计算机 ,或者, 程序与计算机 的IO设备之间的传输接口。IO它对于任何计算机系统都非常关键,因为所有 I/O 的主体实际上是内置在操作系统中的。程序一般是调用系统为它们完成大部分的工作。

网络通讯,就相当于一台计算机给另外一台计算机传输数据,中间的过程就叫做通信,也就是通过IO接口输入输出到另一台计算机,这个就叫做网络IO,可以把网络通讯理解为IO的一种,很多人会把网络IO和文件IO的概念区分开,其实他俩是一样的,只不过是通过不同的方式把数据输入输出到了不同的地方。操作IO的模式有很多种,有BIO、NIO之类的,这些可以对应到Java中的类来加深我们的概念。

看到这里,就明白为什么说网络通信也是 IO 行为,都是一种输入输出数据的操作。

java.io包基于流模型实现,提供File抽象、输入输出流等IO的功能。交互方式是同步、阻塞的方式,在读取输入流或者写入输出流时,在读、写动作完成之前,线程会一直阻塞。java.io包的好处是代码比较简单、直观,缺点则是IO效率和扩展性存在局限性,容易成为应用性能的瓶颈
java.net包下提供的部分网络API,比如Socket、ServerSocket、HttpURLConnection 也可以被归类到同步阻塞IO类库,因为网络通信同样是IO行为
在Java 1.4中引入了NIO框架(java.nio 包),提供了Channel、Selector、Buffer等新的抽象,可以构建多路复用IO程序,同时提供更接近操作系统底层的高性能数据操作方式
在Java7中,NIO有了进一步的改进,也就是NIO2,引入了异步非阻塞IO方式,也被称为AIO(Asynchronous IO),异步IO操作基于事件和回调机制

网络通信和IO(1)原文参考

标签:java,浅谈,io,输入输出,IO,系列,NIO,计算机
来源: https://www.cnblogs.com/lovelywcc/p/15019289.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有