IO
IO
yaoshengting
这个作者很懒,什么都没留下…
展开
-
Java BIO/NIO/AIO简单总结
同步和异步同步:是指发出一个请求,在没有得到结果之前该请求就不返回结果,请求返回时,也就得到结果了。比如说调用者去调用一个接口,这个接口要进行一系列的算法及数据处理,调用者必须要等待这个接口执行完毕了,调用者才能往下走处理下一步任务。异步:是指发出一个请求后,立刻得到了回应,但没有返回结果。调用者调用接口之后,直接就返回了,不需要等待接口执行完内部的一系列的算法及数据处理。这种方式...原创 2020-02-05 15:38:52 · 356 阅读 · 0 评论 -
Java NIO之AIO
AIO 的核心概念:发起非阻塞方式的 I/O 操作。当 I/O 操作完成时通知。 应用程序的责任就是:什么时候发起操作? I/O 操作完成时通知谁?AIO 的 I/O 操作,有两种方式的 API 可以进行:Future 方式 Callback 方式Future 方式Future 方式:即提交一个 I/O 操作请求,返回一个 Future。然后您可以对 Future 进行检查,确...原创 2020-02-04 18:06:24 · 247 阅读 · 0 评论 -
Java NIO之Reactor模型
Reactor模式思想:分而治之+事件驱动1)分而治之一个连接里完整的网络处理过程一般分为accept、read、decode、process、encode、send这几步。Reactor模式将每个步骤映射为一个Task,服务端线程执行的最小逻辑单元不再是一次完整的网络请求,而是Task,且采用非阻塞方式执行。2)事件驱动每个Task对应特定网络事件。当Task准备就绪时,Re...原创 2020-02-03 14:36:34 · 348 阅读 · 0 评论 -
Java NIO之选择器Selector
Selector类 Channel对象的多路复用器 Selector本身为抽象类,AbstractSelector是Selector类的抽象实现类,具体的实现类更加底层(SelectorImpl,位于sun.nio.ch);Selector即为"选择器",支撑了NIO的多路复用。Selector不能直接创建,可以通过调用Selector类的静态方法open()来创建选择...原创 2020-02-02 18:01:12 · 447 阅读 · 0 评论 -
Java NIO之通道Channel
一、通道介绍通道表示与诸如硬件设备,文件,网络套接字socket或程序组件之类的实体的开放连接的实体,该实体能够执行一个或多个不同的I/O操作(例如,读取或写入)。通常,通道旨在确保多线程安全访问,如扩展和实现此接口的接口和类的规范中所述。通常来说NIO中的所有IO都是从 Channel(通道) 开始的。 从通道进行数据读取:创建一个缓冲区,然后请求通道读取数据。 从...原创 2020-02-01 23:29:59 · 343 阅读 · 0 评论 -
Java NIO之缓冲区Buffer
NIO与IO的区别由面向存取数据的载体、是否阻塞等可以分为以下三点不同:面向流:数据像水流一样传输,并且,要么输入要么输出,流是单向的。所以以前的IO流都有输入流,输出流。面向缓冲区:NIO会在程序与文件(磁盘、网络)之间建立一个通道用于连接,然后通过缓冲区进行数据存取,通过通道进行连接传递。阻塞IO和非阻塞IO、选择器主要是针对网络编程而言的。通道( Ch...原创 2020-02-01 21:46:43 · 340 阅读 · 0 评论 -
InputStreamReader与OutputStreamWriter
InputStreamReader,字节流通向字符流的桥梁:它使用指定的charset读取字节并将其解码为字符。OutputStreamWriter,字符流通向字节流的桥梁:它使用指定的charset将要写入流中的字符编码成字节。InputStreamReader InputStreamReader是从字节流到字符流的桥:它读取字节,并使用指定的charset将其解码为字...转载 2020-01-07 10:06:06 · 322 阅读 · 0 评论 -
BufferedInputStream与BufferedOutputStream
BufferedInputStream是缓冲输入流,作用是为另一个输入流添加一些功能,比如缓冲输入功能以及支持mark和reset方法的能力。在创建BufferedInputStream时,会在内存中创建一个内部缓冲区数组。在读取或跳过流中的字节时,可根据需要从包含的输入流一次性填充多个字节到该内部缓冲区。当程序需要读取字节时,直接从内部缓冲区中读取。当内部缓冲区中数据被读完后,会...转载 2020-01-07 10:00:14 · 472 阅读 · 0 评论 -
FilterInputStream、FilterOutputStream与装饰器模式
FilterInputStream、FilterOutputStream是过滤器字节输入输出流。它们的主要用途在于封装其他的输入输出流,为它们提供一些额外的功能。FilterInputStreampackage java.io;public class FilterInputStream extends InputStream { //要过滤进行额外操作的InputStrea...转载 2020-01-06 17:47:03 · 489 阅读 · 0 评论 -
FileInputStream与FileOutputStream源码分析
FileInputStreampackage java.io;import java.nio.channels.FileChannel;import sun.nio.ch.FileChannelImpl;//FileInputStream是文件输入流,用于从文件系统中的某个文件中获得输入字节。哪些文件可用依赖于主机环境//FileInputStream用于读取诸如图像数据之类的...转载 2020-01-05 20:10:09 · 357 阅读 · 0 评论 -
javaIO字节流与字符流
流分类在java.io 包中,操作文件内容的主要有两大类:字节流、字符流,两类都分为输入和输出操作。字节流:InputStream(字节输入流)、OutputStream(字节输出流); 字符流:Reader(字符输入流)、Writer(字符输出流);字节流理解配图字符流理解配图字节流与字符流的区别字节与字符的区别 如果要明白字节流与字符流...原创 2020-01-05 14:51:45 · 397 阅读 · 1 评论 -
读写文件
使用Java操作文本文件的方法详解 最初java是不支持对文本文件的处理的,为了弥补这个缺憾而引入了Reader和Writer两个类,这两个类都是抽象类。Writer中 write(char[] ch,int off,int length),flush()和close()方法为抽象方法Reader中read(char[] ch,int off,int length)和close()方法...原创 2010-11-11 16:24:00 · 774 阅读 · 0 评论 -
Socket通信
package org;import java.net.*;import java.io.*;public class Client {public static void main(String []args){String str;try{InetAddress addr=InetAddress.getByName("192.168.0.5");//使...原创 2010-11-12 14:35:00 · 670 阅读 · 0 评论 -
JavaIO
在这其中InputStream和OutputStream在早期的Java版本中就已经存在了,它们是基于字节流的,而基于字符流的Reader和Writer是后来加入作为补充的。在这四个抽象类中,InputStream和Reader定义了完全相同的接口:int read() int read(char cbuf[]) int read(char cbuf[], int offset, int ...原创 2010-11-12 14:25:00 · 1566 阅读 · 0 评论 -
Java 网络编程(一) 网络基础知识
网络基础知识 网络编程的目的:直接或间接地通过网络协议与其他计算机进行通讯。 网络编程中有两个主要的问题: 1.如何准确地定位网络上一台或多台主机。 2.找到主机后如何可靠高效地进行数据传输。 目前较为流行的网络编程模型是客户端/服务器(C/S)结构。 即通信双方一方作为服务器等待客户提出请求并予以相应。客户则在需要服务时向服务器提出申请。 服务器始...原创 2016-02-29 20:26:56 · 456 阅读 · 0 评论 -
Java 网络编程(二) 两类传输协议:TCP UDP
两类传输协议:TCP,UDPTCP TCP是Transfer Control Protocol(传输控制协议)的简称,是一种面向连接的保证可靠传输的协议。 在TCP/IP协议中, IP层主要负责网络主机的定位,数据传输的路由,由IP地址可以唯一确定Internet上的一台主机。 而TCP层则提供面向应用的可靠的或非可靠的数据传输机制,这是网络编程的主要对象,一般不...原创 2016-02-29 20:27:41 · 811 阅读 · 0 评论