
netty
君君要上天
每天学习一点点,每天提升一点点。
展开
-
netty轻松入门(四)—— 数据容器ByteBuf
数据在网络中是以二进制形式传输的,在java中我们使用字节数组来表示。 在使用netty开发时,你会发现netty使用ByteBuf将字节数组包装起来,ByteBuf是netty中的数据容器,一切针对数据的操作以ByteBuf为基础 JDK中也有字节数组的容器类ByteBuffer。但ByteBuffer有一些缺陷: 无法支持同时读写数据,从读切换到写,或从写切换到读时,需要手动调用flip()方法重置一下。 字节数组长度固定,无法扩容 因此netty才开发了ByteBuf,弥补了ByteBuffer的原创 2020-11-29 23:34:27 · 891 阅读 · 0 评论 -
netty轻松入门(三)—— pipeline与handler
netty使用NioEventLoopGroup处理连接,读,写等IO事件,使用pipeline-handler真正处理业务。 在日常开发中,我们通常都将注意力集中在业务handler的编写上,对于NioEventLoopGroup的关注相对较少,因此我们很有必要了解到底什么是pipeline,pipeline是如何工作的 handler handler是处理读写事件的处理器,也是我们真正的业务处理器。handler主要分为两种类型: ChannelInboundHandler:处理入站事件 Channe原创 2020-11-28 22:53:37 · 1093 阅读 · 4 评论 -
netty轻松入门(二)—— 第一个netty应用
看了上一篇netty轻松入门(一)——netty线程模型,应用对netty有个大致的了解。 现在我们就用netty实现一个简单的服务 需求很简单: 服务端起一个服务,监听1010端口 客户端连接,并发送一个hello server 服务端收到hello server后,响应一个hello client 服务端主动关闭连接 环境配置 首先你要安装JDK,具体步骤就不说了 安装maven或者gradle(我使用gradle) 创建工程,引入netty包 gradle: compile group: 'i原创 2020-11-28 14:21:02 · 424 阅读 · 1 评论 -
netty轻松入门(一)—— netty线程模型
传统IO是启动一个ServerSocket,单线程阻塞监听端口,性能较差。 而netty基于NIO,设计了自己的线程模型,将接收请求的线程和处理业务的线程分开,从而提高性能。 在netty中,负责接收请求的线程池叫做Boss,而负责处理业务的线程池叫做worker。其实他两的类型都是NioEventLoopGroup,boss和worker只是我们取的外号,形象地说明了他们的职责分别是老板和打工人。 老板接订单,打工人处理订单。大致示意图如下: 当然,上图只是最简单的示意图,实际情况复杂的多。 NioEv原创 2020-11-27 23:31:18 · 333 阅读 · 0 评论