公司和网站备案查询密码企业邮箱申请哪个

diannao/2026/1/26 17:36:37/文章来源:
公司和网站备案查询密码,企业邮箱申请哪个,wordpress可视化页面编辑器,wordpress 大前端 插件Netty实现Http服务 主要的变化是在初始化器中引入了新的编解码器 一些创建的类作用和Netty HelloWorld的小demo一样我这里就不再次重复了 1、Http服务端代码 public class HttpServer {public static void main(String[] args) {// 创建Reactor// 用来管理channel 监听事件 …Netty实现Http服务 主要的变化是在初始化器中引入了新的编解码器 一些创建的类作用和Netty HelloWorld的小demo一样我这里就不再次重复了 1、Http服务端代码 public class HttpServer {public static void main(String[] args) {// 创建Reactor// 用来管理channel 监听事件 是无限循环的事件组线程池EventLoopGroup bossLoopGroup new NioEventLoopGroup();EventLoopGroup workerLoopGroup new NioEventLoopGroup();// 服务端的启动对象ServerBootstrap serverBootstrap new ServerBootstrap();// 设置相关参数 这是一个链式编程serverBootstrap.group(bossLoopGroup,workerLoopGroup)// 声明通道类型.channel(NioServerSocketChannel.class)// 设置处理器 我这里设置了netty提供的Handler 处理器.handler(new LoggingHandler(LogLevel.INFO))// 定义客户连接端处理器的使用// ChannelInitializer 通道处理化// 可以自定义通道初始化器如实现编码解码器时.childHandler(new ChannelInitializerSocketChannel() {protected void initChannel(SocketChannel ch) throws Exception {// 需要处理的是客户端通道// 通道代表的是 连接的角色 管道代表的是 处理业务的逻辑管理// 管道相当与一个链表 将不同的处理器连接起来管理的是处理器的顺序ch.pipeline().addLast(new HttpMyInitializer());}});System.out.println(服务端初始化完成);// 启动需要设置端口 还需要设置是异步启动try {// 设置异步的futureChannelFuture future serverBootstrap.bind(9988).sync();// 将关闭的通道也设置成异步的// 阻塞finally 中的代码future.channel().closeFuture().sync();} catch (InterruptedException e) {e.printStackTrace();}finally {// 优雅关闭bossLoopGroup.shutdownGracefully();workerLoopGroup.shutdownGracefully();}} }1.1 Http服务自定义初始化器 下面是需要了解的组件 请求和响应的编码解码器 客户端 HttpResponseDecoder 解码器 处理服务端的响应客户端 HttpRequestEncoder 编码器 处理服务端的请求客户端 服务端 HttpRequestDecoder 解码器 处理客户端的请求服务端 HttpResponseEncoder 编码器 处理客户端的响应服务端 由于上面的编码解码器都比较绕所以还有两个组合的类提供 HttpClientCodeC : 编码解码器用于客户端 HttpResponseDecoder HttpRequestEncoder HttpServerCodeC: 编码解码器用于服务端 HttpRequestDecoder HttpResponseEncoder 聚合 由于http的请求和响应可能由很多部分组成需要聚合成一个完整的消息 HttpObjectAggregator - FullHttpRequest / FullHttpResponse 压缩 由于网络上有些情况文件或者图片需要压缩所以需要压缩处理器 HttpContentCompressor 压缩用于服务端 HttpContentDecompressor 解压缩用于客户端 自定义初始化器HttpMyInitializer 需要继承ChannelInitializer泛型是Channel public class HttpMyInitializer extends ChannelInitializerChannel {Overrideprotected void initChannel(Channel ch) throws Exception {ChannelPipeline pipeline ch.pipeline();// 先解码后编码 // pipeline.addLast(decoder,new HttpRequestDecoder()); // pipeline.addLast(encoder,new HttpResponseEncoder());// 相当于上面两行pipeline.addLast(codec,new HttpServerCodec());// 压缩数据pipeline.addLast(compressor,new HttpContentCompressor());// 聚合成完整的消息 参数代表处理的最大值pipeline.addLast(aggregator,new HttpObjectAggregator(512 * 1024));// 添加处理器pipeline.addLast(new MyHttpHandler());} } 1.2 Http服务自定义处理器 需要继承SimpleChannelInboundHandler类注意的是泛型需要定义为 FullHttpRequest /*** 泛型需要定义为 FullHttpRequest**/ public class MyHttpHandler extends SimpleChannelInboundHandlerFullHttpRequest {/**** param ctx 通道处理器上下文* param msg 接收客户端数据消息* throws Exception*/Overrideprotected void channelRead0(ChannelHandlerContext ctx, FullHttpRequest msg) throws Exception {// 设定 版本 、响应码、响应的数据ByteBuf 等DefaultFullHttpResponse response new DefaultFullHttpResponse(HttpVersion.HTTP_1_1, HttpResponseStatus.OK, Unpooled.wrappedBuffer(http hello netty demo .getBytes()));// 还需要设置响应头 HttpHeaders 来接收// 设置字段名 使用HttpHeaderNames 字段值使用HttpHeaderValuesHttpHeaders headers response.headers();//content/type ;text/plainheaders.add(HttpHeaderNames.CONTENT_TYPE,HttpHeaderValues.TEXT_PLAINcharsetUTF-8);// 设置包的大小时 调用 readableBytes方法headers.add(HttpHeaderNames.CONTENT_LENGTH,response.content().readableBytes());// 将response 写入通道 这里不用writeAndFlush方法 而是在channelReadComplete读完成的方法内来刷新通道ctx.write(response);}/*** 用来刷新channelRead0 写入通道里面的response 数据* param ctx* throws Exception*/Overridepublic void channelReadComplete(ChannelHandlerContext ctx) throws Exception {ctx.flush();} }1.3 Http服务最后展示结果 启动服务端、客户端我展示代码可以随便启动一个我之前的小demo客户端记得改端口9988就行 客户端控制台展示 访问localhost:9988 在Edge浏览器展示 Netty实现WebSocket服务 http协议的缺陷 通信只能由客户端发起。需要一种服务端能够主动推送的能力—websocket。这种双向通信的能力也叫“全双工”。 协议标识符 http://127.0.0.1/ - ws://127.0.0.1/ 通信的最小单位是帧frame。 2、WebSocket服务服务端代码 同样的配方大同小异 只是初始化器和处理器不同需要自定义 public class WebSocketServer {public static void main(String[] args) {// 创建Reactor// 用来管理channel 监听事件 是无限循环的事件组线程池EventLoopGroup bossLoopGroup new NioEventLoopGroup();EventLoopGroup workerLoopGroup new NioEventLoopGroup();// 服务端的启动对象ServerBootstrap serverBootstrap new ServerBootstrap();// 设置相关参数 这是一个链式编程serverBootstrap.group(bossLoopGroup,workerLoopGroup)// 声明通道类型.channel(NioServerSocketChannel.class)// 设置处理器 我这里设置了netty提供的Handler 处理器.handler(new LoggingHandler(LogLevel.INFO))// 定义客户连接端处理器的使用// ChannelInitializer 通道处理化// 可以自定义通道初始化器如实现编码解码器时.childHandler(new WebSocketInitializer());System.out.println(服务端初始化完成);// 启动需要设置端口 还需要设置是异步启动try {// 设置异步的futureChannelFuture future serverBootstrap.bind(7777).sync();// 将关闭的通道也设置成异步的// 阻塞finally 中的代码future.channel().closeFuture().sync();} catch (InterruptedException e) {e.printStackTrace();}finally {// 优雅关闭bossLoopGroup.shutdownGracefully();workerLoopGroup.shutdownGracefully();}} }2.1 WebSocket服务自定义初始化器 继承ChannelInitializer 泛型是SocketChannel public class WebSocketInitializer extends ChannelInitializerSocketChannel {/**** param ch* throws Exception*/Overrideprotected void initChannel(SocketChannel ch) throws Exception {ChannelPipeline pipeline ch.pipeline();// 设置编码解码器pipeline.addLast(new HttpServerCodec());// 用于处理较大的数据pipeline.addLast(new ChunkedWriteHandler());// 设置聚合器pipeline.addLast(new HttpObjectAggregator(512 * 1024));// 声明请求路径 ws://127.0.0.1:7777/hellopipeline.addLast(new WebSocketServerProtocolHandler(/hello));// 自定义处理器pipeline.addLast(new WebSocketHandler());} } 2.2 WebSocket服务自定义处理器 主要的是channelRead0方法 /*** 本次业务处理的数据是文本 WebSocket通信是通过帧来传输* 所以泛型为 TextWebSocketFrame*/ public class WebSocketHandler extends SimpleChannelInboundHandlerTextWebSocketFrame {// 当多个通道传入handler , 使用通道组的管理方法// GlobalEventExecutor 全局事件执行器//INSTANCE 代表的是单例private static ChannelGroup channelGroup new DefaultChannelGroup(GlobalEventExecutor.INSTANCE);/**** param ctx 通道处理器上下文* param msg 文本消息帧* throws Exception*/Overrideprotected void channelRead0(ChannelHandlerContext ctx, TextWebSocketFrame msg) throws Exception {// 浏览器返回的信息帧System.out.println(msg:msg.text());Channel channel ctx.channel();// 需要响应会浏览器的信息 需要是TextWebSocketFrame 类型TextWebSocketFrame webSocketFrame new TextWebSocketFrame(ctx.channel().remoteAddress()客户端:msg.text()\r\n);channel.writeAndFlush(webSocketFrame);}/*** 连接成功 此时通道是活跃的时候触发* param ctx* throws Exception*/Overridepublic void channelActive(ChannelHandlerContext ctx) throws Exception {LocalDate today LocalDate.now();String dateStr today.toString(); // 默认格式为 yyyy-MM-ddctx.writeAndFlush(Welcome to server-- now :dateStr\r\n);}/*** 通道不活跃 用于处理用户下线的逻辑* param ctx* throws Exception*/Overridepublic void channelInactive(ChannelHandlerContext ctx) throws Exception {System.out.println(ctx.channel().remoteAddress()下线了\r\n);}/**** param ctx 通道处理器上下文* throws Exception* 连接刚刚建立时 第一个被执行的方法*/Overridepublic void handlerAdded(ChannelHandlerContext ctx) throws Exception {System.out.println([服务端地址]ctx.channel().remoteAddress()连接成功\r\n);// 添加到通道组中管理channelGroup.add(ctx.channel());}/**** param ctx 通道处理器上下文* throws Exception* 当连接断开 最后执行的方法* 连接断开时 channel 会自动从 通道组中移除*/Overridepublic void handlerRemoved(ChannelHandlerContext ctx) throws Exception {System.out.println([服务端地址]ctx.channel().remoteAddress()断开连接\r\n);}/*** 通用异常处理类* param ctx 通道处理器上下文* param cause* throws Exception*/Overridepublic void exceptionCaught(ChannelHandlerContext ctx, Throwable cause) throws Exception {// 关闭ctx.close();} }2.3 WebSocket服务前端界面 实现一个聊天的小demo WebSocket客户端建立连接流程 !DOCTYPE html html langen headmeta charsetUTF-8titleHello WebSocket/title /head bodyscriptvar socket;// 判断当前浏览器是否支持websocktif (!window.WebSocket) {alert(不支持websocket)} else {socket new WebSocket(ws://127.0.0.1:7777/hello);// 设置开启连接的方法socket.onopen function (ev) {var tmp document.getElementById(respText);tmp.value 连接已开启;}// 设置关闭连接的方法socket.onclose function (ev) {var tmp document.getElementById(respText);tmp.value tmp.value \n 连接已关闭;}// 设置接收数据的方法socket.onmessage function (ev) {var tmp document.getElementById(respText);tmp.value tmp.value \n ev.data;}}function send(message) {// 先判断socket是否已经创建if (!window.socket) {return}// 判断socket的状态// CONNECTING 正在连接 CLOSING 正在关闭// CLOSED 已经关闭或打开连接失败// OPEN 连接成功 可以正常通信if (socket.readyState WebSocket.OPEN) {socket.send(message);} else {alert(连接未开启);}} /script!--防止表单自动提交-- form onsubmitreturn falsetextarea namemessage styleheight: 400px;width: 400px/textareainput typebutton value发送 onclicksend(this.form.message.value)textarea idrespText styleheight: 400px;width: 400px/textarea /form/body /html2.3 WebSocket结果展示 启动WebSocke服务器运行前端代码如下如所示

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/87897.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

深圳建筑室内设计网站网店运营计划书

Windows Phone 8 的 Pivot 控件 2014/6/18 适用于:Windows Phone 8 和 Windows Phone Silverlight 8.1 | Windows Phone OS 7.1 Windows Phone Pivot 应用提供了一种快速管理视图或页面的方法。该方法可以用于筛选大型数据集、查看多个数据集或切换应用视图。例如&a…

有网站怎么开发app网站建设与制作段考试题

唔知大家有无咁ga体会每当夜晚揸车经过一排监控补光灯瞬间像“瞎子”那样看不到东西,“威力”堪比远光灯(△ 11月12日晚,安定门外大街,主路上的监控补光灯)近日,“监控补光灯太刺眼,给夜间行车安全造成极大隐患”一事引…

广东广实建设有限公司网站高大上公司网站

一:题目 二:上码 class Solution { public:/**思路:1.分析题意:1 2 3 6 7 41 2 6 7 4 3这里我们先遇到的1 2 但后来我们又遇见了6 7 4 那么我们的要的答案就是动态变化的2.动态规划五步走1>:确定dp数组以及下标的含义dp[i][j] 表示 以下标i-1结尾的A数组和以下标…

个人网站设计论文怎么写办一年宽带多少钱

1:运算符(掌握)(1)算术运算符A:,-,*,/,%,,--B:的用法a:加法b:正号c:字符串连接符C:/和%的区别数据做除法操作的时候,/取得是商,%取得是余数D:和--的用法a:他们的作用是自增或者自减b:使用**单独使用放在操作数据的前面和后面效果一样。a或者a效果一样。*…

做一个网站分析应该怎么做线上营销活动有哪些

前言 Unity3D它提供了丰富的功能和工具,帮助开发者轻松创建出高质量的游戏作品。其中,法线贴图(Normal Mapping)是一种常用的技术,用于在游戏中模拟出高精度的表面细节,提升游戏画面的真实感和细节感。本文…

分类目录网站怎么做装修设计费收费标准2020

服务器日常维护主要包含两位部分:硬件维护和软件维护。硬件维护 硬件维护就是指对服务器的硬件进行检测,更换,升级,最常见的是防火墙更新,时刻能够应对市场上的变化。 也包含服务器环境的一些维护,定期检查…

wordpress网站多层循环调用文章国家高新技术企业认定工作网

在当下高度复杂的工业生产环境中,机器人如何实现规模化的柔性生产,已成为业界关注的焦点。特别是在追求高效率、高质量的生产过程中,团队协作的重要性愈发凸显。富唯智能一体化AMR控制系统,作为机器人的核心指挥部,犹如…

网站规划与制作装饰设计公司wordpress企业主题

问题描述: 写入csv文件时候无法进行原样写入(写入字符串中出现逗号","时候,csv文件自动分成两个单元格) with open("test.csv","w") as f: f.write("闲暇时,我会被一段,配乐诗朗诵,所感动,悲伤…

玉林市网站开发公司电话最好的免费建站网站

c中实现多态分为两种方式,分别是静态多态(也叫编译时多态),和动态多态(也叫运行时多态) 静态多态: 是在编译时就确定了函数的类型和会调用哪个函数,这种方式叫做静态连接或者早绑定,静态多态主要实现手段…

什么是搭建网站免费开发软件app下载

「句子」是一个用空格分隔单词的字符串。给你一个满足下述格式的句子 text : 句子的首字母大写 text 中的每个单词都用单个空格分隔。 请你重新排列 text 中的单词,使所有单词按其长度的升序排列。如果两个单词的长度相同,则保留其在原句子中的相对顺序…

人和做网站安一个网需要多少钱

前言 纹理特征通常描述了遥感影像中像素之间的空间关系和变化,对于地物分类、目标检测以及图像分割等遥感应用非常有价值。本节将会介绍Earth Engine中提供的一些纹理特征计算方法,包括熵和灰度共生矩阵。 1 导入库并显示数据 import ee import geema…

如何做音乐分享类网站定制营销型网站建设

谷歌Gemini 1.0革新,推出Gemini Ultra、Gemini Pro和Gemini Nano模型。Gemini Ultra强大但慢,Gemini Pro通用,Gemini Nano高效。Gemini模型在多领域与ChatGPT竞争,尤其Gemini Pro已应用于Bard。Gemini模型预计将在2024年通过Bard …

网站开发费用计入什么科目wordpress登录不上

题目链接 首先想到状压dp,但是\(n,m\)高达100,怎么压? 容易发现,每行每列最多两个象棋,否则就直接gg了。 一个巧妙的设置状态的方式是,只需要记录到当前行有多少列是放了1个炮和2个炮。 然后每一行有3种选择…

然后建设一个论坛网站app是什么意思通俗讲

方法一、绑定ref 方法二、通过自定义事件中的事件对象 $event&#xff0c;找到input 方法三、使用自定义指令 方法四、使用原生input 方法一、绑定ref——参考yiyueqinghui <el-input v-model"form.name" ref"name"></el-input> this.$refs.n…

查公司备案网站备案信息建站有哪些公司

【论文阅读】MCTformer: 弱监督语义分割的多类令牌转换器 文章目录 【论文阅读】MCTformer: 弱监督语义分割的多类令牌转换器一、介绍二、联系工作三、方法四、实验结果 Multi-class Token Transformer for Weakly Supervised Semantic Segmentation 本文提出了一种新的基于变换…

哪里有工程做的网站产品展示网站源码php

背景介绍​ 在web开发中的应用广泛​ 在web开发中的应用广泛。随着互联网的发展&#xff0c;web应用越来越普遍&#xff0c;而Python作为一种简洁、高效的编程语言&#xff0c;被广泛应用于web开发领域。Python提供了丰富的库和框架&#xff0c;如Django、Flask等&#xff0c…

免费网站自助制作wordpress制作留言板

1、如何添加虚轴可以参考下面文章链接: 如何添加虚轴(AM400PLC)-CSDN博客文章浏览阅读2次。EtherCAT运动控制总线启用的时候,选择EtherCAT总线任务周期。选择好后,选择点击添加。https://blog.csdn.net/m0_46143730/article/details/139898985?csdn_share_tail=%7B%22type…

编程学习入门网站网页制作与设计第四版电子书

操作系统第四章习题 1.对一个将页表放在内存中的分页系统&#xff1a; (1) 如果访问内存需要0.2μs&#xff0c;有效访问时间为多少? (2) 如果加一快表&#xff0c;且假定在快表中找到页表的几率高达90%&#xff0c;则有效访问时间又是多少&#xff08;假定查快表需花的时间…

wordpress 百万ip绍兴百度seo

小柏林之声音响是13个喇叭1个功放&#xff0c;功率是590W&#xff0c;对应普通音响来说&#xff0c;已经是上等了。像著名的哈曼卡顿音响&#xff0c;还是丹拿音响&#xff0c;或者是BOSE音响&#xff0c;论地位&#xff0c;论音质柏林之声也是名列前茅。星骏汇小许Xjh15863 升…

自己做网站切入地图电脑最常用的绘图软件有哪些

摘 要 现代经济快节奏发展以及不断完善升级的信息化技术&#xff0c;让传统数据信息的管理升级为软件存储&#xff0c;归纳&#xff0c;集中处理数据信息的管理方式。本企业人事管理信息系统就是在这样的大环境下诞生&#xff0c;其可以帮助管理者在短时间内处理完毕庞大的数据…