
Java-Netty
6点A君
记录我学习的知识的地方~
展开
-
Netty 从netty角度分析http协议解析(二)Post方法协议解析HttpPostRequestDecoder
Netty 从netty角度分析http协议解析(二)Post方法协议解析HttpPostRequestDecoder原创 2020-12-21 22:28:40 · 4017 阅读 · 0 评论 -
Netty 从netty角度分析http协议解析(一)HttpServerCodec
从netty角度分析http协议解析原创 2020-12-18 23:44:35 · 3165 阅读 · 1 评论 -
Netty 解决粘包半包 解码器ByteToMessageDecoder
什么是粘包半包?tcp是基于报文的协议,当使用netty传输数据时,可能一次读数据不是一个完整的数据,可能读取的是一半或者多余具体应用层数据的数据。如何解决这样的问题呢?可以用一个全局缓存池,每次解码器进行解码时,只能解码一个完整数据,不够或者多余则放到下次解码。ByteToMessageDecoder 就是这样解决这样的问题的。原创 2020-12-14 23:18:43 · 3100 阅读 · 0 评论 -
Netty 内存模型分析(四)对象池 Recycler 分析
Netty 内存模型分析(四)对象池 Recycler 分析原创 2020-12-10 22:11:27 · 509 阅读 · 0 评论 -
Netty 内存模型分析(三)PoolThreadCache 分析
在同一个 ByteBufAllocator 去分配内存,并且管理者同一块内存,如果存在并发申请或释放,netty 是如何设计内存池的并发特性的呢?本文基于 4.1.38.Final 版本PoolThreadLocalCache类定义:final class PoolThreadCache { private static final InternalLogger logger = InternalLoggerFactory.getInstance(PoolThreadCache.class原创 2020-12-08 23:16:57 · 606 阅读 · 0 评论 -
Netty 中 FastThreadLocal 分析
前一篇文章简单分析了Netty中`PooledByteBuf` 相关结构,本文将围绕 `FastThreadLocal ` ,来分析netty中当前线程分配内存的设计。原创 2020-12-08 23:16:18 · 374 阅读 · 0 评论 -
Netty 内存模型分析(二)PooledByteBuf 分析
前面一篇主要研究了` UnpooledByteBuf` 主要工作原理,本文主要探讨 `PooledByteBuf` 相关。本文主要从以下几个方面梳理了PooledByteBuf:1. `PooledByteBuf ` 构成2. `PoolChunk` 组织形式3. `PoolChunk` 申请大内存和小内存,以及 `PoolSubpage` 组装构成4. 池化内存`PooledByteBuf` 分配过程及,分配完后使用原理使用研究。原创 2020-12-06 22:00:27 · 1020 阅读 · 0 评论 -
Netty 内存模型分析(一)ByteBuf总览
本文开始,将主要围绕netty相关知识展开,力求从宏观上把握整个内存结构。ByteBuf为了解决NIO 中 ByteBuffer 使用不当问题,例如读模式写模式不能同时进行,无法自动扩容等。Netty 新建了一种字节容器ByteBuf。在 ByteBuf 中,定义有 readerIndex,writerIndex 和 capacity 。内部组织结构如下:即可读区域、可写,以及容量。对于 ByteBuf 更好的理解是一个接口(虽然是抽象类),因为里面大部分方法都是abstract。Abstr原创 2020-12-05 23:16:42 · 482 阅读 · 0 评论 -
Netty 线程模型分析(二) io任务执行细节
本文主要探讨io任务执行细节,主要包括accept和read事件处理原创 2020-11-22 21:20:10 · 322 阅读 · 0 评论 -
Netty 线程模型分析(一) reactor 线程如何执行任务
reactor线程如何运行的呢?原创 2020-11-21 11:26:24 · 463 阅读 · 0 评论 -
Netty Server端启动分析(三)register0和 doBind0分析
上篇中,整体分析了`doBind`方法,但是遗留了 `register0` 和 `doBind0` 方法。原创 2020-11-17 23:15:34 · 593 阅读 · 2 评论 -
Netty Server端启动分析(二)doBind分析
上一篇文章中,研究了 NioEventLoopGroup 到底是什么,本文主要从bind方法入手。属性设置属性设置即设置为channel设置一些参数: ServerBootstrap serverBootstrap = new ServerBootstrap(); serverBootstrap.group(group) .channel(NioServerSocketChannel.class)原创 2020-11-16 23:17:11 · 285 阅读 · 0 评论 -
Netty Server端启动分析(一)EventLoopGroup和 EventLoop分析
本文将以 Java Netty 学习(七) 为例,分析下netty服务端启动分析。EventLoopGroupEventLoopGroup 可以理解为EventLoop的Group,可以理解为线程组。默认线程数 DEFAULT_EVENT_LOOP_THREADS = Math.max(1, SystemPropertyUtil.getInt( "io.netty.eventLoopThreads", NettyRuntime.availableProc原创 2020-11-15 22:15:18 · 411 阅读 · 0 评论 -
Java Netty 学习(五) - NIO基础知识Selector
Selector选择器,可以用来检测Java NIO 中的channel是否可用(connect,read,write,accept),并能够知晓通道是否为诸如读写事件做好准备的组件。这样,一个单独的线程可以管理多个channel,从而管理多个网络连接。Selector就相当与一个管家,利用它来知晓,哪个channel是否可用,怎样形式的可用等等。Why use Selector毫无疑问,Selec原创 2018-03-23 22:15:11 · 2919 阅读 · 0 评论 -
Java Netty 学习(二) - NIO基础知识Buffer
对于NIO,需要知道几个概念,Channel,Buffer,非阻塞,Selectors: - 标准的IO基于字节流和字符流进行操作的,而NIO是基于通道(Channel)和缓冲区(Buffer)进行操作,数据总是从通道读取到缓冲区中,或者从缓冲区写入到通道中。即相关的操作,是针对Channel与与Buffer的。 - 另一方面,Java NIO可以让你非阻塞的使用IO,例如:当线程从通道读取数据到缓冲区时原创 2018-03-20 16:13:26 · 1807 阅读 · 0 评论 -
Java Netty 学习(三)- BIO,AIO,NIO深入浅出
这些天看NIO时候,遇到了这三个概念,花了些时间,搞懂了里面的区别与联系,记录分享~BIO可以理解为block-io,即阻塞型IO,就是当你调用read时候,只有有数据才会返回,而没有数据时,是不会返回只会阻塞等待的。 传统的Java Socket就是这样一种机制,有数据才会返回,否则会一直阻塞。比如我们使用Socket进行与服务端通信,默认情况下服务端需要对每个请求建立一堆线程等待请求,而客户端原创 2018-03-21 22:46:33 · 1916 阅读 · 0 评论 -
Java Netty 学习(六) - NIO基础知识AIO
AIO是什么? 前面写到的内容已经和NIO,BIO比较过:Java Netty 学习(三)- BIO,AIO,NIO深入浅出 AIO介绍在NIO编程时,会用到Selector,就是轮询,从而判断哪个channel可以使用。 而在AIO编程中,并不会用到Selector,它的可伸缩性更好,当有相应事件时,由系统调用提醒,可以理解为回调函数,从而Java程序员只需要把一些事件代码写好就可以了。再打个原创 2018-03-24 19:06:10 · 1424 阅读 · 0 评论 -
Java Netty 学习(四) - NIO基础知识Channel和Pipe
前面说过,在NIO中,是利用Channel和Buffer进行数据传送的。 Channel主要包括四种:FileChannel:从文件中读写数据。DatagramChannel:能通过UDP读写网络中的数据。SocketChannel:能通过TCP读写网络中的数据。ServerSocketChannel:可以监听新进来的TCP连接,像Web服务器那样。对每一个新进来的连接都会创建一个Sock原创 2018-03-23 16:18:16 · 3001 阅读 · 1 评论 -
Java Netty 学习(七) - 第一个Netty程序
介绍Netty是由JBOSS提供的一个java开源框架。Netty提供异步的、事件驱动的网络应用程序框架和工具,它简化了程序员的工作,用以快速开发高性能、高可靠性的网络服务器和客户端程序。本系列文章讲慢慢一起走进学习Netty本篇文章就以一个Hello Word程序开始。例子首先,Netty作为网络编程的框架,自然离不开Socket,同时,也包括Server端以及Client端。他们利用...原创 2018-10-13 22:19:30 · 489 阅读 · 0 评论 -
Java Netty 学习(八) - Netty的Channel
在普通IO中,通过把机器传输抽象成java.net.Socket流,也就是Socket和ServerSocket到NIO时,则变为了java.nio.channels.Channel,也是作为传输的管道,具体可看Java Netty 学习(四) - NIO基础知识Channel和Pipe那今天就一起学习Netty中的Channel,看它又是一种怎么样的设计形式。介绍在netty的Chann...原创 2018-10-14 23:56:25 · 3586 阅读 · 0 评论 -
Java Netty 学习(九) - ChannelPipeline
上一篇文章学习了Channel,它屏蔽了许多底层的java.net.Socket的操作,那么,当有了数据流之后,就到了如何处理它的时候,那么本篇文章先看ChannelPipeline和ChannelHandler。...原创 2018-10-20 01:07:00 · 1041 阅读 · 0 评论 -
Java Netty 学习(十) - ChannelHandler概览
本篇文章来分析ChannelHandler的相关知识上一章了解到,ChannelHandler起着一个过滤器作用,用于处理在ChannelPipeline中流动的字节流。下面慢慢来看。ChannelInboundHandlerChannelInboundHandler主要用于处理入站数据以及各种状态变化,它是ChannelHandler的子类:public interface Chann...原创 2018-11-11 20:26:32 · 666 阅读 · 0 评论 -
Netty权威指南学习笔记
最近花了一段时间系统的学习了Netty框架,包括《Netty in Action》以及《Netty权威指南》,对于博主自己来说,我觉得《Netty权威指南》要更适合博主。很厚的《Netty权威指南》权威指南,虽然上面一大部分是例子代码,当然有种跟着Netty官网学小demo的感觉。好记性不如烂笔头,所有代码均手抄Maven实现了一遍,所有例子均可运行,当然自己的学习笔记。Chapter2 ...原创 2019-02-28 23:30:42 · 528 阅读 · 0 评论 -
Java Netty 学习(一)- IO学习笔记
一直对IO比较半懂不懂,乘着闲暇时间系统梳理一遍IO知识,为以后学习做好铺垫。什么是IO?即input output,在Java中,流是一个核心的概念。 流从概念上来说是一个连续的数据流。你既可以从流中读取数据,也可以往流中写数据。 流与数据源或者数据流向的媒介相关联。在Java IO中流既可以是字节流(以字节为单位进行读写),也可以是字符流(以字符为单位进行读写)。注意区分字节和字符,字符是原创 2018-03-19 14:20:00 · 2418 阅读 · 0 评论