摘要:
0. FastThreadLocal简介 如同注释中所说:A special variant of ThreadLocal that yields higher access performance when accessed from a FastThreadLocalThread. 这是Thre 阅读全文
摘要:
0. ChannelPipeline简介 ChannelPipeline = Channel + Pipeline,也就是说首先它与Channel绑定,然后它是起到类似于管道的作用:字节流在ChannelPipeline上流动,流动的过程中被ChannelHandler修饰,最终输出。 1. Cha 阅读全文
摘要:
0. ChannelInitializer简介 直接用ChannelInitializer的注释吧:A special ChannelInboundHandler which offers an easy way to initialize a Channel once it was registe 阅读全文
摘要:
本文会分析Netty服务器的启动过程,采用的范例代码是Netty编写的Echo Server。 0. 声明acceptor与worker 由于Netty采用的reactor模型,所以需要声明两组线程,一组作为boss/acceptor,另一组作为worker boss/acceptor负责监听绑定的 阅读全文
摘要:
0. NioEventLoop简介 NioEventLoop如同它的名字,它是一个无限循环(Loop),在循环中不断处理接收到的事件(Event) 在Reactor模型中,NioEventLoop就是Worker的角色,关联于多个Channel,监听这些Channel上的read/write事件,一 阅读全文
摘要:
0. NioEventLoopGroup简介 NioEventLoopGroup可以理解为一个线程池,内部维护了一组线程,每个线程负责处理多个Channel上的事件,而一个Channel只对应于一个线程,这样可以回避多线程下的数据同步问题。 1. NioEventLoopGroup类图 2. 构造方 阅读全文
摘要:
给你一台4路E7-4820V2(32核心64线程),512G内存的服务器,你该如何编程才能支持百万长连接? 最直接的想法是采用BIO的模式,为每个连接新建一个线程,在一一对应的线程中直接处理连接上的数据请求。 但在Java中,新建线程的开销非常昂贵(默认情况下每个线程会占据1M多的内存,百万连接就是 阅读全文
摘要:
本系列文章将介绍Netty的工作机制,以及分析Netty的主要源码。 基于的版本是4.1.15.Final(2017.08.24发布) 水平有限,如有谬误请留言指正 参考资料 the_flash的简书 占小狼的简书 阅读全文
摘要:
ByteBuffer的源码中有这样一段注释: A byte buffer is either direct or non-direct. Given a direct byte buffer, the Java virtual machine will make a best effort to p 阅读全文
摘要:
假设我们想要用Java读取一个二进制文件,有好几种方式,本文会选取其中比较典型的三种方式进行详细分析 0. 准备工作 安装openjdk-1.8.0.141(普通的jdk中涉及IO的很多代码是闭源的,点进去是编译之后的字节码,没法看) openjdk-1.8的c源码 1. FileInputStre 阅读全文