
netty4
文章平均质量分 93
zhenyutu
这个作者很懒,什么都没留下…
展开
-
Netty学习(一)—基本使用
Netty学习(一)—基本使用 Netty是基于Java NIO实现的Socket通信框架,相比于Java NIO操作更加简便同时一些改进也使其性能相对更好; 个人主页:tuzhenyu’s page 原文地址:Netty学习(一)—基本使用(0) 基于Netty服务端的创建服务端启动创建NioEventLoopGroup线程池实例来处理事件,如接受连接,读原创 2017-11-19 16:38:39 · 1440 阅读 · 0 评论 -
Netty源码分析(八)—内存池分析
Netty源码分析(八)—内存池分析 Netty内存池是将内存的分配管理起来减少内存碎片和避免内存浪费,Netty内存池参考了Slab分配和Buddy分配思想;Slab分配是将内存分割成大小不等的内存块,在用户线程请求时根据请求的内存大小分配最为贴近size的内存快,减少了内存碎片同时避免了内存浪费;Buddy分配是把一块内存块等量分割,回收时候进行合并,尽可能保证系统中有足够大的连续内存原创 2017-11-24 19:53:57 · 5555 阅读 · 1 评论 -
Netty源码分析(七)—Recycler对象池分析
Netty源码分析(七)—Recycler对象池分析 Netty中实现轻量级的对象池技术,用来减少因为频繁的对象创建销毁而触发的内存分配和GC带来的性能消耗;Recycler是netty轻量级对象池的具体实现; Netty使用ThreadLocal变量实现对象池的线程隔离进而实现对象池的无锁线程安全,相当于每个线程都维护着各自的小线程池 个人主页:tuzhenyu’s原创 2017-11-24 19:49:18 · 1139 阅读 · 0 评论 -
Netty源码分析(六)—Future和Promis分析
Netty源码分析(六)—Future和Promis分析 Future用来在异步执行中获取提前执行的结果 个人主页:tuzhenyu’s page 原文地址:Netty源码分析(六)—Future和Promis分析 (0) JDK中的Callable/Future模型Callable与Runnable的区别在于Callable线程执行有返回值,Callab原创 2017-11-24 19:42:13 · 1041 阅读 · 2 评论 -
Netty源码分析(五)—ByteBuf源码分析
Netty源码分析(五)—ByteBuf源码分析 在进行数据传输时往往需要使用缓冲区,Java NIO中使用Buffer作为缓冲区;七种基本数据类型都有自己的缓冲区实现,最常使用的是ByteBuffer,但是ByteBuffer也有局限性; Netty实现了缓冲区的池化技术,在一定程度上减少了频繁内存分配和GC带来的性能损耗 个人主页:tuzhenyu’s page原创 2017-11-23 19:16:44 · 1491 阅读 · 0 评论 -
Netty源码分析(四)—线程池EventLoopGroup源码分析
Netty源码分析(四)—线程池EventLoopGroup源码分析 Netty中的EventLoopGroup是对线程池的封装,采用Reactor模型实现了Netty多线程高性能; 个人主页:tuzhenyu’s page 原文地址:Netty源码分析(四)—线程池EventLoopGroup源码分析 (0) Reactor模型Reactor模型是一种经原创 2017-11-23 19:09:53 · 3335 阅读 · 1 评论 -
Netty源码分析(三)—数据管道ChannelPipeline源码分析
Netty源码分析(三)—数据管道ChannelPipeline源码分析 ChannelPipeline数据管道是ChannelHandler数据处理器的容器,负责ChannelHandler的管理和事件的拦截与调度 个人主页:tuzhenyu’s page 原文地址:Netty源码分析(三)—数据管道ChannelPipeline源码分析 (0) Channe原创 2017-11-22 15:46:00 · 4467 阅读 · 1 评论 -
Netty源码分析(二)—客户端初始化
Netty源码分析(二)—客户端初始化 传统Java NIO在客户端启动时会涉及到SocketChannel,Selector,selectorKey等类;Netty对Java NIO基础类进行了封装,减少用户开发工作量,降低开发难度; 个人主页:tuzhenyu’s page 原文地址:Netty源码分析(二)—客户端初始化 (0)客户端初始化客户端初始原创 2017-11-22 15:38:53 · 913 阅读 · 0 评论 -
Netty源码分析(一)—服务端初始化
Netty源码分析(一)—服务端初始化 传统Java NIO在服务端启动时会涉及到ServerSocketChannel,Selector,selectorKey等类;Netty对Java NIO基础类进行了封装,减少用户开发工作量,降低开发难度; 个人主页:tuzhenyu’s page 原文地址:Netty源码分析(一)—服务端初始化 (0) 服务端原创 2017-11-22 15:31:21 · 3935 阅读 · 1 评论 -
Netty学习(六)—WebSocket通信
Netty学习(六)—WebSocket通信 WebSocket是一种将Socket套接字引入到B/S架构中,使浏览器和服务器之间可以通过套接字建立持久连接,双方都能发送即时消息给对方,而不是传统模式下请求应答通信方式; 个人主页:tuzhenyu’s page 原文地址:Netty学习(六)—WebSocket通信 (0) 原理HTTP协议的弊端HT原创 2017-11-22 14:58:40 · 935 阅读 · 0 评论 -
Netty学习(五)—IdleStateHandler心跳机制
Netty学习(五)—IdleStateHandler心跳机制 Netty的IdleStateHandler心跳机制主要是用来检测远端是否存活,如果不存活或活跃则对空闲Socket连接进行处理避免资源的浪费; 个人主页:tuzhenyu’s page 原文地址:Netty学习(五)—IdleStateHandler心跳机制 (0)基础心跳机制心跳是在原创 2017-11-21 13:53:30 · 78476 阅读 · 7 评论 -
Netty学习(四)—LengthFieldBasedFrameDecoder解码器
Netty学习(四)—LengthFieldBasedFrameDecoder解码器 LengthFieldBasedFrameDecoder和LengthFieldPrepender组合是解决TCP粘包和拆包问题的最佳方案,通过将消息分为消息头和消息体记录消息长度解决读半包问题; 个人主页:tuzhenyu’s page 原文地址:Netty学习(四)—LengthFie原创 2017-11-20 20:24:15 · 2254 阅读 · 0 评论 -
Netty学习(三)—Codec编解码基础
Netty学习(三)—Codec编解码基础 Codec框架无论是decoder还是encoder本质上都是ChannelHandler处理器,用来将字节转换成基本数据类型或者将基本数据类型转换成字节; 个人主页:tuzhenyu’s page 原文地址:Netty学习(三)—Codec编解码基础解码器解码器用来将输入数据流按照特定的格式转换成目标程序格式,解码器原创 2017-11-20 16:24:20 · 2532 阅读 · 0 评论 -
Netty学习(二)—拆包粘包问题
Netty学习(二)—拆包粘包问题 无论是服务端还是客户端在进行数据发送收取的时候需要考虑TCP底层的粘包/拆包机制,因为如果不进行处理会造成收取的数据和预想的不一致; 个人主页:tuzhenyu’s page 原文地址:Netty学习(二)—拆包粘包问题(0) 拆包粘包的原因TCP粘包发生的原因粘包现象出现的根本原因是TCP协议是一个面向数据流的通信协原创 2017-11-20 13:49:44 · 1001 阅读 · 0 评论 -
Netty源码分析(九)—IO事件处理流程
Netty源码分析(九)—IO事件处理流程 Netty的IO事件主要包括Read读事件,Write写事件和Connect连接事件; 个人主页:tuzhenyu’s page 原文地址:Netty源码分析(九)—IO事件处理流程 (0) 读写事件实例服务端监听8080端口,如果收到客户端的时间查询指令则返回当前时间到客户端public class原创 2017-11-24 19:58:07 · 1366 阅读 · 1 评论