Netty 权威指南-07-Netty example 例子学习
netty.example 包
可以直接参见 https://netty.io/4.1/xref/overview-summary.html
以 netty.example 开头的包。
netty 学习的难点
国内的资料较少,书籍其实也不多。
netty 官网的 document 内容其实不多,就是前面提到的几节。
可以说,netty 和 java nio 一样,入门相对容易,...
2019-05-10 03:08:59 |
Netty
Netty 权威指南-06-使用 POJO 代替 Bytebuf
情景导入
学习了前面的基础信息,我们发现我们的大部分内容都是基于 Bytebuf 去处理的。
对于 java 这一门 OO 的语言而言,我们更加习惯的是使用 Pojo 去处理。
代码示例
对象定义
UnixTime.java
public class UnixTime {
private final long value;
public UnixTim...
2019-05-10 03:08:59 |
Netty
Netty 权威指南-05-拆包和粘包
TCP为什么会粘包/拆包
我们知道,TCP是以一种流的方式来进行网络转播的,当tcp三次握手建立通信后,客户端服务端之间就建立了一种通讯管道,我们可以想象成自来水管道,流出来的水是连城一片的,是没有分界线的。
TCP底层并不了解上层的业务数据的具体含义,它会根据TCP缓冲区的实际情况进行包的划分。
所以对于我们应用层而言。
我们直观是发送一个个连续完整TCP数据包的,而在底层就可能会...
2019-05-10 03:08:59 |
Netty
Netty 权威指南-04-为什么选择 Netty?Netty 入门教程
JDK 编程
感受了上面的 java 中的 BIO/NIO/AIO 详解,不知道你是否觉得 jdk 直接编程非常麻烦?
还有很多情况需要去考虑处理,还有性能相关的问题、稳定性问题,拓展性问题。
不选择Java原生NIO编程的原因
现在我们总结一下为什么不建议开发者直接使用JDK的NIO类库进行开发,具体原因如下。
(1) NIO的类库和API繁杂,使用麻烦,你需要熟练掌握Selec...
2019-05-10 03:08:59 |
Netty
Netty 权威指南-03-AIO 案例
JDK AIO
jdk7中新增了一些与文件(网络)I/O相关的一些api。这些API被称为NIO.2,或称为AIO(Asynchronous I/O)。
AIO最大的一个特性就是异步能力,这种能力对socket与文件I/O都起作用。
实现方式
Future 方式
即提交一个 I/O 操作请求(accept/read/write),返回一个 Future。
然后您可以对...
2019-05-10 03:08:59 |
Netty
Netty 权威指南-02-NIO 案例
NIO 基本概念
Buffer
Java NIO Buffers用于和NIO Channel交互。正如你已经知道的,我们从channel中读取数据到buffers里,从buffer把数据写入到channels.
buffer 本质上就是一块内存区,可以用来写入数据,并在稍后读取出来。
这块内存被NIO Buffer包裹起来,对外提供一系列的读写方便开发的接口。
Channel
...
2019-05-10 03:08:59 |
Netty
Netty 权威指南-01-BIO 案例
java 的 IO 演进之路
我们在前面学习了 linux 的 5 种 I/O 模型详解
下面我们一起来学习下如何使用 java 实现 BIO/NIO/AIO 这 3 种不同的网络 IO 模型编程。
BIO 编程
BIO 作为最基础的 IO 版本,实现起来比较简单。
Server
import java.io.BufferedReader;
import java.io.IO...
2019-05-10 03:08:59 |
Netty
Netty 权威指南-00-overview
Netty 权威指南学习目的
可以结合 dubbo,自己实现一份 dubbo。
作为 hades 单机版,mq 以及数据库的基础。
基础知识
java 网络编程概览
java nio 系列
netty in action 系列学习
java concurrency 系列
jcip 系列
UNIX 5 种数据模型
BIO
BIO
NIO
理解 nio
IO ...
2019-05-10 03:08:59 |
Netty