1005 学习Netty有感

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/weixin_30531261/article/details/82943161

学习Netty有感

虽然题目是叫做学习Netty有感,但实际上并没怎么涉及到Netty的东西,更多的,是在学习Netty的道路上走了一些弯路以及找回方向的一些感悟。

公司里有个项目的Java模块,负责的是封装接口——调用数据库然后响应结果。有一天,项目经理过来说要加多一个接口,让我处理一下。这模块用的是Netty框架,于是我也很开心,因为可以顺便学习一下Netty框架。

一开始先是在网上看了hello world的demo,对照着公司的代码看了,感觉是明白了要怎么用了,也明白在代码中是在哪里接收数据、在哪里做出响应。

但是,回过头来想想,自己好像根本就没有学会Netty,不要说学会,根本就不懂Netty。

于是,国庆前开始,就一直在网上找各种文章去看,国庆这几天,也一直在看。一开始,直接奔着Netty的文章去看,看的很晕。Channel、EventLoop、ChannelHandler、Selector等概念,看的一头雾水。慢慢的,明白了是自己的预备知识太少,所以看起来似懂非懂。

然后明白了要想学Netty,必须先理解其相关的背景知识。如最基本的单线程socket,其缺点是什么。然后引申出多线程socket,它改进了单线程socket的什么问题,但是它仍然存在一些问题。再而,引申出使用多路复用机制的NIO,其相对于多线程socket改进了什么,而又存在什么问题。这时还得去了解什么是IO多路复用,以及为什么要使用IO多路复用。然后还得了解什么是同步阻塞IO、同步非阻塞IO、异步阻塞IO、异步非阻塞IO。搞懂之后,这时再来看Netty,还是会很晕。因为还缺少一块很重要的背景知识——Reactor模式。Netty框架就是Reactor模式的一种实现。因此,Reactor模式不可不学,搞懂其中的五个角色——Handle描述符、Synchronous Event Demultiplexer同步事件分发器、Event Handler事件处理器、Concrete Event Handler具体事件处理器、Initiation Dispatcher初始化分发器。

嗯,大致收获就是这样。并不能写出关于Netty知识的文章,写的好的文章实在是太多太多了。但是,我觉得对于新手来说,如果连上面讲的背景知识都不知道或者说一知半解,直接去学Netty,即使会用了那也不能说明他学懂了Netty,充其量就是会用而已。就像我这次给这模块新增了一个接口,参考着其他接口来实现,看下代码很快就写出来了,但是并不代表我会Netty,甚至说根本就不懂Netty。

下面是我在学习中看到的一些很好的文章:
解读IO多路复用技术:
https://www.jianshu.com/p/db5da880154a
解读Reactor模式:
https://www.jianshu.com/p/541b0e4fd454、
https://www.cnblogs.com/doit8791/p/7461479.html、
http://www.cnblogs.com/winner-0715/p/8733787.html
Netty详细介绍:
https://www.w3cschool.cn/essential_netty_in_action/essential_netty_in_action-un8q288w.html
Netty学习博客系列文章:
https://blog.csdn.net/linuu/article/category/6212307

猜你喜欢

转载自blog.csdn.net/weixin_30531261/article/details/82943161