摘要: 一、Xml 文件读取流程 1. 通过继承自 AbstractBeanDefinitionReader 中的方法,来使用 ResourceLoader 将资源文件路径转换为对应的 Resource 文件; 2. 通过 DocumentLoader 对 Resource 文件进行转换,将 Resourc 阅读全文
posted @ 2019-10-23 17:58 莹狼 阅读(262) 评论(0) 推荐(0) 编辑
摘要: 前面讲到,Xml中的标签分为两种,一种是Spring默认标签,例如 <bean id="bookService" class="com.newcoder.api.BookService">,另一种是自定义标签,例如 <mvc:annotation-driven />,这一节,我们就来看看默认标签和自 阅读全文
posted @ 2019-10-23 17:58 莹狼 阅读(576) 评论(0) 推荐(0) 编辑
摘要: 一、Future Future源自java.util.concurrent.Future,用于获取异步操作的结果,它通过get()方法获取异步操作结果,操作尚未完成,则阻塞。 Netty认为这是一个很不好的设计,操作结束时间难以确定,何不通过回调的方式获取结果呢。Netty的ChannelFutur 阅读全文
posted @ 2019-09-25 14:56 莹狼 阅读(242) 评论(0) 推荐(0) 编辑
摘要: 一、NioEventLoop与NioEventLoopGroup的关系 二、NioEventLoop 1. 设计原理 1. 负责IO读写 2. 执行task。通过调用NioEventLoop的execute(Runnable task)方法实现。我们知道,为了防止资源竞争和并发操作,我们经常会判断当 阅读全文
posted @ 2019-09-25 14:56 莹狼 阅读(743) 评论(0) 推荐(0) 编辑
摘要: 前言:ChannelPipeline和ChannelHandler是类似于Spring拦截器的一种实现,数据在pipeline中传播,每个ChannelHandler处理自己感兴趣的部分。 一、ChannelPipeline ChannelPipeline是ChannelHandler的容器,负责C 阅读全文
posted @ 2019-09-25 14:56 莹狼 阅读(147) 评论(0) 推荐(0) 编辑
摘要: Unsafe类实际上是Channel接口的辅助类,实际的IO操作都是由Unsafe接口完成的。 一、Unsafe继承关系图 二、AbstractUnsafe源码分析 1. register方法 register方法主要用于将当前Unsafe对应的Channel注册到EventLoop的多路复用器上, 阅读全文
posted @ 2019-09-25 14:56 莹狼 阅读(918) 评论(0) 推荐(0) 编辑
摘要: 我们知道,Java NIO的ByteBuffer只有一个position指针标识位置,读写切换时需要调用flip()方法,这样容易出错。而Netty为了解决这个问题,使用了两个指针readerIndex、writerIndex。当然,Netty的ByteBuf的功能不仅仅如此,让我们一起看看Nett 阅读全文
posted @ 2019-09-25 14:56 莹狼 阅读(988) 评论(0) 推荐(0) 编辑
摘要: 一、Channel介绍 Channel中的NioServerSocketChannel 和 NioSocketChannel 分别于 NIO中的 ServerSocketChannel、SocketChannel对应。不同的是,Netty的Channel将NIO中的Channel聚合在自己对象内部, 阅读全文
posted @ 2019-09-25 14:55 莹狼 阅读(462) 评论(0) 推荐(0) 编辑
摘要: 前言:在阅读Netty源码前,我们先了解下Netty的基本使用方法。 一、服务端代码 二、客户端代码 阅读全文
posted @ 2019-09-25 14:55 莹狼 阅读(159) 评论(0) 推荐(0) 编辑
摘要: 前言:我们知道,Netty是基于NIO开发的一套框架,在学习Netty之前,我们先学习下Java NIO。 一、IO多路复用模型 IO多路复用模型使用了Reactor设计模式,主要有三种实现:Reacotr单线程、Reactor多线程、Reactor主从模式。 1. Reactor单线程 在Reac 阅读全文
posted @ 2019-09-25 14:55 莹狼 阅读(301) 评论(0) 推荐(0) 编辑