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---系统学习的更多相关文章

  1. Dubbo -- 系统学习 笔记 -- 配置参考手册

    Dubbo -- 系统学习 笔记 -- 目录 配置参考手册 <dubbo:service/> <dubbo:reference/> <dubbo:protocol/> ...

  2. Dubbo -- 系统学习 笔记 -- 依赖

    Dubbo -- 系统学习 笔记 -- 目录 依赖 必需依赖 缺省依赖 可选依赖 依赖 必需依赖 JDK1.5+ 理论上Dubbo可以只依赖JDK,不依赖于任何三方库运行,只需配置使用JDK相关实现策 ...

  3. 零基础如何系统学习Java Web

    零基础如何系统学习Java Web?   我来给你说一说 你要下决心,我要转行做开发,这样你才能学成. 你要会打字,我公司原来有一个程序员,打字都是两个手一指禅,身为程序员你一指禅怎么写出的代码,半个 ...

  4. Unity3D 装备系统学习Inventory Pro 2.1.2 基础篇

    前言 前一篇 Unity3D 装备系统学习Inventory Pro 2.1.2 总结 基本泛泛的对于Inventory Pro 这个插件进行了讲解,主要是想提炼下通用装备系统结构和类体系.前两天又读 ...

  5. MES系统学习

    MES系统是当今制造型企业信息化的热点,而统一建模语言UML是面向对象建模的标准语言,在软件工程发挥着重要作用.MES系统如何进行UML建模呢,今天和大家重点讨论一下MES系统的UML建模方法,请看本 ...

  6. 001 今天开始系统学习C#

    2016-01-16 之前只是大概了解过c#语言,感觉掌握不牢靠.现在开始系统学习C#.现以该博客作为学习笔记,方便后续查看.C# 目标:系统掌握c#知识 时间:30天 范围:C#基础,Winform ...

  7. Linux系统学习笔记:文件I/O

    Linux支持C语言中的标准I/O函数,同时它还提供了一套SUS标准的I/O库函数.和标准I/O不同,UNIX的I/O函数是不带缓冲的,即每个读写都调用内核中的一个系统调用.本篇总结UNIX的I/O并 ...

  8. 从mina中学习超时程序编写

    从mina中学习超时程序编写 在很多情况下,程序需要使用计时器定,在指定的时间内检查连接过期.例如,要实现一个mqtt服务,为了保证QOS,在服务端发送消息后,需要等待客户端的ack,确保客户端接收到 ...

  9. Hibernate的系统 学习

    Hibernate的系统 学习 一.Hibernate的介绍 1.什么是Hibernate? 首先,hibernate是数据持久层的一个轻量级框架.数据持久层的框架有很多比如:iBATIS,myBat ...

  10. css系统学习网站

    最近系统学习一下css样式,找到一个不错的网站.http://css.doyoe.com/

随机推荐

  1. 三、Redis的配置文件和多数据库用途

    1.使用文件 # 使用配置文件启动 redis-server ./redis.conf # 带配置文件启动 且指定某几个配置 配置名称前加 -- redis-server ./redis.conf - ...

  2. css实现下拉框导航条

    html <!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <ti ...

  3. JavaSE---多线程---线程的创建、启动

    1.概述 1.1 Java中使用Thread类表示线程:   所有的线程对象必须是Thread类 或 其子类的实例:   每条线程的作用:完成一定的任务:   Java中使用run方法来封装线程执行体 ...

  4. Spring讲解(三)

    依赖注入Bean属性,使用xml配置 1.构造方法注入 案例代码演示 public class User { private String username; private String passw ...

  5. 常见算法和数据结构存在的坑(updating)

    数组: c++数组下标都+5会稳. 50005000的别开60006000. 二分: 实数二分可能因为神马精度问题出现了不满足二分序的情况,要小心. 注意二分完后,不能直接用当前数组里存的值,要pd( ...

  6. java html生成PDF,并打印

    import java.io.File; import java.io.FileOutputStream; import org.zefer.pd4ml.PD4Constants; import or ...

  7. Mysql忘记密码:关于ERROR 1045 (28000): Access denied for user 'ODBC'@'localhost' (using password: NO)的问题

    命令行登录mysql时,出现ERROR 1045 (28000): Access denied for user 'ODBC'@'localhost' (using password: NO)的提示. ...

  8. nginx添加一个server

    nginx添加一个server server { listen 80; server_name dev.pccb.com; index index.html index.htm; # rewrite ...

  9. webpack+vue+koa+mongoDB,从零开始搭建一个网站

    github 地址 https://github.com/wangxiaoxi... webpakc+vue的搭建1.新建项目文件夹(see-films);2.npm init //初始化项目3.搭建 ...

  10. java并发编程笔记(二)——并发工具

    java并发编程笔记(二)--并发工具 工具: Postman:http请求模拟工具 Apache Bench(AB):Apache附带的工具,测试网站性能 JMeter:Apache组织开发的压力测 ...