Netty[15]

Netty 源码分析之 ChannelPipeline(一)

前言 这篇是 Netty 源码分析 的第二篇, 在这篇文章中, 会为读者详细地分析 Netty 中的 ChannelPipeline 机制. Channel 与 ChannelPipeline 相信大家都知道了, 在 Netty 中每个 Channel 都有且仅有一个 ChannelPipeline

Netty 源码分析之 ChannelPipeline(二)

ChannelHandler 的名字 我们注意到, pipeline.addXXX 都有一个重载的方法, 例如 addLast, 它有一个重载的版本是: ChannelPipeline addLast(String name, ChannelHandler handler); 第一个参数指定了所添

Netty 源码分析之 EventLoop

简述 这一章是 Netty 源码分析 的第三章, 我将在这一章中大家一起探究一下 Netty 的 EventLoop 的底层原理, 让大家对 Netty 的线程模型有更加深入的了解. NioEventLoopGroup 在 Netty 源码分析之 Bootstrap (客户端) 章节中我们已经知道了

Netty 源码分析之ByteBuf

ByteBuf与ByteBuffer 我们在Netty 源码分析之Java NIO已经详细了解了NIO Buffer。这里先回忆下NIO Buffer的一些特性: ByteBuffer底层实现包含四个关键字段,并满足大小关系:mark <= position <= limit <= capacity

Netty 源码分析之 Promise 与 Future

Future和Promise的关系 Netty内部的io.netty.util.concurrent.Future 继承自java.util.concurrent.Future,而Promise是前者的一个特殊实现。 Java原生Future Java并发编程包下提供了Future接口。Future

Netty 源码分析之TCP粘包和拆包

一、基本介绍 1、TCP 是面向连接的,面向流的,提供高可靠性服务。收发两端(客户端和服务器端)都要有一一成对的socket,因此,发送端为了将多个发给接收端的包,更有效的发给对方,使用了优化方法(Nagle算法),将多次间隔较小且数据量小的数据,合并成一个大的数据库,然后进行封包。这样做虽然提高了

Netty 源码分析之TCP粘包和拆包解决方案

一、解决方案 1、使用 自定义协议 + 编解码器 来解决 2、关键就是要解决 服务器端每次读取数据长度的问题,这个问题解决,就不会出现服务器多读或少读数据的问题,从而避免了 TCP粘包和拆包 二、应用实例 1、要求客户端发送 5 个 Message 对象,客户端每次发送一个 Message 对象 2

Netty入门

01、Netty入门 - Netty介绍 Netty的介绍 1、 Netty是由jboss提供的一个Java开源框架,现在Github上的独立项目; 2、 Netty是一个异步的、基于事件驱动的网络应用框架,用以快速开发高性能、高可靠性的网络IO程序; 3、 Netty主要针对在TCP协议下,面向c

Netty 源码分析之Handler

回忆handler 链式结构 我们先来回忆下在Netty 源码分析之 ChannelPipeline(一) 提到过来的handler链式结构: handler分为实现ChannelInboundHandler接口的入站处理器和实现ChannelOutboundHandler接口的出站处理器; han

Netty 面试题及答案整理,最新面试题

Netty的线程模型是如何工作的? Netty的线程模型基于主从Reactor多线程模型,其工作方式如下:

【面试题118】IO多路复用中select、poll、epoll之间的区别

(1)select==>时间复杂度O(n) 它仅仅知道了,有I/O事件发生了,却并不知道是哪那几个流(可能有一个,多个,甚至全部),我们只能无差别轮询所有流,找出能读出数据,或者写入数据的流,对他们进行操作。所以select具有O(n)的无差别轮询复杂度,同时处理的流越多,无差别轮询时间就越长。 (

【面试题42】盘点Netty面试常问考点:什么是 Netty 的零拷贝?

理解零拷贝 零拷贝是Netty的重要特性之一,而究竟什么是零拷贝呢?WIKI中对其有如下定义: "Zero-copy" describes computer operations in which the CPU does not perform the task of copying data f