![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Netty
全栈编程网
这个作者很懒,什么都没留下…
展开
-
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 · 554 阅读 · 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 · 149 阅读 · 0 评论 -
Netty学习之二——BIO、NIO、AIO
目录BIOBIO 通信模型图伪异步I/O编程伪异步I/O模型图伪异步I/O弊端分析NIONIO类库简介1、缓冲区buffer2、通道 Channel3、多路复用器 SelectorNIO服务端序列图NIO 客户端创建序列AIO总结:不同 I/O 模型对比BIO 网络编程的基本模型是Client/Server 模...原创 2019-04-09 21:07:25 · 210 阅读 · 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 · 186 阅读 · 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 · 198 阅读 · 0 评论 -
Netty学习之九—— 文件服务器开发(Http服务端)
待续原创 2019-04-11 19:38:59 · 350 阅读 · 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 · 412 阅读 · 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 · 303 阅读 · 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 · 730 阅读 · 0 评论 -
Netty学习之五—— 粘包/拆包 之 分隔符解码器DelimiterBasedFrameDecoder的应用
DelimiterBasedFrameDecoder 应用开发通过对 DelimiterBasedFrameDecoder 的使用,可以自动完成以分隔符作为码流结束标识的消息的解码。演示程序以经典的 Echo 服务为例。EchoServer 接收到 EchoClient 的请求消息后,将其打印出来,然后将原始消息返回给客户端,消息以“$_” 作为分隔符。服务端代码:pack...原创 2019-04-11 09:35:31 · 706 阅读 · 0 评论 -
Netty学习之四—— TCP 粘包/拆包
目录概念1. TCP 粘包/拆包问题说明2、TCP 粘包/拆包发生的原因未考虑 TCP 粘包导致功能异常案例利用LineBasedFrameDecoder 解决TCP 粘包问题LineBasedFrameDecoder 和 StringDecoder 的原理分析概念TCP 是个“流”协议,所谓流,就是没有界限的一串数据。TCP底层并不了解上层业务数据的具体含义...原创 2019-04-10 19:31:18 · 144 阅读 · 0 评论 -
Netty学习之十二 —— ByteBuf 和相关辅助类
当我们进行数据传输的时候,往往需要使用到缓冲区,常用的缓冲区是 JDK NIO 类库提供的 java.nio.Buffer。ByteBuffer的缺点:1. ByteBuffer 长度固定,一旦分配完成,它的容量不能动态扩展和收缩,当需要编码的 POJO 对象大于 ByteBuffer 的容量时,会发生索引越界异常;2. ByteBuffer 只有一个标识位置的指针 position,...原创 2019-04-15 10:43:32 · 213 阅读 · 0 评论