mina的深入学习-未完待续

本文介绍了阅读mina源代码所需的基础知识,包括Java NIO、并发编程、线程池等核心技术,以及观察者模式、责任链模式等设计模式。文中还详细解释了mina中的关键事件及其处理方式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

想要看懂mina的源代码,需要做一些知识储备.
我大体列一下:
java.nio.*(java非阻塞io)
java.util.concurrent.*(原子类,阻塞集合,java并发)
java.thread(线程模型)
threadPool(线程池)
java.lang.reflect.InvocationHandler(动态代理)
invoke(反射)
jmx(平台管理)

需要用到几个设计模式:
观察者模式:observer
责任链模式:chain
异步模式(推) :Reactor
异步通知模式:Future(基于事件和回调模式)
状态机模式:state
工厂,单例,代理,工厂,....


下面展开讲述Filter实现里面的状态机:


DecodingState
DecodingStateMachine
DecodingStateProtocolDecoder
ProtocolCodecFactory
ProtocolCodecFilter
IoFilterChain(串联ioFilter)-->head-tail-addLast(中间加自定义的过滤器-)


贯穿始终的几个事件.
void exceptionCaught(IoSession session, Throwable cause)
当接口中其他方法抛出异常未被捕获时触发此方法
void messageReceived(IoSession session, Object message)
当接收到客户端的请求信息后触发此方法.
void messageSent(IoSession session, Object message)
当信息已经传送给客户端后触发此方法.
void sessionClosed(IoSession session)
当连接被关闭时触发,例如客户端程序意外退出等等.
void sessionCreated(IoSession session)
当一个新客户端连接后触发此方法.
void sessionIdle(IoSession session, IdleStatus status)
当连接空闲时触发此方法.
void sessionOpened(IoSession session)
当连接后打开时触发此方法,一般此方法与 sessionCreated 会被同时触发

2011-03-11-22:30-回家的火车上-第一次编译.


有两个东西没有记录:
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值