随笔分类 - onequeue
onequeue
摘要:通过PoolSubpage构造时打断点追踪如何分配pageSize,elemSize PoolArena normalizeCapacity方法分配 elemSize 我们使用简化的方式来实现PoolSubpage bitmap处理逻辑,方便读者明白如何用long来做储存,应用大量的 & | >>>
阅读全文
摘要:小结: 由于CompositeByteBuf太部份逻辑处理是对区块处理,不具有分析价值,本人认为有价值部分为二分查找算法实践同Iterable实现
阅读全文
摘要:小结: 1.setBytes getBtyes逻辑基本是相同,只需要对换src dst 2.当判断是否src.nioBufferCount() 分支时其实写死也行,只不过为以后兼容其它类型ByteBuf
阅读全文
摘要:每种ByteBuf都有相应的分配器ByteBufAllocator,类似工厂模式。我们先学习UnpooledHeapByteBuf与其对应的分配器UnpooledByteBufAllocator 如何知道alloc分配器那是个? 可以从官方下载的TimeServer 例子来学习,本项目已有源码可在
阅读全文
摘要:因为jdk ByteBuffer使用起来很麻烦,所以netty研发出ByteBuf对象维护管理内存使用ByteBuf有几个概念需要知道1.向ByteBuf提取数据时readerIndex记录最后读取坐标,目的是下次从readerIndex开始读2.向ByteBuf写入数据时writerIndex记录
阅读全文
摘要:netty Future是基于jdk Future扩展,以监听完成任务触发执行Promise是对Future修改任务数据DefaultPromise是重要的模板类,其它不同类型实现基本是一层简单的包装,如DefaultChannelPromise主要是分析await是如何等侍结果的
阅读全文
摘要:Unsafe是托委访问socket,那么Channel是直接提供给开发者使用的 Channel 主要有两个实现 NioServerSocketChannel同NioSocketChannel 致于其它不常用不在研究范围内 NioServerSocketChannel 是给server用的,程序由始至
阅读全文
摘要:Unsafe 是channel的内部接口, 负责跟socket底层打交道。从书写跟命名上看是不公开给开发者使用的,直到最后实现NioSocketChannelUnsafe也没有公开出去 NioSocketChannelUnsafe 继承关系为: NioSocketChannelUnsafe -> N
阅读全文
摘要:ChannelPipeline 负责channel数据进出处理,如数据编解码等。采用拦截思想设计,经过A handler处理后接着交给next handler ChannelPipeline 并不是直接管理handler 而是通过 context 包装管理,一般以context 命名的是个重量级对象
阅读全文
摘要:分析NioEventLoopGroup最主有两个疑问 1.next work如何分配NioEventLoop 2.boss group 与child group 是如何协作运行的 从EventLoopGroup接口约定通过register方法从channel或promise转换成ChannelFut
阅读全文
摘要:NioEventLoop 是jdk nio多路处理实现同修复jdk nio的bug 1.NioEventLoop继承SingleThreadEventLoop 重用单线程处理 2.NioEventLoop是组成 pool EventLoopGroup 基本单元 总之好多边界判断跟业务经验之类的代码,
阅读全文
摘要:eventLoop是基于事件系统机制,主要技术由线程池同队列组成,是由生产/消费者模型设计,那么先搞清楚谁是生产者,消费者内容 SingleThreadEventLoop 实现 SingleThreadEventLoop是个抽象类,从实现代码上看出很简单的逻辑边界判断 SingleThreadEve
阅读全文
摘要:eventLoop从命名上看是专门处理事件 事件系统主要由线程池同队列技术组成,有以下几个优点 1.任务出队有序执行,不会出现错乱,当然前提执行线程池只有一个 2.解偶系统复杂度,这是个经典的生产者/消费者模型,生产者只需要生成执行上下文需要的数据,消费者集中实现处理逻辑,无需要关注太多关系层次问题
阅读全文
摘要:在分析源码之前有几个疑问 1.BOSS线程如何转交给handle(业务)线程2.职业链在那个阶段执行3.socket accept 后转给上层对象是谁4.netty控流算法 另外要了解netty的对象设计职责 1.channel2.pipeline3.promise4.eventLoop5.hand
阅读全文
摘要:严格来讲Netty Reactor是一种设计模式,一听模式两字就知道了吧,套路哈哈 Reactor中文译为“反应堆”. 看图netty处理流程 1.netty server 至少有两组reactor。boss同child 2.boss负责提取nio SelectionKey,将key操作如serve
阅读全文
摘要:OSI(Open System Interconnect),即开放式系统互联。 一般都叫OSI参考模型,是ISO(国际标准化组织)组织在1985年研究的网络互联模型。 该体系结构标准定义了网络互连的七层框架(物理层、数据链路层、网络层、传输层、会话层、表示层和应用层),即ISO开放系统互连参考模型。
阅读全文
摘要:jdk1.7支持sctp协议,需要linux安装sctp支持库 测试代码 导出ClientSCTP.class,ServerSCTP.class 环境部署 1.linux检查是否支持sctp,官方提示必须内核2.6版本以上,有信息显示代表已安装 lsmod | grep sctp 1.1如果没有就下
阅读全文
摘要:接下来突破65000连接,因为要模拟大规模情况,测试机子有限,所以最好每台机子分配65000*2+以上 这里突破指的是单台机子client超过65000端口限制,当然最终也要server支撑得起 解决思路是server添加虚拟IP,添加好后 ping 成功证明生效了,然后执行client测试,结果突
阅读全文
摘要:把测试代码ServerAio.class,ClientAio.class打包成jar,丢给linux系统跑server,window跑client 其中添加两个shell文件,因为原系统装有java6,建立个sh不同版本java共存 java8.sh systeminfo.sh jdk: java
阅读全文
摘要:asynchronous I/O (the POSIX aio_functions)—————异步IO模型最大的特点是 完成后发回通知。 与NIO不同,当进行读写操作时,只须直接调用API的read或write方法即可。这两种方法均为异步的,对于读操作而言,当有流可读取时,操作系统会将可读的流传入r
阅读全文

浙公网安备 33010602011771号