NIO未必更快,在Linux上使用Java6完成的测试中,多线程经典I/O设计胜出NIO30%左右

异步I/O强于经典I/O:服务器需要支持超大量的长期连接,比如10000个连接以上,不过各个客户端并不会频繁的发送太多的数据。

调用clear()方法:position将被设回0,limit设置成capacity,换句话说,Buffer被清空了,其实Buffer中的数据并未被清除,只是这些标记告诉我们可以从哪里开始往Buffer里写数据。如果Buffer中有一些未读的数据,调用clear()方法,数据将“被遗忘”,意味着不再有任何标记会告诉你哪些数据被读过,哪些还没有。如果Buffer中仍有未读的数据,且后续还需要这些数据,但是此时想要先写些数据,那么使用compact()方法。compact()方法将所有未读的数据拷贝到Buffer起始处。然后将position设到最后一个未读元素正后面。limit属性依然像clear()方法一样,设置成capacity。现在Buffer准备好写数据了,但是不会覆盖未读的数据。

buffer中的flip方法涉及到bufer中的Capacity,Position和Limit三个概念。其中Capacity在读写模式下都是固定的,就是我们分配的缓冲大小,Position类似于读写指针,表示当前读(写)到什么位置,Limit在写模式下表示最多能写入多少数据,此时和Capacity相同,在读模式下表示最多能读多少数据,此时和缓存中的实际数据大小相同。在写模式下调用flip方法,那么limit就设置为了position当前的值(即当前写了多少数据),postion会被置为0,以表示读操作从缓存的头开始读。也就是说调用flip之后,读写指针指到缓存头部,并且设置了最多只能读出之前写入的数据长度(而不是整个缓存的容量大小)。
文链接!

最新文章

  1. 移动端web开发——视口
  2. Android -- 思考 -- 为什么要在项目中使用MVP模式
  3. DOM兼容
  4. easyui js基础
  5. UVALive 6145 Version Controlled IDE(可持久化treap、rope)
  6. Flex4/Flash多文件上传(带进度条)实例分享
  7. 在android中进行视频的分割
  8. Android开发必知--几种不同对话框的实现
  9. POJ 3666 Making the Grade (DP滚动数组)
  10. 移动端解决fixed和input获取焦点软键盘弹出影响定位的问题
  11. java文件处理之压缩,分割
  12. java发送post请求,使用multipart/form-data的方式传递参数,可实现服务器间文件上传功能(转)
  13. win7用VMware安装CentOs7搭建Linux环境
  14. setting-url配置
  15. LoadRunner-关联相关(解决方法二)
  16. 《Java程序设计》第三章-基础语法
  17. Web服务器进程连接数和请求连接数
  18. Storm实战常见的问题
  19. python利用utf-8编码判断中文字符
  20. NSArray 数组

热门文章

  1. centos7下安装docker(25docker swarm---replicated mode&global mode)
  2. 在asp.net web api中利用过滤器设置输出缓存
  3. 二.css介绍
  4. Ubuntu 14.04 安装配置备忘录
  5. Linux IO性能分析blktrace/blk跟踪器
  6. 基于vs2015的rdlc报表运行环境部署
  7. net spider(python 网络爬虫)
  8. ADO.NET 中可以发送包含多个SQL语句的批处理脚本到SQL Server,但是用MySQL的ODBC驱动不行
  9. CF960G Bandit Blues 第一类斯特林数、NTT、分治/倍增
  10. HTTP协议详细分析