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

dede手机网站教程一般网站做推广要多大的带宽和内存

dede手机网站教程,一般网站做推广要多大的带宽和内存,网络类黄页,十大新零售公司Netty框架的底层是NIO#xff0c;NIO#xff1a;non-blocking io 非阻塞IO 一个线程可以处理多个通道#xff0c;减少线程创建数量#xff1b; 读写非阻塞#xff0c;节约资源#xff1a;没有可读#xff0f;可写数据时#xff0c;不会发生阻塞导致线程资源的浪费 一…Netty框架的底层是NIONIOnon-blocking io 非阻塞IO 一个线程可以处理多个通道减少线程创建数量 读写非阻塞节约资源没有可读可写数据时不会发生阻塞导致线程资源的浪费 一、NIO三大组件 1.ChannelBuffer channel 读写数据的双向通道可以从channel将数据读入到buffer也可以将buffer中的数据写入channel buffer 用来暂存数据的缓冲区 常见的channel有 FileChannel - 文件传输的数据传输通道 DatagramChannel - UDP网络编程时的数据传输通道 SocketChannel - TCP网络编程时的数据传输通道    客户端、服务器都能用 ServerSocketChannel - TCP网络编程时的数据传输通道专用于服务器 二、Netty Netty执行流程 Netty核心组件 1.Channel 数据通道         数据的载体建立客户端和服务端通信的桥梁连接成功后保存Channel通道。 2.EventLoop 与 EventLoopGroup Netty为每个Channel分配一个EventLoopEventLoop 本身只是一个线程驱动在其生命周期内只会绑定一个线程让该线程处理一个 Channel 的所有 IO 事件起到在Channel中处理数据的功能 3.ServerBootstrap 与 Bootstrap Bootstrap 是客户端的引导类Bootstrap 在调用 bind()连接UDP和 connect()连接TCP方法时会新创建一个 Channel仅创建一个单独的、没有父 Channel 的 Channel 来实现所有的网络交换。 ​ServerBootstrap 是服务端的引导类ServerBootstarp 在调用 bind() 方法时会创建一个 ServerChannel 来接受来自客户端的连接并且该 ServerChannel 管理了多个子 Channel 用于同客户端之间的通信。 Bootstrap来设置一些连接参数 4.ChannelHandler 与 ChannelPipeline ChannelHandler是消息处理器封装在了ChannelPipeline对象中 ChannelPipeline来添加一些特定的处理器满足业务需求 5.ChannelFuture Netty 中所有的 I/O 操作都是异步的即操作不会立即得到返回结果所以Netty定义了ChannelFuture来作为操作返回结果 public Channel connect(String host , int port , ChannelInboundHandlerAdapter handler, MessageToMessageEncoder encoder, ByteToMessageDecoder decoder) {EventLoopGroup group getEventLoopGroup();bootstrap new Bootstrap();bootstrap.group(group);bootstrap.channel(NioSocketChannel.class);bootstrap.option(ChannelOption.TCP_NODELAY, true); // 立即发送数据,设置了TCP_NODELAY选项为true它的作用是禁用了Nagle算法。这意味着数据将被立即发送不会等待小的数据块进行合并。bootstrap.option(ChannelOption.SO_KEEPALIVE, false); // 用于控制操作系统是否发送保持活动keep-alive探测报文段来检测连接是否仍然活跃bootstrap.option(ChannelOption.ALLOW_HALF_CLOSURE, false); // 全关闭Full Closure表示双方都关闭了连接不再允许进行数据的读写操作。// 半关闭Half Closure表示一端关闭了连接但另一端仍可以发送数据。// 当设置为true时表示允许半关闭连接即当远程端关闭连接时本地端仍可以继续发送数据。bootstrap.option(ChannelOption.CONNECT_TIMEOUT_MILLIS, 2000); //连接超时毫秒数bootstrap.option(ChannelOption.SO_RCVBUF, 64 * 1024); //TCP数据接收缓冲区大小bootstrap.option(ChannelOption.SO_SNDBUF, 46 * 1024); //TCP数据发送缓冲区大小// bootstrap.handler(new LoggingHandler(LogLevel.DEBUG));channelInitializer new ChannelInitializerSocketChannel() {Overridepublic void initChannel(SocketChannel ch) throws Exception {ChannelPipeline channelPipeline ch.pipeline();// channelPipeline.addLast(new LoggingHandler(LogLevel.DEBUG));channelPipeline.addLast(decoder, decoder);channelPipeline.addLast(new StringDecoder(CharsetUtil.UTF_8));channelPipeline.addLast(encoder, encoder);channelPipeline.addLast(handler, handler);}};bootstrap.handler(channelInitializer);try {ChannelFuture channelFuture bootstrap.connect(host, port).syncUninterruptibly();if (channelFuture ! null channelFuture.isSuccess()) {logger.info(connect tcp server host {}, port {} success, host, port);return channelFuture.channel();} else {logger.error(connect tcp server host {}, port {} fail, host, port);}} catch (Exception e) {logger.error(connect to tcp server failed., e);}return null;} ChannelInboundHandlerAdapter、MessageToMessageEncoder和ByteToMessageDecoder分别是Netty框架中的三个重要类用于处理网络数据的编解码和处理。 ChannelInboundHandlerAdapter是Netty中用于处理入站数据的抽象类。它提供了一系列的回调方法可根据实际需求进行重写用于处理不同的入站事件和操作。通常情况下我们的自定义处理器需要继承该类并且实现自定义的业务逻辑。 MessageToMessageEncoder是一个编码器用于将一种消息类型转换为另一种消息类型。它将一个出站消息对象转换为另一个出站消息对象例如将一个POJO对象编码为字节数据。通过继承该抽象类并重写encode()方法我们可以实现自定义的消息编码逻辑以满足特定的协议或需求。 ByteToMessageDecoder是一个解码器用于将字节数据解码为其他形式的数据如将字节数据解码为POJO对象或其他自定义消息对象。它将一个入站的字节缓冲区转换为出站消息对象。通过继承该抽象类并重写decode()方法我们可以根据实际需求实现自定义的消息解码逻辑以满足特定的协议或需求。 这三个类在Netty中的应用通常是组合使用的用于构建完整的网络数据处理链。具体来说ChannelInboundHandlerAdapter用于处理入站数据的不同事件和操作MessageToMessageEncoder用于将出站消息对象编码为其他形式的消息对象而ByteToMessageDecoder用于将入站的字节数据解码为其他形式的消息对象。通过灵活组合和重写这些类的方法我们可以实现定制的网络数据处理逻辑。 其中ChannelInitializer 是一个用于初始化 SocketChannel 的抽象类。它的 initChannel() 方法会在每个新连接被接受时调用用于配置该连接的 ChannelPipeline。 在 initChannel() 方法中我们可以通过 channelPipeline 对象来设置和添加各种处理器handlers到 ChannelPipeline 中以定义数据的处理流程。 在这段代码中通过 channelPipeline 对象按照一定的顺序添加了以下处理器 decoder这是一个 ByteToMessageDecoder用于将入站的字节数据解码为其他形式的消息对象。StringDecoder这是一个 Netty 提供的内置解码器用于将入站的字节数据解码为字符串形式的消息对象。指定编码格式为 UTF-8。encoder这是一个 MessageToMessageEncoder用于将出站消息对象编码为其他形式的消息对象。handler这是一个自定义的 ChannelInboundHandlerAdapter用于处理入站数据的不同事件和操作。 通过这样的方式我们可以构建一个完整的数据处理流程根据实际需求来解码、编码和处理网络消息。在 ChannelInitializer 的 initChannel() 方法中我们可以按照需求自由添加或修改处理器以满足特定的业务需求。 ChannelFuture channelFuture bootstrap.connect(host, port).syncUninterruptibly(); 这段代码是使用 bootstrap 对象创建一个客户端连接并返回一个 ChannelFuture 对象。 以下是代码的执行步骤 bootstrap.connect(host, port)使用指定的主机和端口号创建一个连接到目标服务器的操作并返回一个 ChannelFuture 对象。.syncUninterruptibly()阻塞当前线程等待连接操作完成。syncUninterruptibly() 方法会阻塞当前线程直到连接操作完成或发生异常而不会响应中断。channelFuture连接操作完成后返回一个 ChannelFuture 对象可以通过该对象获取操作的结果。 通过这段代码可以同步地创建一个客户端连接并在连接操作完成后获取连接的 ChannelFuture 对象以便后续的操作和处理。
http://www.dnsts.com.cn/news/172617.html

