Netty(一):入门篇
匠心零度 转载请注明原创出处,谢谢!
说在前面
上篇文章对Netty进行了初探:Netty初探,主要介绍了下我们为什么需要学习netty、netty介绍等;本篇文章接着上篇文章的内容。本篇为了方便大家快速入门、了解实践Netty特性、快速上手一个例子让大家有一个比较直接的认识。
主题
- 版本选择及说明
- 快速入门
- 总结
版本选择及说明
版本的选择,这是一个很直接但是又经常需要面对的问题,特别是开源项目的时候,我们在选择版本的时候有很多考虑,比较jdk各个版本选择、zookeeper版本的选择、Tomcat版本选择,Spring系列版本选择等等,后续后空我们可以讨论讨论关于开源这些版本选择以及升级事宜交流,今天的重点是在netty版本的选择上面。
netty目前版本说明
目前Netty大版本就分为三个:3.x、4.x、5.x。
我们先看看官网怎么说:

备注:推荐使用的版本是4.x,那么我们再看看很多使用Netty的一些项目,的确使用的是4.x版本,据了解Dubbo3.x将会将Netty4.0.x升级到4.1.x版本。
看看官网:

备注:如果是在项目中进行使用那么我们可能会选择4.1.x的比如其他版本,需要考虑稳定性等,一般很少选择最新的,但是我们是来学习netty,那么我建议就选择最新版本:4.1.21.Final版本。,因为当我们学习完了之后,可能已经很久了,21版本估计也稳定了,并且都是4.1x版本,一般仅仅是一些小的改动,就算后面选择新版本学习应该也不是特别困难。
Netty4.1.x简单介绍
建议看官网New and noteworthy in 4.1(http://netty.io/wiki/new-and-noteworthy-in-4.1.html),先了解下有那些大概的变动(不要认为之前没用过,看就没有必要,看看也是它的一些亮点,后续可能要重点学习了解思考的)
主要改变:
- Android support
- ChannelHandlerContext.attr(..) == Channel.attr(..)
- Channel.hasAttr(...)
- Easier and more precise buffer leak tracking
- PooledByteBufAllocator as the default allocator
- Globally unique channel ID
- EmbeddedChannel usability
- Ability to use Executor instead of ThreadFactory
- Class loader friendliness
- ByteBufAllocator.calculateNewCapacity()
备注:具体详情记得去官网看看:http://netty.io/wiki/new-and-noteworthy-in-4.1.html,这次可以大概了解下,后续有空慢慢看看。
快速入门
说了那么多了,我们来一个简单的Demo来简单的感受下Netty。
maven构建项目
新建一个Maven项目,之后去github上面找到netty对应的例子代码:

放到项目中,代码结构如图:

pom.xml中添加如下内容:
<dependency>
<groupId>io.netty</groupId>
<artifactId>netty-all</artifactId>
<version>4.1.21.Final</version>
</dependency>
稍微在原来demo基础上面修改了点东西,解决半包、黏包问题(后续详细介绍)
以及发送内容等信息。
我已经把代码提交到github上面去了,需要的小伙伴可以直接下载:https://github.com/lirenzuo/nettydemo。
运行效果截图


可以与使用nio写的代码进行对比,NIO相关基础篇二,发现用Netty写一个TCP原来这么简单,都封装好了。
总结
使用Netty可以非常方便、快速的搭建网络开发环境,使得我们不用关心一些例如客户端面临断连重连、网络闪断、半包读写、失败缓存、网络拥塞和异常码流的处理等等的问题,所以使用Netty进行网络开发是非常合适的,本篇只是一个入门,后续有了Demo可以跑起来的时候,进行断点啥的也好进行学习了。
如果读完觉得有收获的话,欢迎点赞、关注、加公众号【匠心零度】,查阅更多精彩历史!!!

Netty(一):入门篇的更多相关文章
- <Netty>(入门篇)TIP黏包/拆包问题原因及换行的初步解决之道
熟悉TCP编程的读者可能都知道,无论是服务端还是客户端,当我们读取或者发送消息的时候,都需要考虑TCP底层的粘包/拆包机制.木章开始我们先简单介绍TCP粘包/拆包的基础知识,然后模拟一个没有考虑TCP ...
- netty深入学习之一: 入门篇
netty深入学习之一: 入门篇 本文代码下载: http://download.csdn.net/detail/cheungmine/8497549 1)Netty是什么 Netty是Java NI ...
- netty深入学习之中的一个: 入门篇
netty深入学习之中的一个: 入门篇 本文代码下载: http://download.csdn.net/detail/cheungmine/8497549 1)Netty是什么 Netty是Java ...
- (入门篇 NettyNIO开发指南)第三章-Netty入门应用
作为Netty的第一个应用程序,我们依然以第2章的时间服务器为例进行开发,通过Netty版本的时间服务报的开发,让初学者尽快学到如何搭建Netty开发环境和!运行Netty应用程序. 如果你已经熟悉N ...
- Scala进阶之路-并发编程模型Akka入门篇
Scala进阶之路-并发编程模型Akka入门篇 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.Akka Actor介绍 1>.Akka介绍 写并发程序很难.程序员不得不处 ...
- Membership三步曲之入门篇 - Membership基础示例
Membership 三步曲之入门篇 - Membership基础示例 Membership三步曲之入门篇 - Membership基础示例 Membership三步曲之进阶篇 - 深入剖析Pro ...
- spring boot(一):入门篇
构建微服务:Spring boot 入门篇 什么是spring boot Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程.该框 ...
- 1. web前端开发分享-css,js入门篇
关注前端这么多年,没有大的成就,就入门期间积累了不少技巧与心得,跟大家分享一下,不一定都适合每个人,毕竟人与人的教育背景与成长环境心理活动都有差别,但就别人的心得再结合自己的特点,然后探索适合自己的学 ...
- 一个App完成入门篇(七)- 完成发现页面
第七章是入门篇的倒数第二篇文章了,明天整个APP将进入收官. 本节教程主要要教会大家使用二维码扫描和用do_WebView组件加在html页面. 导入项目 do_WebView组件 扫描功能 自定义事 ...
- [原创]Linq to xml增删改查Linq 入门篇:分分钟带你遨游Linq to xml的世界
本文原始作者博客 http://www.cnblogs.com/toutou Linq 入门篇(一):分分钟带你遨游linq to xml的世界 本文原创来自博客园 请叫我头头哥的博客, 请尊重版权, ...
随机推荐
- nagios与zabbix对比
nagios与zabbix对比 web功能: Nagios简单直观,报警与数据都在同一页面,***.红色即为问题项.Nagios web端不要做任何配置. Zabbix监控数据与报警是分开的,查看问题 ...
- 微信小程序实现淡入淡出效果(页面跳转)
//目前小程序没有fadeIn(),fadeOut()方法所以还是本方法手写 <!--wxml--><!--蒙版(渐出淡去效果)--><view class=" ...
- IDEA安装vue开发插件
前言: 开发免不了要用到开发工具,什么sublime,webstorm,idea的,现在我就说下idea开发神器下安装vue插件进行vue项目的开发吧. idea下载地址:http://www.jet ...
- 从零开始学习前端JAVASCRIPT — 4、JavaScript基础Math和Date对象的介绍
Math对象的介绍 1:Math对象 Math 对象用于执行数学任务.并不像 Date 和 String 那样是对象的类,因此没有构造函数 Math().您无需创建它,通过把 Math 作为对象使用就 ...
- 用AngularJS实现对表格的增删改查(仅限前端)
<!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8&quo ...
- 使用bat将优盘中的dig加到系统环境变量
第一次使用bat批处理,记录下,方便查阅. @echo off::当前盘符set curPath=%cd%set digPath ="%curPath%tool\dig"set P ...
- phpstudy中的mysql
1.进入mysql命令台,执行 select version()即可 2status;
- 修改织梦默认栏目页、文章页URL命名规则,简化目录结构
版权声明:本文为博主原创文章,未经博主允许不得转载. 用织梦Dedecms建站,建议优化系统默认的URL结构,这样能简化网站目录深度,利于搜索引擎收录. 现在织梦的默认文章命名规则是 {typedir ...
- PHP 常用的header头部定义汇总
http://www.jb51.net/article/68159.htm
- CCF系列之最大的矩形(201312-3)
试题名称: 最大的矩形 时间限制: 1.0s 内存限制: 256.0MB 问题描述: 问题描述 在横轴上放了n个相邻的矩形,每个矩形的宽度是1,而第i(1 ≤ i ≤ n)个矩形的高度是hi.这n个矩 ...