HashMap可能是我们使用最多的键值对型的集合类了,它的底层基于哈希表,采用数组存储数据,使用链表来解决哈希碰撞。在JDK1.8中还引入了红黑树来解决链表长度过长导致的查询...
SortedMap提供了获取最大值与最小值的方法,但对于一个已经排序的数据集,除了最大值与最小值之外,我们可以对任何一个元素,找到比它小的值和比它大的值,还可以按照按照原有的...
在介绍了Queue与Deque概念之后,这是要进行分析的第一个实现类。ArrayDeque可能大家用的都比较少,但其实现里有许多亮点还是值得我们关注的。 Deque的定义为d...
总结:线程池ThreadPoolExecutor是通过控制Worker对象的数量来维护工作的工人集合,并且通过任务队列workerQueue来存储提交到线程池的任务。通过配置...
【总结】:JDK动态代理的原理是通过目标对象提供的classloader、interfaces的Class对象数组、InvocatiionHandler提供的代理逻辑来重新定...
上一节眼研究了PooledByteBufAllocator分配内存的前两个步骤,通过ThreadLocal的方式拿到PoolThreadCache之后,获取对应的Arena。...
上一节分析了UnpooledByteBufAllocator,包括了堆内堆外内存是如何分配的,底层时时如何获取数据内容的。本节分析分析PooledByteBufAllocat...
上一节查看了ByteBufAllocator,并了解了其抽象实现,和一些根据不同的内存类型进行内存分配的思路。 本节研究UnpooledByteBufAllocator,包括...
上一节简单理解了以下ByteBuf的结构。详细的api还需要自己夺取尝试。 本节学些ByteBufAllocator,内存分配器(管理器) 查看ByteBufAllocato...
本节开始学习netty的内存分配机制,搜先是ByteBuf。 作为一个容器,源码中的如下。有三块区域 discardable bytes:无效空间(已经读取过的空间),可丢弃...
leecode刷题(1)-- 删除排序数组中的重复项 删除排序数组中的重复项 给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度...
从18到23节都是在学习pipeline里面的内容,包括了ChannelHandler,ChannelHandlerContext,事件的传播。本节进行总结一下。 pipel...
上一节研究了outbound事件的传播过程,是和ChannelOutboundHandler的添加顺序相反的。从pipeline或者channel调用outbound事件的传...