拿下Netty这座城,从现在开始!
你好,我是彤哥,技术公号主“彤哥读源码”的运营者。
其实,我刚学习Netty的时候,也是很迷茫的,直到有一天,一个同事收到了阿里的offer,他要去阿里做中台了,临走前他偷偷地告诉我,多看看Netty,特别是源码。
之后,我把市面上有关Netty的书籍和博客几乎全部看了一遍,并跟着书中的示例边看边练,但是,最后,我发现,在Netty的知识方面,我只是从一个学徒变成了一个熟练工,对Netty的理解还是谈不上有多深刻,因为很多书籍或者博客对Netty的讲解都停留在使用的角度,对于核心知识和底层原理,讲解得很少,或者说是很不全面。
所以,我决定自己动手,把Netty的源码撸一遍,没多久,我就发现,我不仅在Netty方面的知识飞速增长,对于Java底层的很多原理也理解得更透彻了,得益于此,我后面进入了国内某互联网游戏公司担任平台架构的设计与实现。
这是我自己学习Netty的经历,现在,你可以想想你的情况。
是不是一直想学习Java网络编程,却不知道怎么入门?
是不是看完《Netty实战》,还是只会写入门级的示例?
是不是学习其他开源框架,一深入到通信层就无所适从?
是不是面试过程中,提及Netty,只能简单地说说请求的执行流程?对于更底层的线程池、对象池、内存池却一问三不知?
如果你是这种情况,其实你并不孤独,这不是你一个人遇到的问题,在工作中,我喜欢与人交流,发现很多同学,不管新人,还是老人,对Netty的掌握都停留在表面。
还是上面那位牛人,他去阿里后,遇到的第一个挑战是他的领导让他一个星期内学习完Dubbo,并做成PPT分享给全组人员,对于从来没学习过Dubbo的他,你可能会说,这太难了,几乎不可能完成。然而,他学习Dubbo只花了五天时间,剩余两天做成PPT,汇报时,领导给了个完美。
我觉得这其中他对Netty的深入理解占了很大的比例。后面,他跟我说,其实,Java领域学来学去就那么些东西,最重要的还是掌握底层核心知识,这些核心知识掌握了,学习其他东西真的能事半功倍,这也是他能快速学习并获得成功的秘诀。
那么,作为Java开发者,应该掌握哪些底层核心知识呢?
无外乎就是反射、代理、多线程这些东西,当然,还有NIO,那么,如何快速地学习并掌握这些知识呢?
我认为通过源码是一种不错的途径,不管是Java本身的源码,还是开源框架的源码。
而Netty作为Java网络编程领域的事实标准,无疑是最合适的。

通过上图,可以看到,在Java中,很多大家熟悉的框架都在使用Netty,而且,这些框架遍布Java的各个领域,包括但不仅限于大数据、RPC、消息队列、搜索引擎、数据库等。
所以,我想做一个关于Netty的课程,希望通过这个课程能够让你真正掌握到Netty的底层核心知识。
那么,我将怎么设计这个课程呢?
我根据自己学习和使用Netty的经验,将整个课程分成六个模块来讲解:

基础知识,介绍Netty的发展历史,并学习Java网络编程的基础知识,打好基础,方能事半功倍;
源码剖析——数据流向,从数据流向的角度剖析源码,包含服务启动、接收数据、关闭连接等,快速掌握Netty应用运行的基本流程,这一部分源码可以使用泛读的技巧,快速阅读,了解大致流程;
源码剖析——核心知识,从核心知识的角度剖析源码,包含内存池、对象池、线程池等,深入底层,掌握核心要点,这一部分源码需要精读,对每一个知识点死磕到底;
项目实战,从软件开发生命周期的角度,介绍如何使用Netty开发一个生产级的游戏项目;
实战进阶,对实战项目进行不断调优,使其更稳定、更快速、更安全、更可靠,并介绍如何快速排查生产问题;
课程总结,对整个课程做一个总结和回顾。

