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

网站关键词锚文本指向网站怎么关闭

网站关键词锚文本指向,网站怎么关闭,wordpress 根据权限获取用户信息,服装网站设计欣赏目录 一、Hello World 1. 目标 2. 服务器端 3. 客户端 4. 流程梳理 #x1f4a1; 提示 5. 运行结果截图 二、Netty执行流程 1. 流程分析 2. 代码案例 2.1. 引入依赖 2.2. 服务端 服务端 服务端处理器 2.3. 客户端 客户端 客户端处理器 2.4. 代码截图 一、Hel…目录 一、Hello World 1. 目标 2. 服务器端 3. 客户端 4. 流程梳理 提示 5. 运行结果截图 二、Netty执行流程 1. 流程分析 2. 代码案例 2.1. 引入依赖 2.2. 服务端 服务端 服务端处理器 2.3. 客户端 客户端 客户端处理器 2.4. 代码截图 一、Hello World 1. 目标 开发一个简单的服务器端和客户端 客户端向服务器端发送 hello, world服务器仅接收不返回 加入依赖 dependencygroupIdio.netty/groupIdartifactIdnetty-all/artifactIdversion4.1.39.Final/version /dependency 2. 服务器端 new ServerBootstrap().group(new NioEventLoopGroup()) // 1 .channel(NioServerSocketChannel.class) // 2.childHandler(new ChannelInitializerNioSocketChannel() { // 3protected void initChannel(NioSocketChannel ch) {ch.pipeline().addLast(new StringDecoder()); // 5ch.pipeline().addLast(new SimpleChannelInboundHandlerString() { // 6Overrideprotected void channelRead0(ChannelHandlerContext ctx, String msg) {System.out.println(msg);}});}}).bind(8080); // 4 代码解读 1 处创建 NioEventLoopGroup可以简单理解为 线程池 Selector 后面会详细展开2 处选择服务 Scoket 实现类其中 NioServerSocketChannel 表示基于 NIO 的服务器端实现其它实现 还有 3 处为啥方法叫 childHandler是接下来添加的处理器都是给 SocketChannel 用的而不是给 ServerSocketChannel。 ChannelInitializer 处理器仅执行一次它的作用是待客户端 SocketChannel 建立连接后执行 initChannel 以便添加更多的处理器 4 处ServerSocketChannel 绑定的监听端口5 处SocketChannel 的处理器解码 ByteBuf String6 处SocketChannel 的业务处理器使用上一个处理器的处理结果 3. 客户端 new Bootstrap().group(new NioEventLoopGroup()) // 1.channel(NioSocketChannel.class) // 2.handler(new ChannelInitializerChannel() { // 3Overrideprotected void initChannel(Channel ch) {ch.pipeline().addLast(new StringEncoder()); // 8}}).connect(127.0.0.1, 8080) // 4.sync() // 5.channel() // 6.writeAndFlush(new Date() : hello world!); // 7 代码解读 1 处创建 NioEventLoopGroup同 Server2 处选择客户 Socket 实现类NioSocketChannel 表示基于 NIO 的客户端实现其它实现还有 3 处添加 SocketChannel 的处理器ChannelInitializer 处理器仅执行一次它的作用是待客户端 SocketChannel 建立连接后执行 initChannel 以便添加更多的处理器 4 处指定要连接的服务器和端口5 处Netty 中很多方法都是异步的如 connect这时需要使用 sync 方法等待 connect 建立连接完毕6 处获取 channel 对象它即为通道抽象可以进行数据读写操作7 处写入消息并清空缓冲区8 处消息会经过通道 handler 处理这里是将 String ByteBuf 发出数据经过网络传输到达服务器端服务器端 5 和 6 处的 handler 先后被触发走完一个流程 4. 流程梳理 提示 一开始需要树立正确的观念 把 channel 理解为数据的通道把 msg 理解为流动的数据最开始输入是 ByteBuf但经过 pipeline 的加工会变成其它类型对象最后 输出又变成 ByteBuf 把 handler 理解为数据的处理工序 工序有多道合在一起就是 pipelinepipeline 负责发布事件读、读取完成...传播给每个 handler handler 对自己感兴趣的事件进行处理重写了相应事件处理方法 handler 分 Inbound 和 Outbound 两类 把 EeventLoop 理解为处理数据的工人 工人可以管理多个 channel 的 io 操作并且一旦工人负责了某个 channel就要负责到底绑定工人既可以执行 io 操作也可以进行任务处理每位工人有任务队列队列里可以堆放多个 channel 的待处理任务任务分为普通任务、定时任务 工人按照 pipeline 顺序依次按照 handler 的规划代码处理数据可以为每道工序指定不同的工 人 5. 运行结果截图 二、Netty执行流程 1. 流程分析 Netty 抽象出两组线程池BossGroup专门负责接收客户端的连接, WorkerGroup专门负责网络的读写BossGroup和WorkerGroup类型都是NioEventLoopGroupNioEventLoopGroup相当于一个事件循环组,这个组中含有多个事件循环每一个事件循环是 NioEventLoop NioEventLoop表示一个不断循环的执行处理任务的线程每个NioEventLoop都有一个 selector , 用于监听绑定在其上的 socket 的网络通讯 用于监听绑定在其上的 socket 的网络通讯 NioEventLoopGroup可以有多个线程,即可以含有多个NioEventLoop每个BossNioEventLoop 循环执行的步骤有3步轮询 accept事件处理 accept事件, 与client建立连 接 , 生成 NioSocketChannel ,并将其注册到某 个worker 的NIOEventLoop上的selector处理任务队 列的任务即runAllTasks 每个Worker NIOEventLoop循环执行的步骤 轮询 read, write 事件处理 i/o 事件即read , write事件在对应 NioSocketChannel处理处理 任务队列的任务 即runAllTasks 每个Worker 的NIOEventLoop处理业务时会使用 pipeline(管道), pipeline中包含了channel , 即通过 pipeline可以获取到对应通道,  管道中维护了很多的处理器 2. 代码案例 2.1. 引入依赖 propertiesmaven.compiler.source8/maven.compiler.sourcemaven.compiler.target8/maven.compiler.targetproject.build.sourceEncodingUTF-8/project.build.sourceEncoding/propertiesdependenciesdependencygroupIdcom.google.protobuf/groupIdartifactIdprotobuf-java/artifactIdversion3.19.1/version/dependencydependencygroupIdio.netty/groupIdartifactIdnetty-all/artifactIdversion4.1.42.Final/version/dependencydependencygroupIdorg.slf4j/groupIdartifactIdslf4j-log4j12/artifactIdversion1.6.1/version/dependencydependencygroupIdorg.slf4j/groupIdartifactIdslf4j-log4j12/artifactIdversion1.6.1/version/dependencydependencygroupIdlog4j/groupIdartifactIdlog4j/artifactIdversion1.2.17/version/dependency/dependencies 2.2. 服务端 服务端 public class NettyServer {public static void main(String[] args) {//创建bossgroupEventLoopGroup bossGroup new NioEventLoopGroup();//创建workerGroupEventLoopGroup workerGroup new NioEventLoopGroup();try {//创建服务器启动对象ServerBootstrap bootstrap new ServerBootstrap();//设置启动的数学bootstrap.group(bossGroup, workerGroup)//设置老板组合工作组.channel(NioServerSocketChannel.class)//设置通道类型.option(ChannelOption.SO_BACKLOG, 128)//设置线程队列的连接数.childOption(ChannelOption.SO_KEEPALIVE, true)//设置保持活动连接状态//设置工作组的通道初始化设置处理器的管道线.childHandler(new ChannelInitializerSocketChannel() {//初始化通道的方法protected void initChannel(SocketChannel channel) throws Exception {System.out.println(客户端 socketChannel 初始化 channel);//处理器管道线中添加处理器channel.pipeline().addLast(new NettyServerHandler());}});System.out.println(服务器启动...);//绑定服务端口返回异步通道返回对象ChannelFuture channelFuture bootstrap.bind(6668).sync();//添加监听channelFuture.addListener(new ChannelFutureListener() {//监听操作完成public void operationComplete(ChannelFuture channelFuture) throws Exception {if (channelFuture.isSuccess()) {System.out.println(监听端口6668成功);} else {System.out.println(监听端口6668失败);}}});//设置异步通道关闭事件channelFuture.channel().closeFuture().sync();} catch (InterruptedException e) {e.printStackTrace();} finally {bossGroup.shutdownGracefully();workerGroup.shutdownGracefully();}} } 服务端处理器 public class NettyServerHandler extends ChannelInboundHandlerAdapter{/**读事件客户端发送数据会触发该方法1. ChannelHandlerContext ctx:上下文对象, 含有 管道pipeline , 通道channel, 地址2. Object msg: 就是客户端发送的数据 默认Object*/Overridepublic void channelRead(ChannelHandlerContext ctx, Object msg) throws Exception {Channel channel ctx.channel();System.out.println(服务器读取线程 Thread.currentThread().getName() channelchannel);System.out.println(server ctxctx);ByteBuf buf (ByteBuf) msg;System.out.println(客户端发送消息是buf.toString(CharsetUtil.UTF_8));System.out.println(客户端地址channel.remoteAddress());}/**读完毕触发*/Overridepublic void channelReadComplete(ChannelHandlerContext ctx) throws Exception {//写并且清缓冲区一般讲我们对这个发送的数据进行编码ctx.writeAndFlush(Unpooled.copiedBuffer(hello, 客户端, CharsetUtil.UTF_8));}/*处理异常, 一般是需要关闭通道*/Overridepublic void exceptionCaught(ChannelHandlerContext ctx, Throwable cause) throws Exception {ctx.close();} } 2.3. 客户端 客户端 public class NettyClient {public static void main(String[] args) {//创建事件循环组EventLoopGroup group new NioEventLoopGroup();try {//重建客户端启动类Bootstrap bootstrap new Bootstrap();bootstrap.group(group)//设置循环组.channel(NioSocketChannel.class)//设置通道//设置通道初始化.handler(new ChannelInitializerSocketChannel() {//初始化通道protected void initChannel(SocketChannel channel) throws Exception {//设置管道线上的处理器channel.pipeline().addLast(new NettyClientHandler());}});System.out.println(客户端 ok);//请求连接返回异步结果对象ChannelFuture future bootstrap.connect(127.0.0.1, 6668).sync();//设置异步通道关闭事件future.channel().closeFuture().sync();} catch (Exception e) {e.printStackTrace();}finally {group.shutdownGracefully();}} } 客户端处理器 public class NettyClientHandler extends ChannelInboundHandlerAdapter {/*通道就绪就会触发该方法*/Overridepublic void channelActive(ChannelHandlerContext ctx) throws Exception {System.out.println(client: ctx);ctx.writeAndFlush(Unpooled.copiedBuffer(hello server, CharsetUtil.UTF_8));}/*通道内有读取事件时候触发*/Overridepublic void channelRead(ChannelHandlerContext ctx, Object msg) throws Exception {ByteBuf buf (ByteBuf) msg;System.out.println(服务器回复的消息buf.toString(CharsetUtil.UTF_8));System.out.println(服务器地址ctx.channel().remoteAddress());}/*异常*/Overridepublic void exceptionCaught(ChannelHandlerContext ctx, Throwable cause) throws Exception {cause.printStackTrace();ctx.close();} } 2.4. 代码截图
http://www.hkea.cn/news/14480345/

