女生做网站编辑怎么样网站建设济南

bicheng/2026/1/16 19:22:16/文章来源:
女生做网站编辑怎么样,网站建设济南,电影网站空间配置,c2c交易平台下载1、前言 前面完成了winform版#xff0c;wpf版#xff0c;为什么要搞个cmd版#xff0c;因为前面介绍了mqtt的报文结构#xff0c;重点分析了【连接报文】#xff0c;【订阅报文】#xff0c;【发布报文】#xff0c;这节就要就看看实际报文是怎么组装的#xff0c;这…1、前言 前面完成了winform版wpf版为什么要搞个cmd版因为前面介绍了mqtt的报文结构重点分析了【连接报文】【订阅报文】【发布报文】这节就要就看看实际报文是怎么组装的这也是之前详细每个报文的结构含义的目的使用mqttnet这个组件实现mqtt通信是直接应用不涉及到底层报文的结构内容用户是看不到报文内容的这节的目的就是为加深理解而干的。这节不安装任何mqtt的组件而是直接使用socket的原始方式通信。 2、报文回顾 一共有14个报文如下图 可以去看看3个报文的详细介绍什么固定报头可变报头有效载荷这些东东 C#MQTT编程03--连接报文 C#MQTT编程04--订阅报文  C#MQTT编程05--发布报文  总结出来就是这样的 连接报文是客户端发1服务器回2 订阅报文是客户端发8服务器回9 发布报文是客户端发3服务器回4 心跳报文是客户端发12服务器回13。 3、开始卷 1、创建项目方案 2、编写连接报文 完整的连接代码 /// summary /// 连接 /// /summary static void Connection() {// MQTT不支持UDPsocket new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);socket.Connect(127.0.0.1, 1869);//连接报文Listbyte connBytes new Listbyte();#region 第一部分,固定报头// 第0个字节固定报头Listbyte headerBytes new Listbyte{14 //表示连接请求 消息类型 };//第1个字节剩余字节长度//需要后面计算得到#endregion#region 第二部分可变报头 // 第23个字节协议名称MQTT的字节长度Listbyte bodyBytes new Listbyte();string protocolName MQTT;byte[] pnameBytes Encoding.ASCII.GetBytes(protocolName);//得到“MQTT”的字节数组 bodyBytes.Add((byte)(pnameBytes.Length / 256 % 256));//高4位bodyBytes.Add((byte)(pnameBytes.Length % 256));//低4位// 第4567个字节协议名称bodyBytes.AddRange(pnameBytes);// 第8个字节 协议版本bodyBytes.Add(0x04);// 第9个字节 负载是否需要用户名密码等设置byte flagByte 0;flagByte | 128; // 1 0 0 0 0 0 0 0 128 // 需要用户 flagByte | 64; // 0 1 0 0 0 0 0 0 64 // 需要密码 flagByte | 2; // CleanSessionbodyBytes.Add(flagByte);// 第1011个字节 Keep Alive保持连接的时间高位在前低位在后int seconds 100; // 秒为单位bodyBytes.Add((byte)(seconds / 256 % 256));bodyBytes.Add((byte)(seconds % 256));#endregion#region 第三部分载荷Listbyte loadBytes new Listbyte();// 第1213个字节ClientID字符长度string clientID x2;byte[] ciBytes Encoding.ASCII.GetBytes(clientID);loadBytes.Add((byte)(ciBytes.Length / 256 % 256));loadBytes.Add((byte)(ciBytes.Length % 256));// 第141151617个字节ClientIDloadBytes.AddRange(ciBytes);// 第1819个字节用户名长度string username boss;byte[] unBytes Encoding.ASCII.GetBytes(username);loadBytes.Add((byte)(unBytes.Length / 256 % 256));loadBytes.Add((byte)(unBytes.Length % 256));// 第2021222324个字节用户名loadBytes.AddRange(unBytes);// 第2526个字节密码长度string pwd 1234;byte[] pwdBytes Encoding.ASCII.GetBytes(pwd);loadBytes.Add((byte)(pwdBytes.Length / 256 % 256));loadBytes.Add((byte)(pwdBytes.Length % 256));// 第2728293031个字节密码loadBytes.AddRange(pwdBytes);#endregion//第1个字节剩余字节长度从第 2 个字节开始。headerBytes.Add((byte)(bodyBytes.Count loadBytes.Count));//组装成报文connBytes.AddRange(headerBytes);connBytes.AddRange(bodyBytes);connBytes.AddRange(loadBytes);//发送报文socket.Send(connBytes.ToArray());// 异步处理开始心跳Task.Run(async () {byte[] pingBytes new byte[2] { 12 4, 0 };//心跳的字节报文是固定的while (true){Console.WriteLine(心跳时间 DateTime.Now.ToString());await Task.Delay(1000);//等待1秒socket.Send(pingBytes);}});//异步处理服务器返回的报文Task.Run(() {//1请求连接 (C-S)//2连接确认 (S-C)//3发布消息 (Both)//4发布收到确认 (QoS 0)//5发布确认收到//6发布释放//7发布完成 (QoS 2)//8订阅请求 (C-S)//9订阅请求确认 (S-C)//10取消订阅请求 (C-S)//11取消订阅请求确认 (S-C)//12心跳请求 (C-S)//13心跳确认 (S-C)//14客户端断开连接 (C-S)byte[] respBytes new byte[1]; //接收MQTT报文类型报文类型占1个字节//连接成功MQTT报文类型CONNACK服务器返回2即0000 0010高低位交换位置就是返回0 0 1 0 0 0 0 0 转成10进制就是32//发布成功MQTT报文类型PUBACK 服务器返回4即0000 0100高低位交换位置就是返回0 1 0 0 0 0 0 0 转成10进制就是64//订阅成功MQTT报文类型SUBACK 服务器返回9即0000 1001高低位交换位置就是返回1 0 0 1 0 0 0 0 转成10进制就是144//心跳成功MQTT报文类型PINGRESP服务器返回13即0000 1101高低位交换位置就是返回1 1 0 1 0 0 0 0 转成10进制就是208while (true)//循环接收{try{socket.Receive(respBytes, 0, 1, SocketFlags.None);int firstValue Convert.ToInt32(respBytes[0]);//Console.WriteLine(第一个字节 firstValue);//根据报文类型进行处理switch (firstValue){case 32:Console.WriteLine(连接成功!);break;case 64:Console.WriteLine(发布成功!);break;case 144:Console.WriteLine(订阅成功!);break;case 208:Console.WriteLine(心跳成功!);break;}}catch (Exception ex){Console.WriteLine(出错了 ex.Message);}}}); } 特别注意这里的处理 //连接成功MQTT报文类型CONNACK服务器返回2即0000 0010高低位交换位置就是返回0 0 1 0 0 0 0 0 转成10进制就是32//发布成功MQTT报文类型PUBACK 服务器返回4即0000 0100高低位交换位置就是返回0 1 0 0 0 0 0 0 转成10进制就是64//订阅成功MQTT报文类型SUBACK 服务器返回9即0000 1001高低位交换位置就是返回1 0 0 1 0 0 0 0 转成10进制就是144//心跳成功MQTT报文类型PINGRESP服务器返回13即0000 1101高低位交换位置就是返回1 1 0 1 0 0 0 0 转成10进制就是208 心跳的处理它的作用是不断地发送命令以证明客户端存在 测试连接 先把前面的wpf版程序运行启动服务器启动客户端连接服务器 再启动本项目程序可以看到连接成功心跳也成功。 3、编写订阅报文 这里设置的qos级别是1Qos级别-》 0最多一次的传输1至少一次的传输、至多无限次2有且仅有一次的传输 完整代码 /// summary/// 订阅/// /summary/// param nametopics主题列表/paramstatic void Subscription(Liststring topics){Listbyte headerBytes new Listbyte();Listbyte bodyBytes new Listbyte();//第0个字节报文类型10000010byte msgType 8 4; // 1000 0000 headerBytes.Add((byte)(msgType | 2));//第1个字节剩余字节长度等后面计算获取后再添加//第23个字节Package Identifier的长度表示报文的标识int pi random.Next(0, 1000); // Package Identifier的具体值bodyBytes.Add((byte)(pi / 256 % 256));//高位bodyBytes.Add((byte)(pi % 256));//低位//遍历所有主题foreach (var item in topics){//第89个字节topic字符长度byte[] itemBytes Encoding.UTF8.GetBytes(item);bodyBytes.Add((byte)(itemBytes.Length / 256 % 256));bodyBytes.Add((byte)(itemBytes.Length % 256));//第101112131416个字节topic字符内容bodyBytes.AddRange(itemBytes);//第17个字节Qos级别-》 0最多一次的传输1至少一次的传输、至多无限次2有且仅有一次的传输bodyBytes.Add(0x01);}//第1个字节剩余字节长度从第 2 个字节开始。headerBytes.Add((byte)bodyBytes.Count);//组成报文headerBytes.AddRange(bodyBytes);//发送报文socket.Send(headerBytes.ToArray());//接收服务器回应的报文 //byte[] respBytes new byte[5];//socket.Receive(respBytes, 0, 5, SocketFlags.None);//var objSub respBytes; } 测试订阅 先让wpf客户端订阅一个主题“shanghai订阅成功 再看本项目程序订阅主题”shanghai,可以看到订阅成功 4、编写发布报文 完整代码注释详情 /// summary/// 发布消息服务级别(Qos1)/// /summarystatic void Publish_Qos1(){#region 方法1Listbyte headerBytes new Listbyte();//报文类型byte msgType 3 4; // 1000 0000 headerBytes.Add((byte)(msgType | 2)); // QoS-0低4位全为1Listbyte bodyBytes new Listbyte();string topic shanghai;string msg hello9098;// 添加主题长度byte[] topicBytes Encoding.UTF8.GetBytes(topic);bodyBytes.Add((byte)(topicBytes.Length / 256 % 256));bodyBytes.Add((byte)(topicBytes.Length % 256));// 添加主题内容bodyBytes.AddRange(topicBytes);// 必须添加Package Identifier只包括它的字节长度int pi random.Next(0, 1000); // Package Identifier//Console.WriteLine(pi);bodyBytes.Add((byte)(pi / 256 % 256));bodyBytes.Add((byte)(pi % 256));// 添加消息长度 byte[] msgBytes Encoding.UTF8.GetBytes(msg);bodyBytes.Add((byte)(msgBytes.Length / 256 % 256));bodyBytes.Add((byte)(msgBytes.Length % 256));// 添加消息内容bodyBytes.AddRange(msgBytes);//添加第1个字节剩余字节长度headerBytes.Add((byte)bodyBytes.Count);// 组装头 headerBytes.AddRange(bodyBytes);//发送消息socket.Send(headerBytes.ToArray());#endregion //#region 方法2//string topic shanghai;//string msg hello9098;//int pi random.Next(0, 1000); // Package Identifier//Listbyte topicbytes new Listbyte();//byte[] topicArray Encoding.UTF8.GetBytes(topic);//byte[] payloadArray Encoding.UTF8.GetBytes(msg);//topicbytes.Add((byte)((int)topicArray.Length / 256));//topicbytes.Add((byte)((int)topicArray.Length % 256));//topicbytes.AddRange(topicArray);//byte[] id new byte[] { (byte)(pi / 256 % 256), (byte)(pi % 256) };//byte[] bufferLen new byte[] { (byte)(topicbytes.Count payloadArray.Length id.Length) };//using (MemoryStream memoryStream new MemoryStream())//{// memoryStream.WriteByte((3 4) | 2 | 1);// 写入消息类型(QoS-1)// memoryStream.Write(bufferLen, 0, (int)bufferLen.Length);// 写入后续报文长度// memoryStream.Write(topicbytes.ToArray(), 0, (int)topicbytes.Count);// 写入Topic字节// memoryStream.Write(id.ToArray(), 0, (int)id.Length);// 写入Package Identifier字节// memoryStream.Write(payloadArray.ToArray(), 0, (int)payloadArray.Length);// 写入消息// byte[] sendArray memoryStream.ToArray();// socket.Send(sendArray);//}接收服务器回应的报文 //byte[] respBytes new byte[4];//socket.Receive(respBytes, 0, 4, SocketFlags.None);//var objSub respBytes;//#endregion } 测试发布 前面的c1订阅了主题“shanghai现在的x2客户端向shanghai主题发布一个消息看看c1能不能收到 最后全部完整代码 using System; using System.Collections.Generic; using System.Linq; using System.Net.Sockets; using System.Text; using System.Threading.Tasks;namespace MQTTNETClientCMD {internal class Program{static Socket socket;//socket对象static Random random new Random();//随机数用于产生package identifierstatic Liststring topic new Liststring { shanghai };//主题static void Main(string[] args){Console.WriteLine(Hello MQTT!);Connection();//连接 Subscription(topic);//订阅Publish_Qos1();// 发布Qos1Console.ReadKey();}/// summary/// 连接/// /summarystatic void Connection(){// MQTT不支持UDPsocket new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);socket.Connect(127.0.0.1, 1869);//连接报文Listbyte connBytes new Listbyte();#region 第一部分,固定报头// 第0个字节固定报头Listbyte headerBytes new Listbyte{14 //表示连接请求 消息类型 };//第1个字节剩余字节长度//需要后面计算得到#endregion#region 第二部分可变报头 // 第23个字节协议名称MQTT的字节长度Listbyte bodyBytes new Listbyte();string protocolName MQTT;byte[] pnameBytes Encoding.ASCII.GetBytes(protocolName);//得到“MQTT”的字节数组 bodyBytes.Add((byte)(pnameBytes.Length / 256 % 256));//高4位bodyBytes.Add((byte)(pnameBytes.Length % 256));//低4位// 第4567个字节协议名称bodyBytes.AddRange(pnameBytes);// 第8个字节 协议版本bodyBytes.Add(0x04);// 第9个字节 负载是否需要用户名密码等设置byte flagByte 0;flagByte | 128; // 1 0 0 0 0 0 0 0 128 // 需要用户 flagByte | 64; // 0 1 0 0 0 0 0 0 64 // 需要密码 flagByte | 2; // CleanSessionbodyBytes.Add(flagByte);// 第1011个字节 Keep Alive保持连接的时间高位在前低位在后int seconds 100; // 秒为单位bodyBytes.Add((byte)(seconds / 256 % 256));bodyBytes.Add((byte)(seconds % 256));#endregion#region 第三部分载荷Listbyte loadBytes new Listbyte();// 第1213个字节ClientID字符长度string clientID x2;byte[] ciBytes Encoding.ASCII.GetBytes(clientID);loadBytes.Add((byte)(ciBytes.Length / 256 % 256));loadBytes.Add((byte)(ciBytes.Length % 256));// 第141151617个字节ClientIDloadBytes.AddRange(ciBytes);// 第1819个字节用户名长度string username boss;byte[] unBytes Encoding.ASCII.GetBytes(username);loadBytes.Add((byte)(unBytes.Length / 256 % 256));loadBytes.Add((byte)(unBytes.Length % 256));// 第2021222324个字节用户名loadBytes.AddRange(unBytes);// 第2526个字节密码长度string pwd 1234;byte[] pwdBytes Encoding.ASCII.GetBytes(pwd);loadBytes.Add((byte)(pwdBytes.Length / 256 % 256));loadBytes.Add((byte)(pwdBytes.Length % 256));// 第2728293031个字节密码loadBytes.AddRange(pwdBytes);#endregion//第1个字节剩余字节长度从第 2 个字节开始。headerBytes.Add((byte)(bodyBytes.Count loadBytes.Count));//组装成报文connBytes.AddRange(headerBytes);connBytes.AddRange(bodyBytes);connBytes.AddRange(loadBytes);//发送报文socket.Send(connBytes.ToArray());// 异步处理开始心跳Task.Run(async () {byte[] pingBytes new byte[2] { 12 4, 0 };//心跳的字节报文是固定的while (true){Console.WriteLine(心跳时间 DateTime.Now.ToString());await Task.Delay(1000);//等待1秒socket.Send(pingBytes);}});//异步处理服务器返回的报文Task.Run(() {//1请求连接 (C-S)//2连接确认 (S-C)//3发布消息 (Both)//4发布收到确认 (QoS 0)//5发布确认收到//6发布释放//7发布完成 (QoS 2)//8订阅请求 (C-S)//9订阅请求确认 (S-C)//10取消订阅请求 (C-S)//11取消订阅请求确认 (S-C)//12心跳请求 (C-S)//13心跳确认 (S-C)//14客户端断开连接 (C-S)byte[] respBytes new byte[1]; //接收MQTT报文类型报文类型占1个字节//连接成功MQTT报文类型CONNACK服务器返回2即0000 0010高低位交换位置就是返回0 0 1 0 0 0 0 0 转成10进制就是32//发布成功MQTT报文类型PUBACK 服务器返回4即0000 0100高低位交换位置就是返回0 1 0 0 0 0 0 0 转成10进制就是64//订阅成功MQTT报文类型SUBACK 服务器返回9即0000 1001高低位交换位置就是返回1 0 0 1 0 0 0 0 转成10进制就是144//心跳成功MQTT报文类型PINGRESP服务器返回13即0000 1101高低位交换位置就是返回1 1 0 1 0 0 0 0 转成10进制就是208while (true)//循环接收{try{socket.Receive(respBytes, 0, 1, SocketFlags.None);int firstValue Convert.ToInt32(respBytes[0]);//Console.WriteLine(第一个字节 firstValue);//根据报文类型进行处理switch (firstValue){case 32:Console.WriteLine(连接成功!);break;case 64:Console.WriteLine(发布成功!);break;case 144:Console.WriteLine(订阅成功!);break;case 208:Console.WriteLine(心跳成功!);break;}}catch (Exception ex){Console.WriteLine(出错了 ex.Message);}}});}/// summary/// 订阅/// /summary/// param nametopics主题列表/paramstatic void Subscription(Liststring topics){Listbyte headerBytes new Listbyte();Listbyte bodyBytes new Listbyte();//第0个字节报文类型10000010byte msgType 8 4; // 1000 0000 headerBytes.Add((byte)(msgType | 2));//第1个字节剩余字节长度等后面计算获取后再添加//第23个字节Package Identifier的长度表示报文的标识int pi random.Next(0, 1000); // Package Identifier的具体值bodyBytes.Add((byte)(pi / 256 % 256));//高位bodyBytes.Add((byte)(pi % 256));//低位//遍历所有主题foreach (var item in topics){//第89个字节topic字符长度byte[] itemBytes Encoding.UTF8.GetBytes(item);bodyBytes.Add((byte)(itemBytes.Length / 256 % 256));bodyBytes.Add((byte)(itemBytes.Length % 256));//第101112131416个字节topic字符内容bodyBytes.AddRange(itemBytes);//第17个字节Qos级别-》 0最多一次的传输1至少一次的传输、至多无限次2有且仅有一次的传输bodyBytes.Add(0x01);}//第1个字节剩余字节长度从第 2 个字节开始。headerBytes.Add((byte)bodyBytes.Count);//组成报文headerBytes.AddRange(bodyBytes);//发送报文socket.Send(headerBytes.ToArray());//接收服务器回应的报文 //byte[] respBytes new byte[5];//socket.Receive(respBytes, 0, 5, SocketFlags.None);//var objSub respBytes; }/// summary/// 发布消息服务级别(Qos1)/// /summarystatic void Publish_Qos1(){#region 方法1Listbyte headerBytes new Listbyte();//报文类型byte msgType 3 4; // 1000 0000 headerBytes.Add((byte)(msgType | 2)); // QoS-0低4位全为1Listbyte bodyBytes new Listbyte();string topic shanghai;string msg hello9098;// 添加主题长度byte[] topicBytes Encoding.UTF8.GetBytes(topic);bodyBytes.Add((byte)(topicBytes.Length / 256 % 256));bodyBytes.Add((byte)(topicBytes.Length % 256));// 添加主题内容bodyBytes.AddRange(topicBytes);// 必须添加Package Identifier只包括它的字节长度int pi random.Next(0, 1000); // Package Identifier//Console.WriteLine(pi);bodyBytes.Add((byte)(pi / 256 % 256));bodyBytes.Add((byte)(pi % 256));// 添加消息长度 byte[] msgBytes Encoding.UTF8.GetBytes(msg);bodyBytes.Add((byte)(msgBytes.Length / 256 % 256));bodyBytes.Add((byte)(msgBytes.Length % 256));// 添加消息内容bodyBytes.AddRange(msgBytes);//添加第1个字节剩余字节长度headerBytes.Add((byte)bodyBytes.Count);// 组装头 headerBytes.AddRange(bodyBytes);//发送消息socket.Send(headerBytes.ToArray());#endregion //#region 方法2//string topic shanghai;//string msg hello9098;//int pi random.Next(0, 1000); // Package Identifier//Listbyte topicbytes new Listbyte();//byte[] topicArray Encoding.UTF8.GetBytes(topic);//byte[] payloadArray Encoding.UTF8.GetBytes(msg);//topicbytes.Add((byte)((int)topicArray.Length / 256));//topicbytes.Add((byte)((int)topicArray.Length % 256));//topicbytes.AddRange(topicArray);//byte[] id new byte[] { (byte)(pi / 256 % 256), (byte)(pi % 256) };//byte[] bufferLen new byte[] { (byte)(topicbytes.Count payloadArray.Length id.Length) };//using (MemoryStream memoryStream new MemoryStream())//{// memoryStream.WriteByte((3 4) | 2 | 1);// 写入消息类型(QoS-1)// memoryStream.Write(bufferLen, 0, (int)bufferLen.Length);// 写入后续报文长度// memoryStream.Write(topicbytes.ToArray(), 0, (int)topicbytes.Count);// 写入Topic字节// memoryStream.Write(id.ToArray(), 0, (int)id.Length);// 写入Package Identifier字节// memoryStream.Write(payloadArray.ToArray(), 0, (int)payloadArray.Length);// 写入消息// byte[] sendArray memoryStream.ToArray();// socket.Send(sendArray);//}接收服务器回应的报文 //byte[] respBytes new byte[4];//socket.Receive(respBytes, 0, 4, SocketFlags.None);//var objSub respBytes;//#endregion }} }讲解不易分析不易原创不易整理不易伙伴们动动你的金手指你的支持是我最大的动力。 讲解不易分析不易原创不易整理不易伙伴们动动你的金手指你的支持是我最大的动力。

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

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

