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

参考文献 教学网站建设wordpress彩色标签云

参考文献 教学网站建设,wordpress彩色标签云,莱芜杂谈莱芜在线论坛,网站右侧信息跟随左侧菜单栏变化参考文章 1 参考文章 2 官网API文档 Reactor模型 Netty模型 Netty主要基于主从Reactor多线程模型进行了一定的修改#xff0c;该模型包括以下几个组件#xff1a; MainReactor#xff08;主Reactor#xff09;#xff1a;负责处理客户端的连接请求。它监听服务器上的端口…参考文章 1 参考文章 2 官网API文档 Reactor模型 Netty模型 Netty主要基于主从Reactor多线程模型进行了一定的修改该模型包括以下几个组件 MainReactor主Reactor负责处理客户端的连接请求。它监听服务器上的端口接收客户端的连接请求并将请求分发给SubReactor进行处理。 SubReactor从Reactor负责处理连接成功后的通道的IO读写请求。每个SubReactor负责管理一组通道它们使用多路复用技术如Java NIO来监听通道上的事件例如可读、可写等事件。一般情况下每个SubReactor都对应一个线程。 Worker Threads工作线程负责处理非IO请求即具体的业务逻辑处理。当有非IO请求需要处理时这些任务会被写入一个队列中等待工作线程来处理。工作线程可以是线程池中的线程也可以是其他类型的线程。 模块组件 Bootstrap、ServerBootstrap 在Netty中Bootstrap和ServerBootstrap是用于启动和配置Netty应用程序的引导类。Bootstrap类是用于客户端程序的启动引导类ServerBootstrap类是服务端启动引导类。NioEventLoopGroupNioEventLoopGroup是Netty中用于管理NioEventLoop的组件它是一个线程池包含多个NioEventLoop实例它对应着主从Reactor多线程模型中Reactor。NioEventLoopGroup负责创建、管理和分配NioEventLoop处理异常情况并提供优雅关闭的机制。它是Netty实现高性能的重要组件之一。NioEventLoopNioEventLoop是Netty中的核心组件负责处理I/O事件和执行任务。它使用Selector来监听和处理注册在其上的Channel的I/O事件同时支持异步提交和执行任务。NioEventLoop还管理定时任务和处理异常情况是实现高性能和事件驱动的重要组成部分。 什么是Selector SelectorNetty基于Selector对象实现了I/O多路复用。通过将多个Channel注册到一个Selector中并使用一个线程来监听和处理这些Channel的事件可以高效地管理多个Channel。Selector会自动不断地查询这些注册的Channel以检查它们是否有已就绪的I/O事件。 Channel在Netty中Channel表示一个开放的网络连接可以用于读取、写入和处理网络数据。它是网络通信的基本单元负责处理底层的数据传输和事件通知。 NioSocketChannel异步的客户端 TCP Socket 连接NioServerSocketChannel异步的服务器端 TCP Socket 连接NioDatagramChannel异步的 UDP 连接NioSctpChannel异步的客户端 Sctp 连接NioSctpServerChannel异步的 Sctp 服务器端连接 ChannelHandler在Netty中ChannelHandler是一个接口用于处理I/O事件或拦截I/O操作并将其转发到ChannelPipeline中的下一个处理程序。ChannelHandler是Netty的核心组件之一它负责处理各种事件如连接建立、数据读写、异常发生等。 ChannelInboundHandler用于处理入站I/O事件ChannelOutboundHandler用于处理出站I/O操作 ChannelHandlerContextChannelHandlerContext保存了与特定Channel相关的所有上下文信息同时关联一个ChannelHandler对象并提供了访问Channel、ChannelHandler和ChannelPipeline的方法。 ChannelPipline 它是一个保存ChannelHandler的列表用于处理或拦截Channel的入站事件和出站操作。 ChannelPipeline实现了一种高级形式的拦截过滤器模式使用户可以完全控制事件的处理方式以及Channel中各个的ChannelHandler如何相互交互。 在 Netty 中每个 Channel 都有且仅有一个 ChannelPipeline 与之对应, 它们的组成关系如下: 一个Channel包含了一个ChannelPipeline而ChannelPipeline中维护了一个由ChannelHandlerContext组成的双向链表。入站事件和出站事件在这个双向链表中进行传递入站事件从链表的head往后传递到最后一个入站的ChannelHandler出站事件从链表的tail往前传递到最前一个出站的ChannelHandler两种类型的ChannelHandler互不干扰。通过这种设计ChannelPipeline实现了事件的顺序传递和处理。 Future、ChannelFuture Netty中的IO操作都是异步的这意味着在发起一个IO操作后无需等待其完成就可以继续执行后续的代码逻辑。为了获取操作的执行结果或者在操作完成时得到通知Netty提供了Future和ChannelFuture。 实例代码 服务端 public class MyServer {public static void main(String[] args) throws Exception {//创建两个线程组 boosGroup、workerGroupEventLoopGroup bossGroup new NioEventLoopGroup();EventLoopGroup workerGroup new NioEventLoopGroup();try {//创建服务端的启动对象设置参数ServerBootstrap bootstrap new ServerBootstrap();//设置两个线程组boosGroup和workerGroupbootstrap.group(bossGroup, workerGroup)//设置服务端通道实现类型 .channel(NioServerSocketChannel.class)//设置线程队列得到连接个数 .option(ChannelOption.SO_BACKLOG, 128)//设置保持活动连接状态 .childOption(ChannelOption.SO_KEEPALIVE, true)//使用匿名内部类的形式初始化通道对象 .childHandler(new ChannelInitializerSocketChannel() {Overrideprotected void initChannel(SocketChannel socketChannel) throws Exception {//给pipeline管道设置处理器socketChannel.pipeline().addLast(new MyServerHandler());}});//给workerGroup的EventLoop对应的管道设置处理器System.out.println(java技术爱好者的服务端已经准备就绪...);//绑定端口号启动服务端ChannelFuture channelFuture bootstrap.bind(6666).sync();//对关闭通道进行监听channelFuture.channel().closeFuture().sync();} finally {bossGroup.shutdownGracefully();workerGroup.shutdownGracefully();}} }/*** 自定义的Handler需要继承Netty规定好的HandlerAdapter* 才能被Netty框架所关联有点类似SpringMVC的适配器模式**/ public class MyServerHandler extends ChannelInboundHandlerAdapter {Overridepublic void channelRead(ChannelHandlerContext ctx, Object msg) throws Exception {//获取客户端发送过来的消息ByteBuf byteBuf (ByteBuf) msg;System.out.println(收到客户端 ctx.channel().remoteAddress() 发送的消息 byteBuf.toString(CharsetUtil.UTF_8));}Overridepublic void channelReadComplete(ChannelHandlerContext ctx) throws Exception {//发送消息给客户端ctx.writeAndFlush(Unpooled.copiedBuffer(服务端已收到消息并给你发送一个问号?, CharsetUtil.UTF_8));}Overridepublic void exceptionCaught(ChannelHandlerContext ctx, Throwable cause) throws Exception {//发生异常关闭通道ctx.close();} }客户端 public class MyClient {public static void main(String[] args) throws Exception {NioEventLoopGroup eventExecutors new NioEventLoopGroup();try {//创建bootstrap对象配置参数Bootstrap bootstrap new Bootstrap();//设置线程组bootstrap.group(eventExecutors)//设置客户端的通道实现类型 .channel(NioSocketChannel.class)//使用匿名内部类初始化通道.handler(new ChannelInitializerSocketChannel() {Overrideprotected void initChannel(SocketChannel ch) throws Exception {//添加客户端通道的处理器ch.pipeline().addLast(new MyClientHandler());}});System.out.println(客户端准备就绪随时可以起飞~);//连接服务端ChannelFuture channelFuture bootstrap.connect(127.0.0.1, 6666).sync();//对通道关闭进行监听channelFuture.channel().closeFuture().sync();} finally {//关闭线程组eventExecutors.shutdownGracefully();}} }public class MyClientHandler extends ChannelInboundHandlerAdapter {Overridepublic void channelActive(ChannelHandlerContext ctx) throws Exception {//发送消息到服务端ctx.writeAndFlush(Unpooled.copiedBuffer(歪比巴卜~茉莉~Are you good~马来西亚~, CharsetUtil.UTF_8));}Overridepublic void channelRead(ChannelHandlerContext ctx, Object msg) throws Exception {//接收服务端发送过来的消息ByteBuf byteBuf (ByteBuf) msg;System.out.println(收到服务端 ctx.channel().remoteAddress() 的消息 byteBuf.toString(CharsetUtil.UTF_8));} }
http://www.yutouwan.com/news/242562/

