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

如何创建平台类网站网站平台建设多少钱

如何创建平台类网站,网站平台建设多少钱,重庆最新新闻事件今天,资阳抖音搜索优化1.Channel Channel可以理解为是socket连接#xff0c;在客户端与服务端连接的时候就会建立一个Channel#xff0c;它负责基本的IO操作#xff08;binf()、connect()、rad()、write()等#xff09;#xff1b; 1.1 Channel的作用 通过Channel可获得当前网络连接的通道状态…1.Channel Channel可以理解为是socket连接在客户端与服务端连接的时候就会建立一个Channel它负责基本的IO操作binf()、connect()、rad()、write()等 1.1 Channel的作用 通过Channel可获得当前网络连接的通道状态通过Channel可获得网络连接的配置参数缓冲区大小等Channel提供异步的网络IO操作如连接的建立、数据的读写、端口的绑定等 1.2 Channel的类型 NioSocketChannelNIO的客户端TCP socket连接NioServerSocketChannelNIO的服务器端TCP socket连接NioDatagramChannelUDP连接NioSctpChannel客户端Sctp一种传输层协议连接NioSctpServerChannelSctp服务器端连接 2.Event Loop、Event Loop Group 有了Channel连接服务消息就可以流动针对消息在服务器上的出站入站产生事件而EventLoop就是一个监控和协调事件的机制 Netty中每个Channel都会分配一个EventLoop一个EventLoop可以服务于多个Channel每个EventLoop会占用一个线程同时这个线程会处理Event Loop上面发生的所有IO操作和事件 而EventLoopGroup是用来生成EventLoop的默认线程数为CPU核数*2 3.ChannelHandler 数据的入站和出站的业务逻辑都是在ChannelHandler中针对出入站分为ChannelInboundHandler入站事件处理器和ChannelOutBoundHandler出站事件处理器两个接口都继承ChannelHandler接口 ChannelHandlerAdapter抽象类实现了ChannelHandler接口提供了一些方法的默认实现根据在服务端编写还是在客户端编写提供了ChannelInboundHandlerAdapter与SimpleChannelInboundHandler两个子类前者不会释放消息数据的引用后者会 4.ChannelPipeline 在Channel的数据传递过程中不同的业务逻辑实现都需要有ChannelHandler完成一个Channel对应着多个ChannelHandlerChannelPipeline就是用来管理多个ChannelHandler的 一个Channel包含了一个ChannelPipelineChannelPipeline中维护了一个ChannelHandler的列表ChannelHandler与Channel和ChannelPipeline之间的映射关系又由ChannelHandlerContext来维护 Channel Handler按照加入的顺序会组成一个双向链表入站事件从链表的头往后传递到最后一个ChannelHandler出站事件从链表的尾向前传递直到最后一个ChannelHandler两种类型的ChannelHandler相互不影响 5.Bootstrap Bootstrap引导类负责配置整个Netty程序将各个组件都串起来绑定端口启动Netty服务针对客户端Bootstrap与服务端ServerBootstrap分为两种引导类 ServerBootstrap将绑定到一个端口而Bootstrap不需要绑定本地端口只需连接到远程端口Bootstrap只需要一个EventLoopGroup而Server Bootstrap则需要两个因为服务端需要两组不同的Channel一组用来接收新的客户端连接请求一组用来处理已连接的客户端Channel的读写事件 6.Future Future提供了一种在异步操作完成时通知应用程序的方式Future对象可以看作一个异步操作结果的占位符他将在未来的某个时刻完成并提供对其结果的访问 JDK内置的 java.util.concurrent.Future只允许手动检查对应的操作是否已完成或阻塞到他完成较为繁琐Netty提供了他自己的Future实现--ChannelFuture ChannelFuture提供了几种额外的方法使得我们能够注册一个或多个ChannelFutureListener实例监听器的回调方法operationComplete()将会在对应的操作完成时被调用监听器就能知道操作是成功了还是出错了每个Netty的出站IO操作都将返回一个ChannelFuture也就是说他们都不会阻塞 7.ByteBuf缓冲区 ByteBuf是Netty用于处理字节数据的核心类是一个灵活高效的字节容器提供了丰富的API来操作字节数据是Netty对JDK自带的ByteBuffer的替代品 ByteBuf内部结构如下 discardable bytes可丢弃的字节空间readable bytes可读的字节空间writable bytes可写的字节空间capacity bytes最大的可容量空间 7.1 ByteBuf的工作原理 ByteBuf由一串字节数组构成数组中每个字节用来存放信息ByteBuf有两个索引分别用来读写数据通过两个索引在数组中移动来定位需要读或写的位置 当从ByteBuf中读取时readerIndex读索引将会根据读取的字节数递增当写ByteBuf时writerIndex写索引也会根据写入的字节数进行递增当readerIndex超过writerIndex的时候Netty会抛出IndexOutOf-BoundsException 7.2 索引指针 ByteBuf有三个指针 readerIndex读指针标记读取的起始位置每读取一个字节加一当readerIndex与writerIndex相等时不可读writerIndex写指针标记写入的起始位置每写入一个字节加一当writerIndex与maxCapacity容量相等时不可写maxCapacity最大容量指示ByteBuf可以扩容的最大容量如果向ByteBuf写入数据时容量不足可以扩容 7.3 缓冲区的使用模式 根据存放缓冲区的不同分为三类 堆缓冲区HeapByteBuf内存的分配和回收速度比较快可以被JVM自动回收但如果进行socket的IO读写需要额外做一次内存复制将堆内存对应的缓冲区复制到内核Channel中这回对性能有所影响直接缓冲区DirectByteBuf非堆内存相较比堆内存分配和回收速度慢一些但是将他写入或从socket Channel中读取时少一次内存拷贝这时比堆内存快复合缓冲区Netty提供的CompsiteByteBuf就是将堆缓冲区与直接缓冲区的数据放在一起 Nettty默认使用直接缓冲区模式 7.4 ByteBuf的分配 Netty提供了接口ByteBufAllocator来分配ByteBuf实例其有两个实现类 PooledByteBufAllocator实现了ByteBuf对象的池化可复用ByteBuf实例提高性能并最大限度的减少内存碎片UnpooledByteBufAllocator没有实现对象的池化每次会生成新的ByteBuf对象实例 7.5 ByteBuf的释放 ByteBuf如果采用堆缓冲区模式可以由GC回收如果采用直接缓冲区模式就得手动释放 7.5.1 手动释放 使用完后调用 ReferenceCountUtil.release(byteBuf) 来释放 7.5.2 自动释放 TailHandlerNetty的ChannelPiplelline的流水线的末端是TailHandler默认情况下如果每个入站处理器都把消息往下传TailHandler会释放掉ReferenceCounted类型的消息SImpleChannelInboundHandler当ChannelHandler继承了SimpleChannelInboundHandler后在其中的channelRead()方法中将会进行资源的释放业务代码需要写入到channelRead0()中 HeadHandler在每一个出站Handler中的处理完成后最后消息会来到HeadHandler经过一轮复杂调用在flush完成后释放掉 7.5.3 释放总结 入站处理流程中如果对原消息不做处理调用 ctx.fireChannelRead(msg) 把原消息往下传由流水线最后的 TailHandler 完成自动释放。如果截断了入站处理流水线则可以继承 SimpleChannelInboundHandler 完成入站ByteBuf自动释放。出站处理过程中申请分配到的 ByteBuf通过 HeadHandler 完成自动释放。入站处理中如果将原消息转化为新的消息并调用 ctx.fireChannelRead(newMsg)往下传那必须把原消息release掉;入站处理中如果已经不再调用 ctx.fireChannelRead(msg) 传递任何消息也没有继承SimpleChannelInboundHandler 完成自动释放那更要把原消息release掉;
http://www.hkea.cn/news/14370095/

