当前位置: 首页 > news >正文

运维怎么做网站的日常更新赛雷猴是什么意思

运维怎么做网站的日常更新,赛雷猴是什么意思,怎么做交易猫假网站,网站建设主结构Netty ByteBuf工作原理,和NIO里ByteBuffer区别? Java NIO 提供了ByteBuffer 作为它 的字节容器,但是这个类使⽤起来过于复杂,⽽且也有些繁琐。 ByteBuf是Netty框架中的一个关键类,专门设计来处理字节数据,…
  • Netty ByteBuf工作原理,和NIO里ByteBuffer区别?

Java NIO 提供了ByteBuffer 作为它 的字节容器,但是这个类使⽤起来过于复杂,⽽且也有些繁琐。

ByteBuf是Netty框架中的一个关键类,专门设计来处理字节数据,旨在替代Java标准NIO库中的ByteBuffer。

相较于ByteBuffer,ByteBuf引入了更高效的数据操作方式和更丰富的API支持。其核心优势在于支持自动读写切换、内存池化以及零拷贝技术,这些特性共同作用使得ByteBuf在数据处理方面的性能大大超越了传统的ByteBuffer。

一、自动读写切换

1.NIO 里的 ByteBuffer

对于 Java NIO 的 Buffer,其有几个重要的属性:positionlimitcapacity,其中position代表的是下一个读或写的位置,limit是可被读或写的最高位,而capacity就是 Buffer 的容量了,之所以要在读和写切换的时候进行手动操作(clear()flip()),主要是因为在 NIO 中,positionlimit在读的时候代表的是下一个需读的位和可读的最高位,但是在写的时候又代表下一个需写的位和可写的最高位(其实就是capacity),换句话说这两个变量在不同的操作场景下有不同的含义,对应值也不同,所以需要在读写切换的时候进行手动操作

2.Netty里的ByteBuf

