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个拿去不谢!

JAVA工程师必学技能,进阶涨薪的推进器!这份实战教程请收下相关推荐

  1. 视频教程-Java工程师必学系列课程之4--《Java Swing》视频课程-Java

    Java工程师必学系列课程之4--<Java Swing>视频课程 某知名科技公司技术总监,10年以上大型J2EE项目的实战研发经验,参与并主持开发"内蒙古电力集团考试系统&qu ...

  2. 文件节点的linux指令,Java工程师必学的Linux命令(一)文件与目录管理

    从本篇文章开始,我将总结一些Java工程师日常研发工作中会使用到的Linux命令,在介绍这些命令的过程中,也会对Linux系统的一些基础知识进行普及.希望对大家工作和学习有所帮助吧. 本篇将从文件与目 ...

  3. NLP工程师必学技能,自然语言处理进阶手册

    系列课程 基础入门:<自然语言处理通关手册> 实战进阶:<自然语言处理进阶手册> 2021 年,Google 一下 NLP 职位,你会发现有大量的相关搜索.实际上,世界各地各大 ...

  4. Java工程师必学知识点【吊打面试官系列】

  5. 必看!今年端午高速不免费,这份出行指南请收下

    2019独角兽企业重金招聘Python工程师标准>>> 来自郑州日报的消息:端午假期将于6月7日开启,省交通厅今日发布出行提示:端午假期高速公路通行不免费,6月6日下午.7日上午将出 ...

  6. python爬取app播放的视频,Python爬虫工程师必学——App数据抓取实战视频教程

    爬虫分为几大方向,WEB网页数据抓取.APP数据抓取.软件系统数据抓取.本课程主要为同学讲解如何用python实现App数据抓取,课程从开发环境搭建,App爬虫必备利器详解,项目实战,到最后的多App ...

  7. java 委托_动态代理:Java开发必学

    一句话概括:java 动态代理通过反射机制,可在不修改原代码的情况下添加新的功能,应用于多种场景,简单.实用.灵活,是 java 开发必学知识,本文将对动态代理使用进行详细介绍. 1. 引言 最近开发 ...

  8. Java虚拟机必学之四大知识要点,附学习资料

    转载自  Java虚拟机必学之四大知识要点,附学习资料 作为一位 Java 程序员,在尽情享受 Java 虚拟机带来好处的同时,我们还应该去了解和思考"这些技术特性是如何实现的", ...

  9. 云计算开发教程:运维工程师必会技能--sar

    今天这篇文章是给大家分享一些云计算开发教程,今天讲解的是:运维工程师必会技能–sar. SAR是系统活动报告(System Activity Report)英文单词的首字母缩写.正如它的名字所表示的那 ...

最新文章

  1. leetcode刷题总结(持续更新)
  2. Oracle存储过程和自定义函数
  3. “零成本”建设数据中心机房容灾方案
  4. 安卓拒绝服务漏洞分析及漏洞检测
  5. python中的与或非_「Python基础」 While 循环语句
  6. Docker中安装Jenkins实时发布.net core 项目(一)
  7. android px,dp,sp大小转换工具
  8. 10-12-顺序表地址排序-内部排序-第10章-《数据结构》课本源码-严蔚敏吴伟民版...
  9. 数据可视化黑科技!它比python强大20倍
  10. MTK:socket通信
  11. TFS集群间数据迁移任务总结
  12. 实体词典 情感词典_(全)情感词情感词典大全
  13. 萤火虫算法求解简单TSP问题
  14. 我没见过凌晨四点的洛杉矶,但想带你聆听每个都市夜归人的故事
  15. 一些无添加剂的日常食用品、洗护用品的价格(感谢飞哥)
  16. 大咖说开源|郑振宇:通过开源手段巩固基础软件供应链
  17. CSS复合选择器---后代选择器、子选择器、并集选择器、伪类选择器
  18. 做自适应网站专业乐云seo_网站建设技术很 棒乐云seo:SEO技术这碗青春饭,跪
  19. 使用ConnectBot开源项目在android设备上管理你的linux系统
  20. Linux 查看文件和文件夹大小,隐藏文件的大小方法总结

热门文章

  1. HttpClient的几个实现类
  2. 关于如何正确地在android项目中添加第三方jar包
  3. POJ 1014 Dividing(多重背包 + 倍增优化)
  4. 在centos安装redis
  5. Shell-8--数值运算及处理
  6. TensorFlow深度学习实战---循环神经网络
  7. Reginal2011_Chengdu_I Isabella's Message
  8. mfc创建一个word操作工程 【转自:http://blog.csdn.net/tg2003/article/details/4399981】
  9. 关于sharepoint 里面的时间和Moss对象模型取出来的时间不一致问题
  10. 每周一个 Python 模块 | calendar