本篇对MINA进行介绍:

上图说明的是MINA在我们的项目中所处的层次。相当于对底层的通信系统做了一个封装。由于MINA暴露给用户的接口足够友好,所以MINA使用起来相当方便!
 
MINA架构图:
 
一个框架最重要的应该是它的数据流动和线程结构,数据流动能够很好的帮助理解框架,线程结构是理解工作方式的必要前提!
 
1.   MINA数据流
在MINA连接程序中,每个用户在连接的时候会建立一个TCP连接, 也就是建立了一条通信管道,客户端(remote peer)在给服务器发送消息的时候所经历的流程如上所示:
在服务端会经过一个IoFilterChain, 也就是java中的责任链模式, 也就是数据包会经过链路上的每个filter进行处理, 比如(编码,解码,打印数据包内容)。你可以自定义
各种需要的filter。
 
MINA暴露给用户的接口是IoHandler, 在IoHandler中MINA为我们提供了几个常用的事件接口, 比如连接建立, 收到消息, 捕获到异常等等, 这些就是我们可以插入代码
到MINA框架的地方, 数据包在MINA在框架中经过各种filter后到了我们自定义的IoHandler中,控制权就转移到了我们的手中!
 
一般MINA框架给我们提供插入点就是在filter链上插入filter和在IoHandler实现各种事件接口。
 
2.   MINA线程结构
MINA采用的javaNIO程序, 作为一个服务器框架, 那么MINA必须有一个监听的线程,监听的线程负责响应客户端的各种连接事件。
在接收到各种连接事件后,MINA会分派一个processer线程来处理这个客户端连接上的各种读写事件,这里MINA会启动和CPU核数相关数量的线程,而且一个processer线程
会处理多个客户端连接读写事件。processer线程在处理读写事件的时候就是按照上面的数据流来进行处理的、于是整个结构就清晰了。
 
 
上面说明了Mina的使用方式,省去了JAVA NIO细节, 因为要使用的话基本就只需要做到这个地步就可以了。 如何感兴趣可以去阅读MINA的源码!
如果只需要使用MINA的话,那么上面的数据流细节和线程细节已经能很好的阐释MINA框架了。
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
posted @ 2016-02-16 10:38 熊猫基地 阅读(1531) 评论(0) 推荐(0) 编辑
摘要: 参考资料:http://stackoverflow.com/questions/26356303/java-extend-application-classloaderhttp://blog.csdn.net/xyang81/article/details/7292380http://weli.it... 阅读全文
posted @ 2016-01-05 19:04 熊猫基地 阅读(383) 评论(0) 推荐(0) 编辑
摘要: nginx 和 tomcat的组合是后端服务器的常用架构。通过nginx实现负载均衡。nginx的主要配置可以见下面这个链接http://www.cnblogs.com/hpf311/p/5069380.html下面说说tomcat配置,tomcat单实例配置网上比较多,但是实际应用中我们经常需要在... 阅读全文
posted @ 2015-12-23 13:47 熊猫基地 阅读(572) 评论(0) 推荐(0) 编辑
摘要: 用户流量经过nginx端的分流到多个tomcat实例上,下面介绍一下nginx常用的配置文件nginx.conf//运行worker进程的用户userxxx;//启动的进程数量,通常设置为和cpu核数一致worker_processes8;//worker进程的最大打开文件数限制,需要设置的高,否则... 阅读全文
posted @ 2015-12-23 11:39 熊猫基地 阅读(239) 评论(0) 推荐(0) 编辑
摘要: 一。关于表连接1. 表连接主要包括外连接和内连接,内连接只是选出连接的两张表中的相匹配的记录,但是外连接会选出其它不匹配的记录。内连接和外连接有不同的应用场景。2. 左连接是以左边表中的记录为准,如果右边表中没有和左边表相匹配的记录,左边表的记录还是会显示。3. 右连接是以右边表中的记录为准,如果左... 阅读全文
posted @ 2015-12-21 16:33 熊猫基地 阅读(232) 评论(0) 推荐(0) 编辑
摘要: 下面会先说创建普通java工程的方法,之后会说创建web工程的方法1. gradle安装: 去gradle官网(http://gradle.org/)下载bin包,根据开发系统下载合适的版本2. 修改环境变量,path中加入gradle的bin目录路径,在cmd中敲入gradle -v代表加入成功。... 阅读全文
posted @ 2015-11-21 17:08 熊猫基地 阅读(3262) 评论(1) 推荐(1) 编辑
摘要: 决策树算法,属于classification中的一种算法思想:在数据中按照一定规则选取feature,然后根据该feature的值进行分类, 递归进行分类直到一个子类完全属于一个类别或者feature用尽。算法输入数据样式:其中XT和XU就是feature, Class就是该条数据所属的类别。算法过... 阅读全文
posted @ 2014-06-24 18:59 熊猫基地 阅读(238) 评论(0) 推荐(0) 编辑
摘要: 最近在看hadoop RPC方面的源码,主要是对着网上的教程了解大概的思想,然后具体深入看源码。看RPC的时候因为自己还不会用,所以看起来比较没头绪,因此需要先了解hadoop RPC如何进行使用。hadoop RPC的基本思想网上都有介绍这里主要介绍如何使用。主要是参考:http://www.cnblogs.com/hiddenfox/archive/2011/12/30/2305786.html 基本复制过来环境: eclipse + hadoop 0.20.2 的jar包。新建一个工程,然后需要在项目里面导入 hadoop 0.20.2 里面根目录 和 lib目录里面的jar包,我嫌麻烦 阅读全文
posted @ 2013-09-15 10:00 熊猫基地 阅读(730) 评论(0) 推荐(0) 编辑
摘要: 最近写miniC的编译器在,就顺带着看了 C++编译相关的操作。 虽然没有深入到C++编译器的内部实现,但是对C++的对象模型还是做了一个大致的了解。参考资料:http://blog.csdn.net/outmanlee/article/details/6396621参考书籍: inside the c++ object modelC++ 和 C 的基础部分语法都是类似。 C++在C的基础上增加了 封装,继承,多态这些C++的特性。封装很好说继承和多态一起如下:首先说下C++的整体对象模型:1. 类的非静态数据成员会每个对象一份。2. 类的非静态函数成员会在编译阶段拿到类外面成为一个单独的函数 阅读全文
posted @ 2012-10-13 09:26 熊猫基地 阅读(174) 评论(0) 推荐(0) 编辑
摘要: 最近在hadoop上跑同步的问题, awk脚本神器也是学了一下。虽然看起来好像比较慢, 但是效果真的很不错。主要是在hadoop上求差集的操作。一类的格式是objurl另外一类的格式是 objurl \t seg1 \t seg2 或者 objurl \t seg3规则是第二类 减去 第一类的差集。 同时需要根据objurl去重。 去重的时候需要 尽量选择seg3这种。 在同种之类随机选择。脚本如下:BEGIN { first = ""; second = ""; third = ""; yes = 1;}{ ... 阅读全文
posted @ 2012-09-27 10:41 熊猫基地 阅读(255) 评论(0) 推荐(0) 编辑
点击右上角即可分享
微信分享提示