首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Java NIO 总结: NIO技术基础回顾

Buffers(缓冲区) 缓冲区是Java NIO中用于存储数据的内存块,它是NIO中的数据容器。缓冲区本质上是一个数组,可以保存不同数据类型的数据。...在NIO中,所有数据的读写都是通过缓冲区来进行的。 Selectors(选择器) 选择器是Java NIO中的一个重要组件,它用于监控多个通道的IO事件。...通道(Channels) NIO:在NIO中,所有的输入/输出都是通过通道(Channels)进行的。通道是可以进行读、写操作的流。这使得NIO的处理更加灵活,可以方便地进行双向通信。...四、基本使用 下面是一个简单的Java NIO编程使用Java NIO进行文件的读写操作: import java.io.IOException; import java.nio.ByteBuffer;...import java.nio.channels.FileChannel; import java.nio.file.Paths; import java.nio.file.StandardOpenOption

30720

🎯 Java NIO 基础

Netty作为一款基于Java开发的高性能网络框架,想要从认识到熟悉再到掌握最终理解,因此我们需要从最基础NIO开始学习。...这里我们先简单了解一下这一篇文章中我们将要学习的内容: 首先是NIO的基本介绍,了解NIO的三大组件 ByteBuffer 字节缓冲区的基本使用 FileChannel 文件通道的基本使用 文件编程基础...网络编程基础 Selecter 选择器的基本使用 如果你已经学习过其中某些部分,当然你可以挑选其中某些章节进行回顾复习,也可以参考学习一下其他部分内容。...NIO支持面向缓冲区的、基于通道的IO操作。NIO将以更加高效的方式进行文件的读写操作。...但是基础线程池的问题在于,线程工作处于阻塞模式下,一个线程仍然只能处理一个 Socket 连接。只适合短连接场景。