相关文章:

  • 直播做ppt的网站百度网址大全怎么设为主页
  • 17做网店廊坊网站快照优化公司
  • 公司官网源码济南优化网站技术
  • 河北手机网站制作哪家好南沙滩做网站公司
  • 狮山做网站最近韩国电影片在线观看
  • 珠海专门做网站郑州专业制作网站费用
  • 甘肃省住房和城乡建设部网站官网惠州网络推广工作室
  • 网站建设一屏式网站企业文化模板
  • 沈阳制作网站的人网站建设电销
  • 泉州市住房和乡村建设网站php 资讯网站
  • 做贺卡的网站定制网络设备的后期维护缺点
  • 二级域名怎么做网站本地wordpress数据
  • 网站主页设计布局WordPress博客手机主题
  • 网站收录申请打开上次浏览的网站
  • 网站建设项目心得体会wordpress部署到tomcat
  • 投资网站源码企业中制度的重要性
  • 易思网站管理系统收费怎么做淘课网站
  • 河北建设集团有限公司 信息化网站盐城永祥建设有限公司网站
  • 做多语言网站不会翻译怎么办手机怎么制作软件
  • 深圳网站建设公建设班级网站
  • 微信手机网站房地产网站建设联系方式
  • 计算机网站开发背景上广东建设厅网站
  • 得力文具网站建设策划书wordpress 游戏主题下载失败
  • 品牌建设部seo新闻
  • cms 网站后台云存储 wordpress
  • 网站项目接单国外产品网站
  • 企业网站备案要钱嘛wordpress主题 大
  • 济南教育论坛网站建设wordpress英文变成中文
  • Wordpress 学校网站网络科技有限公司起名
  • 网站如何建数据库大公司网站色彩设计