深入理解Apache Mina (6)---- Java Nio ByteBuffer与Mina ByteBuffer的区别
2009-09-16 00:00:00 来源:WEB开发网为了对后续关于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的这三个属性相当于三个标记位,来表示程序可以读写的区域:
- ››Apache添加mod_aspdotnet.so支持ASP.NET配置指南
- ››Apache中改变php.ini的路径
- ››深入理解Android消息处理系统——Looper、Handler...
- ››深入理解SET NAMES和mysql(i)_set_charset的区别
- ››深入理解Mysql字符集设置
- ››Apache2.2与Tomcat6整合及虚拟主机配置
- ››Apache+php+mysql在windows下的安装与配置图解
- ››理解C#中静态Static与单例Singleton
- ››深入浅出实战攻防恶意PDF文档
- ››深入剖析防火墙策略的执行过程:ISA2006系列之六
- ››Apache+Subversion完美结合,CentOS下实现版本控制...
- ››理解 Symbian 中的 ECom
更多精彩
赞助商链接