WEB开发网
开发学院软件开发Java 深入理解Apache Mina (6)---- Java Nio Byt... 阅读

深入理解Apache Mina (6)---- Java Nio ByteBuffer与Mina ByteBuffer的区别

 2009-09-16 00:00:00 来源:WEB开发网   
核心提示:为了对后续关于Mina 的 ProtocolFilter( 编解码器 ) 的编写有一个更好的理解,本文讲述一下关于 MinaByteBuffer 和 JavaNioByteBuffer 的区别,深入理解Apache Mina (6)---- Java Nio ByteBuffer与Mina ByteBuffer的区别,

为了对后续关于Mina 的 ProtocolFilter( 编解码器 ) 的编写有一个更好的理解,本文讲述一下关于 Mina ByteBuffer 和 Java Nio ByteBuffer 的区别。关于 Java Nio ByteBuffer 和 Mina ByteBuffer 及其子类的类图在附件中都已经给出了。因为 Mina 的 ByteBuffer 在 Mina 2.0 以上的版本中都改称 IoBuffer 。为了使后文关于 ByteBuffer 的名字不致混淆, Mina ByteBuffer 都统称 IoBuffer , Java Nio ByteBuffer 统称 ByteBuffer 。关于 IoBuffer 中的对 ByteBuffer 扩展及一些重要的方法都在 IoBuffer 的类图中用红色方框标出。详细的信息请参考附件中。

在开始对IoBuffer 的讨论前,先简单的讲述一下 ByteBuffer 的用法。 IoBuffer 是对 ByteBuffer 的一个封装。 IoBuffer 中的很多方法都是对 ByteBuffer 的直接继承。只是对 ByteBuffer 添加了一些扩展了更加实用的方法。

(1) ByteBuffer简介

ByteBuffer继承于 Buffer 类, ByteBuffer 中存放的是字节,如果要将它们转换成字符串则需要使用 Charset , Charset 是字符编码。它提供了把字节流转换成字符串 ( 解码 ) 和将字符串转换成字节流 ( 编码 ) 的方法。这个和后面讲述的 Mina 的编解码的工作原理类似。对 ByteBuffer 的访问可以使用 read() , write() 等方法。

ByteBuffer有一下三个重要的属性:

1)  容量(capacity) :表示该缓存区可以存放多少数据。

2)  极限(limit) :表示读写缓存的位置,不能对超过位置进行数据的读或写操作。

位置(position) :表示下一个缓存区的读写单元。每读写一次缓存区,位置都会变化。位置是一个非负整数。

ByteBuffer的这三个属性相当于三个标记位,来表示程序可以读写的区域:

1 2 3  下一页

Tags:深入 理解 Apache

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接