关于Netty的一点小知识

Netty是由JBOSS提供的高性能、高可靠性的网络应用程序框架。本文详细介绍Netty的应用场景,包括高性能、多线程并发和异步通信领域。同时,文章对比了Netty与原生NIO的优势,如API简单、书写简单、性能高且成熟稳定。此外,还介绍了Netty如何修复JDKNIO的BUG,以及ByteBuf与ByteBuffer的区别,直接内存与堆内存的优劣,零拷贝的概念,和Channel数据传输流的相关概念。

1.Netty: Netty是由JBOSS提供的一个java开源框架。Netty提供异步的、事件驱动的网络应用程序框架和工具,用以快速开发高性能、高可靠性的网络服务器和客户端程序。

 ·应用案例:阿里巴巴的Dubbo,Twitter    


2.Netty应用场景:

·高性能领域  
·多线程并发领域    
·异步通信领域


3.原生NIO的缺陷:

·类库和API繁杂    
·书写复杂    
·工作量和难度大    
·JDK NIO存在BUG


4.Netty优势:

·API简单    
·书写简单    
·性能高    
·成熟稳定,商业应用广


5.Netty对于NIO中的BUG修复

1.对Selector的select操作周期进行统计。    
2.每完成一次空的select操作进行一次计数。    
3.在某个周期内如果连续N次空轮询,则说明触发了JDK NIO的epoll死循环bug。    
4.创建新的Selector,将出现bug的Selector上的channel重新注册到新的Selector上。    
5.关闭bug的Selector,使用新的Selector进行替换。


6.Netty中的ByteBuf 的几种变化过程:

初始化:

在这里插入图片描述
BEFORE discardReadBytes()
在这里插入图片描述
AFTER discardReadBytes()
在这里插入图片描述
BEFORE clear()
在这里插入图片描述
AFTER clear()
在这里插入图片描述
注:以上图片内容来自于JDK1.8.151

 ·比较:       
  |-ByteBuffer缓冲区的长度固定,ByteBuf则对其进行了改进,它会自动扩展,具体的做法是,写入数据时,会调用
  ensureWritable方法,传入我们需要写的字节长度,判断是否需要扩容       
  |-ByteBuffer中只有一个位置指针position,读写需要flip切换


7.直接内存与堆内存

 ·NIO的Buffer提供了一个可以不经过JVM内存直接访问系统物理内存的类——DirectBuffer。 DirectBuffer类继承自
     ByteBuffer,但和普通的ByteBuffer不同,普通的ByteBuffer仍在JVM堆上分配内存,其最大内存受到最大堆内存的
     限制;而DirectBuffer直接分配在物理内存中,并不 占用堆空间,其可申请的最大内存受操作系统限制。    
 ·直接内存的读写操作比普通Buffer快,但它的创建、销毁比普通Buffer慢。因此直接内存使用于需要大内存空间频繁
     访问的场合,不适用于频繁申请释放内存的场合。    
 ·与在JVM堆分配内存(allocate)相比,直接内存分配(allocateDirect)的访问性能更好,但分配较慢。

8.零拷贝

当应用程序需要接收数据的时候,他会在堆内存之外开辟一块内存,数据就直接从IO读到了那块内存中去,在netty里面通过
ByteBuf可以直接对这些数据进行直接操作,从而加快了传输速度。  

在这里插入图片描述
9.Channel数据传输流,与channel相关的概念有以下四个:

* Channel,表示一个连接,可以理解为每一个请求,就是一个Channel。
* ChannelHandler,核心处理业务就在这里,用于处理业务请求。
* ChannelHandlerContext,用于传输业务数据。
* ChannelPipeline,用于保存处理过程需要用到的ChannelHandler和ChannelHandlerContext。

在这里插入图片描述

标题基于SpringBoot的马术俱乐部管理系统设计与实现AI更换标题第1章引言介绍马术俱乐部管理系统的研究背景、意义、国内外研究现状、论文方法及创新点。1.1研究背景与意义阐述马术俱乐部管理系统对提升俱乐部管理效率的重要性。1.2国内外研究现状分析国内外马术俱乐部管理系统的发展现状及存在的问题。1.3研究方法以及创新点概述本文采用的研究方法,包括SpringBoot框架的应用,以及系统的创新点。第2章相关理论总结和评述与马术俱乐部管理系统相关的现有理论。2.1SpringBoot框架理论介绍SpringBoot框架的基本原理、特点及其在Web开发中的应用。2.2数据库设计理论阐述数据库设计的基本原则、方法以及在管理系统中的应用。2.3马术俱乐部管理理论概述马术俱乐部管理的基本理论,包括会员管理、课程安排等。第3章系统设计详细描述马术俱乐部管理系统的设计方案,包括架构设计、功能模块设计等。3.1系统架构设计给出系统的整体架构,包括前端、后端和数据库的交互方式。3.2功能模块设计详细介绍系统的各个功能模块,如会员管理、课程管理、预约管理等。3.3数据库设计阐述数据库的设计方案,包括表结构、字段设计以及数据关系。第4章系统实现介绍马术俱乐部管理系统的实现过程,包括开发环境、编码实现等。4.1开发环境搭建介绍系统开发所需的环境,包括操作系统、开发工具等。4.2编码实现详细介绍系统各个功能模块的编码实现过程。4.3系统测试与调试阐述系统的测试方法、测试用例以及调试过程。第5章系统应用与分析呈现马术俱乐部管理系统的应用效果,并进行性能分析。5.1系统应用情况介绍系统在马术俱乐部中的实际应用情况。5.2系统性能分析从响应时间、并发处理能力等方面对系统性能进行分析。5.3用户反馈与改进收集用户反馈,提出系统改进建议。第6章结论与展望总结马术俱乐部管理系统的设计与实现成果,并展望未来的研究
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值