Mina---系统学习
1、为何使用Mina?
java提供的BIO、NIO使用的复杂性等原因,导致Mina框架的诞生;
2、什么时候使用Mina?
易于使用
高并发的用户量
被证明的系统:
Mina已被全球数以万计的应用使用;
现有协议的支持:
HTTP、TCP、UDP。。。
3、Mina的特性

4、Mina应用架构

5、Mina架构实现细节

基于Mina的应用分为3个层次:
1.1 I/O Service(I/O服务) ----具体的I/O操作
1.2 I/O Filter Chain(I/O 过滤器链) -----将字节过滤/转换为想要的数据结构,反之亦然
1.3 I/O Handler(I/O 处理器) -----实现实际的业务逻辑
6、创建基于Mina的应用的步骤
1.1 创建一个I/O Service ---从已存在的service中挑选一个或创建自己的
1.2 创建一个Filter Chain ---从现有Filter中挑选或创建一个自定义Filter
1.3 创建一个I/O Handler ---处理不同消息时编写具体业务逻辑
7、Mina---服务端架构
1.1 服务器端监听一个端口以获得连入请求,将其进行处理后然后发送回复;
服务器端还会为每个客户端创建并维护一个Session;

I/O Acceptor :监听网络以获取连入的连接或包
对于每一个新的连接,一个新的session会被创建,之后所有来自该IP地址/端口组合的请求会在同一个session中处理
在一个session中接收到的所有包,将穿越上图中所示的Filter Chain;
只要一个客户端连接到了Mina服务器端,需要创建一个新的session存放持久化数据;
Filter Chain用于修正包的内容(转化为对象、添加、删除信息等);
对于从原始字节到高层对象的相互转换,PacketEncoder/Decoder相当有用;
包或转化后的对象最终交由IOHandler;
IOHandler用于实现具体业务需求;
8、Mina---客户端架构
1.1 客户端需要连接一个服务器端,发送消息并处理响应;

客户端首先创建一个IOConnector,开启一个服务器的绑定;
在连接创建时,一个Session会被创建并关联到该连接;
应用或客户端写入Session,导致数据在穿越Filter Chain后被发送到服务器端;
所有接收自服务器端的响应穿越Filter Chain后由IOHandler接收并处理;
Mina---系统学习的更多相关文章
- Dubbo -- 系统学习 笔记 -- 配置参考手册
Dubbo -- 系统学习 笔记 -- 目录 配置参考手册 <dubbo:service/> <dubbo:reference/> <dubbo:protocol/> ...
- Dubbo -- 系统学习 笔记 -- 依赖
Dubbo -- 系统学习 笔记 -- 目录 依赖 必需依赖 缺省依赖 可选依赖 依赖 必需依赖 JDK1.5+ 理论上Dubbo可以只依赖JDK,不依赖于任何三方库运行,只需配置使用JDK相关实现策 ...
- 零基础如何系统学习Java Web
零基础如何系统学习Java Web? 我来给你说一说 你要下决心,我要转行做开发,这样你才能学成. 你要会打字,我公司原来有一个程序员,打字都是两个手一指禅,身为程序员你一指禅怎么写出的代码,半个 ...
- Unity3D 装备系统学习Inventory Pro 2.1.2 基础篇
前言 前一篇 Unity3D 装备系统学习Inventory Pro 2.1.2 总结 基本泛泛的对于Inventory Pro 这个插件进行了讲解,主要是想提炼下通用装备系统结构和类体系.前两天又读 ...
- MES系统学习
MES系统是当今制造型企业信息化的热点,而统一建模语言UML是面向对象建模的标准语言,在软件工程发挥着重要作用.MES系统如何进行UML建模呢,今天和大家重点讨论一下MES系统的UML建模方法,请看本 ...
- 001 今天开始系统学习C#
2016-01-16 之前只是大概了解过c#语言,感觉掌握不牢靠.现在开始系统学习C#.现以该博客作为学习笔记,方便后续查看.C# 目标:系统掌握c#知识 时间:30天 范围:C#基础,Winform ...
- Linux系统学习笔记:文件I/O
Linux支持C语言中的标准I/O函数,同时它还提供了一套SUS标准的I/O库函数.和标准I/O不同,UNIX的I/O函数是不带缓冲的,即每个读写都调用内核中的一个系统调用.本篇总结UNIX的I/O并 ...
- 从mina中学习超时程序编写
从mina中学习超时程序编写 在很多情况下,程序需要使用计时器定,在指定的时间内检查连接过期.例如,要实现一个mqtt服务,为了保证QOS,在服务端发送消息后,需要等待客户端的ack,确保客户端接收到 ...
- Hibernate的系统 学习
Hibernate的系统 学习 一.Hibernate的介绍 1.什么是Hibernate? 首先,hibernate是数据持久层的一个轻量级框架.数据持久层的框架有很多比如:iBATIS,myBat ...
- css系统学习网站
最近系统学习一下css样式,找到一个不错的网站.http://css.doyoe.com/
随机推荐
- Java网络编程:IP地址和端口号
1)IP地址 用来标志网络中的一个通信实体的地址.通信实体可以是计算机,路由器等. 2)IP地址分类 IPV4:32位地址,以点分十进制表示,如192.168.0.1 IPV6:128位(16个字节) ...
- 【串线篇】SpringMvc数据传出
/** * SpringMVC除过在方法上传入原生的request和session外还能怎么样把数据带给页面 * * 四大域: * pageContext:${pageScope.msg }< ...
- webpack第一节(4)
每次修改了代码都需要重新手动打包,这样很麻烦,不符合webpack的初衷,我们查看webpack帮助看看有没有可以自动运行的方法 输入 webpack -help 可以发现有个 --watch方法 它 ...
- java基础学习笔记三(多态)
多态? 多态是同一个行为具有多个不同表现形式或形态的能力. 存在的必要条件 继承 重写 父类引用指向子类对象 比如: Parent p = new Child(); 当使用多态方式调用方法时,首先检查 ...
- .net从服务端下载文件(可以断点续传)
public void DownFile(string guid) { var fileTransfer = new FileTransfer(); var directoryPath = Path. ...
- nucleus plus代码学习
int.S: ;************************************************************************ ;* ;* FUNCTION ;* ; ...
- Codeforces #55D (数位dp+离散化)
Description Volodya is an odd boy and his taste is strange as well. It seems to him that a positive ...
- ShopNC B2B2C最新版去除shop方法教程
1.转移shop下目录文件至根目录: 2.修改config.ini.php里的shop绑定域名更改为无shop目录: 3.将原始根目录的index.php更改为main.php文件名自己定!并修改in ...
- [CSP-S模拟测试]:简单的区间(分治)
题目描述 给定一个长度为$n$的序列$a$以及常数$k$,序列从$1$开始编号.记$$f(l,t)=\sum \limits_{i=l}^ra_i-\max \limits_{i=l}^r\{a_i\ ...
- ABP的新旧版本
新版本 https://abp.io/documents/abp/latest/Index https://github.com/abpframework/abp ABP is an open sou ...