
秒懂Netty源码分析系列
打算输出一系列Netty源码分析与实践的文章,也作为后端开发学习过程中的沉淀。写作风格会遵循目标导向,关注核心,抽离出知识的Pattern,无价值细节决不花时间
研发之道
一个坚持把架构做到极致的技术人,热衷于互联网技术。混迹互联网十几年,热衷于高性能、高并发、分布式技术领域的研究。
展开
-
程序员必知必会的零拷贝技术
写在前面 本篇文章我们学习Linux IO中的零拷贝技术,最后的参考链接中介绍的非常好,大家都可以看一下 传统IO过程 考虑这样一个过程:我们从磁盘中读取一个文件数据,然后将数据通过网络传输到另一个机器。对用户来说可能就是简单的理解为两步操作。 File.read(fileDesc, buf, len); Socket.send(socket, buf, len); 但是,如果我们看传输中涉及的...原创 2019-12-31 17:20:34 · 836 阅读 · 0 评论 -
NIO中的Channel和Buffer
前言 打算输出一系列Netty源码分析与实践的文章,也作为后端开发学习过程中的沉淀。写作风格会遵循目标导向,关注核心,抽离出知识的Pattern,无价值细节决不花时间。 此文章为第三篇,和大家一块了解下NIO中的核心组件Channel和Buffer。 Channel Buffer Buffer顾名思义,本质上就是一个内存缓冲区,作为存储数据的一块内存而已。对于每个非布尔原始数据类型都有一个缓冲...原创 2019-12-22 19:51:02 · 1035 阅读 · 0 评论 -
深入剖析 Netty 源码设计(二)——BIO NIO AIO Reactor 模式到底干了啥
本文首发于 点击转到原文 前言 周末向往常一样睡了一上午,惆怅了一个中午,下午学了会习,梳理了下Netty的线程模型是如何体现Reactor模式的。继上一篇对一些通信底层IO的C函数学习,这一篇主要是总结Java里对底层IO不同层次的抽象,每一层都为了解决什么问题?为什么Reator模型使得现在Netty处理网络IO时如此高效?带着问题,我们一起来学习。 BIO 让我们先回忆一下传统的服务器端同步...原创 2019-01-28 12:35:49 · 980 阅读 · 1 评论 -
深入剖析Netty源码设计(一)——深入理解select poll epoll机制
前言 打算输出一系列Netty源码分析与实践的文章,也作为后端开发学习过程中的沉淀,此文章为第一篇,从操作系统底层的IO讲起,为Netty 的出场做下知识准备。 一些概念 文件描述符 文件描述符在形式上是一个非负整数。实际上,它是一个索引值,指向为每一个进程所维护的该进程打开文件的记录表。当程序打开一个现有文件或者创建一个新文件时,内核向进程返回一个文件描述符。读写文件也需要使用文件描述符来指定待...原创 2019-01-24 10:51:08 · 4557 阅读 · 0 评论