IO 概念

https://blog.csdn.net/u012250875/article/details/78341874 转载于此

1、IO

即Input和output的缩写,是对数据的流入和流出的一种抽象。

2、什么是流

从水流、物流、人流可以总结出流的特点:动态的、可转移的,从一处到另一处的。

3、java中io

java为了我们调用方便,而屏蔽输入/输出源和流动细节,抽象出的用于解决数据流动问题的类体系。

4、输入流和输出流

用于读取的流就是输入流,用于写入的流就是输出流。
输入输出的概念一般是针对内存来说的,写入内存(输出流),从内存中读(输入流)。

5、字节流和字符流

输入输出流可操作性的最小单位是字节流和字符流。
字节流:一次操作8Bit,java io体系中字节操作流以stream结尾。
字符流:一次操作16Bit,java io体系中字符操作流以reader和writer结尾。

6、节点流和包装(处理)流

1)节点流偏向实现细节,直接与细节打交道,比如FileInputStream,而包装(处理)流偏功能,以目标功能为抽象,比如PrintStream。
2)区分节点流和包装流最简单的方法就是:处理流的构造方法中需要另外一个流作为参数,而节点流的构造方法则是具体的物理节点。比如,FileInputStream构造方法中需要一个文件路径或者File对象,而PrintStream构造方法中则需要一个流对象new PrintStream(new FileOutputStream(""))
3)包装流使用了装饰者模式,包装流对节点流进行了一系列的强化包装,让包装后的流拥有了更多的操作手段或更高的操作效率,而隐藏节点流底层的复杂性。

7、低级流和高级流

低级流和高级流对应的概念即对应上面的节点流和包装(处理)流概念。

8、普通流和缓冲流。

普通流和缓冲流主要是针对读写性能上提出的相对概念。普通流与缓冲流的区别在于一个一个数据的流动还是一堆一堆数据的流动。

9、BIO,NIO,AIO

BIO:B有两说,一为Base,jdk中最早抽象出的io体系;一为Block,jdk 1.0中的io体系是阻塞的。所以两说都有道理,一般我们认为B取Block之意。
NIO:N也有两说,一为new,针对Base而言,一为non-Block,针对Block而言。
AIO:A为Asynchronous,异步的,异步IO,AIO还有个名字叫NIO2。
发展历程:bio(jdk1.0) -> nio(jdk1.4) -> aio(jdk1.7)

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在Linux系统中,文件I/O(Input/Output)指的是程序和操作系统之间进行数据读写操作的过程,它是操作系统的核心功能之一。理解文件I/O概念对于编写高效并发程序至关重要。 1. 文件描述符(File Descriptors, FDs):每个进程都有一个或多个文件描述符,用于引用打开的文件或设备。这些描述符是程序和内核之间进行I/O请求的桥梁。 2. 打开文件(Opening a File):应用程序使用`open()`函数打开一个文件,返回对应的文件描述符。这个过程创建了一个文件句柄,可以被后续的操作所引用。 3. 读写操作(Reading and Writing):一旦获得文件描述符,就可以使用如`read()`、`write()`等函数从磁盘读取数据到内存或将内存中的数据写入文件。它们接受文件描述符作为参数,并指定要读写的字节数。 4. 原地修改(In-Place Modification):通过文件描述符进行的读写通常是顺序执行的,如果需要随机访问或修改文件内容,可能需要先读取整个块,修改后重新写回。 5. 缓存机制(Buffering):为了提高性能,Linux内核通常会对文件I/O进行缓存。这包括读取时的预读取和写入时的缓冲,直到达到一定的大小或满足特定条件才会提交到磁盘。 6. 锁定和同步(Locking and Synchronization):为避免多线程环境下对同一文件的并发读写冲突,会用到文件锁(flock)或其他同步机制。 7. 异步IO(Asynchronous I/O):使用异步I/O可以在等待I/O操作完成的同时继续执行其他任务,提高了程序的响应速度。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值