82001
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    java-NIO基础

    一、 Java NIO和传统IO的对比 比对项 传统IO NIO(Non-Block IO) 缓冲 面向流 面向块(缓冲) IO模型 阻塞IO 非阻塞IO 线程复用 无 选择器 二、 java NIO...NIO则是面向块的I/O,每次操作都是以数据块为单位。它们的差距就好象两个人吃饭,一个人一粒一粒的吃,另一个人狼吞虎咽,快慢显而易见。...NIO中引入了缓冲区(Buffer)的概念,缓冲区作为传输数据的基本单位:块。...Buffer缓冲区的引入,是NIO与传统IO的一个重要区别.在传统IO中,都是针对流数据的操作,在NIO中是针对缓冲区数据操作。...这通常需要复杂的设计,为降低NIO与AIO的实现复杂度,我们可以使用Netty或者mina等框架。 ? 喜欢 (9)or分享 (0)

    34310

    NIO之缓冲区【基础内容】

    我们知道NIO的三大核心是buffer,channel和selector,本文开始详细介绍下buffer 缓冲区Buffer 1.缓冲区介绍   一个Buffer对象是固定数量的数据的容器。...容量是固定的,但另外的三个属性可以在使用缓冲区时改变 2.3 缓冲区API介绍   接下来我们先看下Buffer中提供的方法 package java.nio; public abstract class...byteBuffer.mark()); } 输出: 初始时-->limit--->10 初始时-->position--->0 初始时-->capacity--->10 初始时-->mark--->java.nio.HeapByteBuffer...--------- put完之后-->limit--->10 put完之后-->position--->4 put完之后-->capacity--->10 put完之后-->mark--->java.nio.HeapByteBuffer...NIO给了我们一个flip()方法。这个方法可以改动position和limit的位置! ?

    54900

    NIO基础知识点整理---selector除外

    NIO基础知识点整理 JVM读取数据模型 NIO是什么 Buffer buffer属性 Buffer常用API Buffer的API使用演示 缓冲区批量数据传输 缓冲区创建的两种方式 缓冲区的复制与分隔...在JDK4中引入了NIO,可以最大限度的满足Java程序I/O的需求 java.nio包,定义了各种与Buffer相关的类....java.nio.channel包,包含了与Channel和Selector相关的类....java.nio.charset包,与字符集相关的类 在NIO中有三大核心组件:Channel,Buffer,Selecto NIO是什么 image.png 传统的IO是面向流的,每次可以从流中读取一个或多个自己...,只能向后读取,不能向前移动,NIO是面向缓冲区的,把数据读取到一个缓冲区中,可以在缓冲区中向前/向后移动,增加了程序的灵活性。

    38220

    NIO~~

    NIO~~ 第四章 JAVA NIO深入剖析 4.1 Java NIO 基本介绍 4.2 NIO 和 BIO 的比较 4.3 NIO 三大核心原理示意图 Buffer缓冲区 Channel(通道)...BIO,NIO,AIO课程总结 第四章 JAVA NIO深入剖析 在讲解利用NIO实现通信架构之前,我们需要先来了解一下NIO的基本特点和使用。...NIO与原来的IO有同样的作用和目的,但是使用的方式完全不同,NIO支持面向缓冲区的、基于通道的IO操作。NIO将以更加高效的方式进行文件的读写操作。...NIO 相关类都被放在 java.nio 包及子包下,并且对原 java.io 包中的很多类进行改写。...4.2 NIO 和 BIO 的比较 BIO 以流的方式处理数据,而 NIO 以块的方式处理数据,块 I/O 的效率比流 I/O 高很多 BIO 是阻塞的,NIO 则是非阻塞的 BIO 基于字节流和字符流进行操作

    89750

    Nio】01--初始Nio组件

    Nio学习第一天,三大组件 只能支持一次的socket服务端 支持客户端多次发送请求 现在继续改进,支持多线程, 即伪异步方式 由于线程过多,我们采用线程池来处理 BIO 朝NIO的演变过程...} } catch (Exception e) { e.printStackTrace(); } } } 什么是NIO...cpu放弃了使用权,不能干其他事情 Nio 不管有没有拿到数据都会立即返回结果,如果返回的结果没有数据,会循环请求数据,如果拿到了数据,程序继续执行。...这种情况下程序并不会阻塞 Nio、Selector、Channel、Buffer原理 Nio: 因为上面已经讲述了,这里就不在赘述了 Selector: Selector选择器,也可以叫做多路复用器...缓冲区,将数据添加到缓冲区中,一次性写入,效率更高 Nio架构流程图 ? Nio的实现步骤 此种实现方式还有一些缺陷,如果客户端断开连接,需要将该连接从Selector选择器中移除。

    41210

    java nio 详_java NIO 详解

    Java NIO(New IO)是从Java 1.4版本开始引入的一个新的IO API,可以替代标准的Java IO API。本系列教程将有助于你学习和理解Java NIO。...Java NIO 概述 Java NIO 由以下几个核心部分组成: Channels Buffers Selectors 虽然Java NIO 中除此之外还有很多类和组件,但在我看来,Channel,Buffer...Java NIO vs IO 当学习了Java NIO和IO的API后,一个问题马上涌入脑海: 我应该何时使用IO,何时使用NIO呢?...2.1 Java NIO和IO的主要区别 下表总结了Java NIO和IO之间的主要差别,我会更详细地描述表中每部分的差异。...2.5 NIO和IO如何影响应用程序的设计 无论您选择IO或NIO工具箱,可能会影响您应用程序设计的以下几个方面: 对NIO或IO类的API调用 数据处理 用来处理数据的线程数 2.5.1 API调用

    72020

    Java NIO-12.NIO和IO

    学习了Java NIO和IO API之后,就有了一个问题: 什么时候用IO,什么时候用NIO? 本文将试着阐明Java NIO和IO之间使用上的区别,以及它们是如何影响到你的代码设计的。...Java NIO和IO之间的主要区别 IO NIO 面向流 面向缓冲区 阻塞IO 非阻塞IO 选择器 下面的表格总结了Java NIO和IO的区别。表格后面对更多的细节进行说明。...IO NIO 面向流 面向缓冲区 阻塞IO 非阻塞IO 选择器 面向流与面向缓冲区 第一个大的区别就是IO是面向流的,而NIO是面向缓冲区的。什么意思呢?...NIO和IO对应用设计的影响 IO工具箱是选择IO还是NIO可能在以下方面影响程序设计: 调用NIO还是IO类的API。...数据处理 处理数据的线程数 API调用 当然使用NIO和IO调用的API看起来不一样。

    76320

    NIONIO版本鸿儒聊天室

    # 需求 基于NIO实现 支持同时多个客户端接入 支持客户端发送文本消息到服务器 支持客户端自定义群聊名称 接收到客户端发送的消息之后,服务器需要将消息转发给目前在线的所有其他客户端 支持客户端退出群聊...客户端自动断开连接 # 技术介绍 Non-blockingI/O 编程模型 Channel 通道 ServerSocketChannel 服务端通道 SocketChannel 客户端通道 ByteBuffer NIO...服务器 /** * 基于NIO实现的聊天室服务端 * * @author futao * @date 2020/7/8 */ @Slf4j public class NioChatServer...serverSocketChannel.register(selector, SelectionKey.OP_ACCEPT); log.debug("{} 基于NIO...public static void main(String[] args) { new NioChatServer().start(); } } 客户端 /** * 基于NIO

    57210

    NIO初探

    NIO的前世今生 NIO又叫NonBlockingI/O,即非阻塞I/O。以此对应的,有一个更常见的IO(BIO),又叫Blocking I/O,即阻塞IO,两种都为Java的IO实现方案。...---- NIO/BIO 阻塞与非阻塞 以客户端连接服务器为例,服务器需要获取客户端的连接,即Socket,传统I/O如果没有获取到连接则一直阻塞,知道拿到为止,即函数: $$ accept() $$...而NIO则采用一种没有连接则直接返回的非阻塞方式进行客户端连接获取。 ?...---- NIO基本模型 BIO以Stream为传递的基本单位,将各类数据装换为Stream进行传递写入,而NIO引入了Buffer和Channel的理念,将数据写入Buffer,以Buffer为载体,...与此同时,NIO对文件系统,目录等的迭代也有相关具体实现。 详情请参考 API文档: Java™ Platform Standard Ed. 8

    52320
    领券