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/
随机推荐
- 2019年React学习路线图
作者|javinpaul 译者|无明 之前我们已经介绍了 2019 年 Vue 学习路线图,而 React 作为当前应用最广泛的前端框架,在 Facebook 的支持下,近年来实现了飞越式的发展,我们 ...
- 过滤器为JSP文件生成静态页面
用过滤器为JSP文件生成静态页面,这只是一个简单的实例,客户端浏览器第一次请求JSP页面时,服务器将生成对应的HTML文件,以后访问同一JSP文件,将转为访问生成的HTML文件.一.过滤器 packa ...
- html+jquery+php实现文件上传全过程
本例子采用html+jquery+php实现上传功能 html部分 <!DOCTYPE html> <html> <head> <meta charset=& ...
- [Python+Java双语版自动化测试(接口测试+Web+App+性能+CICD)
[Python+Java双语版自动化测试(接口测试+Web+App+性能+CICD)开学典礼](https://ke.qq.com/course/453802)**测试交流群:549376944**0 ...
- selenuim模块的使用 解析库
selenium: 是自动化测试工具,我们可以用它来进行爬虫. 可以驱动浏览器,执行自定义好的任务. 可以执行js代码 执行速度慢,效率低. 一般用于做登录的认证 基本选择器: find_elemen ...
- Vue 之指令篇
文件指令 <body> <div id="app"> <!-- 1) 插值表达式 --> <p>{ ...
- SysTick功能总结
一.初始化SysTick 按1ms来设置systick,也可以除以1000000.按1us来设置 SysTick_Config(SystemCoreClock / 1000); //SysTick开启 ...
- OC学习篇之---谓词(NSPredicate)
在前一篇文章中我们介绍了OC中一个重要技术通知:http://blog.csdn.net/jiangwei0910410003/article/details/41923401,今天我们在来看一下OC ...
- 工程师技术(三):独立Web站点的快速部署、虚拟Web主机的部署、配置网页内容访问、使用自定Web根目录、配置安全Web服务、部署并测试WSGI站点
一.独立Web站点的快速部署 目标: 本例要求为 http://server0.example.com 配置Web站点,要求如下: 1> 从http://classroom/pub/materi ...
- python基础三(深浅拷贝)
1.赋值操作 list_1 = [1,2,3,['barry','Jerry']] list_2 = list_1 list_1[0] = 111 print(list_1) # [111, 2, 3 ...