相关文章:

  • 云网站开发汽车之家网站
  • 广州品牌型网站如何建设远程教育网站
  • 深圳网站搭建专业公司做爰网站
  • 良精企业网站系统如何注册公司费用
  • vivo手机的网站开发淄博周村学校网站建设公司
  • 老师众筹网站开发江苏苏州昨天出大事
  • 网站tag标签功能实现免费表格制作app
  • 网站开发与设计作业wordpress图片转内
  • 莱芜建设网站如何加强高校网站建设
  • 淘客网站怎么做百度怎么自学电商运营
  • android 网站开发网页设计实验报告分析与体会
  • 网站建设做得好新网域名注册
  • 青岛企业网站制作哪家好营销型网站页面布局
  • 开发购物平台网站费用上海网络推广培训机构
  • 网站建设的建议seo推广编辑
  • 襄阳公司网站建设外贸soho建站
  • 什么是营销型网站呢邯郸做移动网站多少钱
  • 北京百度推广开户如何网页优化
  • 建筑网站的思想vivo应用商店下载安装
  • 网站建设毅文科技中山网站建设托管
  • 网站建设工作室小俊哥横栏建设网站
  • 建设网站的网站公司wordpress 下一篇
  • 多用户建站系统源码广州番禺发现1例阳性
  • 网站关键词百度自然排名优化如何做医疗网站的专题页
  • 做黄金的经常看什么网站制作网页时用的最多的是
  • 做设计找素材的+网站有哪些自己买域名建设网站
  • 站长数据如东建设局网站
  • 厦门邮件网站百度收录不了网站
  • 个人免费自助建站网站门户网站seo前期
  • 吉林市做网站的公司上海国际人才网