package com.test.nio;
import java.io.FileNotFoundException;
import java.io.RandomAccessFile;
import java.nio.ByteBuffer;
import java.nio.channels.FileChannel;
public class TestFile {
/**
* @para...
分类:
编程语言 时间:
2014-09-24 00:20:45
阅读次数:
365
这个系列通过七篇文章,结合Netty5的原代码
1. 分析了服务器绑定端口的过程,从整体上可以看到Netty执行的流程和主要组件
2. 分析了Netty的线程模型,解析了Reactor模式。很多人都不理解这块,被EventLoop的名称和复杂的类层次所迷惑
3. 通过比较使用Java原生的NIO API来编程的流程,再分析了Netty是如何把这些基本流程封装地,进一步地理清了Netty的封装...
分类:
Web程序 时间:
2014-09-23 12:28:14
阅读次数:
226
因为最近要从公司离职,害怕用nio写的网络程序没有人能看懂(或许是因为写的不好吧),就调整成了mina(这样大家接触起来非常方便,即使没有socket基础,用起来也不难),所以之前基于nio写的网络程序就开放出来好了! 写的比较挫,大家见谅! 首先是PollServer类,主要处理select,做....
分类:
编程语言 时间:
2014-09-23 02:30:43
阅读次数:
357
Netty的ByteBuf缓冲区实现地比Java本身的ByteBuffer更加灵活,方便。它的类结构也比较复杂,这里只说ByteBuf核心的几个要点。
1. 最重要的是要理解为什么要ByteBuf这个组件。主要还是因为基于select / poll / epoll这种IO多路复用技术的NIO是非阻塞同步IO的模型,由于是同步IO,需要用户线程自己来处理IO的读写,由于是非阻塞的,每次调用...
分类:
Web程序 时间:
2014-09-22 19:06:32
阅读次数:
626
原文地址:http://ifeve.com/java-nio-scattergather/Java NIO开始支持scatter/gather,scatter/gather用于描述从Channel(译者注:Channel在中文经常翻译为通道)中读取或者写入到Channel的操作。 分散(scatte...
分类:
编程语言 时间:
2014-09-21 23:38:41
阅读次数:
320
原文链接:http://ifeve.com/buffers/声明:Java NIO系列教材并非本人原创,只因阅读原文之后有感于文章之精妙,意欲与诸位共享,故而出此下策,忘原作者见谅。另附上原文地址。Java NIO的通道类似流,但又有些不同:Java NIO中的Buffer用于和NIO通道进行交互。...
分类:
编程语言 时间:
2014-09-21 23:26:31
阅读次数:
372
在讨论如何回收堆外内存的时候,提到“NIO中direct memory的释放并不是通过finalize(),因为finalize不安全而且影响能”。Effective Java一书中也提到:Avoid Finalizers。人都有潜在的叛逆意识,别人给的结论或者制定的规范,除非有足够的理由说服你,除非懂得这么做背后的原因,否则只能是死记硬背,没有形象深入的理解,不能学到真正的东西。本文通过自己的理解和一些实际的例子,和大家一起更形象的理解finalize。还是那句经典的话“talking is cheap,...
分类:
编程语言 时间:
2014-09-21 18:46:11
阅读次数:
322
Mina的各个组件功能:(1.) IoService:这个接口在一个线程上负责套接字的建立,拥有自己的Selector,监听是否有连接被建立。(Mina底层使用JAVA NIO, 因此它是典型的使用Reactor模式架构的,采用事件驱动编程 , Mina运行用户自定义线程模型,可以是单线程、多线程、...
分类:
其他好文 时间:
2014-09-20 15:31:38
阅读次数:
130
Netty3 源码分析 - NIO server接受连接请求过程分析
当服务器端的server Channel绑定某个端口之后,就可以处理来自客户端的连接请求,而且在构建 NioServerSocketChannelFactory
的时候已经生成了对应的 BossPool 和 WorkerPool,前者管理的 NioServerBoss 就是专门用来接受客户端连接的Sele...
分类:
Web程序 时间:
2014-09-19 17:46:06
阅读次数:
306
消息传递有很多种方式,请求/响应(Request/Reply)是最常用的。在前面的博文的例子中,很多都是采用请求/响应的方式,当服务器接收到消息后,会立即write回写一条消息到客户端。HTTP协议也是基于请求/响应的方式。但是请求/响应并不能满足所有的消息传递的需求,有些需求可能需要服务端主动推送消息到客户端,而不是被动的等待请求后再给出响应。发布/订阅(Publish/Subscribe)是一...
分类:
Web程序 时间:
2014-09-19 13:50:45
阅读次数:
203