selector是Java NIO的组件可以检查一个或多个NIO的channel,并且决定哪个channel是为读写准备好了。这种方式,单个线程可以管理多个channel,也就是多个网络连接。为什么使用选择器优点就是更少的线程去处理多个通道。实际上,你可以使用一个线程去处理所有的通道。操作系统中线程的切换是很费资源的,而且每个线程本身也占用了一些资源(内存)。所以使用的线程越少越好!现在的操作系统和...
分类:
编程语言 时间:
2015-03-18 18:03:28
阅读次数:
249
在Java NIO中,如果其中有一个channel是FileChannel,你可以直接将数据从一个channel传递到另一个channel。FileChannel类有一个transferTo和一个transferFrom方法可以做到。transferFrom()该方法将数据从一个源channel传递到FileChannel。
实例:
参数position和count,表明在目标文件中,从哪个...
分类:
编程语言 时间:
2015-03-18 14:09:32
阅读次数:
128
标题的意思是Java NIO的分散集中
Java NIO带有内置的分散收集的支持。分散收集的概念主要用于通道的读写。
对一个通道的分散读取就是将数据读到多个buffer中,因此,通道将数据分散到多个buffer中。
对一个通道的集中写就是将数据从多个buffer中写到一个通道中,因此,通道从多个buffer将数据收集到一个通道中。
分散收集经常用于对传输数据分开处理的场景。比如,一条消息由h...
分类:
编程语言 时间:
2015-03-17 15:53:01
阅读次数:
188
明白以下几个概念: 字母集(Character Set),汉字,特殊符号,字母这些都是字符集; 字符编码集(Coded character set),将字符集的字符使用数字进行编码;比如ASCII,就是定义了一组字符编码集;Unicode 字符编码框架(Character-encoding sche...
分类:
编程语言 时间:
2015-03-17 15:40:08
阅读次数:
139
Java NIO的Buffer用于和channel进行交互。
buffer本质上是一个内存块,你可以写数据,然后读取出来。
这个内存块是通过NIO的Buffer对象进行包装的,该对象提供了一系列的方法,使得对内存块的访问更加容易了。基本的Buffer使用使用Buffer读写数据一般有如下4步:
1、将数据写入 Buffer
2、调用buffer.flip()方法
3、从Buffer中读出数...
分类:
编程语言 时间:
2015-03-16 17:45:39
阅读次数:
140
Java NIO和流类似但有些差异:
·通道可以读写,而流只支持一种方式,读或者写
·通道可以异步读写
·通道读写,都是和Buffer交互通道的实现以下是Java NIO中最重要的通道的实现:
·FileChannel
·DatagramChannel
·SocketChannel
·ServerSocketChannelFileChannel从文件读数据或写进文件
Datagram...
分类:
编程语言 时间:
2015-03-15 19:52:52
阅读次数:
143
Java NIO主要有以下核心组件构成:
通道
缓存
选择器
Java NIO其实有比上面更多的类和组件,但是在我看来,Channel,Buffer,Selector是核心的API。其它组件,像管道和文件锁,仅仅只是在与三大核心组件结合使用时的通用工具类。
通道和缓存一般来说,NIO中的所有IO都是从通道开始的。通道就像一个流,数据可以从通道中读到一个缓存里去,同样,数据可以从缓存写进通道里...
分类:
编程语言 时间:
2015-03-14 20:07:31
阅读次数:
130
Netty是Java NIO之上的网络库(API)。Netty 提供异步的、事件驱动的网络应用程序框架和工具,用以快速开发高性能、高可靠性的网络服务器和客户端程序。我构建了一个Netty项目模板:avro-channel。目的是结合Netty和Avro实现异步数据传输和RPC(远程过程调用)。...
分类:
Web程序 时间:
2015-03-13 12:42:47
阅读次数:
227
Java NIO非堵塞应用通常适用用在I/O读写等方面,我们知道,系统运行的性能瓶颈通常在I/O读写,包括对端口和文件的操作上,过去,在打开一个I/O通道后,read()将一直等待在端口一边读取字节内容,如果没有内容进来,read()也是傻傻的等,这会影响我们程序继续做其他事情,那么改进做法就是开设...
分类:
编程语言 时间:
2015-03-13 01:36:32
阅读次数:
146
package com.du20150311Files;import java.io.BufferedReader;import java.io.BufferedWriter;import java.io.IOException;import java.nio.charset.Charset;imp...
分类:
编程语言 时间:
2015-03-11 18:59:50
阅读次数:
149