IO
汲建帅
这个作者很懒,什么都没留下…
展开
-
BufferedInputStream 缓冲区原理解析
BufferedInputStream是带缓冲区的输入流,默认缓冲区大小是8M,能够减少访问磁盘的次数,提高文件读取性能;BufferedOutputStream是带缓冲区的输出流,能够提高文件的写入效率。BufferedInputStream与BufferedOutputStream分别是FilterInputStream类和FilterOutputStream类的子类,实现了装饰设计模式。Buf原创 2017-07-24 13:22:22 · 4231 阅读 · 2 评论 -
NIO 之 Channel
可参考之前写过的文章:NIO 之 Channel实现原理概述通道( Channel)是 java.nio 的主要创新点。它们既不是一个扩展也不是一项增强,而是全新、极好的 Java I/O 示例,提供与 I/O 服务的直接连接。 Channel 用于在字节缓冲区和位于通道另一侧的实体(通常是一个文件或套接字)之间有效地传输数据。Channel 接口定义public in...原创 2018-06-05 15:33:21 · 1661 阅读 · 0 评论 -
NIO 之 MappedByteBuffer
可参考: MappedByteBuffer以及ByteBufer的底层原理概述Bytebuffer分为两种:间接地和直接的,所谓直接就是指MappedByteBuffer,直接使用内存映射(java的话就意味着在JVM之外分配虚拟地址空间);而间接的ByteBuffer是在JVM的堆上面的。间接缓冲区就是我们通常说的堆缓冲区。 直接缓冲区 java内部是使用 DirectByteBu...原创 2018-06-05 15:32:28 · 2334 阅读 · 0 评论 -
Java IO 之 管道流 原理分析
概述管道流是用来在多个线程之间进行信息传递的Java流。 管道流分为字节流管道流和字符管道流。 字节管道流:PipedOutputStream 和 PipedInputStream。 字符管道流:PipedWriter 和 PipedReader。 PipedOutputStream、PipedWriter 是写入者/生产者/发送者; PipedInputStream、PipedR...原创 2018-05-15 09:36:32 · 4920 阅读 · 1 评论 -
Java IO 之 SequenceInputStream 原理解析
概述今天给大家分享一个比较有意思的 IO 流。SequenceInputStream ,听名字顾名思义。SequenceInputStream 流可以把多个 InputStream 合并为一个 InputStream . 按照指定的顺序,把几个输入流连续地合并起来,使用起来像一个流一样。并且使它们像单个输入流一样出现。每个输入流依次被读取,直到到达该流的末尾。然后“序列输入流”类关闭这个流...原创 2018-04-14 10:32:08 · 2648 阅读 · 0 评论 -
java 序列化 原理解析
序列化相关文章: * Java 序列化 之 Serializable * Java 序列化之 Externalizable * Java 序列化 之 单例模式。阅读本文章之前,务必要阅读上面的三篇文章。 这篇文章是围绕上面三篇文章的原理进行剖析的。 因为 ObjectInputStream 和 ObjectOutputStream 类比较复杂,这里只解析跟上面三篇文章相关的内容。...原创 2018-04-14 10:31:23 · 2864 阅读 · 1 评论 -
Java 序列化 之 单例模式
序列化相关文章: * Java 序列化 之 Serializable * Java 序列化之 Externalizable当我们使用Singleton模式时,应该是期望某个类的实例应该是唯一的,但如果该类是可序列化的,那么发序列化后还会是单例的吗?下面我们通过如下示例一来验证一下:示例一User 类User 类是单例模式,使用的饿汉模式,在类加载的时候就创建对象实例。...原创 2018-04-14 10:30:16 · 2627 阅读 · 0 评论 -
Java 序列化之 Externalizable
相关文章: Java 序列化 之 SerializableJDK中除了提供 Serializable 序列化接口外,还提供了另一个序列化接口Externalizable,使用该接口之后,之前基于Serializable接口的序列化机制就将失效。Externalizable 的序列化机制优先级要高于 Serializable 。Externalizable 源码分析 从源码中,我们...原创 2018-04-14 10:27:22 · 2281 阅读 · 0 评论 -
多文件同时读写为什么没有单文件读写快?
如果是读或写同时操作一块物理磁盘,会导致磁头寻道冲突。 想像磁盘是一块黑胶唱片,每次读写在一个确定的位置都需要:移动磁头到相应圆环,即改变磁头到圆心的内径转动唱片,让磁头停留在需要的位置这个被称为随机寻址的过程相对读写操作是很慢的。所以在磁盘操作中应该尽量避免随机寻址。如果同时只写一个文件,通常会被优化为顺序寻址,可以想像为连续播放整张唱片。同时写两个文件,因为操作系统要保证多任务的并行执行转载 2017-07-25 16:08:44 · 2754 阅读 · 0 评论 -
NIO 之 FileChannel
概述文件通道总是阻塞式的,因此不能被置于非阻塞模式。现代操作系统都有复杂的缓存和预取机制,使得本地磁盘 I/O 操作延迟很少。网络文件系统一般而言延迟会多些,不过却也因该优化而受益。 面向流的 I/O 的非阻塞范例对于面向文件的操作并无多大意义,这是由文件 I/O 本质上的不同性质造成的。对于文件 I/O,最强大之处在于异步 I/O( asynchronous I/O),它允许一个进程可以从操...原创 2018-06-05 15:40:51 · 1581 阅读 · 0 评论