相关文章:

  • 做图库网站需要多少钱上海企业网站制作报价
  • 外流网站建设南昌大型网站制作
  • 优秀的设计网站推荐食品行业网站源码
  • 内容分享网站设计一个网站如何做cdn加速
  • 黑色门户网站源码做网站推广好做吗
  • 如何用国外网站做头条广东网络建设有限公司
  • 电商平台网站设计公司有专业做网站
  • 域名价格查询网站建筑工程分为哪几类
  • 门户网站开发费怎做账知识付费小程序源码
  • c 教学网站开发农村电商平台开发
  • 怎么做招投标网站网站建设询价单
  • 淘宝网站做淘宝客免费空间建网站
  • 网站域名怎么做厂家网站怎么做
  • 基于ssh框架的网站开发流程图网站备案需要拍照
  • 西宁网站怎么做seo科技有限公司注册条件
  • 免费建站系统wordpress临沂做企业网站的公司
  • 网站建设基地貴阳建设银行网站
  • 网站资源规划怎么写关于网站建设维护的创业计划书
  • 绍兴网站建设方案托管驾校网站建设费用
  • 做网站论文长沙市建站
  • 国外网站建设的步骤wordpress是响应式吗
  • 免费网站软件大全西安seo阳建
  • 网站建设会议议程网站优化 无需定金
  • 制作网站的步骤是什么代码做网站
  • 徐州服饰网站建设想做个app软件需要什么条件
  • 做网站的排名专门做简历的网站软件
  • 网站建设所采用的技术网站开发设计工程师职责简介
  • 手机 互动网站案例银行网站建设前期合同
  • 网站未备案wordpress52麻将官方网站做代理
  • 老网站文章突然无收录wordpress文件路径