打算写一些Netty的文章了,先聊聊为什么要学习Netty
微信搜索【阿丸笔记】,关注Java/MySQL/中间件各系列原创实战笔记,干货满满。
2021年了,终于开始系统性总结Netty相关的东西了。
这会是Netty系列的第一篇,我想先聊聊 “为什么要学习Netty”。
- 绕不开的编程框架
- Java进阶之梯
- 面试“绝招”
- 一个小小的心结
1.绕不开的框架
说到Netty,相信所有做Java后端开发的同学都应该听说过。
这是一个再经典不过、且仍然被广泛使用的网络编程框架。
就我接触过并看过源码的开源项目,可以说基本上都是使用Netty作为网络通信的底层框架,包括Dubbo、RocketMQ、Canal、otter、HBase等等。
所以,我始终认为,学习Java,Netty是一个绕不开的框架。
能彻底掌握一个如此必不可少的底层框架,是非常有必要的。
2.Java进阶之梯
一个应用如此广泛的东西,并不意味着简单。
很多同学可能知道Netty,甚至使用过Netty,但是如果要深入探讨技术细节,或者借鉴Netty来优化自己的项目,可能就会力不从心了。
Netty作为一个众所周知的高性能网络编程框架,有太多值得我们学习的技术细节和核心原理。
包括但不限于:
- 网络IO模型
- 多线程模型
- 内存管理
- 高性能数据结构
- 设计模式
如果能将Netty中的这些技术细节彻底掌握,那么我们对于网络编程、操作系统、Java编程语言的理解,都将迈上一个全新的台阶。
3.面试“绝招”
除了提升技术水平之外,另一个大家比较重视的就是面试了。
对于中高级的后端开发面试中,Netty相关的知识点也是面试中绝对的高频试题。
随便举几个例子,相信大家都曾经碰到过:
- Netty的粘包/拆包是怎么处理的,有哪些实现?
- 同步与异步、阻塞与非阻塞的区别?
- BIO、NIO、AIO分别是什么?
- select、poll、epoll的机制及其区别?
所以,深入学习Netty,也是跳槽面试、升职加薪的必备“绝招”。
4.一个小小的心结
刚刚工作的时候,我们组有个技术大佬,非常非常强。基本上公司出现任何线上问题,没有他解决不了的。
我有幸一毕业就在他的指导下进行工作,教会了我很多技术知识和技术成长路线。
我记得他当时跟我说过,
如果有时间,一定要系统性地学习Netty。如果没有掌握Netty的核心原理,那么永远都是Java的初学者。
工作了几年,我心里仍然念念不忘这句话。
虽然零零散散也看过不少Netty的相关原理与技术博客,但是总归是浅尝辄止。
2021年了,给自己定个小目标,一定要 系统地、深入地、有实践地 掌握Netty,修炼好“内功”。
如果你也有兴趣,欢迎跟着我一起看一看、练一练吧。
我会尽量结合源码与实战案例来剖析Netty 的核心技术原理,能在工作中有所输出,避免踩坑。
同时,也会结合高频面试题,将回答要点精炼出来。
都看到最后了,原创不易,点个关注,点个赞吧~
文章持续更新,可以微信搜索「阿丸笔记 」第一时间阅读,回复【笔记】获取Canal、MySQL、HBase、JAVA实战笔记,回复【资料】获取一线大厂面试资料。
知识碎片重新梳理,构建Java知识图谱:github.com/saigu/JavaK…(历史文章查阅非常方便)
打算写一些Netty的文章了,先聊聊为什么要学习Netty的更多相关文章
- 打算写一个《重学Node.js》系列,希望大家多多支持
先放上链接吧,项目已经开始2周了:https://github.com/hellozhangran/happy-egg-server 想法 现在是2019年11月24日,还有人要开始学习Node.js ...
- 外国人专门写了一篇文章,来分析为什么go在中国如此火
外国人专门写了一篇文章,来分析为什么go在中国如此火: <Why is Golang popular in China?> http://herman.asia/why-is-go-pop ...
- Netty 源码分析系列(二)Netty 架构设计
前言 上一篇文章,我们对 Netty做了一个基本的概述,知道什么是Netty以及Netty的简单应用. Netty 源码分析系列(一)Netty 概述 本篇文章我们就来说说Netty的架构设计,解密高 ...
- Netty(二) 从线程模型的角度看 Netty 为什么是高性能的?
前言 在之前的 SpringBoot 整合长连接心跳机制 一文中认识了 Netty. 但其实只是能用,为什么要用 Netty?它有哪些优势?这些其实都不清楚. 本文就来从历史源头说道说道. 传统 IO ...
- ES transport client底层是netty实现,netty本质上是异步方式,但是netty自身可以使用sync或者await(future超时机制)来实现类似同步调用!因此,ES transport client可以同步调用也可以异步(不过底层的socket必然是异步实现)
ES transport client底层是netty实现,netty本质上是异步方式,但是netty自身可以使用sync或者await(future超时机制)来实现类似同步调用! 因此,ES tra ...
- Netty快速入门(10)Reactor与Netty
Reactor模式 Reactor是1995年由道格拉斯提出的一种高性能网络编程模式.由于好多年了,当时的一些概念与现在略有不同,reactor模式在网络编程中是非常重要的,可以说是NIO框架的典型模 ...
- netty实现消息中心(二)基于netty搭建一个聊天室
前言 上篇博文(netty实现消息中心(一)思路整理 )大概说了下netty websocket消息中心的设计思路,这篇文章主要说说简化版的netty聊天室代码实现,支持群聊和点对点聊天. 此demo ...
- 用Markdown写微信公众号文章
目前微信公众号的编辑器是不支持Markdown语法的,那怎么办呢? 有一款叫Markdown Here的插件可以解决这个问题(支持Chrome.Firefox.Safari). 官方网站:http:/ ...
- 使用word写CSDN博客文章
目前大部分的博客作者在用Word写博客这件事情上都会遇到以下3个痛点: 1.所有博客平台关闭了文档发布接口,用户无法使用Word,Windows Live Writer等工具来发布博客.使用Word写 ...
随机推荐
- [Java复习]架构部署 超时重试 幂等防重
画一下你们系统的整体架构图,说说各个服务在生产环境怎么部署的? 核心:服务框架.注册中心.网关 即使你没有用很多微服务架构里的东西,只要有上述三个东西,配合上写一些文档,接口文档,分布式系统架构,其实 ...
- 添加和读取Resources嵌入资源文件(例如.dll和.ssk文件)
前言:有些程序运行的时候,可能调用外部的dll,用户使用时可能会不小心丢失这些dll,导致程序无法正常运行,因此可以考虑将这些dll嵌入到资源中,启动时自动释放.对于托管的dll,我们可以用打包软件合 ...
- 团队作业6(A)-Alpha阶段项目复审
Alpha阶段项目复审 复审团队: 莫政 (3118005067). 卢耀恒(3118005065) . 许梓莹(3218005083). 梁小燕(3218005081).高嘉淳(3118005047 ...
- vue 编程式导航
// 命名的路由(这里的name为路由中定义的name名称) this.$router.push({ name: 'user', params: { userId: '123' }}) // 带查询参 ...
- Codeforces Round #682 Div2 简要题解
Contest link A.Specific Tastes of Andre Problem link 题意 构造一个长度为 \(n\) 的序列,使得每个非空子序列的和都被其长度整除. 思路 直接每 ...
- 【科技】单 $\log$ 合并两棵有交集 FHQ-Treap 的方法
维护可分裂 & 合并的可重集 考虑这样一个问题: 维护 \(n\) 个 可重集 \(S_1, S_2, \cdots, S_n\),元素值域为 \([1, U]\),初始集合为空.支持一下操作 ...
- dbeaver 驱动安装
一.背景: 在Windows 10 安装dbeaver数据库连接工具,点"测试连接"的时候出现报错如下: Error resolving dependencies Maven ...
- Linux下weblogic启动慢
修改Linux上Weblogic使用的jdk $JAVA_HOME/jre/lib/security/java.security (/bea/weblogic/jdk150_12/jre/lib/se ...
- tp5使用PHPExcel(下载引入/composer与模板/生成方式搭配使用)
PHPExcel使用 一:引入 tp5.0,tp5.1: 1:composer方式 a:根目录下执行:composer require phpoffice/phpexcel b:引入(可new \PH ...
- vue-router 路由传参的几种方式,刷新页面参数丢失
常见场景:点击列表详情,跳转到详情内页,传递id参数获取详情数据. 我们先来看看路由跳转的几种方式: 1.通过params方式传参 通过$route.push的path携带参数方式 // 路由配置 { ...