1. 基本 概念
IO 是主存和外部设备 ( 硬盘、终端和网络等 ) 拷贝数据的过程。 IO 是操作系统的底层功能实现,底层通过 I/O 指令进行完成。
所有语言运行时系统提供执行 I/O 较高级别的工具。 (c 的 printf scanf,java 的面向对象封装 )
2. Java 标准 io 回顾
Java 标准 IO 类库是 io 面向对象的一种抽象。基于本地方法的底层实现,我们无须关注底层实现。 InputStream\OutputStream( 字节流 ) :一次传送一个字节。 Reader\Writer( 字符流 ) :一次一个字符。
3. nio 简介
nio 是 java New IO 的简称,在 jdk1.4 里提供的新 api 。 Sun 官方标榜的特性如下:
– 为所有的原始类型提供 (Buffer) 缓存支持。
– 字符集编码解码解决方案。
– Channel :一个新的原始 I/O 抽象。
– 支持锁和内存映射文件的文件访问接口。
– 提供多路 (non-bloking) 非阻塞式的高伸缩性网络 I/O 。
本文将围绕这几个特性进行学习和介绍。
4. Buffer&Chanel
Channel 和 buffer 是 NIO 是两个最基本的数据类型抽象。
Buffer:
– 是一块连续的内存块。
– 是 NIO 数据读或写的中转地。
Channel:
– 数据的源头或者数据的目的地
– 用于向 buffer 提供数据或者读取 buffer 数据 ,buffer 对象的唯一接口。
– 异步 I/O 支持

图1:channel和buffer关系
分享到:
相关推荐
905.4-2014协议,是交通运输部公路科学研究院起草定制的一个协议标准,它也是基于TCP之上的一个应用层传输协议。 第2章,介绍在Socket编程过程中一些基础知识,让大家建立起对这块知识内容的一个整体轮廓; 第3章,...
NIO是非阻塞I/O模型的缩写,是Java SE 1.4版本引入的新特性之一。与传统的BIO(Blocking I/O Model)相比,NIO提供了一种更加高效的数据处理方式,尤其是在处理高并发场景时表现更佳。NIO的核心组件包括缓冲区...
缓冲区是NIO体系的核心组件之一,它作为数据传输的中介,充当了应用程序与通道之间的桥梁。缓冲区本质上是一个固定大小的数据容器,由一系列的数据元素组成,这些元素可以是字节、字符、整数等类型。缓冲区不仅存储...
在Java 7的NIO2(JSR203:Java平台上的更多新I/O API)更新中,`java.nio.file.Path` 类成为了核心组件之一,为开发者提供了更高效、更直观的文件系统操作接口。本文将详细解析 `Path` 类的功能与应用,帮助读者掌握...
在现代工业生产中,镁砂耐火材料的应用极为广泛,尤其是其在钢铁行业的多个环节中的应用,是保障产品质量和生产安全的重要因素之一。其中,菱镁矿作为一种基础原料,在烧结镁砂的制备过程中具有举足轻重的地位。为了...
通道和流的不同之处在于通道是双向的(通道可以用于读、写或者二者同时进行),流只是在一个方向上移动。通道大体上可以分为两类:用于网络读写的SelectableChannel(ServerSocketChannel 和 SocketChannel 就是其...
本文档“java入门学习指导之最佳方向.doc”将为你提供一个清晰的学习路径,帮助你高效地掌握Java编程。 首先,你需要了解Java的基础概念。这包括熟悉Java的历史背景、其设计哲学以及它在软件开发中的应用领域。Java...
随着新能源技术的发展,锂离子电池作为便携式电子设备、电动汽车及储能系统的重要能源之一,其性能的提升对于推动新能源产业的进步至关重要。其中,电极材料的选择与设计是决定锂离子电池性能的关键因素之一。Li4Ti5...
Java网络编程的核心技术之一是NIO(Non-blocking IO),它提供了比传统IO(BIO,Blocking IO)更高效的数据传输方式,特别适合于需要同时处理大量连接的场景。 NIO技术允许Java程序使用较少的线程就可以处理大量的...
Java是世界上最流行的编程语言之一,尤其在企业级应用开发领域占据主导地位。本文将深入探讨Java面试中的关键知识点,涵盖J2EE、J2SE以及常见的开源框架。 1. **J2SE(Java Standard Edition)基础** - **类与对象...
7. **Spring框架**:在企业级开发中,Spring框架是最常用的技术之一,包括依赖注入(DI)、面向切面编程(AOP)、Spring MVC、Spring Boot等模块,能够简化项目结构和提升开发效率。 8. **数据库知识**:理解SQL...
Java语言是目前广泛应用的编程语言之一,其特点和优势包括:跨平台性(通过Java虚拟机JVM实现),面向对象,自动内存管理(垃圾回收机制),丰富的类库,以及强大的可移植性和安全性。Java虚拟机(JVM)是运行Java...
这个接口与使用传统Java NIO编码时的一个不同之处在于,它区分了IoService与IoProcessor两个功能接口,通常在Java NIO编码中,只会用到一个Selector。 3. IoFilter:提供了一组拦截器接口,可以实现日志输出、黑...
技术创新是蔚来汽车的核心竞争力之一,公司认为智能、电动和自动驾驶是汽车行业的未来方向,并致力于持续创新以引领行业变革。在设计方面,蔚来追求打造纯粹、易用且有向往感的产品,旨在为用户提供全感官的愉悦体验...
3. ChannelPipeline:ChannelPipeline是Netty中的核心概念之一,负责管理和传递事件流。 4. ChannelHandler:它是业务逻辑处理的核心,不同的Handler负责不同类型的任务。 5. 编解码器:Netty提供了很多内置的编...
Java是全球最流行的编程语言之一,特别是在企业级应用开发领域,它有着广泛的应用。这份面试资料集合涵盖了Java的三大核心平台:J2EE(Java Platform, Enterprise Edition)、J2SE(Java Platform, Standard Edition...
金属氧化物半导体SO2气体传感器是目前检测SO2气体的主要方法之一,它们具有体积小、成本低、可实时监测等特点。近年来,国内外研究者对基于金属氧化物半导体的SO2气体传感器进行了深入研究,本文将对其进行综述。 ...
3. IoFilter:这一接口定义了一系列拦截器,包括但不限于日志输出、黑名单过滤、数据编码(write方向)与解码(read方向)。其中,数据的编码与解码是最为重要的部分,也是用户在使用Mina时需要重点关注的。 4. ...
在锂离子电池的首次充电过程中,负极的石墨表面会与电解液发生反应,形成一层固体电解质相界面(SEI)膜,这个过程会永久消耗一部分锂,导致电池的首次循环库仑效率降低,容量和能量密度也随之下降。为解决这一问题...