1. 2.89 ByteBufAllocatorhistorical

    类体系 分配内存的工具类 ByteBufAllocator 这里的api只能区分heap还是direct,另外两个维度由AbstractByteBufAllocator的buffer方法实现 AbstractByteBufAllocator buffer方法 我们看看他的buffer方法 分配直接内

  2. 2.90 2.2AnnotationAwareAspectJAutoProxyCreator是在什么时候起作用的historical

    1. 继续研究BeanPostProcessor的postProcessBeforeInstantiation和postProcessAfterInitialization 我们把断点放行到 - AbstractAutoProxyCreator#postProcessBeforeInitializa

  3. 2.91 3.注册channelhistorical

    1. 要分析的代码 2. 选择一个NioEventLoop - config()返回ServerBootstrap - Serverbootstrap的group()返回EventLoopGroup,EventLoopGroup继承了MultithreadEventLoopGroup,所以调用的是M

  4. 2.92 异常事件historical

    1. 准备实验数据 - NettyServer - InboundHandlerA - InboundHandlerB - OutboundHandlerA - OutboundHandlerB 2. 开始debug 在 com.zsk.server.handler.InboundHandlerA#

  5. 2.93 使用historical

    使用的历史学习笔记

  6. 2.94 2.3AnnotationAwareAspectJAutoProxyCreator具体是怎么创建代理对象的historical

    1. 跟踪调用栈至postProcessBeforeInstantiation 我们继续放行断点,观察Calc实例的创建,断点主要停留在3个地方 2. 判断是否需要创建代理对象 - org.springframework.aop.framework.autoproxy.AbstractAutoPro

  7. 2.95 Channel类体系historical

    1. Channel类体系 1.1. Channel 用于网络IO 1.2. AbstractChannel Channel的骨架实现 1.3. AbstractNioChannel 使用Selector实现的Channel 1.4. AbstractNioByteChannel 操作字节流、对RE

  8. 2.96 2.4目标方法是怎么执行的historical

    1. 继续放行断点执行Calc.div 2. 进入到代理对象的intercept方法 - CglibAopProxy.DynamicAdvisedInterceptor#intercept 2.1. 获取拦截器链 - AdvisedSupport#getInterceptorsAndDynamicI

  9. 2.97 PooledByteBufAllocatorhistorical

    newDirectBuffer 主要分为两步,第一步时获取PoolThreadCache,进而获取PoolArena,第二步是通过PoolArena分配内存 通过PoolThreadLocalCache获取PoolThreadCache PoolThreadLocalCache其实是一个FastTh

  10. 2.98 PoolThreadCachehistorical

    构造方法 最关键的就是创建了三种大小的MemoryRegionCache,分别是tiny,small,normal