相关文章:

  • 网站建设好了怎么发布18款禁用软件app排行
  • 相城seo网站优化软件营销团队名字
  • 阎良做网站如何查看实时街景地图
  • 海兴网站建设价格单页网站模板 带在线订单
  • 廊坊网站关键词推广wordpress小工具调用
  • 成都大型网站建设微信公众 wordpress
  • 湖北网站建设找哪家十堰网站搜索优化价格
  • 同样是div 怎么有些网站收录少 有些多重庆建设车业官方网站
  • 织梦上网站次导航怎么做wordpress的中文插件安装
  • 中国建设网站齐齐哈尔市网站被黑 禁止js跳转
  • 网站建设中的技术问题国内wordpress最好的主题
  • 丽水市莲都区建设局网站搭建平台换个说法
  • 河北京电电力建设有限公司网站html网页制作背景图片
  • 襄阳信息网站建设咨询类公司注册需要什么
  • wordpress优化网站制作微信网页的网站吗
  • 购买网站服务器wordpress+3.4.2
  • 松原公司做网站Wordpress百万数据查询多久
  • wordpress吗班级优化大师免费下载app
  • 关于服装店网站建设的策划方案快速建设网站视频
  • 哪里有门户网站开发app设计公司
  • Wordpress屏蔽国内iip石家庄网站快速优化排名
  • 做炒作的网站app制作费用多少钱
  • 微信 网站应用开发天眼查企业信用查询
  • 无锡企业网站的建设产品软文是什么
  • 好用的免费网站net网站开发
  • 做网站链接怎么弄wordpress 更改密码
  • 小米的网站是哪个公司做的中小企业网站建设公司
  • 用dw做的网页怎么连到网站上企业的vi设计系统
  • 服务好的专业建站公司seo短视频网页入口引流
  • 网站的请求服务做优先级事业单位网站开发工作规程