摘要: 一、Future Future源自java.util.concurrent.Future,用于获取异步操作的结果,它通过get()方法获取异步操作结果,操作尚未完成,则阻塞。 Netty认为这是一个很不好的设计,操作结束时间难以确定,何不通过回调的方式获取结果呢。Netty的ChannelFutur 阅读全文
posted @ 2019-09-25 14:56 莹狼 阅读(239) 评论(0) 推荐(0) 编辑
摘要: 一、NioEventLoop与NioEventLoopGroup的关系 二、NioEventLoop 1. 设计原理 1. 负责IO读写 2. 执行task。通过调用NioEventLoop的execute(Runnable task)方法实现。我们知道,为了防止资源竞争和并发操作,我们经常会判断当 阅读全文
posted @ 2019-09-25 14:56 莹狼 阅读(719) 评论(0) 推荐(0) 编辑
摘要: 前言:ChannelPipeline和ChannelHandler是类似于Spring拦截器的一种实现,数据在pipeline中传播,每个ChannelHandler处理自己感兴趣的部分。 一、ChannelPipeline ChannelPipeline是ChannelHandler的容器,负责C 阅读全文
posted @ 2019-09-25 14:56 莹狼 阅读(146) 评论(0) 推荐(0) 编辑
摘要: Unsafe类实际上是Channel接口的辅助类,实际的IO操作都是由Unsafe接口完成的。 一、Unsafe继承关系图 二、AbstractUnsafe源码分析 1. register方法 register方法主要用于将当前Unsafe对应的Channel注册到EventLoop的多路复用器上, 阅读全文
posted @ 2019-09-25 14:56 莹狼 阅读(885) 评论(0) 推荐(0) 编辑
摘要: 我们知道,Java NIO的ByteBuffer只有一个position指针标识位置,读写切换时需要调用flip()方法,这样容易出错。而Netty为了解决这个问题,使用了两个指针readerIndex、writerIndex。当然,Netty的ByteBuf的功能不仅仅如此,让我们一起看看Nett 阅读全文
posted @ 2019-09-25 14:56 莹狼 阅读(969) 评论(0) 推荐(0) 编辑
摘要: 一、Channel介绍 Channel中的NioServerSocketChannel 和 NioSocketChannel 分别于 NIO中的 ServerSocketChannel、SocketChannel对应。不同的是,Netty的Channel将NIO中的Channel聚合在自己对象内部, 阅读全文
posted @ 2019-09-25 14:55 莹狼 阅读(402) 评论(0) 推荐(0) 编辑
摘要: 前言:在阅读Netty源码前,我们先了解下Netty的基本使用方法。 一、服务端代码 二、客户端代码 阅读全文
posted @ 2019-09-25 14:55 莹狼 阅读(158) 评论(0) 推荐(0) 编辑
摘要: 前言:我们知道,Netty是基于NIO开发的一套框架,在学习Netty之前,我们先学习下Java NIO。 一、IO多路复用模型 IO多路复用模型使用了Reactor设计模式,主要有三种实现:Reacotr单线程、Reactor多线程、Reactor主从模式。 1. Reactor单线程 在Reac 阅读全文
posted @ 2019-09-25 14:55 莹狼 阅读(298) 评论(0) 推荐(0) 编辑
摘要: package newcoder; import java.util.HashMap; import java.util.List; import java.util.Stack; public class UnionFind { public static class Element<V> { public V value; public Element (V value) { this.val 阅读全文
posted @ 2019-09-25 14:54 莹狼 阅读(102) 评论(0) 推荐(0) 编辑
摘要: 规范:节点size不小于兄弟节点的任意一个子节点size(不能比侄子小) 阅读全文
posted @ 2019-09-25 14:54 莹狼 阅读(206) 评论(0) 推荐(0) 编辑
摘要: import java.util.ArrayList; import java.util.Comparator; import java.util.List; /** 定义: 1. 节点中元素升序排序 2. 每个叶节点有相同的高度 3. 节点有 n 个元素,至多有 n+1 个子节点 4. 每个节点最少 t-1 个元素,最多 2t-1个元素( t 由程序员指定) 5. 根节点至少2个子节点 搜索:按 阅读全文
posted @ 2019-09-25 14:53 莹狼 阅读(100) 评论(0) 推荐(0) 编辑