Netty 源码剖析与实战
傅健
Netty 源码贡献者、Cisco 高级软件工程师
32935 人已学习
新⼈⾸单¥59
课程目录
已完结/共 60 讲
第一章:初识Netty:背景、现状与趋势 (7讲)
第三章:Netty源码:从“线”(请求处理)的角度剖析 (8讲)
第六章:成长为Netty的贡献者 (6讲)
Netty 源码剖析与实战
登录|注册
留言
25
收藏
沉浸
阅读
分享
手机端
回顶部
当前播放: 21 | Netty代码编译与总览
00:00 / 00:00
高清
  • 高清
1.0x
  • 2.0x
  • 1.5x
  • 1.25x
  • 1.0x
  • 0.75x
  • 0.5x
网页全屏
全屏
00:00
付费课程,可试看
01 | 课程介绍
02 | 内容综述
03 | 揭开Netty面纱
04 | 为什么舍近求远:不直接用JDK NIO?
05 | 为什么孤注一掷:独选Netty?
06 | Netty的前尘往事
07 | Netty的现状与趋势
08 | Netty怎么切换三种I/O模式?
09 | 源码剖析:Netty对I/O模式的支持
10 | Netty如何支持三种Reactor?
11 | 源码剖析:Netty对Reactor的支持
12 | TCP粘包/半包Netty全搞定
13 | 源码剖析:Netty对处理粘包/半包的支持
14 | 常用的“二次”编解码方式
15 | 源码剖析:Netty对常用编解码的支持
16 | keepalive与idle监测
17 | 源码剖析:Netty对keepalive与idle监测的支持
18 | Netty的那些“锁”事
19 | Netty如何玩转内存使用
20 | 源码解析:Netty对堆外内存和内存池的支持
21 | Netty代码编译与总览
22 | 源码剖析:启动服务
23 | 源码剖析:构建连接
24 | 源码剖析:接收数据
25 | 源码剖析:业务处理
26 | 源码剖析:发送数据
27 | 源码剖析:断开连接
28 | 源码剖析:关闭服务
29 | 编写网络应用程序的基本步骤
30 | 案例介绍和数据结构设计
31 | 实现服务器端编解码
32 | 实现一个服务器端
33 | 实现客户端编解码
34 | 完成一个客户端雏形
35 | 引入"响应分发"完善客户端
36 | Netty编码中易错点解析
37 | 调优参数:调整System参数夯实基础
38 | 调优参数:权衡Netty核心参数
39 | 调优参数:图解费脑的三个参数
40 | 跟踪诊断:如何让应用易诊断?
41 | 跟踪诊断:应用能可视,心里才有底
42 | 跟踪诊断:让应用内存不“泄露”?
43 | 优化使用:用好自带注解省点心
44 | 优化使用:“整改”线程模型让"响应"健步如飞
45 | 优化使用:增强写,延迟与吞吐量的抉择
46 | 优化使用:如何让应用丝般“平滑”?
47 | 优化使用:为不同平台开启native
48 | 安全增强:设置“高低水位线”等保护好自己
49 | 安全增强:启用空闲监测
50 | 安全增强:简单有效的黑白名单
51 | 安全增强:少不了的自定义授权
52 | 安全增强:拿来即用的SSL-对话呈现表象
53 | 安全增强:拿来即用的SSL-抓包暴露本质
54 | 安全增强:拿来即用的SSL-轻松融入案例
55 | Cassandra如何使用Netty ?
56 | Dubbo如何使用Netty ?
57 | Hadoop如何使用Netty ?
58 | 赏析Netty之美
59 | 如何给Netty贡献代码?
60 | 结课测试&结束语
本节摘要
登录 后留言

全部留言(25)

  • 最新
  • 精选
