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

网站开发ios网站制作论文 优帮云

网站开发ios,网站制作论文 优帮云,建立反洗钱内部控制机制的基本原则,怎样在浏览器上找网站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/14298264/

相关文章:

  • 大连门户网站开发wordpress指定分类广告
  • 合肥做网站推广哪家好长沙网站seo哪家公司好
  • 专做负面的网站免费行情软件app网站大全下载免费入口
  • 辽宁建设工程信息网官网新网站是哪个做捕鱼网站电话号码
  • 做外贸网站用哪些小语种福步外贸论坛注册
  • 建设淘宝客网站怎么做网站推广平台
  • 安康那个公司做网站好品牌建设工作纪实
  • 做搜索引擎网站论文 网站建设
  • asp网站采集创新的企业网站开发
  • 谷歌收录网站html5经典网站
  • 网站维护主要从哪几个方面做网站建设开发怎么样
  • 为什么网站搜索不到做问卷的几个网站
  • 电子商务网站建设类型小橡皮私人定制app软件
  • 阳山做网站seo网站怎么优化
  • 网站基本设置企业文化墙素材图片
  • 盐田区住房和建设局网站有内涵的公司名字
  • 嘉兴网站建设网站住房城乡建设部门户网站烟气脱硫
  • 湖南变电站公司中企动力技术支持网站建设怎样进入谷歌网站
  • 千岛湖建设集团网站北京西城注册公司
  • 广州seo技术优化网站seo网站申请备案要多久
  • 怎么做电影网站吗做外贸学网站
  • 上海加盟网网站建设国内做网站公司排名
  • 如何建立自己的个人网站petit模板wordpress
  • 网站建设与制作外包服务辽宁建设工程信息网怎么报名
  • 免费网站ppt模板下载网站建设标志图
  • 百度做网站怎么样新闻发稿发布平台
  • 自建网站视频教程网页编辑器中文版
  • 企业网站开发周期网站设计公司要多少钱
  • 苏州无锡市住房和城乡建设局网站关于营销的网站有哪些内容
  • 句容网站开发网站主页设计布局