-
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
-
Netty 权威指南-00-面试经典:linux 的 5 种 I/O 模型
基本概念
在学习 linux IO 模型 以前,我们先看一组概念,便于大家更好的理解。
linux IO 模型
linux系统IO分为内核准备数据和将数据从内核拷贝到用户空间两个阶段。
用户空间与内核空间
操作系统的核心是内核,独立于普通的应用程序,可以访问受保护的内存空间,也有访问底层硬件设备的所有权限。
为了保证用户进程不能直接操作内核(kernel),保证内核的安全,操...
2019-05-10 03:08:59 |
Netty
-
aerospike-00-数据库间接
Aerospike数据库4.0
强大的一致性 + 高性能
数字经济建立在商业时刻 – 当决策转向行动时,数字经济的关键时刻。
为什么 Aerospike
Aerospike 4.0是唯一能够以毫秒级速度可靠处理互联网级数据量和决策的数据库,而不会增加操作的复杂性或难以承受的成本。
是什么
Aerospike是一个分布式,可扩展的NoSQL数据库。
该架构有三个主要目标:
...
2019-05-10 03:08:59 |
Data-Management