Netty 作为互联网中间件的基石,是 JAVA 工程师进阶为高级程序员必备的能力之一。也是目前是互联网中间件领域使用最广泛最核心的网络通信框架。

Netty是一个高性能、异步事件驱动的NIO框架,它提供了对TCP、UDP和文件传输的支持;无论是在互联网领域、分布式计算领域,还是通信行业,游戏领域都有广泛的应用。

今天给大家介绍的这个教程,跟你平时学习的教程不太一样。这是一个通过实战操作来学习Netty的教程。会用由浅入深的概念+代码的方式,快速让人理解并上手Netty

因为这项技能对于JAVA工程师是非常重要的技能,学习也需要一定的基础。简单的东西没有太大价值。你需要是这样的人:

有基础的Java开发能力,自我突破的强烈欲望;具有一定Java网络编程能力,想要了解入门Netty。

知识点如下:

1:IO 基础入门

2:JAVA 网络编程

3:netty 入门

4:TCP 粘包/拆包

5:netty 编解码器

6:序列化传输

7:HTTP 服务器开发

8:深入 Netty ByteBuf

所以基本上,如果用心学完的话,收获还是会非常大的:Linux 网络模型/JAVA 原生网络编程/Netty 网络编程/HTTP 协议以及 HTTP 服务器的开发。

好啦废话不多少,上教程地址:>> http://t.cn/EozjS6O

对于网络编程不熟悉的同学,也可以先了解下网络 I/O 的基本概念:

先来说说什么是 I/O。根据维基百科的定义,I/O 指的是输入输出,通常指数据在内部存储器和外部存储器或其他周边设备之间的输入和输出。简而言之,从硬盘中读写数据或者从网络上收发数据,都属于 I/O 行为。

Linux 系统将所有的外部设备都看作一个文件来看待,所有打开的文件都通过文件描述符(简称 fd)来引用。而对一个 socket 的读写也会有相应的描述符,称为 socket 描述符(简称 socketfd)。描述符是一个非负整数,它指向内核中的一个结构体,由系统内核返回给进程。

在 Linux 内核中,I/O 操作通常包含两个阶段:

  • 内核等待数据准备好

  • 从内核复制数据到进程中

根据在这两个阶段的不同处理,Linux 提供了以下 5 种不同的 I/O 模型:

  • 阻塞 I/O 模型

  • 非阻塞 I/O 模型

  • I/O 复用模型

  • 信号驱动式 I/O 模型

  • 异步 I/O 模型

下面以 linux socket 编程的 recvfrom 函数作为系统调用来说明 I/O 模型。recvfrom 函数类似于标准的 read 函数,它的作用是从指定的套接字中读取数据报。recvfrom 会从应用进程空间运行切换到内核空间中运行,一段时间后会再切换回来。

阻塞 I/O 模型:最常用的 I/O 模型是阻塞 I/O 模型,也是最简单的模型,示意图如下:

为什么选择Netty?

  • 使用JDK自带的NIO需要需要掌握很多复杂概念,代码出错率较高。

  • Netty底层IO模型,通过简单的参数更改、调节等,就可以直接从NIO模型变身为IO模型。

  • Netty的拆包解包,异常检测等机制让你从NIO的细节中解放,只专注于关心业务逻辑。

  • Netty底层对线程,selector做了较多细节优化,reactor线程模型可做到高效并发处理。

  • Netty社区活跃,遇到问题随时邮件列表或者issue。

  • Netty已经历各大rpc框架,消息中间件,分布式通信中间件线上的广泛验证,健壮性强大。

相关推荐

50个Python练手项目,拿去过冬吧!

10个不到500行代码的超牛Python练手项目

10个精彩Python视频教程整理,10种新技能轻松Get!

30本Python学习参考书,从入门到大师全了!

大牛推荐的10本学习Java必看书

如何开始使用Java机器学习

再别说找不到C++练手项目,这20个拿去不谢!

最新文章

  1. ASP.NET知识总结(2.对比Get和Post提交方式)
  2. D​e​p​l​o​y​m​e​n​t​ ​f​a​i​l​u​r​e​ ​o​n​ ​T​o​m​c​a​t​ ​6​.​x​.​ ​C​o​u​l​d​ ​n​o​t​ ​c​o​p​y​ ​a​l​l​ ​r​e​s​o​u​r​c​e​s​ ​t​o
  3. Ionic 2.0.0-rc.1 发布,HTML5 移动应用框架
  4. ui方案设计
  5. JQuery中的事件以及动画
  6. VMware workstation12 pro安装Ubuntu14.04LTS过程笔记
  7. scala学习笔记-类型参数中协变(+)、逆变(-)、类型上界(<:)和类型下界(>:)的使用
  8. Unique Binary Search Trees II 解答
  9. jquery Ztree v3.5 实例2 自定义显示在节点前的图片
  10. .NET单元测试艺术(3) - 使用桩对象接触依赖
  11. iOS 2x 3x
  12. BZOJ 1228: [SDOI2009]E&D(SG定理)
  13. UML建模之时序图(Sequence Diagram)
  14. 2018-2019-2 网络对抗技术 20165337 Exp4 恶意代码分析
  15. windows下 go安装qt绑定
  16. static 关键字和类的加载顺序
  17. day03-课堂笔记
  18. 排列组合n选m算法
  19. 高性能MySQL(第3版) 中文PDF带目录清晰版
  20. wordcount程序中的应用与拓展

热门文章

  1. 【PV和PVC】kubernetes存储 persistent volume(持久化硬盘)和 persistent volume claim(持久化硬盘请求)
  2. 海思NB-IOT模组在平台上注册
  3. AMSR-E/AMSR-2数据介绍与下载
  4. 【NER】对命名实体识别(槽位填充)的一些认识
  5. iOS-Xib获取view尺寸的问题
  6. axios.js 在测试机ios7.1的iphone4中不能发送http请求解决方案
  7. eclipse设置格式化tab为4个空格和idea一样
  8. LeetCode 100. 相同的树(Same Tree) 2
  9. CSS3 实现别样图型
  10. python基础学习(七)