相关文章

网站程序网站分为几部分

1、Spring框架的单例bean是线程安全的吗? 2、什么是AOP? 3、Spring的事务是如何实现的? 4、Spring事务失效的场景 5、SpringBean的声明周期 6、Spring的循环依赖 7、SpringMVC的执行流程 8、SpringBoot自动配置原理 9、Spring常见注解

网站开发质量控制计划建设互联网站机房需要哪些设备

编译器:Qt 5.12.2Visual Studio 2015 视觉库:OpenCV 4.5.5 能够加载MP4格式视频、读取、定位二维码并输出与反馈信息的软件 需要演示Demo可私信

魏县企业做网站推广网络营销总监岗位职责

进程基本概念: 1.进程: 程序:存放在外存中的一段数据组成的文件 进程:是一个程序动态执行的过程,包括进程的创建、进程的调度、进程的消亡 2.进程相关命令: 1.top 动态查看当前系统中的所有进程信息(根据CPU占用率排序&a…

网站建设网页企业网站开发开题报告

第一次使用ant design的List列表组件,设置gutter间隔属性后,页面出现了横向滚动条,查阅文档发现是由于加间隔后导致容器宽度被撑开,ant design官方默认给外层容器加了margin-left和margin-right 解决方法是在外层容器预留一定的pa…

网站导航结构营销型外贸网站制作

SouthLeetCode-打卡24年02月第1周 // Date : 2024/02/01 ~ 2024/02/04 034.合并两个有序链表 (1) 题目描述 034#LeetCode.21.#北岸计划2024/02/01 将两个升序链表合并为一个新的 升序 链表并返回。 新链表是通过拼接给定的两个链表的所有节点组成的。 (2) 题解代码 cla…

品牌策划网站推荐那些空号检测网站是怎么做的

背景 OBD 是OceanBase的命令行部署工具,在 obd V2.5.0 版本之前,其主要功能主要是部署各类组件,例如 oceanbase-ce,obproxy-ce,obagent 等。然而,它并不支持组件的变更操作以及组件内部的扩缩容调整。具体来说: 1、若…

网站设计与应用方向论文网站的资讯内容

【 黄金消息面分析】:周一(4月15日)亚市盘初,金价开盘跳涨13美元,报2357.71美元/盎司,随后延续涨势,最高触及2372.45美元/盎司,目前金价回落至2354.19美元/盎司,如果中东局势未进一步恶化&#…

做淘宝客网站能有效果吗wordpress没有水印

题目 思路&#xff1a; 对于字符串a&#xff0c;b, (a.size() < b.size()), 考虑对字符串b满足什么条件&#xff1a; 由1、3可知a是b的前后缀&#xff0c;由2知b有一个周期是3&#xff0c;即a.size()&#xff0c;所以b是用多个a拼接而成的&#xff0c;有因为a是b的前后缀&…

在洪雅网站做企业招聘浙江网站建设有哪些

1、前言 轮廓,是指图像中或者物体的外边缘线条。在简单的几何图形中,图形的轮廓是由平滑的线条构成,容易被识别。但不规则的图形或者生活中常见的物体轮廓复杂,识别起来比较困难 2、findContours函数 这里先介绍函数的参数,具体的含义会在下面实验中阐述 opencv 提供的轮…

网站正在建设中怎么办如何免费查询企业信息

本来今天想写个NTP的文章&#xff0c;但是因为小米昨天的这个操作一直想夸一下&#xff0c;所以写写雷布斯&#xff0c;吹吹雷布斯。我是米粉&#xff0c;肯定是米粉&#xff0c;前段时间还有读者来问我&#xff0c;现在能不能入手小米的股票&#xff0c;这个我不敢给建议&…

上海免费网站建设服务外贸网站首页

&#xff08;1&#xff09;G1_FullGC的概念辨析 SerialGC&#xff1a;串行的&#xff0c;ParallelGC&#xff1a;并行的 &#xff0c;CMS和G1都是并发的 这几种垃圾回收器的新生代回收机制时相同的&#xff0c;SerialGC和ParalledGC&#xff1a;老年代内存不足触发的叫FullGC…

江西建设监督网站引流推广的方法

背景 最近项目要有向外部提供服务的能力&#xff0c;但是考虑到数据安全问题&#xff0c;要对接口进行加解密&#xff1b;实现加解密的方案有很多&#xff0c;比如过滤器、拦截器、继承RequestResponseBodyMethodProcessor什么的&#xff0c;不过我最近正在了解ResponseBodyAd…

佛山市建设工程交易中心网站学视频剪辑报个班的多少钱

目录 相似度计算基于用户的协同过滤&#xff08;UserCF&#xff09;算法评估基于物品的协同过滤&#xff08;ItemCF&#xff09;协同过滤算法的权重改进协同过滤算法的问题分析思考学习参考 相似度计算 杰卡德&#xff08;Jaccard&#xff09;相似系数 Jaccard 系数是衡量两个…

网站哪里可以做做网站还赚钱么

在学习玩string后我们开始学习vector&#xff0c;本篇博客将对vector进行简单的介绍&#xff0c;还会对vector一些常用的函数进行讲解 vector的介绍 实际上vector就是一个数组的数据结构&#xff0c;但是vector是由C编写而成的&#xff0c;他和数组也有本质上的区别&#xff…

陕西住房与建设厅网站西部数码

1、600余家互联网企业发出倡议&#xff1a;积极维护防汛救灾网络秩序、截至目前&#xff0c;包括百度、微博、抖音、快手、小红书、哔哩哔哩、阿里、腾讯等8家超大型互联网平台在内的600余家企业发出倡议书&#xff0c;唱响了万众一心、聚力救灾救援的网上主旋律 2、苏州调整耗…

求一个做健身餐的网站气象服务网站建设

题目链接 2719. 统计整数数目 - 力扣&#xff08;LeetCode&#xff09; 解题思路 题目实际上求的是[num1,...num2]中&#xff0c;数位和在[min_sum,...max_sum]的数的个数。对于这种区间[l,...r]的问题&#xff0c;我们可以考虑转化为求[1,...r]和[1,...l-1]的答案&#xff…

网站建设备案多长时间重庆市公司网站备案在哪了

文件上传一个经常用到的功能&#xff0c;它有许多中实现的方案。 页面表单 RFC1897规范 http协议上传 页面控件(flash/html5/activeX/applet) RFC1897规范 http协议上传 页面控件(flash/html5/activeX/applet) 自定义数据规范 http协议上传 页面控件(flash/html5/act…

做毕业设计的参考文献网站wordpress标签加icon

1024“程序员节”&#xff0c;58同城招聘研究院发布程序员行业大数据报告显示&#xff0c;程序员男性占比高达87.29%。 作者&#xff1a;朝晖 1024“程序员节”&#xff0c;58同城招聘研究院发布程序员行业大数据报告显示&#xff0c;程序员男性占比高达87.29%&#xff0c;北…

网站设计制作托管维护翻页h5制作软件

java实现pdf转word的办法有&#xff1a; 1、pdfbox poi 2、free spire.pdf 3、aspose-pdf free spire.pdf 的效果比aspose-pdf稍差一些&#xff0c;但是 aspose-pdf 是付费的&#xff0c;spire.pdf也有付费版本

熟练做网站需要了解什么怎样创办自己的公众号

说明 AP510X 是一系列外围电路简洁的单路线性 LED 恒 流芯片&#xff0c;适用于 3-60V 电压范围的 LED 恒流调光 领域。 AP510X 采用我司专利算法&#xff0c;可以实现高精度的恒 流效果&#xff0c;输出电流恒流精度≤ 3 &#xff05;&#xff0c;电源供电工作 范…