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

佛山网站建设技术外包什么是网站模块

佛山网站建设技术外包,什么是网站模块,根据链接获取网站名称,做网站费用会计科目ByteBuffer是字节缓冲区,主要用户读取和缓存字节数据,多用于网络编程,原生的类,存在不好用,Netty采用自己的ByteBuff,对其进行了改进 1.ByteBuffer的2种创建方式 1.ByteBuffer buf ByteBuffer.allocate(i…

ByteBuffer是字节缓冲区,主要用户读取和缓存字节数据,多用于网络编程,原生的类,存在不好用,Netty采用自己的ByteBuff,对其进行了改进

1.ByteBuffer的2种创建方式


1.ByteBuffer buf = ByteBuffer.allocate(int size);
方式1的buf缓冲区存储在堆内存中,内存开销在JVM中,受GC影响,会多拷贝一次,因为java程序收到的数据首先被系统内存所获取,然后再拷贝给JVM

2.ByteBuffer buf = ByteBuffer.allocateDirect(int size);
方式2的buf在系统直接内存中创建,内存开销在JVM之外,读写效率高(不受GC影响,0拷贝),但是分配效率低,使用后若不释放,会造成内存泄漏

下图是不同容量情况下,两种ByteBuffer的读写效率,根据需求选择创建方式:


2.字符串转成ByteBuffer的3三种方式


方式1: 采用put()方法,读数据时需要调用flip()切换为读模式

ByteBuffer buf = ByteBuffer.allocate(int size);buf.put(msg.getBytes());


方式2:以特定编码格式将String转换为ByteBuffer

ByteBuffer buffer1 = StandardCharsets.UTF_8.encode("hello");


方式3:调用ByteBuffer.wrap()

ByteBuffer buf = ByteBuffer.wrap(msg.getBytes());


3.Bytebuffer的读写底层原理


Bytebuffer的数据读写主要采用三个参数来控制

1.position:起始下标
2.limit:限制下标
3.capacity:buffer的容量


核心思想:Bytebuffer的读写共用position、limit参数,因此需要切换至读模式(调用flip())和写模式(调用)

一.开始时,position指向0,limit指向capacity


二.写模式下,写数据时,Position会不断前移

 

三.调用flip()切换为读模式,此时Postion置为已有数据的起始下标,limit置为已有数据的末尾下标

 


四.调用clear()方法切换为写模式,采用清空缓冲区,将potision置为0,limit置为capacity


至此,我们知道读写模式由于共用相同的position等参数,因此,需要切换模式,才能正确的读写。

并且在发生一次写读(先写后读)切换后,需要调用clear()方法进行重置,才能进行一轮新的写读

当然,你可以连续写或连续读,读读或写写可以连续执行,不需要额外操作。例如:

ByteBuffer buf = ByteBuffer.allocate(int size);buf.put(msg.getBytes());  //okbuf.put(msg2.getBytes());  //ok


存在的问题:

读操作后,重新写,调用clear()会重置至0的问题,如果没有读完呢?

例如 存在接收到的数据是不完整的,无法进行读操作,那么需要在原来的基础上,继续写数据怎么办?

答案是 Buffer.compact() 切换到写入模式

五. 调用compact方法切换为写模式,在不清空缓冲区的前提下,继续写如信息,将未读取的数据前移,postion指针置为未读取数据的末尾下标,limit置为capacity


上图左侧灰色是已读部分数据,绿色是未读部分,在此基础上,调用compact继续写,会进行部分清楚操作,同时保留未读部分,这也是推荐的用法。

http://www.yayakq.cn/news/727486/

相关文章:

  • 银川做网站的 公司有哪些小型网站开发时间周期
  • 如何修改模板网站沈阳网站关键词优化哪家好
  • 有了域名怎样做淘客网站网站建设 天秀网络
  • 织梦网站模板视频教程php网站制作软件
  • 个人网站的制作论文书法网站建站目标
  • 暖色调网站wordpress如何添加内链
  • 专业网站设计建设服务html5国内网站建设
  • dede 购物网站长治哪里做网站
  • 有可以做ssgsea的网站么泰安网站建设论文结论
  • 响应式wordpress南昌seo锐创
  • 廊坊cms建站模板企业建设3D网站
  • 甘南网站建设网站建设系统平台
  • 重庆市门户网站制作如何策划网络事件营销
  • 温州公司做网站科技基金
  • 官方网站开发商手机企业网站
  • 如何做好公司网站自适应网页模板企业
  • 开网站建设公司挣钱吗网站开发网站设计制作
  • 哈尔滨网站推广公司哪家好wordpress 折叠展开
  • 网站建设的指标纪检监察网站建设方案
  • 建设银行网站特色福田公司成立时间
  • 昆山网站建设及推广网站建设需求报告
  • 东莞网站搭建找哪里各大网站黑白几天
  • 泰安建设网站动漫设计软件有哪些
  • 微信公众号怎么建网站wordpress主题手动更新
  • 中小型网站建设新品发布会一般在哪里举行
  • 环境建设公司网站rar在线解压缩网站
  • 团购网站的交易流程龙岗中心医院
  • 建设企业网站综合考虑学院路网站建设
  • wordpress网站代码文件太多wordpress json 插件安装
  • 打鱼跟电子游戏网站怎么做wordpress后台编写seo设置