WING
我用的Eclipse,编译代码遇到很多坑,供同用Eclipse的同学参考: 1、maven插件问题:代码导入进来,好多pom报错,都是maven插件错误,如xml-maven-plugin,groovy-maven-plugin等等,解决办法:找到eclipse安装目录下的plugins目录,找到org.eclipse.m2e.lifecyclemapping.defaults_xxxx.jar插件,将里面的lifecycle-mapping-metadata.xml拷贝到netty源码工作区的.metadata\.plugins\org.eclipse.m2e.core下,添加报错的maven插件配置(配置完要重启Eclipse): <pluginExecution> <pluginExecutionFilter> <groupId>org.codehaus.mojo</groupId> <artifactId>xml-maven-plugin</artifactId> <versionRange>[1.0.1,)</versionRange> <goals> <goal>check-format</goal> <!-- 与报错信息的execution的goal一致 --> <goal>validate</goal> </goals> </pluginExecutionFilter> <action> <ignore /> </action> </pluginExecution> 2、check style的错误,会提示文件未以空行结尾(windows平台,mac估计不会报这个),那是因为文件默认是Unix的换行,在windows平台转换一下换行就可以,File->Convert Line Delimiters To,选择Windows即可。所以有钱还是换台mac book吧 :) 3、其他错误参考老师视频就好 4、废弃的udt模块也有个slf4j的依赖存在版本冲突,不用管,可以编译成功,反正也废弃了,就是留着个红叉不舒服而已。

作者回复: 谢谢您对eclipse补充,赠人玫瑰,手有余香,👏👍

2019-12-01
2
李园
老师能用这个netty做通讯用于一秒通讯一次一天24小时不停,如果能怎么部署呢

作者回复: 一秒一次,太少了……,连health check也不止吧,随便用什么写都能做到的,部署什么方式都行,最简单的,打成可执行jar启动

2019-10-23
1
suke
老师,你在idea上 子模块右键就有maven run compile的选项是怎么调出来的?我怎么没找到

作者回复: 装个idea的maven插件!

2020-02-06
木头
您好: 我在运行 netty 提供的测试类时报错 Unrecognized option: --illegal-access=deny Error: Could not create the Java Virtual Machine. Error: A fatal exception has occurred. Program will exit. 请问这是什么原因,

作者回复: 我运行官方代码,没有遇到你说的这个问题,所以你运行的是官方的代码么?什么版本?运行命令是什么样的?请提供点详细信息,才好帮您诊断。直接回复这个问题的留言就行。谢谢

2019-12-23
3
木头
您好:我在运行netty 源码的test类时报错

作者回复: 你的另外一个留言我回复了,这个问题重复了,我们在你那个问题上进行讨论,哈