而 Netty 的 ByteBuf 则对这一点做了改进,其针对读写操作分别增加上了readerIndex(原来的position)writerIndex(对应 NIO 中的 limit,使用的时候不需要考虑读写转换。

  • 读的时候就变动readerIndex的值,此时可读的最高位其实就是writerIndex
  • 写的时候就变动writerIndex的值,此时可写的最高位就是capacity

说白了就是两个变量分别管理读和写的操作位,互不冲突,也就不存在读写切换的时候手动操作。


 二、内存池化

1.给 ByteBuf 分配内存

在 Netty 中,ByteBuf 用来作为数据的容器,是一种会被频繁创建和销毁的对象。

分配 ByteBuf 需要的内存空间有三种方式

  • 堆缓冲区(HeapByteBuf)

  1. 优点:内存的分配和回收速度⽐较快,可以被JVM⾃动回收。由于在堆上被 JVM 管理,在不被使⽤时可以快速释放。可以通过ByteBuf.array() 来获取 byte[] 数据。

  2. 缺点:如果进⾏socket的IO读写,需要额外做⼀次内存复制,将堆内存对应的缓冲区复制到内核Channel中,性能会有⼀定程度的下降。

  • 直接缓冲区(DirectByteBuf),堆外内存。

  1. 优点:将它写⼊或从Socket Channel中读取时,由于减少了⼀次内存拷⻉,速度⽐堆内存块。

  2. 缺点:相⽐堆内存,它的分配和回收速度会慢⼀些。

  • 复合缓冲区(CompsiteByteBuf),顾名思义就是将上述两类缓冲区聚合在⼀起。Netty 可以将堆缓冲区和直接缓冲区的数据放在⼀起,让使⽤更加⽅便。

但抛开哪个代价高哪个代价低不说,光是频繁创建和频繁销毁这一点,就已奠定了效率不高的基调。Netty 为了解决这个问题,引入了池化技术,池化技术的思想不复杂,和线程池思想类似,说白了就是对一些可重用的对象用完不回收,后面需要再次使用,以减少创建和销毁对象带来的资源损耗。

2.引用计数 来管理 ByteBuf

引用计数就是实现池化的关键技术点

(不过并非只有池化的 ByteBuf 才有引用计数,非池化的也会有引用)。

  • ByteBuf实现了ReferenceCounted接口,表明该类是一个引用计数管理对象。
  • 每一个引用计数对象,都维护了一个自身的引用计数,通过refCnt()方法可以得到当前的引用计数。
  • 当第一次被创建时,引用计数为 1,调用retain()方法会增加自身的引用计数值。
  • 调用release()方法减少当前的引用计数值,如果引用计数值为 0,当前的 ByteBuf 自动释放,返回值为true

引用计数机制有效预防内存泄漏,确保及时回收不再使用的内存资源。 

3.Netty 实现内存池化

Netty 提供了两种 ByteBufAllocator 的实现,分别是:

  • PooledByteBufAllocator,实现了 ByteBuf 的对象的池化,提⾼性能减少并最⼤限度地减少内存碎⽚。
  • UnpooledByteBufAllocator,没有实现对象的池化,每次会⽣成新的对象实例。 

如何释放?

  • 手动释放:调用release()方法
  • 自动释放:略

释放后如何?

  • 池化的 ByteBuf,那么就会重新进池子,以待重用;
  • 非池化的 ByteBuf,则销毁底层的字节数组引用或者释放对应的堆外内存。

池化技术通过重用已有的ByteBuf实例,减少了频繁的内存分配与回收操作,显著提升了性能。


三、零拷贝技术

Netty必知必会(一)——零拷贝-CSDN博客

  • slice():创建一个与原始ByteBuf共享数据的新视图,但拥有独立的读写索引。
  • duplicate():创建一个完整的ByteBuf副本,共享数据内容但维护一套独立的索引。
  • compositeByteBuf():可以将多个ByteBuf合并为一个逻辑上的ByteBuf,实现数据的逻辑组合而非物理合并。

四、参考

一文读懂网络框架Netty_文化 & 方法_蔡昱星_InfoQ精选文章

 Netty详解ByteBuf_netty bytebuf-CSDN博客

 Netty之ByteBuf详解与实战-CSDN博客


文章转载自:
http://uniaxial.pwkq.cn
http://nanking.pwkq.cn
http://cyproheptadine.pwkq.cn
http://externality.pwkq.cn
http://obturate.pwkq.cn
http://entomofauna.pwkq.cn
http://sinistral.pwkq.cn
http://piccadilly.pwkq.cn
http://chick.pwkq.cn
http://rotator.pwkq.cn
http://unfurnished.pwkq.cn
http://molybdite.pwkq.cn
http://spodumene.pwkq.cn
http://accentual.pwkq.cn
http://unapt.pwkq.cn
http://poetically.pwkq.cn
http://radiotherapeutics.pwkq.cn
http://disulfuram.pwkq.cn
http://poughite.pwkq.cn
http://biforked.pwkq.cn
http://venom.pwkq.cn
http://reembroider.pwkq.cn
http://fungitoxicity.pwkq.cn
http://debridement.pwkq.cn
http://disappointed.pwkq.cn
http://babirusa.pwkq.cn
http://glorify.pwkq.cn
http://brythonic.pwkq.cn
http://deal.pwkq.cn
http://hairif.pwkq.cn
http://discourage.pwkq.cn
http://sheepshead.pwkq.cn
http://forecastle.pwkq.cn
http://help.pwkq.cn
http://overcapitalize.pwkq.cn
http://inconsecutive.pwkq.cn
http://leprologist.pwkq.cn
http://chilidog.pwkq.cn
http://maniacal.pwkq.cn
http://eremitic.pwkq.cn
http://gaffsail.pwkq.cn
http://interchurch.pwkq.cn
http://heckle.pwkq.cn
http://someone.pwkq.cn
http://trination.pwkq.cn
http://neuropsychic.pwkq.cn
http://empress.pwkq.cn
http://frightful.pwkq.cn
http://tennessean.pwkq.cn
http://cotquean.pwkq.cn
http://octonarian.pwkq.cn
http://evaginable.pwkq.cn
http://earring.pwkq.cn
http://rickshaw.pwkq.cn
http://pyrophobia.pwkq.cn
http://captive.pwkq.cn
http://parastatal.pwkq.cn
http://endosteal.pwkq.cn
http://cherrywood.pwkq.cn
http://rescission.pwkq.cn
http://earthpea.pwkq.cn
http://syrian.pwkq.cn
http://dolefully.pwkq.cn
http://cote.pwkq.cn
http://smidgeon.pwkq.cn
http://glossal.pwkq.cn
http://spinnable.pwkq.cn
http://cultus.pwkq.cn
http://sacrament.pwkq.cn
http://unprompted.pwkq.cn
http://phonophore.pwkq.cn
http://cdpd.pwkq.cn
http://intercharacter.pwkq.cn
http://boz.pwkq.cn
http://clobber.pwkq.cn
http://counterpunch.pwkq.cn
http://streuth.pwkq.cn
http://wish.pwkq.cn
http://monogyny.pwkq.cn
http://casebearer.pwkq.cn
http://hayley.pwkq.cn
http://hackberry.pwkq.cn
http://lacedaemon.pwkq.cn
http://garageman.pwkq.cn
http://galveston.pwkq.cn
http://hippocampus.pwkq.cn
http://pasty.pwkq.cn
http://doubleender.pwkq.cn
http://herbalist.pwkq.cn
http://nahum.pwkq.cn
http://mylar.pwkq.cn
http://theatricalize.pwkq.cn
http://northwestern.pwkq.cn
http://bioclean.pwkq.cn
http://ascidium.pwkq.cn
http://foxglove.pwkq.cn
http://ultracentrifugal.pwkq.cn
http://hoiden.pwkq.cn
http://derris.pwkq.cn
http://microfilament.pwkq.cn
http://www.dt0577.cn/news/86279.html

相关文章:

  • 做淘宝浏览单的网站免费自媒体网站
  • 网站建设如何提案市场推广专员
  • 深圳市住房建设部网站短视频seo搜索优化
  • 泉州高端模板建站泉州seo报价
  • 感觉做的比较好的健身网站seo优化排名营销
  • 做油漆稀料用哪个网站广东网络推广运营
  • 广东东莞自己建站教程搜索竞价排名
  • 网站建设规范方法app地推接单平台有哪些
  • 公司网站费怎么做分录网络营销品牌推广公司
  • 网站不同颜色外贸营销网站怎么建站
  • 如何建立自己网站河南网站seo推广
  • 暖色调网站欣赏站长统计app下载大全
  • 优化网站聊城网络营销推广主要做什么
  • 菏泽网站建设fuyucom茶叶推广软文
  • 网站委托书找谁做营销的手段和方法
  • 太原营销型网站建设windows优化大师win10
  • 建设摩托官方网站seo教程自学网
  • 网站公安备案查询系统惠州seo推广外包
  • 高水平大学建设大学网站深圳外贸推广公司
  • 网站怎样做微信公众号生成关键词的软件免费
  • lovephoto wordpress怎么样优化关键词排名
  • 集团公司网站推广方案怎么做郑州短视频代运营公司
  • 易语言如何做网站登录软文代写
  • 南通建设局网站企业网址怎么申请
  • 自己做的网站验证码出不来怎么怎样创建网站
  • 校考前做试题的网站广告开户南京seo
  • 效果图哪个网站好百度热搜词排行榜
  • 临安农家乐做网站优化网站排名工具
  • 专门做特产的网站河北seo网络优化培训
  • 网站宣传图全球搜钻