随笔分类 - java NIO + Netty
摘要:文章前半部分转载自 : https://mp.weixin.qq.com/s/YdIdoZ_yusVWza1PU7lWaw ,本文在格式上进行优化,方便阅读 , 非原创 文章后半部分是自己写的, 原创 概述 为了讲多路复用,当然还是要跟风,采用鞭尸的思路,先讲讲传统的网络 IO 的弊端,用拉踩的方式
阅读全文
摘要:文章转载来自 : https://lday.me/2019/09/09/0023_linux_page_cache_and_buffer_cache/# 在我们进行数据持久化,对文件内容进行落盘处理时,我们时常会使用fsync操作,该操作会将文件关联的脏页(dirty page)数据(实际文件内容及
阅读全文
摘要:文章转载自 : https://zhuanlan.zhihu.com/p/308054212 作者:allanpan,腾讯 IEG 后台开发工程师 两万字长文从虚拟内存、I/O 缓冲区,用户态&内核态以及 I/O 模式等等知识点全面而又详尽地剖析 Linux 系统的 I/O 底层原理,分析了 Lin
阅读全文
摘要:部分来源 : 作者:小林coding 链接:https://www.zhihu.com/question/26943938/answer/1856426252 来源:知乎 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。 本文补充部分表述. 前言 reactor 这是个 模式 ,
阅读全文
摘要:文章转载自 : https://mp.weixin.qq.com/s?__biz=MjM5Njg5NDgwNA==&mid=2247484834&idx=1&sn=b8620f402b68ce878d32df2f2bcd4e2e&scene=21 wechat_redirect 在网络开发模型中,有
阅读全文
摘要:概述 文件将会介绍关于多路复用的起源, 以及几种实现的历史, 文章部分表述来源已标注. 多路复用( I/O multiplexing )的动机 还记得我们开始写 java IO 编程的时候如何去处理网络请求的吗? 多进程并发模型 (每进来一个新的I/O流会分配一个新的进程管理。) I/O多路复用
阅读全文
摘要:文章转载自 : https://mp.weixin.qq.com/s/YdIdoZ_yusVWza1PU7lWaw ,本文在格式上进行优化,方便阅读 概述 为了讲多路复用,当然还是要跟风,采用鞭尸的思路,先讲讲传统的网络 IO 的弊端,用拉踩的方式捧起多路复用 IO 的优势。 为了方便理解,以下所有
阅读全文
摘要:文章转载自 : https://mp.weixin.qq.com/s?__biz=MjM5Njg5NDgwNA==&mid=2247484905&idx=1&sn=a74ed5d7551c4fb80a8abe057405ea5e&chksm=a6e304d291948dc4fd7fe32498daa
阅读全文
摘要:转载自 : https://mp.weixin.qq.com/s?__biz=MjM5Njg5NDgwNA==&mid=2247484058&idx=1&sn=a2621bc27c74b313528eefbc81ee8c0f&scene=21#wechat_redirect 飞哥的文章是真的可以 ,
阅读全文
摘要:问题 : compositeByteBuf 是干什么和其他 compositeByteBuf 有何区别 内部实现 概述 compositeByteBuf 就像数据库中的视图,把几个表的字段组合在一起,它的应用场景比如一个自定义协议有消息头和消息体,而两者是分开到两个 ByteBuf 的,那么这时候要
阅读全文
摘要:概述文章主要介绍的是PoolArena,PoolChunk,PoolSubpage 三个类的源码PoolArenaPoolArena 是netty 的内存池实现类,通过预先申请一块大的空间,然后对空间进行分配和回收,这样就不用频繁进行系统调用,提高性能。PoolArena 由多个 chunk 组成,chunk 则由多个page 组成.PoolChunkChunk 主要用来组织和管理多个Page的内...
阅读全文
摘要:问题 :netty的 ByteBuff 和传统的ByteBuff的区别是什么?HeapByteBuf 和 DirectByteBuf 的区别 ?HeapByteBuf : 使用堆内存,缺点 ,socket 传输的时候由于需要复制的原因,慢一点DirectByteBuf : 堆外内存,可以使用零拷贝概述netty ByteBuf 存在两个指针,分成三个区域: 已读区(可丢弃),未读区(未读),可写区...
阅读全文
摘要:问题channel 是如何处理发送一半中断后继续重发的channel 具体作用是什么概述这一节我们将介绍 Channel 和内部接口 Unsafe .其中Unsafe 是内部接口,聚合在Channel 中协助网络读写操作相关的操作,设计初衷就是 Channel 的内部辅助类,不应该被用户使用。 继承类分析继承关系链 : AbstractChannel -> AbstractNioChannel -...
阅读全文
摘要:问题 : NioEventLoop 作用到底是什么?是在哪里用到的? NioEventLoop 和我们开头创建的 ServerBootstrap 和 EventLoopGroup 是什么关系 ? NioEventLoop 和 NioChannel 怎么传递的(按合理,一个channel应该分配一个N
阅读全文
摘要:概述 先了解一下 netty 大概框架图 ,可以看到客户端的创建和服务端最大的区别 - 服务端传入两个 EventLoopGroup,客户端传入一个 EventLoopGroup - channel 的类型也不同,服务端传入的是 NioServerSocketChannel ,客户端传入的是 Nio
阅读全文
摘要:NIO Select 知识 select 示例代码 : 源码阅读 通过上一篇文章我们知道了,netty 实际是由两个 Reactor 组成,前者维护一个 Acceptor 绑定接口,处理客户端的连接,然后再将读写,解码编码工作交给另外一个 Reactor ,我们先来看一下这样一个过程,明白总体的过程
阅读全文
摘要:问题 : DirectBuffer DirectByteBuffer 自身是一个Java对象,在Java堆中;而这个对象中有个long类型字段address,记录着一块调用 malloc() 申请到的native memory。DirectByteBuffer 自身是(Java)堆内的,它背后真正承
阅读全文
摘要:概述 本文将会介绍 unix 系统中 IO 的 5 种模式,在后续的文章后会介绍 reactor 和 Proactor 两种IO模式。 异步和阻塞 我们先来大概了解了一下异步和阻塞的问题。 可以查看一下两个链接 : https://www.zhihu.com/question/19732473/answer/20851256 https://www.zhihu.com...
阅读全文