一、背景介绍
Java中I/O流是一种计算机用语。而I/O问题可以说是Web应用中所面临的主要问题之一,因为在这个海量数据时代,数据在网络中随处流动。这个流动都涉及到I/O问题,可以说大部分Web应用系统的瓶颈都是I/O瓶颈。
I/O问题是任何编程语言都无法回避的问题,可以说I/O问题是整个人机交互的核心问题,因为I/O是机器获取和交换信息的主要渠道。在这个数据爆炸的时代,I/O问题尤其突出。
二、知识剖析
IO流的三种分类方式
1.按流的方向分为:输入流和输出流
2.按流的数据单位不同分为:字节流和字符流
3.按流的功能不同分为:节点流和处理流
IO流的四大抽象类
字符流:Reader Write
字节流:InputStream 读 OutputStream 写
基于字节操作的I/O接口:InputStream 和 OutputStream
基于字符操作的I/O接口:Writer 和 Reader
基于磁盘操作的I/O接口:File
基于网络操作的I/O接口:Socket
三、常见问题
I/O传输过程中的阻塞问题,传输时间长,访问磁盘次数过多。
四、解决方案
通常提升磁盘I/O性能的方法有:
1:增加缓存,减少磁盘访问次数
2:优化磁盘的管理系统,设计最优的磁盘方式策略。这是在底层操作系统层面考虑的。
3:设计合理的磁盘存储数据块,以及访问这些数据块的策略。这是在应用层考虑的。可以给存放的数据设计索引,通过寻址输索引来加快和减少磁盘的访问量,还可以使用异步和非阻塞的方式加快磁盘的访问次数。
五、扩展思考
socket是什么,怎样与别的网络进行通信?
一台计算机要和另一台计算机进行通讯,获取其上应用程序的数据,必须通过Socket建立连接,要知道对方的IP和端口号。建立一个Socket连接需要通过底层TCP/IP协议来建立TCP连接,而建立TCP连接必须通过底层IP协议根据给定的IP在网络中找到目标主机。目标计算机上可能跑着多个应用,所以我们必须要根据端口号来制定目标应用程序,这样就可以通过一个 Socket 实例唯一代表一个主机上的一个应用程序的通信链路了。
六、参考文献
一台计算机要和另一台计算机进行通讯,获取其上应用程序的数据,必须通过Socket建立连接,要知道对方的IP和端口号。建立一个Socket连接需要通过底层TCP/IP协议来建立TCP连接,而建立TCP连接必须通过底层IP协议根据给定的IP在网络中找到目标主机。目标计算机上可能跑着多个应用,所以我们必须要根据端口号来制定目标应用程序,这样就可以通过一个 Socket 实例唯一代表一个主机上的一个应用程序的通信链路了。
“我们相信人人都可以成为一个工程师,现在开始,找个师兄,带你入门,掌控自己学习的节奏,学习的路上不再迷茫”。
这里是技能树.IT修真院,成千上万的师兄在这里找到了自己的学习路线,学习透明化,成长可见化,师兄1对1免费指导。快来与我一起学习吧 !