netty学习笔记
akfly
先秦诸子,儒墨道法
展开
-
netty权威指南之一 java io
最近通过学习@李林峰 大神的 《netty权威指南》对java io 有了进一步的了解,我对其代码加了一些注解和个人的看法。对netty有了进一步的了解,所以后面有一些对rocketmq和dubbo中协议部分的分析还是那句话 学习使人进步本文学习 java io的基础知识,准确的说是socket io /* * Copyright 2013-2018原创 2016-11-18 10:31:11 · 799 阅读 · 0 评论 -
netty源码分析 之一 build
下载源码git地址 https://github.com/netty/netty.git之后build mvn clean install -Dmaven.test.skip=true -Dcheckstyle.skip=true有两个模块build 不过去, 找到 根目录下的pom.xml 注释掉他 common buffer原创 2017-01-09 16:42:35 · 1633 阅读 · 2 评论 -
netty源码分析 之二 transport(bootstrap)
transport 分为两部分 bootstrap channel 由于channel东西比较多,所以分开两篇来写AbstractBootstrap顾名思义,引导累 抽象父类, 定义模板方法成员变量private volatile EventLoopGroup group; @SuppressWarnings("deprecation")原创 2017-01-09 16:42:57 · 630 阅读 · 0 评论 -
netty源码分析 之三 transport(channel)
在开始学习channel之前,先看下channel如何生成的?channel如何生成?AbstractBootstrap 通过channel方法来设置 channelFactory public B channel(Class channelClass) { if (channelClass == null) { throw原创 2017-01-09 16:43:55 · 581 阅读 · 0 评论 -
netty源码分析 之四 transport(ChannelPipeline)
前面看了channel定义,以及接口定义,可知道实现类。 * I/O Request * via {@link Channel} or *原创 2017-01-09 16:44:17 · 756 阅读 · 0 评论 -
netty源码分析 之五 transport(ChannelHandler)
上文说到了,channelHandler, 顾名思义 handler 处理者从channelPipeline的定义中看出,channelPipeline是channelHandler的集合public interface ChannelPipeline extends Iterable>查看其接口定义和源码可以看出接口方法分为三类 Handler life cycle m原创 2017-01-09 16:45:46 · 640 阅读 · 0 评论 -
netty源码分析 之六 transport(EventLoop)
前面分析到DefaultChannelHandlerInvoker其被SingleThreadEventLoop 引用,并创建DefaultChannelHandleInvoker先来分析下Eventloop 以及 EventLoopGroupEventLoop定义了 asInoker 返回前面的 DefaultChannelHandlerInvoker原创 2017-01-09 16:46:05 · 443 阅读 · 0 评论 -
netty源码分析 之七 transport(Unsafe)
来看下unsafe的接口定义同样看你实现类,AbstractUnsafe接着看起实现,统一的模板类,由子类来实现方法接着看register 方法,其中有pipeline.fireChannelRegistered方法 private void register0(ChannelPromise promise) {原创 2017-01-09 16:46:37 · 796 阅读 · 0 评论 -
netty源码分析 之八 transport(总结)
前面学习了channel和bootstarp。本文分为两部分,一是补充下channel 二是整体来看下channel和bootstarpchannel其他包embedded epoll unix实现 epoll选择socketlocal 就是本地通讯,不需要跨ipgroup channelGroup 包含了cha原创 2017-01-09 16:47:03 · 976 阅读 · 0 评论 -
netty源码分析 之九 handler
学习完前面的channel,回头来学习handler 会感觉到很简单的.handler 这个包里面的类实现 ChannelHandlerAdapter codec我们最后来看,先看其他loggingLoggingHandler 为log的输出类, 定义模板,具体实现为 InternalLogger这个接口,log4j logback之类原创 2017-01-09 22:43:05 · 2003 阅读 · 0 评论 -
netty源码分析 之十 codec
前面学习了别的handler,都是直接继承ChannelHandlerAdapter 或者间接继承来实现的。codec也很简单,顾名思义 解遍码器核心类有以下几个ByteToMessageCodecByteBuf 与Object 之间的转换重写了ChannelHandlerAdapter 的两个方法 channelRead writer原创 2017-01-10 11:33:17 · 707 阅读 · 0 评论 -
netty源码分析 之十一 ByteBuf
终于到最后的ByteBuf了,其实和jdk nio的ByteBuffer 含义大致相同都是对byte数组的操作,不同的是ByteBuf定义了两个下标 读下标和写下标然后再看看其的实现类WrappedByteBuf对byteBuf的包装类EmptyByteBufbyteBuf的空实现,里面的接口空实现直接返回原创 2017-01-10 17:57:57 · 691 阅读 · 0 评论 -
netty源码分析 之十二 类图
闲来无事,把之前总结的类,画个图表示下,其实还是清晰的对netty的核心类库,有个详细的了解,其实就是一些适配+模板的组合原创 2017-01-21 16:08:01 · 1922 阅读 · 0 评论 -
Netty在rocketmq中的实现 二 NettyRemotingClient
昨天我们学习了 NettyRemotingServer的实现,今天来学习client的实现 public void start() { this.defaultEventExecutorGroup = new DefaultEventExecutorGroup(// nettyClientConfig.getClientWorkerThr原创 2016-11-23 15:38:36 · 2280 阅读 · 0 评论 -
Netty在rocketmq中的实现 一 NettyRemotingServer
前面看了很多例子了,今天来学习下 netty在RocketMq中的使用NettyRemotingServer @Override public void start() { this.defaultEventExecutorGroup = new DefaultEventExecutorGroup(// ne原创 2016-11-22 11:29:10 · 2124 阅读 · 0 评论 -
netty权威指南之九 自定义协议
其实看@李林峰老师的《netty权威指南》如果你看懂了,书里面的自定义协议,那么相当于你读懂了书的一半进行TCP开发,首先就是定义协议格式/* * Copyright 2013-2018 Lilinfeng. * * Licensed under the Apache License, Version 2.0 (the "License"); * you m原创 2016-11-21 21:52:19 · 2079 阅读 · 1 评论 -
netty权威指南之二 java io+线程池
最近通过学习@李林峰 大神的 《netty权威指南》对Java io 有了进一步的了解,我对其代码加了一些注解和个人的看法。对netty有了进一步的了解,所以后面有一些对rocketmq和dubbo中协议部分的分析还是那句话 学习使人进步上一文是传统的java socket 通信,本文讲伪异步的io,也就是@李林峰 大神说的pio。 其实tomcat源码中就有原创 2016-11-18 10:44:33 · 1402 阅读 · 0 评论 -
netty权威指南之三 java nio
最近通过学习@李林峰 大神的 《netty权威指南》对Java io 有了进一步的了解,我对其代码加了一些注解和个人的看法。对netty有了进一步的了解,所以后面有一些对rocketmq和dubbo中协议部分的分析还是那句话 学习使人进步本文接着 java nio来学习 socket nio 核心 buffer channel核心代码就是原创 2016-11-18 10:54:39 · 907 阅读 · 0 评论 -
netty权威指南之四 java aio
最近通过学习@李林峰 大神的 《netty权威指南》对Java io 有了进一步的了解,我对其代码加了一些注解和个人的看法。对netty有了进一步的了解,所以后面有一些对rocketmq和dubbo中协议部分的分析还是那句话 学习使人进步本文说aio 关键就是java类库中的 AsynchronousServerSocketChannel Complet原创 2016-11-18 11:38:17 · 991 阅读 · 0 评论 -
netty权威指南之五 netty hello world
最近通过学习@李林峰 大神的 《netty权威指南》对Java io 有了进一步的了解,我对其代码加了一些注解和个人的看法。对netty有了进一步的了解,所以后面有一些对rocketmq和dubbo中协议部分的分析还是那句话 学习使人进步 netty 核心代码EventLoopGroup bossGroup = new NioEventLoopG原创 2016-11-18 14:02:38 · 679 阅读 · 0 评论 -
netty权威指南之六 TCP拆包粘包
最近通过学习@李林峰 大神的 《netty权威指南》对Java io 有了进一步的了解,我对其代码加了一些注解和个人的看法。对netty有了进一步的了解,所以后面有一些对rocketmq和dubbo中协议部分的分析还是那句话 学习使人进步 有过做tcp开发经验的朋友,一定清楚,定义报文格式 ,前几个字节包含报文长度等书中的粘包拆包就是这原创 2016-11-18 14:49:27 · 650 阅读 · 0 评论 -
netty权威指南之七 其他协议
最近通过学习@李林峰 大神的 《netty权威指南》对Java io 有了进一步的了解,我对其代码加了一些注解和个人的看法。对netty有了进一步的了解,所以后面有一些对rocketmq和dubbo中协议部分的分析还是那句话 学习使人进步 前面学习了基本的codec FixedLengthFrameDecoder DelimiterBasedFr原创 2016-11-18 17:00:43 · 685 阅读 · 0 评论 -
netty官方例子 一 FileServer文件传输
前面学习了一些《Netty权威指南》的例子,今天我们学习下netty官方的例子/* * Copyright 2014 The Netty Project * * The Netty Project licenses this file to you under the Apache License, * version 2.0 (the "License"); you may原创 2016-11-19 18:17:49 · 13163 阅读 · 1 评论 -
netty官方例子 二 http静态文件读取
官方例子中 httpstaticFile 核心的类就是 下面这几个channelHandlerpipeline.addLast(new HttpServerCodec()); pipeline.addLast(new HttpObjectAggregator(65536)); pipeline.addLast(new ChunkedWriteHan原创 2016-11-19 18:48:26 · 3421 阅读 · 0 评论 -
netty官方例子 三 http snoop监听
接着来看看/* * Copyright 2012 The Netty Project * * The Netty Project licenses this file to you under the Apache License, * version 2.0 (the "License"); you may not use this file except in compli原创 2016-11-19 20:13:03 · 2641 阅读 · 0 评论 -
netty核心源码 一 ChannelPipeline
说到channelPipeline 我们下载netty源码,先看其接口定义,再看具体的实现通过前面的例子,我们知道addLast方法之类的 可以注册一些channelHandler,今天我们来看下具体的实现原理先看官方提供的视图 * * I/O Request *原创 2016-11-20 12:01:56 · 398 阅读 · 0 评论 -
netty核心源码 二 服务端和客户端启动流程
通过前面的一篇,我们知道了channelpipeline的执行顺序和基本方法,再开始学习DefaultChannelPipeline实现之前,我们先来分析两个类ServerBootstrap和Bootstrap 他们有一个共同的父类AbstractBootstrap服务端流程客户端流程先看看其成员变量p原创 2016-11-20 17:16:51 · 949 阅读 · 0 评论 -
netty核心源码 三 DefaultChannelPipeline
前面我们学习了chanelPipeline 熟悉了自定义handle和pipe的流程通过学习服务端(客户端)启动流程,熟悉了netty的初始化操作以及触发fireChannelRegistered @Override public ChannelPipeline fireChannelRegistered() { head.fireChannel原创 2016-11-20 18:56:05 · 491 阅读 · 0 评论 -
netty源码分析 之十三 线程模型
通过代码来看,netty server有两个线程池来组成 而 netty client端有一个线程池来代码解读下面有两个线程池 bossGroup workerGroup // Configure the server. EventLoopGroup bossGroup = new NioEventLoopGroup(1); EventL原创 2017-01-21 19:12:36 · 552 阅读 · 0 评论