2019-12-23
冬渐暖
这一章真的是相见恨晚啊。。。。感觉这一章基本可以放在前几章讲了。。。突然发现这一章感觉看你人都更帅了,可能是换了件衣服吧。哈哈 之前我一直是从你git上传的代码里面查看netty源代码。这样完全不能全局搜索源代码,我看你突然点开一个文件。。我就现在页面上写一个这个类。。。。然后点进去看源码。。 当时我看你git也没有上传netty源代码相关的。我还以为只有netty内部开发人员才可以下载,哈哈。 我已经在git上下载netty源码了 目前遇到的问题是无论是命令行clean install 还是在maven 指定jdk8+windows配置文件 还是右键任何一个项目debug--》compile 都是412的错误 [INFO] ------------------------------------------------------------------------ [ERROR] Failed to execute goal org.apache.maven.plugins:maven-checkstyle-plugin:3.0.0:check (check-style) on project netty-common: Failed during checkstyle execution: There are 412 erro rs reported by Checkstyle 8.18 with io/netty/checkstyle.xml ruleset. -> [Help 1] [ERROR] [ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch. [ERROR] Re-run Maven using the -X switch to enable full debug logging. [ERROR] [ERROR] For more information about the errors and possible solutions, please read the following articles: [ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/MojoExecutionException [ERROR] [ERROR] After correcting the problems, you can resume the build with the command [ERROR] mvn <goals> -rf :netty-common 说是说关闭checkstyle。。。。不过找了很多资料还是关不了,idea里面的插件也没有装这个。尴尬。。。

作者回复: 这个主要是因为你是windows吧,换行符不一样。详情你可以参考这个文章: https://netty.io/wiki/setting-up-development-environment.html#git-line-ending-configuration 你可以直接转化下也可以:参考: https://intellij-support.jetbrains.com/hc/user_images/lwCYAEhzHueme3pr4ol5tQ.png 另外:checkstyle肯定可以关闭的啊,真不行,你直接把plugin配置都去掉: <artifactId>maven-checkstyle-plugin</artifactId>

2019-12-02
pchou
有个疑问,那一堆需要codegen的代码是什么原因。怎么感觉跟c++模板似的。不能用泛型解决吗?

作者回复: 此处不行,因为泛型只支持对象类型,不能直接搞定Int,只能Integer,但是你翻阅它用脚本产生的代码,目标是直接搞定int的,比如:io.netty.util.collection.IntCollections.EmptyMap#get(int) public Object get(int key) { return null; } 用泛型的话就做不到了。

2019-11-30
加载中……
记录下构建结果: Reactor Summary for Netty 4.1.43.Final-SNAPSHOT: Netty/Dev-Tools ........ SUCCESS [2.455 s] Netty ........... SUCCESS [7.586 s] Netty/Common ........... SUCCESS [ 14.504 s] Netty/Buffer ........... SUCCESS [4.194 s] Netty/Resolver ......... SUCCESS [3.221 s] Netty/Transport ........ SUCCESS [4.764 s] Netty/Codec ..... SUCCESS [6.489 s] Netty/Codec/DNS ........ SUCCESS [3.390 s] Netty/Codec/HAProxy .... SUCCESS [3.381 s] Netty/Handler .......... SUCCESS [5.136 s] Netty/Codec/HTTP ....... SUCCESS [5.295 s] Netty/Codec/HTTP2 ...... SUCCESS [4.238 s] Netty/Codec/Memcache .......... SUCCESS [3.003 s] Netty/Codec/MQTT ....... SUCCESS [2.965 s] Netty/Codec/Redis ...... SUCCESS [2.733 s] Netty/Codec/SMTP ....... SUCCESS [2.993 s] Netty/Codec/Socks ...... SUCCESS [3.349 s] Netty/Codec/Stomp ...... SUCCESS [2.824 s] Netty/Codec/XML ........ SUCCESS [2.732 s] Netty/Handler/Proxy .... SUCCESS [2.507 s] Netty/Resolver/DNS ..... SUCCESS [4.733 s] Netty/Transport/RXTX .......... SUCCESS [2.496 s] Netty/Transport/SCTP .......... SUCCESS [2.857 s] Netty/Transport/UDT .... SUCCESS [4.487 s] Netty/Example .......... SUCCESS [4.359 s] Netty/Transport/Native/Unix/Common ... SUCCESS [3.106 s] Netty/Testsuite ........ SUCCESS [3.148 s] Netty/Transport/Native/Unix/Common/Tests .... SUCCESS [2.550 s] Netty/Transport/Native/KQueue ........ SUCCESS [ 25.000 s] Netty/Transport/Native/Epoll ......... SUCCESS [8.717 s] Netty/All-in-One ....... SUCCESS [8.696 s] Netty/Tarball .......... SUCCESS [0.905 s] Netty/Testsuite/Autobahn ...... SUCCESS [3.151 s] Netty/Testsuite/Http2 ......... SUCCESS [3.413 s] Netty/Testsuite/OSGI .......... SUCCESS [3.374 s] Netty/Testsuite/Shading ....... SUCCESS [9.432 s] Netty/Testsuite/NativeImage ... SUCCESS [3.898 s] Netty/Microbench ....... SUCCESS [ 25.340 s] Netty/BOM ....... SUCCESS [0.023 s] BUILD SUCCESS Total time: 03:28 min Finished at: 2019-10-28T08:17:40+08:00

作者回复: 你成功了,哈

2019-10-28
小不点
下周三见了,这几章听的云里雾里的,好几脸懵逼

作者回复: 加油

2019-10-24
根据其它回答整理 1. 全局搜索4.1.40.Final-SNAPSHOT , 全部替换成4.1.40.Final,修改依赖的 version 2. 跳过 checkstyle。 一定要 checkstyle的话还不清楚如何解决。 -Dcheckstyle.skip=true 3. 可以使用以下命令编译构建: mvn -e -U -DskipTests -Dcheckstyle.skip=true clean compile
2021-07-23
1
4
收起评论