Netty小结(未完待续),九月加油

1,661 阅读6分钟

这是我参与8月更文挑战的第31天,活动详情查看:8月更文挑战

前言

今天是8月31号了,八月最后一天,时间是过得真快啊,八月的更文挑战,第一天我就立了 flag,更文满勤,现在是最后一天了,也是更文挑战的最后一篇文章,不知道写些啥了,每天写一篇,而且不是水文,真的有点难,你说是不是,哪有那么多的东西写,就算有知识点写,时间也不够啊。白天要上班,只能利用休息时间、晚上、周六日来写,这个八月基本上都是在写文章,挺累的...话有点多,嗯,进入今天的正文吧。

正文

今天想跟大家分享一下关于Netty的知识点。作为一名 Java后端开发人员,你还不会 Netty真的有点说不过去了,如果你要进阶,想了解Java服务器的深层高阶知识,Netty绝对是一个必须要过的门槛。

历史文章

八月份的更文挑战,我的文章主要是关于Netty的知识点分享,如果你还没看我的文章,如果你对Netty还是一知半解,我希望你能认真看一下我总结的关于Netty知识点,相信会对你有帮助。相关链接如下:

深入分析 Java IO (一)概述

深入分析 Java IO (二)BIO

深入分析 Java IO (三)NIO

深入分析 Java IO (四)AIO

Netty 源码分析系列(一)Netty 概述

Netty 源码分析系列(二)Netty 架构设计

Netty 源码分析系列(三)Channel 概述

Netty 源码分析系列(四)ChannelHandler

Netty 源码分析系列(五)ChannelPipeline源码分析

Netty 源码分析系列(六)字节缓冲区 ByteBuf(上)

Netty 源码分析系列(七)字节缓冲区 ByteBuf(下)

Netty 源码分析系列(八)Netty 如何实现零拷贝

Netty 源码分析系列(九)Netty 程序引导类

Netty 源码分析系列(十)Reactor 模型

Netty 源码分析系列(十一)Netty 工作原理详解

Netty 源码分析系列(十二)Netty 解码器

Netty 源码分析系列(十三)Netty 编码器

Netty 源码分析系列(十四)Netty 编解码器

Netty 源码分析系列(十五)自定义解码器、编码器、编解码器

Netty 源码分析系列(十六)Future 源码分析

Netty 源码分析系列(十七)Promise 源码分析

推荐

关于Netty的知识点,还有很多,后期我们再来慢慢分享。小伙伴们,推荐几个好的资料给你们吧。

喜欢看书的小伙伴们, 《Netty原理解析与并发实战》 这本书还是很不错的,我已经看完了,真的挺不错的。

喜欢看视频的小伙伴们,去某站一搜,视频很多,其中我觉得讲解的最详细的应该是 :尚硅谷Netty教程(B站最火,人气最高,好评如潮)

视频讲解的真的很详细,对于初学者帮助应该是很大的,学进去,自己再结合实践去理解。

关于Netty

有了Netty,你可以实现自己的HTTP服务器,FTP服务器,UDP服务器,RPC服务器,WebSocket服务器,Redis的Proxy服务器,MySQL的Proxy服务器等等。

如果你想知道Nginx是怎么写出来的,如果你想知道TomcatJetty是如何实现的,如果你也想实现一个简单的Redis服务器,那都应该好好理解一下Netty,它们高性能的原理都是类似的。

Netty 是建立在NIO基础之上,Netty在NIO之上又提供了更高层次的抽象。

在 Netty 里面,Accept连接可以使用单独的线程池去处理,读写操作又是另外的线程池来处理。

Accept连接和读写操作也可以使用同一个线程池来进行处理。而请求处理逻辑既可以使用单独的线程池进行处理,也可以跟放在读写线程一块处理。线程池中的每一个线程都是NIO线程。用户可以根据实际情况进行组装,构造出满足系统需求的并发模型。

Netty 提供了内置的常用编解码器,包括行编解码器,前缀长度编解码器,可重放解码器,HTTP编解码器,WebSocket消息编解码器等等。

Netty 提供了一些列生命周期回调接口,当一个完整的请求到达时,当一个连接关闭时,当一个连接建立时,用户都会收到回调事件,然后进行逻辑处理。

Netty 可以同时管理多个端口,可以使用NIO客户端模型,这些对于RPC服务是很有必要的。

Netty 除了可以处理 TCP Socket之外,还可以处理 UDP Socket。

在消息读写过程中,需要大量使用 ByteBuffer,Netty 对ByteBuffer在性能和使用的便捷性上都进行了优化和抽象。

总之,Netty是Java程序员进阶的必备神奇。如果你知其然,还想知其所以然,一定要好好研究下Netty。

寄语

本人从事 Java开发四年的时间,一开始也是很迷茫,对于技术呢,完成业务需求就行,没啥追求,后来呢,一年过去,技术上没啥长进,出去面试呢,面试官问的大部分我都不会,找工作也四处碰壁,也许是我要的工资跟我的能力匹配不上,找了一个月都没找到工作,然后就是每天背面试题咯,总结知识点咯,最终是面试上了。经过那一段整天出去面试,碰壁,我才觉得,闲暇时间多学点东西,整天摸鱼最后摸得自我感觉良好,其实啥也不会。面试官稍微问深一点,一脸蒙B。

所以呢,我建议刚开始工作的、有的还是大学生的小伙伴,珍惜时间,少摸鱼,多看点书。没事也可以出去面试,看看自己的市场价值和能力的欠缺。对自己有一定的认知吧,有的喜欢技术,那就往架构师的方向去努力;有的喜欢与人沟通,对业务比较感兴趣,可以往产品经理努力呀;其实程序员这个行业现在也不是很吃香了,因为中国现在不缺程序员了。转行的也大有人在,希望我们都能喜欢我们现在的工作。不仅能赚钱,如果你能享受其中,那就更完美了。

最后

希望大家都能干自己喜欢干的事情,我相信掘金的小伙伴们都是热爱学习的,让我们一起前进吧。

我是一个正在被打击还在努力前进的码农。如果文章对你有帮助,记得点赞、关注哟,谢谢!