当前位置: 首页 > news >正文

详尽Netty(二):源码环境搭建

如果大家对java架构相关感兴趣,可以关注下面公众号,会持续更新java基础面试题, netty, spring boot,spring cloud等系列文章,一系列干货随时送达, 超神之路从此展开, BTAJ不再是梦想!

架构殿堂

1.依赖工具

Maven
Git
JDK
IntelliJ IDEA
SourceTree

2.源码拉取

netty源码git地址:https://github.com/netty/netty

选择的是4.1分支,如图:
在这里插入图片描述

最好是Fork到自己的仓库里,这样可以自己做点笔记,写一些注释,并且提交。

然后用sourcetree来clone
在这里插入图片描述

3. maven 配置

在这里插入图片描述

如果不选jdk8,则会报错:

java.lang.NoSuchMethodError:
java.nio.ByteBuffer.clear()Ljava/nio/ByteBuffer

4.引用错误

import io.netty.util.collection.LongObjectHashMap;
import io.netty.util.collection.LongObjectMap;

如果是这个引用有问题,则必须common包要重新编译一下,原因可以参见:

https://github.com/netty/netty/issues/7518

或者

https://github.com/netty/netty/issues/5447

5. 运行 example

netty源码中,有很多example例子程序,在example目录下。

6. EchoServer

执行 io.netty.example.echo.EchoServer 的 #main(args) 方法,启动服务端。目录如图:

在这里插入图片描述

输出日志如下:

00:20:17.078 [nioEventLoopGroup-2-1] INFO  i.n.handler.logging.LoggingHandler - [id: 0xbfd8f792] REGISTERED
00:20:17.092 [nioEventLoopGroup-2-1] INFO  i.n.handler.logging.LoggingHandler - [id: 0xbfd8f792] BIND: 0.0.0.0/0.0.0.0:8007
00:20:17.100 [nioEventLoopGroup-2-1] INFO  i.n.handler.logging.LoggingHandler - [id: 0xbfd8f792, L:/0:0:0:0:0:0:0:0:8007] ACTIVE

7.EchoClient

  执行 io.netty.example.echo.EchoClientr 的 #main(args) 方法,启动客户端,目录如图:

在这里插入图片描述

​ 不输出任何日志。

​ EchoServer输出:

00:23:35.880 [nioEventLoopGroup-2-1] INFO  i.n.handler.logging.LoggingHandler - [id: 0xbfd8f792, L:/0:0:0:0:0:0:0:0:8007] READ: [id: 0xee5c60d5, L:/127.0.0.1:8007 - R:/127.0.0.1:49598]
00:23:35.885 [nioEventLoopGroup-2-1] INFO  i.n.handler.logging.LoggingHandler - [id: 0xbfd8f792, L:/0:0:0:0:0:0:0:0:8007] READ COMPLETE

至此,Netty的源码环境就已经搭建完毕。

如果大家对java架构相关感兴趣,可以关注下面公众号,会持续更新java基础面试题, netty, spring boot,spring cloud等系列文章,一系列干货随时送达, 超神之路从此展开, BTAJ不再是梦想!

架构殿堂

相关文章:

  • AssetBundle管理机制(上)
  • 详尽Netty(三):Channel
  • 循序渐进之Spring AOP(5) - 创建切面
  • 牛逼!阿里推出国产开源的jdk! 快来试试吧!
  • ES6 中的let 声明变量
  • 原来Java类的加载过程是这样的?
  • 淘宝数据库OceanBase SQL编译器部分 源代码阅读--生成物理查询计划
  • 聊聊jvm几种垃圾收集器
  • 搭建 webpack + React 开发环境
  • jvm垃圾回收的过程
  • 到底什么是分布式锁,进程锁,线程锁
  • 晶振參数校定
  • 这样做能让nginx新能提升10倍
  • 查看项目错误信息
  • 简单说明String类为什么是final的
  • JS 中的深拷贝与浅拷贝
  • 03Go 类型总结
  • 2017-09-12 前端日报
  • 4. 路由到控制器 - Laravel从零开始教程
  • express.js的介绍及使用
  • Fabric架构演变之路
  • github指令
  • Java小白进阶笔记(3)-初级面向对象
  • MYSQL 的 IF 函数
  • nodejs:开发并发布一个nodejs包
  • v-if和v-for连用出现的问题
  • Vultr 教程目录
  • win10下安装mysql5.7
  • 安卓应用性能调试和优化经验分享
  • 程序员该如何有效的找工作?
  • 从0到1:PostCSS 插件开发最佳实践
  • 罗辑思维在全链路压测方面的实践和工作笔记
  • 七牛云假注销小指南
  • 手机端车牌号码键盘的vue组件
  • 线性表及其算法(java实现)
  • 自定义函数
  • 哈罗单车融资几十亿元,蚂蚁金服与春华资本加持 ...
  • 函数计算新功能-----支持C#函数
  • 通过调用文摘列表API获取文摘
  • ​直流电和交流电有什么区别为什么这个时候又要变成直流电呢?交流转换到直流(整流器)直流变交流(逆变器)​
  • (C++17) optional的使用
  • (PHP)设置修改 Apache 文件根目录 (Document Root)(转帖)
  • (阿里巴巴 dubbo,有数据库,可执行 )dubbo zookeeper spring demo
  • (免费领源码)python#django#mysql校园校园宿舍管理系统84831-计算机毕业设计项目选题推荐
  • (转) RFS+AutoItLibrary测试web对话框
  • .net core使用RPC方式进行高效的HTTP服务访问
  • .Net 应用中使用dot trace进行性能诊断
  • .net遍历html中全部的中文,ASP.NET中遍历页面的所有button控件
  • /使用匿名内部类来复写Handler当中的handlerMessage()方法
  • [Android]创建TabBar
  • [EULAR文摘] 利用蛋白组学技术开发一项蛋白评分用于预测TNFi疗效
  • [hibernate]基本值类型映射之日期类型
  • [Latex] \bibitem{} | .bbl 格式参考文献转换与获得
  • [Mac软件]Goldie App v2.2 Mac黄金比例设计工具
  • [nginx] 网上最全面nginx教程(近100篇文章整理)