前言
有段时间没更新了,最近抽空整理学习了netty,话说几年前也尝试学习过Netty,但是要么就是半途而废,要么就是似懂非懂的撸过去,并没有系统性的消化netty。这次希望能通过我的学习整理把如何学习netty说明白,包括把操作系统相关的预备知识说明白,让新手学习Netty简单些。
Netty 是什么
Netty的定位是基于java语言构建高级网络应用的客户端/服务器框架,它是专注于网络编程的框架,重点在于网络编程。
Netty的前因后果
netty是专注于网络编程,那就得说到 TCP/IP协议和I/O模型了,注意这里说的是操作系统的I/O模型,还没有说到java的I/O模型,IO模型分为同步异步和阻塞非阻塞之分,netty高性能说到底就是利用了系统内核提供的多路复用特性,拿linux举例,就是select、epoll。然后刚好jdk在1.4后中使用了系统内核这个特性,从而有了nio,但是普通人直接用jdk哪些nio的api构建网络应用复杂度和难度都大了些,这才有了netty,专注于构建网络应用。
预备知识
大致知识脉络厘清后,就可以逐步开始我们的学习之旅了。我的建议分以下几步:
- 什么是socket
- tcp/ip协议深入了解
- 操作系统I/O模型学习
- 操作系统的进程调度
- java I/O模型和网络编程学习
- Netty学习
总结
以上预备知识有时需要翻越书籍查阅,《linux内核设计与实现》《Unix网络编程 卷1》《Netty实战》《Netty 权威指南》等,书籍可以通过添加公众号获取电子版。作者也会在后续推出相关文章,细化各个知识点。
喜欢本文的朋友们,欢迎长按下图关注订阅号"我的编程笔记",收看更多精彩内容~~