摘要:【一】NIO服务器编程结构 【二】Netty3.x服务端线程模型
阅读全文
摘要:【一】五种IO模型:(1)阻塞IO(2)非阻塞IO(任务提交,工作线程处理,委托线程等待工作线程处理结果的同时,也可以做其他的事情)(3)IO复用模型.(委托线程接收多个任务,将任务提交给工作线程。委托线程等待多个工作线程结果,等待到其中一个,处理其中一个具体的工作)(4)信号驱动模型(5)异步IO
阅读全文
摘要:【nio服务端序列图】 一:nio服务器启动类 1 package com.yeepay.sxf.testnio; 2 /** 3 * nio创建的的timerServer服务器 4 * 5 * @author sxf 6 * 7 */ 8 public class NIOTimerServer {
阅读全文
摘要:也许很多朋友在学习NIO的时候都会感觉有点吃力,对里面的很多概念都感觉不是那么明朗。在 进入Java NIO编程之前,我们今天先来讨论一些比较基础的知识:I/O模型。下面本文先从同步和异步的概念 说起,然后接着阐述了阻塞和非阻塞的区别,接着介绍了阻塞IO和非阻塞IO的区别,然后介绍了同步IO和异步I
阅读全文
摘要:一:根据unix的网络编程对I/O模型的分类,UNIX提供了5种I/O模型 >阻塞I/O模型:最常用的I/O模型。所有文件操作都是阻塞的。我们以套接字接口为例讲解此模型:在进程空间中调用recvfrom,其系统调用直到数据包到达且被复制到应用程序的缓冲区中或者发生错误时才返回。在此期间一直会等待,进
阅读全文
摘要:同步I/O模型的弊端 >每一个线程的创建都会消耗服务端内存,当大量请求进来,会耗尽内存,导致服务宕机伪异步I/O的弊端分析 >当对Socket的输入流进行读取操作的时候,它会一直阻塞下去,知道发生如下三件事情(1)有数据可读(2)可用数据已经读取完毕(3)发生空指针或者I/O异常 >这意味着当对方发
阅读全文
摘要:转载:http://weixiaolu.iteye.com/blog/1479656 Java NIO原理图文分析及代码实现 前言: 最近在分析hadoop的RPC(Remote Procedure Call Protocol ,远程过程调用协议,它是一种通过网络从远程计算机程序上请求服务,而不需要
阅读全文
摘要:当学习了Java NIO和IO的API后,一个问题马上涌入脑海: 我应该何时使用IO,何时使用NIO呢?在本文中,我会尽量清晰地解析Java NIO和IO的差异、它们的使用场景,以及它们如何影响您的代码设计。 Java NIO和IO的主要区别 下表总结了Java NIO和IO之间的主要差别,我会更详
阅读全文
摘要:Java NIO 管道是2个线程之间的单向数据连接。Pipe有一个source通道和一个sink通道。数据会被写到sink通道,从source通道读取。 这里是Pipe原理的图示: 创建管道 通过Pipe.open()方法打开管道。例如: 1 Pipe pipe = Pipe.open(); 1 P
阅读全文
摘要:Java NIO中的DatagramChannel是一个能收发UDP包的通道。因为UDP是无连接的网络协议,所以不能像其它通道那样读取和写入。它发送和接收的是数据包。 打开 DatagramChannel 下面是 DatagramChannel 的打开方式: 1 DatagramChannel ch
阅读全文
摘要:Java NIO中的 ServerSocketChannel 是一个可以监听新进来的TCP连接的通道, 就像标准IO中的ServerSocket一样。ServerSocketChannel类在 java.nio.channels包中。 这里有个例子: 01 ServerSocketChannel s
阅读全文
摘要:Java NIO中的SocketChannel是一个连接到TCP网络套接字的通道。可以通过以下2种方式创建SocketChannel: 打开 SocketChannel 下面是SocketChannel的打开方式: 1 SocketChannel socketChannel = SocketChan
阅读全文
摘要:一:Java NIO的FileChannel >Java NIO中的FileChannel是一个连接到文件的通道。可以通过文件通道读写文件。 >FileChannel无法设置为非阻塞模式,它总是运行在阻塞模式下。二:Java NIO的FileChannel的打开 >在使用FileChannel之前,
阅读全文
摘要:一:Java NIO的selector的概述 >Selector(选择器)是Java NIO中能够检测一到多个NIO通道,并能够知晓通道是否为诸如读写事件做好准备的组件。这样,一个单独的线程可以管理多个channel,从而管理多个网络连接。二:Java NIO的为什么要使用selector >仅用单
阅读全文
摘要:在Java NIO中,如果两个通道中有一个是FileChannel,那你可以直接将数据从一个channel(译者注:channel中文常译作通道)传输到另外一个channel。transferFrom()FileChannel的transferFrom()方法可以将数据从源通道传输到FileChan
阅读全文
摘要:一:Java NIO的scatter/gather应用概念 >Java NIO开始支持scatter/gather,scatter/gather用于描述从Channel(译者注:Channel在中文经常翻译为通道)中读取或者写入到Channel的操作。 >分散(scatter)从Channel中读取
阅读全文
摘要:一:java的nio的buffer==>Java NIO中的Buffer用于和NIO通道Channel进行交互.==>数据是从通道channel读入缓冲区buffer,从缓冲区buffer写入到通道中channel的。==>缓冲区buffer本质上是一块可以写入数据,然后可以从中读取数据的内存。这块
阅读全文
摘要:一:java的nio的channelJava NIO的通道类似流,但又有些不同:==>既可以从通道中读取数据,又可以写数据到通道。但流的读写通常是单向的。==>通道可以异步地读写。==>通道中的数据总是要先读到一个Buffer,或者总是要从一个Buffer中写入。正如上面所说,从通道读取数据到缓冲区
阅读全文
摘要:一:java的nio的核心组件?Java NIO 由以下几个核心部分组成:==>Channels==>Buffers==>Selectors虽然Java NIO 中除此之外还有很多类和组件,但在我看来,Channel,Buffer 和 Selector 构成了核心的API。其它组件,如Pipe和Fi
阅读全文
摘要:JavaIO总结版本修改内容日期修改人V1.0原始版本2013-02-24skywang1 Java IO版本Java库的IO分为输入/输出两部分。早期的Java 1.0版本的输入系统是InputStream及其子类,输出系统是OutputStream及其子类。后来的Java 1.1版本对IO系统进...
阅读全文