Netty5 学习
基于Netty权威指南全面学习Netty用法
全栈编程网
这个作者很懒,什么都没留下…
展开
-
Netty学习之十二 —— ByteBuf 和相关辅助类
当我们进行数据传输的时候,往往需要使用到缓冲区,常用的缓冲区是 JDK NIO 类库提供的 java.nio.Buffer。 ByteBuffer的缺点: 1. ByteBuffer 长度固定,一旦分配完成,它的容量不能动态扩展和收缩,当需要编码的 POJO 对象大于 ByteBuffer 的容量时,会发生索引越界异常; 2. ByteBuffer 只有一个标识位置的指针 position,...原创 2019-04-15 10:43:32 · 205 阅读 · 0 评论 -
Netty学习之十一 —— 客户端创建原理讲解和源码分析
1、Netty 客户端创建时序图 1、用户线程创建 Bootstrap实例,通过 API 设置创建客户端相关的参数,异步发起客户端连接。 2、创建处理客户端连接、I/O 读写的 Reactor 线程组 NioEventLoopGroup。可以通过构造函数指定 I/O 线程的个数,默认为 CPU 内核数的 2 倍。 3、通过 Bootstrap 的 ChannelFactory 和用...原创 2019-04-15 09:21:27 · 146 阅读 · 0 评论 -
Netty学习之十—— 服务端创建原理讲解和源码分析
Netty服务端创建需要的必备知识: 1、熟悉 JDK NIO 主要类库的使用,例如ByteBuffer、Selector、ServerSocketChannel等; 2、熟悉 JDK 的多线程编程; 3、了解 Reactor 模式。 Netty 服务端创建源码分析 1、Netty 服务端创建时序图 步骤: 1. 创建 ServerBootstrap 实例。ServerBoots...原创 2019-04-11 20:55:39 · 193 阅读 · 0 评论 -
Netty学习之九—— 文件服务器开发(Http服务端)
待续原创 2019-04-11 19:38:59 · 346 阅读 · 0 评论 -
Netty学习之八—— MessagePack 编解码
1、MessagePack 介绍 1、编解码高效、性能高; 2、序列化之后的码流小; 3、支持跨语言。 <!-- https://mvnrepository.com/artifact/org.msgpack/msgpack --> <dependency> <groupId>org.msgpack</groupId> <...原创 2019-04-11 16:23:12 · 404 阅读 · 0 评论 -
Netty学习之七—— 编解码技术性能对比
1、Java序列化的缺点 1、无法跨语言; 2、序列化后的码流太大; 测试代码如下: package com.netty.pojo; import java.io.Serializable; import java.nio.ByteBuffer; public class User implements Serializable{ private static fin...原创 2019-04-11 11:04:36 · 289 阅读 · 0 评论 -
Netty学习之六—— 粘包/拆包 之 固定长度解码器FixedLengthFrameDecoder的应用
FixedLengthFrameDecoder 是固定长度解码器,它能够按照指定的长度对消息进行自动解码,开发者不需要考虑 TCP的粘包/拆包问题,非常实用。 客户端代码: package com.netty.echo; import io.netty.bootstrap.ServerBootstrap; import io.netty.buffer.ByteBuf; import io....原创 2019-04-11 09:48:40 · 706 阅读 · 0 评论 -
Netty学习之五—— 粘包/拆包 之 分隔符解码器DelimiterBasedFrameDecoder的应用
DelimiterBasedFrameDecoder 应用开发 通过对 DelimiterBasedFrameDecoder 的使用,可以自动完成以分隔符作为码流结束标识的消息的解码。 演示程序以经典的 Echo 服务为例。EchoServer 接收到 EchoClient 的请求消息后,将其打印出来,然后将原始消息返回给客户端,消息以“$_” 作为分隔符。 服务端代码: pack...原创 2019-04-11 09:35:31 · 691 阅读 · 0 评论 -
Netty学习之四—— TCP 粘包/拆包
目录 概念 1. TCP 粘包/拆包问题说明 2、TCP 粘包/拆包发生的原因 未考虑 TCP 粘包导致功能异常案例 利用LineBasedFrameDecoder 解决TCP 粘包问题 LineBasedFrameDecoder 和 StringDecoder 的原理分析 概念 TCP 是个“流”协议,所谓流,就是没有界限的一串数据。TCP底层并不了解上层业务数据的具体含义...原创 2019-04-10 19:31:18 · 133 阅读 · 0 评论 -
Netty学习之三—— Netty 实现 NIO操作
pom <dependency> <groupId>io.netty</groupId> <artifactId>netty-all</artifactId> <version>5.0.0.Alpha2</version> </dependency> 服务端代码: pac...原创 2019-04-10 16:23:33 · 545 阅读 · 0 评论 -
Netty学习之二——BIO、NIO、AIO
目录 BIO BIO 通信模型图 伪异步I/O编程 伪异步I/O模型图 伪异步I/O弊端分析 NIO NIO类库简介 1、缓冲区buffer 2、通道 Channel 3、多路复用器 Selector NIO服务端序列图 NIO 客户端创建序列 AIO 总结: 不同 I/O 模型对比 BIO 网络编程的基本模型是Client/Server 模...原创 2019-04-09 21:07:25 · 198 阅读 · 0 评论 -
Netty学习之一——I/O模型概念篇
目录 Unix提供的五种I/O模型 1、阻塞I/O模型: 2、非阻塞I/O模型: 3、I/O复用模型: 4、信号驱动I/O模型: 5、异步I/O: I/O多路复用技术 epoll 相比select的改进: Unix提供的五种I/O模型 1、阻塞I/O模型: 最常用的I/O模型就是阻塞I/O模型,缺省情况下所有文件操作都是阻塞的。我们以套接...原创 2019-04-09 11:55:34 · 175 阅读 · 0 评论