点击链接可查看课程详情https://www.imooc.com/read/82
我很感激当年偷偷告诉我要看Netty的那位同事,那无疑是我人生中非常重要的转折点。
没有那位同事的悄悄话,可能就没有今天的我,希望这个专栏也能成为你的人生的一个转折点。
最后,我希望通过这个专栏,不仅能够帮你学习到Netty的底层核心知识,更能加深对Java底层核心知识的理解,帮你拿下Netty这座城,渡过职场和人生的重要时刻,come on!
关注公众号“彤哥读源码”,解锁更多源码、基础、架构知识!
拿下Netty这座城,从现在开始!的更多相关文章
- 引水入城(codevs 1066)
题目描述 Description 在一个遥远的国度,一侧是风景秀美的湖泊,另一侧则是漫无边际的沙漠.该国的行政 区划十分特殊,刚好构成一个N行M列的矩形,如上图所示,其中每个格子都代表一座城 市,每座 ...
- 【NOIP2010】引水入城
以前一直以为是什么高端DP,看了题解才发现是水题,老是这样看题解才能写出来到赛场上怎么办嘛QAQ 原题: 在一个遥远的国度,一侧是风景秀美的湖泊,另一侧则是漫无边际的沙漠.该国的行政区划十分特殊,刚好 ...
- Codevs 1066 引水入城 2010年NOIP全国联赛提高组
1066 引水入城 2010年NOIP全国联赛提高组 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 钻石 Diamond 传送门 题目描述 Description 在一个遥远的国度 ...
- codevs 1066 引水入城
传送门 题目描述 Description 在一个遥远的国度,一侧是风景秀美的湖泊,另一侧则是漫无边际的沙漠.该国的行政 区划十分特殊,刚好构成一个N行M列的矩形,如上图所示,其中每个格子都代表一座城 ...
- CODEVS 1066/洛谷 P1514引水入城
1066 引水入城 2010年NOIP全国联赛提高组 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 钻石 Diamond 题目描述 Description 在一个遥远的国 ...
- 【搜索+DP】codevs1066-引水入城
[题目大意] 一个N行M列的矩形,如上图所示,其中每个格子都代表一座城 市,每座城市都有一个海拔高度.现在要在某些城市建造水利设施.水利设施有两种,分别为蓄水厂和输水站.蓄水厂的功能是利用水泵将湖泊中 ...
- EventLoop(netty源码死磕4)
精进篇:netty源码 死磕4-EventLoop的鬼斧神工 目录 1. EventLoop的鬼斧神工 2. 初识 EventLoop 3. Reactor模式回顾 3.1. Reactor模式的组 ...
- NOIP2010_T4_引水入城 bfs+贪心
在一个遥远的国度,一侧是风景秀美的湖泊,另一侧则是漫无边际的沙漠.该国的行政区划十分特殊,刚好构成一个 N 行 M 列的矩形,如上图所示,其中每个格子都代表一座城 市,每座城市都有一个海拔高度.为了使 ...
- 引水入城 2010年NOIP全国联赛提高组(bfs+贪心)
1066 引水入城 2010年NOIP全国联赛提高组 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 钻石 Diamond 题目描述 Description 在一个遥远 ...
随机推荐
- ssh生成单个公钥
ssh生成单个公钥命令: ssh-keygen -t rsa -b 4096 -C "your_email@example.com" 查看公钥: cat ~/.ssh/id_rsa ...
- 微信小程序入门基础
微信小程序入门基础 视频教程(https://edu.csdn.net/course/detail/8456?pre_view=1) 第一章.认识小程序 1.工具的下载与安装 2.小程序代码构成 ...
- SpringMVC拦截器使用
源码地址 拦截器interceptor 拦截器是URL请求的第一道门,所有请求会先经过拦截器interceptor,然后再进入controller: 下面,记录一种通过注解方法拦截所有需要登录才能发起 ...
- redis高级命令4 持久化机制 、事务
redis的事务是支持很简单,基本没有啥用我们来看下面的列子 我们开启一个事务,在事务中执行了age 加1,set a4 ,还有对一个字符串进行加一,对字符串加1导致了事务失败,按道理incr age ...
- Redis 的基本数据类型 和 基础应用场景
Redis 的基础应用场景 获取中奖用户ID,随机弹出之后集合中就不存在了[set] 存储活动中中奖的用户ID,保证同一个用户不会中奖两次[set] 存储粉丝列表,value 为粉丝的用户ID,sco ...
- 入门大数据---HDFS-HA搭建
一.简述 上一篇了解了Zookeeper和HDFS的一些概念,今天就带大家从头到尾搭建一下,其中遇到的一些坑也顺便记录下. 1.1 搭建的拓扑图如下: 1.2 部署环境:Centos3.1,java1 ...
- 基于AOP和ThreadLocal实现日志记录
基于AOP和ThreadLocal实现的一个日志记录的例子 主要功能实现 : 在API每次被请求时,可以在整个方法调用链路中记录一条唯一的API请求日志,可以记录请求中绝大部分关键内容.并且可以自定义 ...
- oracle创建序列,并插入记录
Oracle序列创建和使用创建序列 语法 CREATE SEQUENCE 序列名 [相关参数] 参数说明 INCREMENT BY : 序列变化的步进,负值表示递减.(默认1) START WITH ...
- 深入理解JavaScript系列(2):揭秘命名函数表达式(转)
前言 网上还没用发现有人对命名函数表达式进去重复深入的讨论,正因为如此,网上出现了各种各样的误解,本文将从原理和实践两个方面来探讨JavaScript关于命名函数表达式的优缺点. 简 单的说,命名函数 ...
- 注解式HTTP请求Feign (F版)
Spring Cloud 为开发者提供了在分布式系统中的一些常用的组件(例如配置管理,服务发现,断路器,智能路由,微代理,控制总线,一次性令牌,全局锁定,决策竞选,分布式会话集群状态).使用Sprin ...