- 有一定 Java 基础,想要进一步学习 Java 网络编程的在校生
- 工作 1-5 年,接触过 Netty,想要深入了解内部原理的同学
- 对技术有追求,想要在面试中提高自己竞争力的同学
- 对 Netty 底层源码感兴趣的爱好者
Netty 作为当前最流行的网络通信框架,在大数据领域、游戏行业、通信行业等获得了广泛的应用,很多业界的开源组件底层也是基于 Netty 构建的,比如 Dubbo、Spark、Flink、Cassandra 等,Netty 无疑已经成为了 Java 网络编程的事实标准,所以掌握 Netty 是每个初中级工程师迈向高级的必备技能之一。
除此之外,很多大厂,比如阿里、腾讯、百度、滴滴等,在高级工程师的面试中,也会经常问一些与 Netty 相关的技术问题,如果你能全面掌握 Netty,相信也能在面试中给面试官留下深刻的印象,提高收割 offer 的能力。
本专栏采用循序渐进的方式,从网络编程的基础知识讲起,再过渡到 Netty,并结合生产级的实战案例以及完整的思维导图,带你系统全面地掌握 Netty。因此,本专栏从理论到实战兼顾,不仅适合小白上手 Netty,也同样适合老手学习生产级的实战经验。
每篇文章的结构大致如下:
希望本期专栏可以帮助大家更好地学习 Netty,同时,也欢迎大家踊跃留言,共同讨论。
彤哥,现任国内某大型互联网企业研发经理,负责中台架构的建设、新技术预研等工作。同时是技术公众号 “彤哥读源码 “的运营者, 擅长阅读源码,并有一套源码阅读的方法论。
本专栏分为 6 大模块,共 40 小节。
专栏布局由易到难,由浅入深,不仅适合小白快速上手 Netty,也适合老手深入剖析 Netty。
介绍 Netty 的发展历史,并学习 Java 及 Netty 网络编程的基础知识。
从数据流向的角度剖析源码,包含服务启动、接收数据、关闭连接等。
从核心知识的角度剖析源码,包含内存池、对象池、线程池等。
以一个游戏项目为例介绍如何使用 Netty 开发生产级网络应用,包含软件开发的整个生命周期。
对实战项目进行不断调优,并介绍如何排查生产问题。
对整门课程做总结和回顾。
想问下老师,我想学Netty,手头上正好有《TCP:IP详解:协议卷1》《Java网络编程》,可以直接学Netty呢? 还是先把这两本书看完在学? 或者是边学Netty,遇到不明白的再去针对性的从这两本书里找一些资料呢?
通俗易懂,爱了爱了!
讲得非常有趣,给作者点赞!
"但是它有一个非常大的优点,就是我们始终只有一个线程,并没有启动额外的线程来处理每个连接的事务,解决了 BIO 线程无限增加的问题,所以,NIO 是非常高效的" 这句话不太理解,BIO那个程序完全也可以采用单线程的处理方式啊,这样就不存在创建大量线程的缺点了,这段NIO再消费客服端请求的时候采用的是单线程阻塞的方式,前一章的BIO程序也是可以去掉线程池的,所以从这方面去分析,也看不出谁更高效,因为都是阻塞IO。退一步讲,上一章BIO采用的是线程池,那么处理客服端请求是可以并行处理的,它的性能反而更加的高效才对,这就很矛盾了。
看了不少专栏,发现作者的写作风格,非常有意思,赞了
写的不错!
请问,在IO 多路复用中,委托美女,向美女询问菜好了没有的时候,到底能不能玩手机?
嗯非常对 最重要的还是需要掌握底层核心知识,这些核心知识掌握了,学习其他东西真的能事半功倍。老师讲解的源代码和核心原理适合入门学习吗?
老师写得可以啊,学起来~~
我的理解: Reactor主从模式和变异的Reactor模式的区别如下: 在我看来好像他俩的唯一区别就是主从模式中,子Reactor将read/send事件与IO处理分开了,IO处理放到了线程池中进行;而变异的Reactor模式则是将read/send事件与IO处理作为一个整体,然后放到线程池中进行; 第一个问题: 我如上的理解正确吗? 第二个问题: 主从和变异的两种方式哪个效率更高呢?为什么Netty选择的是变异的Reactor模式呢?
Mr_Raymond
qq_达达_14
慕九州4486665