MINA的底层还是利用了jdk提供了nio功能,mina只是对nio进行封装,包括MINA用的线程池都是jdk直接提供的。MINA的server端主要有accept、processor、session三部分组成的。其中accept主要负责在指定的端口监听,若有新连接则建立一个新的session;processor则负责处理session对应的发送数据和接收数据并调用上层处理;session则缓存当...
分类:
其他好文 时间:
2014-09-03 09:43:06
阅读次数:
299
Java NIO与IO的详细区别(通俗篇)——转载就速度来说CPU > 内存 > 硬盘I- 就是从硬盘到内存O- 就是从内存到硬盘第一种方式:我从硬盘读取数据,然后程序一直等,数据读完后,继续操作。这种方式是最简单的,叫阻塞IO。第二种方式:我从硬盘读取数据,然后程序继续向下执行,等数据读取完后,通...
分类:
编程语言 时间:
2014-09-02 19:23:55
阅读次数:
179
此例子解决了中文乱码问题。客服端:MimaTimeClient.javapackage minaExamle.client;import java.net.InetSocketAddress;import java.nio.charset.Charset;import java.util.Sca.....
分类:
其他好文 时间:
2014-09-02 14:07:24
阅读次数:
328
mina是非常好的C/S架构的java服务器,这里转了一篇关于它的使用感受。前言MINA是Trustin Lee最新制作的Java通讯框架。通讯框架的主要作用是封装底层IO操作,提供高级的操作API。比较出名的通讯框架有C++的ACE、Python的Twisted,而Java的通讯框架还有Quick...
分类:
其他好文 时间:
2014-09-02 13:49:14
阅读次数:
209
Java NIO中的Buffer用于和NIO通道进行交互。如你所知,数据是从通道读入缓冲区,从缓冲区写入到通道中的。缓冲区本质上是一块可以写入数据,然后可以从中读取数据的内存。这块内存被包装成NIO Buffer对象,并提供了一组方法,用来方便的访问该块内存。Buffer的基本用法使用Buffer读...
分类:
编程语言 时间:
2014-09-01 17:38:03
阅读次数:
231
“你们的agent占了好多系统的端口,把我们的很多业务系统都给整死了,给我们造成了很大的损失,要求你们的相关领导下周过来道歉”--来自我们的一个客户。 怎么可能呢,我们都不相信,我们的agent只占一个端口啊!事实胜过雄辩,经过查证,确实是由于我们的agent占了好多系统的端口,我看了一下日志,基本把系统可用的端口占完了!为什么呢?MINA框架私自开的!由于我们的agent端使用了NIO通信框...
分类:
其他好文 时间:
2014-09-01 09:21:33
阅读次数:
199
当学习了Java NIO和IO的API后,一个问题立即涌入脑海:我应该何时使用IO,何时使用NIO呢?在本文中,我会尽量清晰地解析Java NIO和IO的差异、它们的使用场景,以及它们怎样影响您的代码设计。Java NIO和IO的主要差别下表总结了Java NIO和IO之间的主要区别,我会更具体地描...
分类:
编程语言 时间:
2014-08-31 21:26:01
阅读次数:
285
1. 阻塞I/O通信模型1.性能:一连接一线程模型导致服务端的并发接入数和系统吞吐量受到极大限制2.可靠性:由于IO操作采用同步阻塞模式,当网络拥塞或者逻辑处理缓慢会导致IO线程被挂住,阻塞时间无法预测3.可维护性:IO线程数无法有效控制、资源无法有效共享(多线程并发问题),系统可维护性差2.异步、...
分类:
编程语言 时间:
2014-08-31 18:38:51
阅读次数:
308
这两天仿hadoop 写java RPC框架,使用PB作为序列号工具,在写读数据的时候遇到一个小坑。之前写过NIO代码,恰好是错误的代码产生正确的逻辑,误以为自己写对了。现在简单整理一下。使用NIO,select()到读事件时,要处理4种情况:1. channel还有数据,继续读。2. channe...
分类:
编程语言 时间:
2014-08-31 17:02:01
阅读次数:
322