美文网首页
[netty]编程一(基础概念)

[netty]编程一(基础概念)

作者: 老猫头 | 来源:发表于2018-04-02 10:14 被阅读8次

( NIO) 库 是在 JDK 1. 4 中 引入 的。 NIO 弥补 了 原来 同步 阻塞 I/ O 的 不足, 它在 标准 Java 代码 中 提供 了 高速 的、 面向 块 的 I/ O。 通过 定义 包含 数据 的 类, 以及 通过 以 块 的 形式 处理 这些 数据, NIO 不用 使用 本机 代码 就可以 利用 低级 优化, 这是 原来 的 I/ O 包 所 无法 做到 的。

1.缓冲区Buffer

Buffer 是一 个 对象, 它 包含 一些 要 写入 或者 要 读出 的 数据。 在 NIO 类 库 中 加入 Buffer 对象, 体现 了 新 库 与 原 I/ O 的 一个 重要 区别。而在面向流的 I/ O 中, 可以将数据直接写入或者将数据直接读到 Stream 对象中。
在NIO库中,所有的数据都是通过缓存区处理的。在读取数据时是从缓存中读取;在写入数据时,写到缓冲区中。
缓冲区实质上是一个数组。通常它是一个字节数组(ByteBuffer),也可以使用其他种类的数组。但是一个缓冲区不仅仅是一个数组,缓冲区提供了对数据的结构化访问以及维护读写位置(limit)等信息。

ShortBuffer: 短 整型 缓冲区
IntBuffer: 整形 缓冲区 
LongBuffer: 长 整形 缓冲区 
FloatBuffer: 浮点 型 缓冲区 
DoubleBuffer: 双 精度 浮点 型 缓冲区

2.通道 Channel

Channel 是一 个 通道, 可以 通过 它 读取 和 写入 数据, 它 就 像 自来 水管 一样, 网络 数据 通过 Channel 读取 和 写入。 通道 与 流的 不同 之处 在于 通道 是 双向 的, 流 只是 在 一个 方向 上 移动( 一个 流 必须 是 InputStream 或者 OutputStream 的 子类), 而且 通道 可以 用于 读、 写 或者 同时 用于 读写。
Channel是全双工的

3.多路 复 用 器 Selector

多路 复 用 器 Selector, 它是JavaNIO编程基础,熟练掌握 Selector 对于掌握 NIO 编程 至关重要。 多路复用器提供选择已经就绪的任务的能力。 简单来讲 Selector 会 不断地轮询注册在其上的Channel, 如果某个Channel上面有新的TCP连接接入、 读 和 写 事件, 这个 Channel 就 处于 就绪 状态, 会被 Selector 轮 询 出来, 然后 通过 SelectionKey 可以 获取 就绪 Channel 的 集合, 进行 后续 的 I/ O 操作。

相关文章

  • [netty]编程一(基础概念)

    ( NIO) 库 是在 JDK 1. 4 中 引入 的。 NIO 弥补 了 原来 同步 阻塞 I/ O 的 不足,...

  • Netty入门实践

    Netty基础概念 欢迎访问微信原文:Netty入门实践 Bootstrap 和 ServerBootstrap:...

  • 7.Netty框架-Netty编程模板(编程步骤)

    一、Netty编程模板 1、Netty编程步骤: 2、Netty编程代码模板:

  • 精通Java并发 - 线程池

    0. 前言 为什么需要学习并发编程? Tomcat、Netty等框架源码,需要并发编程基础才能看懂;并发也是Jav...

  • Netty学习--传输

    传输迁移 未使用Netty 的阻塞网络编程 未使用Netty 的异步网络编程 使用Netty 的阻塞网络处理 使用...

  • 提升能力从学习Netty开始

    netty 介绍 一、 Netty 是什么 Netty 是一个广泛使用的 Java 网络编程框架而Netty就是基...

  • I/O模型学习小记

    基础概念 通过I/O模型学习同步/异步、阻塞/非阻塞基础概念,参考资料如下:《Unix网络编程》《网络编程释疑之:...

  • Android开发之使用Netty进行Socket编程(二)

    Android开发之使用Netty进行Socket编程(一) 概括了一些Socket、NIO的基本概念,下面正式介...

  • Java NIO

    书本 Netty权威指南netty实战O’Reilly的《Java nio》Unix网络编程 《unix网络编程》...

  • Netty基础

    网络编程框架Netty的介绍与使用 一、简介 Netty的官网https://netty.io/ Netty是一个...

网友评论

      本文标题:[netty]编程一(基础概念)

      本文链接:https://www.haomeiwen.com/subject/kbjthftx.html