1、原生NIO存在哪些缺陷
    (1)NIO的类库和API繁杂,使用也比较麻烦,需要熟练掌握selector、ServerSocketChannel、SocketChannel、ByteBuffer等
    (2)NIO入门门槛高,需要其他相关技能的铺垫,比如:熟悉java多线程编程,因为NIO编程涉及到Reactor模式,必须对多线程和网络非常熟悉,才能编写出高质量的NIO程序。
    (3)工作量大,难度大,可靠性能力补齐和工作量难度大,比如客户端面临断连、重连,网络闪断,半包读写,失败缓存,网络拥塞,还有就是异常码流的处理等问题,NIO编程的特点是功能开发相对容易,但是可靠性能力补齐的工作量和难度是非常大的。
     (4)JDK NIO存在bug,著名bug是epoil bug,会导致select空轮询,最终导致CPU飙升到百分之百,官方的声称是在JDK1.6的版本中,UPDATE18修复了该问题,但是直到JDK1.7版本,该问题依旧存在,只不过该bug的发生概率降低了一些,并未从根本上得到解决,原始NIO存在非常多的缺陷。
2、Netty的优势
      是业界最流行的NIO框架之一,它的健壮性,功能,性能,可定制性,可扩展性,在同类框架中都是首屈一指的,它已经得到成百上千的商业项目的验证,比如阿里的分布式治理框架Dubbo,就是用了Netty作为底层通信框架,还有一些主流的RPC框架,也用了Netty来构建高性能的异步通信能力。
      (1)API使用简单,定制能力强,可以通过ChannelHandler对框架进行灵活的扩展。
      (2)入门门槛低,功能强大,预制了多种编解码功能,支持多种主流协议,
      (3)性能高,通过与其他的业界主流的NIO框架对比,Netty的综合性能最优。
      (4)Netty比较成熟稳定,Netty修复了JDK NIO所有发现的bug,业务开发人员不需要,再为JDK NIO的bug烦恼,Netty经历了大规模的商业项目的验证,质量得到验证。在互联网,大数据,网络游戏,企业应用,电信软件等众多行业得到成功商用,证明了它完全可以满足不同行业的商业应用。
 

Netty学习第三节Netty的入门级学习的更多相关文章

  1. Netty学习第一节Netty的总体概况

    一.Netty简介 什么是Netty? 1.高性能事件驱动,异步非阻塞的IO加载开源框架. 它是由JBoss提供,用于建立TCP等底层链接.基于Netty可以建立高性能的HTTP服务器,快速开发高性能 ...

  2. 深入学习Netty(4)——Netty编程入门

    前言 从学习过BIO.NIO.AIO编程之后,就能很清楚Netty编程的优势,为什么选择Netty,而不是传统的NIO编程.本片博文是Netty的一个入门级别的教程,同时结合时序图与源码分析,以便对N ...

  3. DotNetty网络通信框架学习之初识Netty

    p{ text-align:center; } blockquote > p > span{ text-align:center; font-size: 18px; color: #ff0 ...

  4. 全网首发,腾讯T3-3整理Netty学习方案(体系图+项目+学习文档)

    前言: 想要学好一门技术,最起码要对他有一定的了解,起码听说过相应的底层原理的东西吧,最起码你要有一点能和别人交流的内容吧,下面是我精简的一点内容,希望对于大家了解netty能有一点帮助 Netty是 ...

  5. 深入学习Netty(5)——Netty是如何解决TCP粘包/拆包问题的?

    前言 学习Netty避免不了要去了解TCP粘包/拆包问题,熟悉各个编解码器是如何解决TCP粘包/拆包问题的,同时需要知道TCP粘包/拆包问题是怎么产生的. 在此博文前,可以先学习了解前几篇博文: 深入 ...

  6. 【学习】010 Netty异步通信框架

    Netty快速入门 什么是Netty Netty 是一个基于 JAVA NIO 类库的异步通信框架,它的架构特点是:异步非阻塞.基于事件驱动.高性能.高可靠性和高可定制性. Netty应用场景 1.分 ...

  7. netty权威指南学习笔记二——netty入门应用

    经过了前面的NIO基础知识准备,我们已经对NIO有了较大了解,现在就进入netty的实际应用中来看看吧.重点体会整个过程. 按照权威指南写程序的过程中,发现一些问题:当我们在定义handler继承Ch ...

  8. 【Netty】第一个Netty应用

    一.前言 前面已经学习完了Java NIO的内容,接着来学习Netty,本篇将通过一个简单的应用来了解Netty的使用. 二.Netty应用 2.1 服务端客户端框架图 下图展示了Netty中服务端与 ...

  9. 深入了解Netty【六】Netty工作原理

    引言 前面学习了NIO与零拷贝.IO多路复用模型.Reactor主从模型. 服务器基于IO模型管理连接,获取输入数据,又基于线程模型,处理请求. 下面来学习Netty的具体应用. 1.Netty线程模 ...

随机推荐

  1. os内置模块

    import os 1.os.getcwd() # 获得当前文件路径 2.os.chdir()   # 改变当前目录 3.os.curdir #  . 表示当前目录 4.os.pardir # 表示上 ...

  2. 使用java代码执行linux命令

    前提: java代码是在windows下面写的,要打包放到linux下面运行,并且执行某个脚本. java代码: try { // 起作用的代码其实就下面这一行, 参数是linux中要执行的代码 Ru ...

  3. WP runtime local setting

    https://msdn.microsoft.com/en-us/library/windows/apps/windows.storage.applicationdata.localsettings. ...

  4. The 2018 Nobel prizesThe Nobel prize for economics is awarded for work on the climate and economic growth

    The 2018 Nobel prizesThe Nobel prize for economics is awarded for work on the climate and economic g ...

  5. 疯狂JAVA——第三章 数据类型和运算符

    3.1注释 1.单行注释 2.多行注释 3.文档注释——文档注释以斜线后紧跟两个星号(/**)开始,以星号后紧跟一个斜线结束(*/),中间部分都是文档注释,会被提取到API文档中. API文档类似于产 ...

  6. tensorflow生成随机数的操作 tf.random_normal & tf.random_uniform & tf.truncated_normal & tf.random_shuffle

    tf.random_normal 从正态分布输出随机值. random_normal(shape,mean=0.0,stddev=1.0,dtype=tf.float32,seed=None,name ...

  7. Linux 软件 安装到 /usr,/usr/local/ 还是 /opt 目录

    Linux 的软件安装目录是也是有讲究的,理解这一点,在对系统管理是有益的 /usr:系统级的目录,可以理解为C:/Windows/,/usr/lib理解为C:/Windows/System32./u ...

  8. Enterprise Library 企业库

    微软企业库,提供了一套日志,缓存等功能的库.可以通过NuGet安装.

  9. python,遍历文件的方法

    在做验证码识别时,识别时需要和库里的图片对比,找到最接近的那个图片,然后就行到了用与图片一致的字符命名,获取文件的名称,去将图片的名称读出来作为验证码.以下是我通过网上的资料总结的三种文件遍历的方式, ...

  10. ajax返回填充的数据不显示

    原因:样式与id引用了其他的css或者js,删除其他样式,改变id就可以了