
Netty
文章平均质量分 72
skystep
这个作者很懒,什么都没留下…
展开
-
Netty 实现传输字符串
【代码】Netty 实现传输字符串。原创 2022-08-22 00:44:30 · 493 阅读 · 0 评论 -
Netty-解码器
该解码器是四个解码器中相对来说稍显复杂一点,不是实现复杂,是因为以下两个方面的原因:一是参数较多,二是准确计算各参数的值。1.发送端给每个数据包添加包首部,首部中应该至少包含数据包的长度,这样接收端在接收到数据后,通过读取包首部的长度字段,便知道每一个数据包的实际长度了。2.发送端将每个数据包封装为固定长度(不够的可以通过补0填充),这样接收端每次从接收缓冲区中读取固定长度的数据就自然而然的把每个数据包拆分开来。行解码器:使用换行符\n或者\r\n作为依据,遇到\n或者\r\n都认为是一条完整的消息。原创 2022-08-22 00:25:35 · 932 阅读 · 0 评论 -
Netty-自定义线程池处理长耗时业务
在Netty中,EventLoop 和 EventExecutorGroup 提供的普通任务不能解决长耗时业务处理引起的 I/O 线程阻塞问题,究其原因:在 Netty 中,一个 channel 在它的生命中期内只注册于一个 EventLoop,而一个 EventLoop 在它的生命周期内只和一个线程绑定,一个给定的 channel 的 I/O 操作都是由相同的线程进行处理。为此不能直接在该线程上进行长耗时业务处理。为了解决这个问题,通常的做法是:自定义线程池,把长耗时的业务都丢到线程池中去处理。原创 2022-08-22 00:16:42 · 1228 阅读 · 0 评论 -
图说 Netty 核心组件
Netty 功能非常强大,依赖于其团队对其高度抽象化和模块化,封装出各个组件,开发者只需要调用对应的组件便可以轻松构造出高性能服务。通常编写最简单高效的服务一般会涉及到如下组件:Channel、EventLoop、ChannelFuture:socket 管理、控制流、多线程、并发;ChannelHandler、ChannelPipeline:管理数据流和数据处理;ByteBuf:高效简单的数据读写缓存,数据读写容器;Encode、Decode:一套编解码框架;Bootstrap:配置服务参原创 2022-08-22 00:03:01 · 239 阅读 · 0 评论