源码解读

Mina源码阅读笔记(七)—Mina的拦截器FilterChain

余生颓废 提交于 2020-01-08 13:34:38
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 接上一篇 《异步IO实现IoFuture》 Filter 我们很熟悉,在 Mina 中, filter chain 的用法也类似于 Servlet 的 filters ,这种拦截器的设计思想能够狠轻松的帮助我们实现对资源的统一处理。我们先大致连接下 mina 中的 filter 能给我们带来什么。 LoggingFilter logs all events and requests. ProtocolCodecFilter converts an incoming ByteBuffer into message POJO and vice versa. CompressionFilter compresses all data. SSLFilter adds SSL - TLS - StartTLS support. and many more! 当然这中间最实用,而且源码篇幅最多的就是对 codec 的拦截器,这部分的应用就是可以实现自定义的编码器和解码器,并附上自定义的协议来进行通信。这部分的应用可以看: 《 Mina实现自定义协议的通信 》 在Mina源码中,对filter的描述主要分两部分,org.apache.mina.core.filterchain以及org.apache.mina.filter.

Mina源码阅读笔记(五)—Mina对连接的操作IoSession

*爱你&永不变心* 提交于 2020-01-08 13:34:21
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 接上一篇 《Mina的连接IoConnector》 IoSession 是 Mina 管理两端的一个重要部分,也是 Mina 的核心, Session 具有了生命周期的概念,它的生命周期和连接时紧密相关的,这点在后面的介绍中会涉及。另外,好像 hibernate 中也有 session 也有生命周期(真的是好久没有用了,连 hibernate 有里 session 是干嘛的都想不起来了)。 在读源码之前,我们还是先了解下IoSession的作用和一些基本概念。IoSession的主要作用有如下一些: l 管理连接。注意,这里的管理连接并不是直接去控制我们上次讲的最底层的连接 acceptor 和 connector 。如果 acceptor 和 connector 建立的一条管道,那 session 就是在管道内的管理者,他是没有办法将管道对半拆分开的,他只能从内部阻断两边的通信。管理连接还有部分就是可以配置缓冲区的大小,闲置时间等等。 l 存储信息。和 web 里的 session 一样,这里的 session 也有存储 attribute 的功能,不过一般来说,这里存储的都是和连接有关的东西,并不会像 web 开发一样存一些业务上的东西。 l 驱动读写操作。我不知道用驱动这个词是否合适,那个例子来说,

Mina源码阅读笔记(三)-Mina的连接IoAccpetor

一曲冷凌霜 提交于 2020-01-08 13:27:17
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 接着上篇 《IoBuffer的封装》 . 其实在 mina 的源码中, IoService 可以总结成五部分 service 责任、 Processor 线程处理、 handler 处理器、接收器和连接器,分别对应着 IoService 、 IoProcessor 、 IoHandler 、 IoAcceptor 和 IoConnector 。在代码的中有如下包跟 IoService 关系密切: org.apache.mina.core.service org.apache.mina.transport.* org.apache.mina.core.polling 这个包主要是实现了轮询策略 其中 core.service 包中主要定义了上面五个部分的接口,以及 IoHandler 和 IoProcessor 的实现( Handler 是一种常见的设计模式,具体的业务其实并没有多少,只是在结构上将层次划分的更清楚。 Processor 是 mina 内部定义的接口,一般不对外使用,用 mina 官方的话,主要performs actual I/O operations for IoSession. 这一部分我想放在IoSession中来讲)。而在 transport 包中实现了具体的连接方式,当然

Mina源码阅读笔记(二)- IoBuffer的封装

筅森魡賤 提交于 2020-01-08 13:27:06
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 上一篇 《整体解读》 的延续。。 在阅读 IoBuffer 源码之前,我们先看 Mina 对 IoBuffer 的描述: A byte buffer used by MINA applications. This is a replacement for ByteBuffer. 这是一个对 ByteBuffer 的 replacement ,同样是用作缓冲区,做内容的切换和承载的容器,为什么要用重新封装 ByteBuffer , MINA 是这么给出解释的 Two Reasons : l It doesn't provide useful getters and putters l It is difficult to write variable-length data due to its fixed capacity 用过 ByteBuffer 的人可能经常会遇到BufferOverflowException这样的异常,原因是 buffer 在初始化 allocate 之后就不能再自动的改变大小了,如果项目很规整,约定的很好,那可能不太会出意外,怕就怕项目一大,好多东西就乱套了。所以在阅读 IoBuffer 源码的时候,我们会着重看它和 ByteBuffer 之间的差异。另外一点,就是 IoBuffer

Mina源码阅读笔记(一)-整体解读

人走茶凉 提交于 2020-01-08 13:11:16
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 今天的这一节,将从整体上对 mina 的源代码进行把握,网上已经有好多关于 mina 源码的阅读笔记,但好多都是列举了一下每个接口或者类的方法。我倒是想从 mina 源码的结构和功能上对这个框架进行剖析。源码的阅读一般有如下几种方法:第一,根据问题读源码,这种方法可能用的最多,哪里有问题了,然后 F3 一步步点进去;第二种,专门为了读源码而读,从整体到局部,总用法到设计。第三种,可是根据软件的设计特点,根据特点逐一解读。这几篇文章主要将根据第三种方法进行阅读,因为 mina 的各个模块很有条理,而且我关注的重点也主要分布在几个核心点上,对我来说,这样的读法更合理。 Apache MINA is a network application framework which helps users develop high performance and high scalability network applications easily. It provides an abstract ·event-driven · asynchronous API over various transports such as TCP/IP and UDP/IP via Java NIO. 写过 NIO 的人都知道, NIO

Spring 源码解读 推荐流程

为君一笑 提交于 2019-12-14 17:15:34
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> Spring源代码解析(一):IOC容器:http://www.javaeye.com/topic/86339 Spring源代码解析(二):IoC容器在Web容器中的启动:http://www.javaeye.com/topic/86594 Spring源代码解析(三):Spring JDBC:http://www.javaeye.com/topic/87034 Spring源代码解析(四):Spring MVC:http://www.javaeye.com/topic/87692 Spring源代码解析(五):Spring AOP获取Proxy:http://www.javaeye.com/topic/88187 Spring源代码解析(六):Spring声明式事务处理:http://www.javaeye.com/topic/88189 Spring源代码解析(七):Spring AOP中对拦截器调用的实现:http://www.javaeye.com/topic/107785 Spring源代码解析(八):Spring驱动Hibernate的实现:http://www.javaeye.com/topic/110801 Spring源代码解析(九):Spring Acegi框架鉴权的实现:http:/