IoBuffer是怎样的一种数据结构 小弟初学JAVA 对于Iobuffer的内存分配不清楚 IoBuffer是像队列一样先进先出 还是像栈一样的数据结构?每次读写是position是怎样移动的? 望大家解答一下~ 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 你说的是buffered接口??bufferedreader/writer 是流的带缓冲区的包装他和数据结构木有关系...请先看明白io作用机制... 不是接口,我指的是MINA框架里的IoBuffer类,它是对NIO里byteBuffer封装后的一个类,但我不知道它试试如何存储数据的......... 就是数据缓冲区嘛,很难理解吗 ?说白了,可以理解成就是一个byte数组,里面存放数据。系统设法将byte[]中填充数据,你在读取这些数据的时候,会存在两个指示器,一个是当前可读取数据的位置,另一个是数据填充到哪儿的位置。打个比方,你建缓冲区,(肯定是个数组啦),一次肯定不会和读取数据长度相同,一般都会稍微大点对吧,就和上超市购物前买购物袋,一般都会买个差不多大的,不会专买小的,放不下东西,就糗了。读取操作,也是从数组中,由前向后(由0位置向后)逐个读取。但是,一般不会一次性把缓冲区所有数据都读完,一般只是读其中的一小部分数据,先做处理,然后,再接着读一小部分,直到末尾。那么,就需要position这个变量来记录,当前可读数据的位置咯,否则,这次读完了数据,下次都不知道从哪个位置开始读取了。limit指向有用数据的末尾位置。比如,我创建了一个4096大小的一个字节数组做缓冲区,但是,实际填充的数据,可能只有1389个字节,那么,position是0,limit是1389,当我读取4个字节以后,position是4,limit是1389,当position和limit相等时,说明,缓冲区没有可读的数据了,需要填充数据或者结束读取操作了。当然,由于没怎么用过IoBuffer,所以,忘了它是否支持翻转了。有些缓冲区,只能向里面写入数据,有的缓冲区,只能向外读出数据,而,支持翻转的缓冲区,既可以向里面写入数据,也可以向外读取数据,只是在读写操作之间,加入翻转操作即可。 mark()方法怎么用?里面参数代表什么意思? 请教个问题,如何查看String对象的地址!!!!小弟穷人,望大侠帮助 既然有了hibernate,那么还要不要学jdbc? 经典图书下载,不看会后悔的,免费的,且都为中文版-人月神话、人件(第2版)、最后期限 急!!!!!关于画点算法的实现 下学期要上JAVA了,请大家推荐经典好书!up有分 求助,JBUILDER中调试RMI例程出错,附源码 SOS! 用适配器模式设计RMI应用的问题 关于工具类的写法 HTTP 请求的一个问题 java中有关对象数组的问题! application 对象 怎么统计人数
bufferedreader/writer 是流的带缓冲区的包装
他和数据结构木有关系...请先看明白io作用机制...
说白了,可以理解成就是一个byte数组,里面存放数据。
系统设法将byte[]中填充数据,
你在读取这些数据的时候,会存在两个指示器,
一个是当前可读取数据的位置,另一个是数据填充到哪儿的位置。
打个比方,你建缓冲区,(肯定是个数组啦),一次肯定不会和读取数据长度相同,一般都会稍微大点对吧,
就和上超市购物前买购物袋,一般都会买个差不多大的,不会专买小的,放不下东西,就糗了。
读取操作,也是从数组中,由前向后(由0位置向后)逐个读取。
但是,一般不会一次性把缓冲区所有数据都读完,一般只是读其中的一小部分数据,先做处理,
然后,再接着读一小部分,直到末尾。
那么,就需要position这个变量来记录,当前可读数据的位置咯,
否则,这次读完了数据,下次都不知道从哪个位置开始读取了。
limit指向有用数据的末尾位置。
比如,我创建了一个4096大小的一个字节数组做缓冲区,但是,实际填充的数据,可能只有1389个字节,
那么,position是0,limit是1389,
当我读取4个字节以后,position是4,limit是1389,
当position和limit相等时,说明,缓冲区没有可读的数据了,需要填充数据或者结束读取操作了。当然,由于没怎么用过IoBuffer,所以,忘了它是否支持翻转了。
有些缓冲区,只能向里面写入数据,有的缓冲区,只能向外读出数据,
而,支持翻转的缓冲区,既可以向里面写入数据,也可以向外读取数据,
只是在读写操作之间,加入翻转操作即可。