
NIO
Donald_Draper
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
文件通道解析二(文件锁,关闭通道)
操作,通道数据传输操作,先来回顾一下: 文件通道的构造,主要是初始化通道读写模式,追加模式append及文件分发器,FileDispatcherImpl。 文件通道的读写操作的实际操作都是由IOUtil协助FileDispatcherImpl完成,这一点和SocketChannel通道读写思路基本相同。 文件通道传输方法transferTo,首先确保当前文件通道是否打开,是否可读,然后检查目的通道是否关闭,是否可写;然后先调用文件通道本地方法传输通道的数据到目的通道,如果失败,2017-05-16 23:17:56 · 415 阅读 · 0 评论 -
DatagramChannelImpl 解析二(报文发送与接收)
mpl中的socket分发器原理基本相同,报文socket分发器可以理解为报文通道的静态代理;网络协议family表示当前报文通道的网络协议family;多播关系注册器MembershipRegistry,主要是通过一个Map-HashMap来管理多播组和多播组成员关系key的映射(关系);通道本地读写线程记录器,及读写锁控制通道读写,一个状态锁,当通道状态改变时,需要获取状态锁。DatagramChannelImpl构造方法,主要是初始化读写线程,及读写锁和状态锁,初始化网络协议family,及报文通道描2017-05-09 09:03:15 · 498 阅读 · 0 评论 -
DatagramChannelImpl 解析一(初始化)
定义:[url]http://donald-draper.iteye.com/blog/2369317[/url]SelectionKey定义:[url]http://donald-draper.iteye.com/blog/2369499[/url]SelectorProvider定义:[url]http://donald-draper.iteye.com/blog/2369615[/url]AbstractSelectableChannel定义:[url]http://donald-drap2017-05-08 21:52:51 · 325 阅读 · 0 评论 -
MembershipKeyImpl 简介
port java.io.IOException;import java.net.InetAddress;import java.net.NetworkInterface;import java.nio.channels.MembershipKey;import java.nio.channels.MulticastChannel;import java.util.HashSet;// Referenced classes of package sun.nio.ch://2017-05-08 09:11:27 · 152 阅读 · 0 评论 -
DatagramChannel定义
定义:[url]http://donald-draper.iteye.com/blog/2369317[/url]SelectionKey定义:[url]http://donald-draper.iteye.com/blog/2369499[/url]SelectorProvider定义:[url]http://donald-draper.iteye.com/blog/2369615[/url]AbstractSelectableChannel定义:[url]http://donald-drap2017-05-07 23:13:27 · 290 阅读 · 0 评论 -
MulticastChanne接口定义
import java.net.InetAddress;import java.net.NetworkInterface;import java.io.IOException;import java.net.ProtocolFamily; // javadocimport java.net.StandardProtocolFamily; // javadocimport java.net.StandardSocketOptions; // j2017-05-07 13:45:55 · 235 阅读 · 0 评论 -
MembershipKey定义
otocol (IP) multicast * group. *MembershipKey表示一个网络IP协议的多播分组成员信息token * A membership key may represent a membership to receive all datagrams sent * to the group, or it may be [i]source-specific[/i], meaning that it * represents a membership that2017-05-06 16:20:16 · 222 阅读 · 0 评论 -
SocketChannelImpl 解析四(关闭通道等)
teye.com/blog/2372548[/url]SocketChannelImpl 解析三(接收数据):[url]http://donald-draper.iteye.com/blog/2372590[/url][size=medium][b]引言:[/b][/size]上一篇文章,我们看了SocketChannelImpl接收数据相关方法,具体为: 读输入流到buffer,首先同步读写,确保通道,输入流打开,通道连接建立,清除原始读线程,获取新的本地读线程,委托IOUtil原创 2017-05-05 08:38:17 · 737 阅读 · 0 评论 -
SocketChannelImpl 解析三(接收数据)
teye.com/blog/2372548[/url][size=medium][b]引言:[/b][/size]前一篇文章我们看了一下SocketChannelImpl发送多个字节序列的过程,先来回顾一下:SocketChannelImpl写ByteBuffer数组方法,首先同步写锁,确保通道,输出流打开,连接建立委托给IOUtil,将ByteBuffer数组写到输出流中,这一过程为获取存放i个字节缓冲区的IOVecWrapper,遍历ByteBuffer数组m,将字节缓冲区添加到iovecw原创 2017-05-05 08:34:16 · 659 阅读 · 0 评论 -
SocketChannelImpl 解析二(发送数据后续)
nelImpl的初始化,通道连接(Socket),写操作(write-ByteBuffer)。先回顾一下:SocketChannelImpl构造主要是初始化读写及状态锁和通道socket文件描述。connect连接方法首先同步读锁和写锁,确保socket通道打开,并没有连接;然后检查socket地址的正确性与合法性,然后检查当前线程是否有Connect方法的访问控制权限,最后尝试连接socket地址。从缓冲区读取字节序列写到通道write(ByteBuffer),首先确保通道打开,且输出流没有关闭,2017-05-04 08:42:43 · 242 阅读 · 0 评论 -
SocketChannelImpl 解析一(通道连接,发送数据)
-draper.iteye.com/blog/2372351[/url]SelectorProvider定义:[url]http://donald-draper.iteye.com/blog/2369615[/url]ServerSocketChannelImpl解析:[url]http://donald-draper.iteye.com/blog/2370912[/url]SocketChannel接口定义:[url]http://donald-draper.iteye.com/blog/232017-05-03 09:09:31 · 669 阅读 · 0 评论 -
NIO-UDP实例
og/2373281[/url]DatagramChannelImpl 解析三(多播):[url]http://donald-draper.iteye.com/blog/2373507[/url]DatagramChannelImpl 解析四(地址绑定,关闭通道等):[url]http://donald-draper.iteye.com/blog/2373519[/url]前面讲过nio tcp通信,今天来看一下udp;Server-peer[code="java"]2017-05-09 12:32:40 · 264 阅读 · 0 评论 -
DatagramChannelImpl 解析三(多播)
og/2373281[/url][size=medium][b]引言:[/b][/size]上一篇看了报文的发送和接收,先来回顾一下, send(发送报文)方法,首先同步写锁,确保通道打开,然后检查地址,如果系统安全管理器不为null,则更具地址类型检查相应的权限,如果地址为多播地址,则检查多播权限,否则检查连接到socketaddress的权限;如果发送的buffer为direct类型,则直接发送,否则从当前线程缓冲区获取一个临时DirectByteBuffer,并将buffer中的数据写原创 2017-05-10 08:20:43 · 356 阅读 · 0 评论 -
DatagramChannelImpl 解析四(地址绑定,关闭通道等)
og/2373281[/url]DatagramChannelImpl 解析三(多播):[url]http://donald-draper.iteye.com/blog/2373507[/url][size=medium][b]引言:[/b][/size]前面一篇文章我们看了报文通道加入多播组,阻塞和解除阻塞源地址报文等方法,先来回顾一下, join(报文通道加入多播组)方法,首先检查加入的多播组地址是否正确,然后校验源地址,检查多播成员关系注册器中是否存在多播地址为inetaddre原创 2017-05-10 08:27:36 · 527 阅读 · 0 评论 -
文件通道解析一(读写操作,通道数据传输等)
单综述:[url]http://donald-draper.iteye.com/blog/2374237[/url]文件读写方式简单综述后续(文件,流构造):[url]http://donald-draper.iteye.com/blog/2374294[/url]文件通道创建方式综述:[url]http://donald-draper.iteye.com/blog/2374537[/url][size=medium][b]引言:[/b][/size] 获取区文件的通道一共有四种,第2017-05-16 10:04:23 · 592 阅读 · 0 评论 -
文件通道创建方式综述
单综述:[url]http://donald-draper.iteye.com/blog/2374237[/url]文件读写方式简单综述后续(文件,流构造):[url]http://donald-draper.iteye.com/blog/2374294[/url] 在看了FileChanne定义后,为了更好了理解FileChanne,我们简单的看了文件File,路径Path ,文件系统FileSystem,文件系统提供者FileSystemProvider。我们先回顾下相关概念:2017-05-15 17:39:23 · 310 阅读 · 0 评论 -
文件读写方式简单综述后续(文件,流构造)
2017-05-14 23:04:36 · 383 阅读 · 0 评论 -
文件读写方式简单综述
2017-05-14 11:13:34 · 152 阅读 · 0 评论 -
FileChanne定义
http://donald-draper.iteye.com/blog/2373700[/url]前面看了一下SeekableByteChannel接口定义,今天来看一下FileChannel的定义[code="java"]package java.nio.channels;import java.io.*;import java.nio.ByteBuffer;import java.nio.MappedByteBuffer;import java.nio.c2017-05-12 23:28:53 · 203 阅读 · 0 评论 -
SeekableByteChannel接口定义
t java.io.IOException;/** * A byte channel that maintains a current position and allows the * position to be changed. *SeekableByteChannel维护是一个当前position,运行修改position。 * A seekable byte channel is connected to an entity, typically a file, *原创 2017-05-11 08:43:31 · 658 阅读 · 0 评论 -
FileChannel示例
port java.io.IOException;import java.io.RandomAccessFile;import java.nio.ByteBuffer;import java.nio.channels.FileChannel;/** * 测试FileChannel * @author donald * 2017年4月9日 * 下午4:16:35 */public class testFileChannel { public static void原创 2017-05-11 08:37:45 · 199 阅读 · 0 评论 -
PipeImpl解析
原创 2017-05-11 08:41:23 · 311 阅读 · 0 评论 -
Pipe定义
定义:[url]http://donald-draper.iteye.com/blog/2369317[/url]SelectionKey定义:[url]http://donald-draper.iteye.com/blog/2369499[/url]SelectorProvider定义:[url]http://donald-draper.iteye.com/blog/2369615[/url]AbstractSelectableChannel定义:[url]http://donald-drap2017-05-10 09:07:26 · 219 阅读 · 0 评论 -
NIO-Pipe示例
2017-05-10 08:47:21 · 146 阅读 · 0 评论 -
DirectByteBuffer简介
Cleaner):[url]http://donald-draper.iteye.com/blog/2371661[/url]ByteBuffer有两个实现一个为,HeapByteBuffer,另一个为DirectByteBuffer,在上一篇文章中我们看了HeapByteBuffer,今天来看另外一个DirectByteBuffer。下面是两种ByteBuffer创建的方法:1.HeapByteBuffer[code="java"]//ByteBuffer,创建He2017-05-02 23:25:26 · 249 阅读 · 0 评论 -
MappedByteBuffer定义
ctByteBuffer。在看DirectByteBuffer之前,我们先来看一下DirectByteBuffer的父类MappedByteBuffer。[code="java"]//DirectByteBufferpackage java.nio;import java.io.FileDescriptor;import sun.misc.Cleaner;import sun.misc.Unsafe;import sun.misc.VM;import sun.2017-04-28 11:05:08 · 236 阅读 · 0 评论 -
SocketChannel接口定义
定义:[url]http://donald-draper.iteye.com/blog/2369317[/url]SelectionKey定义:[url]http://donald-draper.iteye.com/blog/2369499[/url]SelectorProvider定义:[url]http://donald-draper.iteye.com/blog/2369615[/url]AbstractSelectableChannel定义:[url]http://donald-drap2017-04-25 23:08:07 · 188 阅读 · 0 评论 -
SelectableChannel接口定义
2017-04-15 23:39:53 · 151 阅读 · 0 评论 -
AbstractInterruptibleChannel接口定义
中断阻塞IO操作线程的通道接口定义AbstractInterruptibleChannel,下面是ServerSocketChannel实现的类和接口结构树://ServerSocketChannel[code="java"]public abstract class ServerSocketChannel extends AbstractSelectableChannel implements NetworkChannel[/code]//Abstr2017-04-15 11:22:25 · 151 阅读 · 0 评论 -
Channel接口定义
2017-04-14 12:58:50 · 420 阅读 · 0 评论 -
NIO-TCP通信实例(单线程,多线程Server)
ww.iteye.com/magazines/132-Java-NIO[/url]NIO-TCP简单实例:[url]http://donald-draper.iteye.com/admin/blogs/2369044[/url]在这篇文章之前用BIO实现过TCP的通信,即Java Socket通信实例这篇文章,那边文章主要利用BIO的ServerSocket和Socket实现加法和乘法的实现,今天我们来用NIO的ServerSocketChannel和SocketChannel来实现加法和乘原创 2017-04-14 08:26:38 · 226 阅读 · 0 评论 -
NIO-TCP简单实例
[url]http://donald-draper.iteye.com/blog/2369238[/url]SelectableChannel接口定义:[url]http://donald-draper.iteye.com/blog/2369317[/url]SelectionKey定义:[url]http://donald-draper.iteye.com/blog/2369499[/url]SelectorProvider定义:[url]http://donald-draper.iteye.2017-04-13 22:27:04 · 114 阅读 · 0 评论 -
Java序列化与反序列化详解后续
2017-02-19 13:15:35 · 308 阅读 · 0 评论 -
Java序列化与反序列化详解
2017-02-16 21:09:37 · 114 阅读 · 0 评论 -
Java序列化与反序列化实例分析
2017-02-16 19:07:08 · 97 阅读 · 0 评论 -
Java NIO ByteBuffer详解
2017-02-14 19:19:11 · 205 阅读 · 0 评论 -
Java Socket读写缓存区Writer和Reader
put/OutputStream读写socket的缓冲区,这种是通过FilterInput/OutputStream方式;今天我们来看一下在HttpServletResponse中用的比较多的方式PrintWriter/BufferedReader,即Writer/Reader方式。服务器:[code="java"]package socket;import java.io.BufferedReader;import java.io.IOException2017-02-13 19:04:25 · 490 阅读 · 0 评论 -
SelectionKey定义
定义:[url]http://donald-draper.iteye.com/blog/2369317[/url]在我们上一篇SelectableChannel接口定义文章中,提到很多SelectionKey概念,当通道注册到注册器时,返回一个SelectionKey,今天我们来看一个SelectionKey:[code="java"]package java.nio.channels;import java.util.concurrent.atomic.Atom2017-04-16 14:50:01 · 266 阅读 · 0 评论 -
SelectorProvider定义
定义:[url]http://donald-draper.iteye.com/blog/2369317[/url]SelectionKey定义:[url]http://donald-draper.iteye.com/blog/2369499[/url] 在上面的几篇文章中,经常看到一个类SelectorProvider,一直不知道什么意思,再往下分析之前,我们先看一下SelectorProvider的定义,以便后面更好的理解通道和选择器。[code="java"]pa2017-04-17 11:34:58 · 188 阅读 · 0 评论 -
AbstractSelectableChannel定义
定义:[url]http://donald-draper.iteye.com/blog/2369317[/url]SelectionKey定义:[url]http://donald-draper.iteye.com/blog/2369499[/url]SelectorProvider定义:[url]http://donald-draper.iteye.com/blog/2369615[/url]前面我们看了可选择通道接口,选择key和通道、选择器提供服务者的相关定义,今天来看一下可选择通的基础实2017-04-17 21:51:28 · 128 阅读 · 0 评论