netty相关概念

怎样理解阻塞非阻塞与同步异步的区别?

也谈BIO | NIO | AIO (Java版)

通俗地讲,Netty 能做什么?

Netty的核心组件

Netty入门教程——认识Netty
Netty入门教程2——动手搭建HttpServer
Netty入门教程3——Decoder和Encoder
Netty笔记4-如何实现长连接
Essential Netty in Action 《Netty 实战(精髓)》
Way Lau’s Open Souce Books

源码

源码之下无秘密 ── 做最好的 Netty 源码分析教程

zero copy

Netty的零拷贝体现在三个方面:

  1. Netty的接收和发送ByteBuffer采用DIRECT BUFFERS,使用堆外直接内存进行Socket读写,不需要进行字节缓冲区的二次拷贝。如果使用传统的堆内存(HEAP BUFFERS)进行Socket读写,JVM会将堆内存Buffer拷贝一份到直接内存中,然后才写入Socket中。相比于堆外直接内存,消息在发送过程中多了一次缓冲区的内存拷贝。
  2. Netty提供了组合Buffer对象,可以聚合多个ByteBuffer对象,用户可以像操作一个Buffer那样方便的对组合Buffer进行操作,避免了传统通过内存拷贝的方式将几个小Buffer合并成一个大的Buffer。
  3. Netty的文件传输采用了transferTo方法,它可以直接将文件缓冲区的数据发送到目标Channel,避免了传统通过循环write方式导致的内存拷贝问题。

Netty中的零拷贝
对于 Netty ByteBuf 的零拷贝(Zero Copy) 的理解

概述

Netty概述

Java NIO浅析