• [交流吐槽] 第七次笔记
    # UDP客户端 UDP具有较好的实时性,工作效率比TCP高,适用于对高速传输和实时性有较高的通信或广播通信。 但UDP作为一种最简单的传输层协议,基本上没有做什么的操作来帮助用户处理复杂的网络环境,所以UDP保留下来这种不可靠的特性。 ## UDP协议相关API介绍 ![](https://bbs-img.huaweicloud.com/data/forums/attachment/forum/20227/25/1658728233721199658.png) ## 创建流程 ![](https://bbs-img.huaweicloud.com/data/forums/attachment/forum/20227/25/1658728284406746507.png) ## 实现 ![](https://bbs-img.huaweicloud.com/data/forums/attachment/forum/20227/25/1658728299179714542.png) # TCP服务端 TCP:传输控制协议 **目标:** > 以进程为单位传递数据 > 追求可靠性 ## 相关API ![](https://bbs-img.huaweicloud.com/data/forums/attachment/forum/20227/25/1658728424696479298.png) ## 创建流程 ![](https://bbs-img.huaweicloud.com/data/forums/attachment/forum/20227/25/1658728467427137155.png) ## 实现 ![](https://bbs-img.huaweicloud.com/data/forums/attachment/forum/20227/25/1658728486269246746.png)
  • [交流吐槽] 第六章总结与浅解
    UDP客户端:测试UDP客户端:通过socket工具测试UDP客户端:工具下载地址:https://pan.baidu.com/share/init?surl=3YlqQVzEa5ygcQeTSGQ_JA提取码:12341)选择UDP服务端,然后点击创建2)将本地端口修改为案例代码中的端口号Windows查看IP地址方法:1)同时按【win】+【R】,进入cmd窗口2)输入:ipconfig,按【Enter】3)查看IP地址案例代码解析:#include <stdio.h>#include <unistd.h>#include "ohos_init.h"#include "cmsis_os2.h"#include "wifi_device.h"#include "lwip/netifapi.h"#include "lwip/api_shell.h"#include <netdb.h>#include <string.h>#include <stdlib.h>#include "lwip/sockets.h"#include "wifi_connect.h"#define _PROT_ 8888//服务端端口号//在sock_fd 进行监听,在 new_fd 接收新的链接int sock_fd;//定义文件描述符int addr_length;static const char *send_data = "Hello! I'm BearPi-HM_Nano UDP Client!\r\n";//定义发送给服务端的信息static void UDPClientTask(void){//服务器的地址信息struct sockaddr_in send_addr;socklen_t addr_length = sizeof(send_addr);char recvBuf[512];//连接WifiWifiConnect("TP-LINK_65A8", "0987654321");//该函数被封装在./src/wifi_connect.c里//创建socketif ((sock_fd = socket(AF_INET, SOCK_DGRAM, 0)) == -1)//协议组:AF_INET是IPV4,AF_INET6是IPV6;协议类型:SOCK_DGRAM是UDP;协议:0是按照第二个参数去定义,通常填0    {perror("create socket failed!\r\n");exit(1);    }//初始化预连接的服务端地址send_addr.sin_family = AF_INET;//协议组send_addr.sin_port = htons(_PROT_);//端口号(通过htons()将主机端口号转化为网络端口号)send_addr.sin_addr.s_addr = inet_addr("192.168.0.175");//服务端IP地址addr_length = sizeof(send_addr);//总计发送 count 次数据while (1)    {bzero(recvBuf, sizeof(recvBuf));//将recvBuf里的数据清零//发送数据到服务远端sendto(sock_fd, send_data, strlen(send_data), 0, (struct sockaddr *)&send_addr, addr_length);//线程休眠一段时间(10s)sleep(10);//接收服务端返回的字符串,如果没有收到数据就一直阻塞在这recvfrom(sock_fd, recvBuf, sizeof(recvBuf), 0, (struct sockaddr *)&send_addr, &addr_length);printf("%s:%d=>%s\n", inet_ntoa(send_addr.sin_addr), ntohs(send_addr.sin_port), recvBuf);//输出接收的数据;inet_ntoa()是将长整型的数据转化为点分十进制的数据;ntohs()是将网络字符数据转化为主机字符数据    }//关闭这个 socketclosesocket(sock_fd);}static void UDPClientDemo(void){osThreadAttr_t attr;attr.name = "UDPClientTask";attr.attr_bits = 0U;attr.cb_mem = NULL;attr.cb_size = 0U;attr.stack_mem = NULL;attr.stack_size = 10240;attr.priority = osPriorityNormal;if (osThreadNew((osThreadFunc_t)UDPClientTask, NULL, &attr) == NULL)    {printf("[UDPClientDemo] Falied to create UDPClientTask!\n");    }}APP_FEATURE_INIT(UDPClientDemo);TCP服务端:测试TCP服务端:1)打开Socket tool,选择TCP Client,点击【创建】2)填写代码中的端口号以及日志信息中的开发板IP地址案例代码抽象化理解:1)公司买一部电话2)给电话办一张卡3)招一个前台工作人员负责转接电话(转接电话数为TCP_BACKLOG)4)对应的工作人员和客服之间进行交流TCP客户端:案例代码:#include <stdio.h>#include <unistd.h>#include "ohos_init.h"#include "cmsis_os2.h"#include "wifi_device.h"#include "lwip/netifapi.h"#include "lwip/api_shell.h"#include <netdb.h>#include <string.h>#include <stdlib.h>#include "lwip/sockets.h"#include "wifi_connect.h"#define _PROT_ 8888//服务端端口号//在sock_fd 进行监听,在 new_fd 接收新的链接int sock_fd;//定义文件描述符int addr_length;static const char *send_data = "Hello! I'm BearPi-HM_Nano TCP Client!\r\n";//定义发送给服务端的信息static void TCPClientTask(void){//服务器的地址信息struct sockaddr_in send_addr;socklen_t addr_length = sizeof(send_addr);char recvBuf[512];//连接WifiWifiConnect("TP-LINK_65A8", "0987654321");//该函数被封装在./src/wifi_connect.c里//创建socketif ((sock_fd = socket(AF_INET, SOCK_STREAM, 0)) == -1)//协议组:AF_INET是IPV4,AF_INET6是IPV6;协议类型:SOCK_STREAM是TCP;协议:0是按照第二个参数去定义,通常填0    {perror("create socket failed!\r\n");exit(1);    }//初始化预连接的服务端地址send_addr.sin_family = AF_INET;//协议组send_addr.sin_port = htons(_PROT_);//端口号(通过htons()将主机端口号转化为网络端口号)send_addr.sin_addr.s_addr = inet_addr("192.168.0.102");//服务端IP地址addr_length = sizeof(send_addr);connect(sock_fd, (struct sockaddr *)&send_addr, addr_length);//连接TCP服务器//总计发送 count 次数据while (1)    {bzero(recvBuf, sizeof(recvBuf));//将recvBuf里的数据清零//发送数据到服务远端send(sock_fd, send_data, strlen(send_data), 0);// //线程休眠一段时间(10s)// sleep(10);//接收服务端返回的字符串,如果没有收到数据就一直阻塞在这recv(sock_fd, recvBuf, sizeof(recvBuf), 0);printf("%s:%d=>%s\n", inet_ntoa(send_addr.sin_addr), ntohs(send_addr.sin_port), recvBuf);//输出接收的数据;inet_ntoa()是将长整型的数据转化为点分十进制的数据;ntohs()是将网络字符数据转化为主机字符数据    }//关闭这个 socketclosesocket(sock_fd);}static void TCPClientDemo(void){osThreadAttr_t attr;attr.name = "TCPClientTask";attr.attr_bits = 0U;attr.cb_mem = NULL;attr.cb_size = 0U;attr.stack_mem = NULL;attr.stack_size = 10240;attr.priority = osPriorityNormal;if (osThreadNew((osThreadFunc_t)TCPClientTask, NULL, &attr) == NULL)    {printf("[TCPClientDemo] Falied to create TCPClientTask!\n");    }}APP_FEATURE_INIT(TCPClientDemo);UDP服务端:案例代码:#include <stdio.h>#include <unistd.h>#include "ohos_init.h"#include "cmsis_os2.h"#include "lwip/sockets.h"#include "wifi_connect.h"#define _PROT_ 8888#define TCP_BACKLOG 10//在sock_fd 进行监听,在 new_fd 接收新的链接int sock_fd, new_fd;char recvbuf[512];char *buf = "Hello! I'm BearPi-HM_Nano UDP Server!";static void UDPServerTask(void){//服务端地址信息struct sockaddr_in server_sock;//客户端地址信息struct sockaddr_in client_sock;int sin_size;struct sockaddr_in *cli_addr;//连接WifiWifiConnect("袁初", "123456789");//创建socketif ((sock_fd = socket(AF_INET, SOCK_DGRAM, 0)) == -1)    {perror("socket is error\r\n");exit(1);    }bzero(&server_sock, sizeof(server_sock));server_sock.sin_family = AF_INET;server_sock.sin_addr.s_addr = htonl(INADDR_ANY);server_sock.sin_port = htons(_PROT_);//调用bind函数绑定socket和地址if (bind(sock_fd, (struct sockaddr *)&server_sock, sizeof(struct sockaddr)) == -1)    {perror("bind is error\r\n");exit(1);    }// //调用listen函数监听(指定port监听)// if (listen(sock_fd, TCP_BACKLOG) == -1)// {//  perror("listen is error\r\n");//  exit(1);// }// printf("start accept\n");//调用accept函数从队列中while (1)    {sin_size = sizeof(struct sockaddr_in);// if ((new_fd = accept(sock_fd, (struct sockaddr *)&client_sock, (socklen_t *)&sin_size)) == -1)// {//  perror("accept");//  continue;// }// cli_addr = malloc(sizeof(struct sockaddr));// printf("accept addr\r\n");// if (cli_addr != NULL)// {//  memcpy(cli_addr, &client_sock, sizeof(struct sockaddr));// }//处理目标ssize_t ret;while (1)        {bzero(&recvbuf, sizeof(recvbuf));if ((ret = recvfrom(sock_fd, recvbuf, sizeof(recvbuf), 0, (struct sockaddr *)&client_sock, (socklen_t *)&sin_size)) == -1)            {printf("recv error \r\n");            }printf("recv :%s\r\n", recvbuf);// sleep(2);if ((ret = sendto(sock_fd, buf, strlen(buf) + 1, 0, (struct sockaddr *)&client_sock, sizeof(client_sock))) == -1)            {perror("send : ");            }// sleep(2);        }close(sock_fd);    }}static void UDPServerDemo(void){osThreadAttr_t attr;attr.name = "UDPerverTask";attr.attr_bits = 0U;attr.cb_mem = NULL;attr.cb_size = 0U;attr.stack_mem = NULL;attr.stack_size = 10240;attr.priority = osPriorityNormal;if (osThreadNew((osThreadFunc_t)UDPServerTask, NULL, &attr) == NULL)    {printf("[UDPServerDemo] Falied to create UDPServerTask!\n");    }}APP_FEATURE_INIT(UDPServerDemo);MQTT客户端:嵌入式c语言客户端开源地址:https://github.com/eclipse/paho.mqtt.embedded-cMQTT消息代理软件mosquitto下载地址:https://mosquitto.org/download/Eclipse桌面客户端程序下载地址:https://repo.eclipse.org/content/repositories/paho-releases/org/eclipse/paho/org.eclipse.paho.ui.app/1.1.1/MQTT客户端的简单使用:1)安装mosquitto(记住安装位置)2)打开mosquitto安装文件夹中的配置文件3)搜索“allow_anonymous”(第529行),修改为“allow_anonymous true”,4)搜索“listener”(第232行),修改为“listener 1883 你的电脑IP”,再加一行“listener 1883 localhost”,然后保存退出5)在任务管理器里寻找到mosquitto服务并启动6)打开客户端工具实例代码解析:#include <stdio.h>#include <string.h>#include <stdlib.h>#include "ohos_init.h"#include "cmsis_os2.h"#include "wifi_connect.h"#include "MQTTClient.h"static unsigned char sendBuf[1000];static unsigned char readBuf[1000];Network network;//订阅消息的回调函数void messageArrived(MessageData* data){printf("Message arrived on topic %.*s: %.*s\n", data->topicName->lenstring.len, data->topicName->lenstring.data,data->message->payloadlen, data->message->payload);}/* */static void MQTT_DemoTask(void){WifiConnect("Hold","0987654321");printf("Starting ...\n");int rc, count = 0;MQTTClient client;NetworkInit(&network);printf("NetworkConnect  ...\n");begin: NetworkConnect(&network, "192.168.0.176", 1883);//连接MQTT服务端printf("MQTTClientInit  ...\n");MQTTClientInit(&client, &network, 2000, sendBuf, sizeof(sendBuf), readBuf, sizeof(readBuf));//初始化并创建一个MQTT对象//配置MQTT客户端的信息MQTTString clientId = MQTTString_initializer;clientId.cstring = "bearpi";MQTTPacket_connectData data = MQTTPacket_connectData_initializer;  data.clientID          = clientId;//iddata.willFlag          = 0;data.MQTTVersion       = 3;//版本信息data.keepAliveInterval = 0;//保活时间data.cleansession      = 1;printf("MQTTConnect  ...\n");rc = MQTTConnect(&client, &data);//发送连接数据包//如果发送失败则断开连接,返回到begin:处重新连接MQTT服务端if (rc != 0) {printf("MQTTConnect: %d\n", rc);NetworkDisconnect(&network);MQTTDisconnect(&client);osDelay(200);goto begin;}//订阅消息substopicprintf("MQTTSubscribe  ...\n");rc = MQTTSubscribe(&client, "substopic", 2, messageArrived);if (rc != 0) {printf("MQTTSubscribe: %d\n", rc);osDelay(200);goto begin;}//每500ms发布一次消息的服务pubtopicwhile (++count){MQTTMessage message;char payload[30];message.qos = 2;message.retained = 0;message.payload = payload;sprintf(payload, "message number %d", count);message.payloadlen = strlen(payload);if ((rc = MQTTPublish(&client, "pubtopic", &message)) != 0){printf("Return code from MQTT publish is %d\n", rc);NetworkDisconnect(&network);MQTTDisconnect(&client);goto begin;}osDelay(50); }}static void MQTT_Demo(void){    osThreadAttr_t attr;    attr.name = "MQTT_DemoTask";    attr.attr_bits = 0U;    attr.cb_mem = NULL;    attr.cb_size = 0U;    attr.stack_mem = NULL;    attr.stack_size = 10240;    attr.priority = osPriorityNormal;    if (osThreadNew((osThreadFunc_t)MQTT_DemoTask, NULL, &attr) == NULL) {        printf("[MQTT_Demo] Falied to create MQTT_DemoTask!\n");    }}APP_FEATURE_INIT(MQTT_Demo);本文只是个人浅解,可能有些注释不正确,万分抱歉
  • [交流吐槽] 第六
    ## HarmonyOS网络应用开发UDP客户端(6.1) **本节主要介绍:** - UDP协议相关API - UDP客户端创建流程 - UDP通信流程 **:三目录** 1. UDP协议相关API介绍 2. UDP客户端创建流程介绍 3. 实现UDP客户端 4. 测试UDP客户端 5. 总结 ------ #### UDP协议相关API介绍 ------ ![image.png](https://bbs-img.huaweicloud.com/data/forums/attachment/forum/20227/23/1658572703274541614.png) #### UDP客户端创建流程介绍 ------ **流程:** ​ 1.UDP客户端通过socket()创建套接字 ​ 2.sendto()发送数据请求,将数据发送到UDP服务端 ​ 3.服务端接收到数据后做数据应答,也就是服务端接收到数据后发送一些数据给客户端 ​ 4.客户端使用recvfrom函数接收数据 ​ 5.当不需要UDP客户端时使用close关闭客户端 ![image.png](https://bbs-img.huaweicloud.com/data/forums/attachment/forum/20227/23/1658572717575352319.png) #### 实现UDP客户端 ------ 打开"D3_ iot udp_client"工程的udp_ _client demo.c文件,可在代码中查看实现UDP客户端的代码。 **创建客户端之前需要连接热点。** ![image.png](https://bbs-img.huaweicloud.com/data/forums/attachment/forum/20227/23/1658572731315379335.png) #### 测试UDP客户端 ------ **1.****使用Socket tool创建UDP服务端用于测试.** ![image.png](https://bbs-img.huaweicloud.com/data/forums/attachment/forum/20227/23/1658572745219796706.png) **2.**上述**工具下载地址****:** https://pan.baidu.com/s/13YlqQVzEa5ygcQeTSGQ_JA提取码: 1234 **3.****打开窗口命令行****:**win R,输入cmd,输入ipconfig读取ip得到IP地址: ![image.png](https://bbs-img.huaweicloud.com/data/forums/attachment/forum/20227/23/1658572756589798384.png) ![image.png](https://bbs-img.huaweicloud.com/data/forums/attachment/forum/20227/23/1658572764549368337.png) 编译:![image.png](https://bbs-img.huaweicloud.com/data/forums/attachment/forum/20227/23/1658572793289808452.png) ![image.png](https://bbs-img.huaweicloud.com/data/forums/attachment/forum/20227/23/1658572806249231843.png) ## HarmonyOS网络应用开发- -TCP服务端(6.2) **本节主要介绍:** - TCP协议相关API - TCP服务端创建流程 - TCP通信流程 **本节主要介绍:** 1. TCP协议相关API 2. TCP服务端创建流程 3. TCP通信流程 ------ #### TCP协议相关API介绍 ------ ![image.png](https://bbs-img.huaweicloud.com/data/forums/attachment/forum/20227/23/1658572840347460238.png) #### TCP服务端创建流程介绍 ------ **流程:** ​ TCP服务端通过socket()创建套接字,再调用bind把ip和端口传递到套接字上,listen是用套接字创立的监听,然后accept的API一直阻塞,一旦连接,TCP客户端就可以发送数据使TCP服务端接收。如果服务端要发送数据调用send,由客户端接收,如果客户端关闭套接字,服务端随之关闭套接字。 ![image.png](https://bbs-img.huaweicloud.com/data/forums/attachment/forum/20227/23/1658572858581231399.png) #### 实现TCP服务端 ------ 打开"D4_ iot_tcp_ server" 工程的tcp_ server.demo.c文件,可以查看实现TCP服务的代码。 **创建服务端之前需要连接WIFI 。** 编译:仍使用python build.py BearPi-HM Nano 继续执行:同上 HiBurn 打开串口工具 等待连接wifi Socket软件调试 ## HarmonyOS网络应用开发- -TCP客户端(6.3) **本节主要介绍:** - TCP协议相关API - TCP客户端创建流程 - TCP通信流程 **本节主要介绍:** 1. TCP协议相关API 2. TCP客户端创建流程 3. TCP通信流程 ------ #### TCP协议相关API介绍 ------ ![image.png](https://bbs-img.huaweicloud.com/data/forums/attachment/forum/20227/23/1658572873614708613.png) #### TCP客户端创建流程介绍 ------ **流程:** ​ TCP客户端通过socket()创建套接字,再调用connect进行客户端与服务端的连接,一旦连接成功,TCP客户端就可以用send发送数据使TCP服务端接收。如果服务端要发送数据调用send,由客户端接收,如果客户端关闭套接字,服务端随之关闭套接字。 注意:TCP客户端创建流程图与TCP服务端创建流程图相同,方向不同。 ![image.png](https://bbs-img.huaweicloud.com/data/forums/attachment/forum/20227/23/1658572886133453201.png) #### 实现TCP客户端 ------ 打开"D3_ iot udp_ client" 工程的udp_ _client _demo.c文件,修改部分代码即可实现TCP客户端。 **创建客户端之前需要连接WIFI 。** **视频在编译前有部分报错,后面会纠正,实操时要注意。** 编译:仍使用python build.py BearPi-HM Nano 继续执行:同上 HiBurn 打开串口工具 等待连接wifi Socket软件调试 ## HarmonyOS网络应用开发- -UDP服务端(6.4) **本节主要介绍:** - UDP协议相关API - UDP服务端创建流程 - UDP通信流程 **:三目录** 1. UDP协议相关API介绍 2. UDP服务端创建流程介绍 3. 实现UDP客户端 4. 总结 ------ #### UDP协议相关API介绍 ------ ![image.png](https://bbs-img.huaweicloud.com/data/forums/attachment/forum/20227/23/1658572913642211941.png) #### UDP服务端创建流程介绍 ------ **流程:** 1. UDP服务端通过socket()创建套接字 2. 再调用bind把ip和端口传递到套接字上 3. 用recvfrom接收数据,sendto()传递数据 4. UDP服务端关闭,客户端随之关闭 ----------------------------------- ![image.png](https://bbs-img.huaweicloud.com/data/forums/attachment/forum/20227/23/1658572921807921737.png) #### 实现UDP服务端 ------ 打开"D4_ iot_ tcp server"工程的tcp_ server_ demo.c文件,修改部分代码即可实现UDP服务端。 **创建客户端之前需要连接WIFI 。** **视频在编译前有部分报错,后面会纠正,实操时要注意。** 编译:仍使用python build.py BearPi-HM Nano 继续执行:同上 HiBurn 打开串口工具 等待连接wifi Socket软件调试 ## HarmonyOS网络应用开发- -MQTT客户端(6.5) **本节主要介绍:** - 什么是Paho MQTT - Paho MQTT文件目录 - 如何使用Paho MQTT ​ **目录:** 1. MQTT介绍 2. Paho MQTT文件目录介绍 3. 如何使用Paho MQTT 4. 实现MQTT客户端 5. 总结 ------ ![image.png](https://bbs-img.huaweicloud.com/data/forums/attachment/forum/20227/23/1658572951565358380.png) ![image.png](https://bbs-img.huaweicloud.com/data/forums/attachment/forum/20227/23/1658572958217271080.png) ![image.png](https://bbs-img.huaweicloud.com/data/forums/attachment/forum/20227/23/1658572966628482293.png) ![image.png](https://bbs-img.huaweicloud.com/data/forums/attachment/forum/20227/23/1658572979378817657.png) ![image.png](https://bbs-img.huaweicloud.com/data/forums/attachment/forum/20227/23/1658572996313166187.png) MQTT消息代理软件mosquitto下载地址: https://mosquitto.org/download/
  • [问题求助] 【小熊派】nb卡失效,想用mqtt协议上云
    【功能模块】小熊派的nb卡损坏了,开源社区里的实验手册都是利用nb-iot上云,学习了mqtt的智能农业实例后,想利用mqtt协议做智能烟感的实例【操作步骤&问题现象】个人能力有限,想知道如何修改mqtt示例中的哪些文件可以实现移植烟感模块用mqtt上云的功能【截图信息】【日志信息】(可选,上传日志内容或者附件)
  • [问题求助] 小程序表单无法选择和编辑表单协议
    在云速建站的微信小程序版,在制作表单最后的提交按钮时,无法选择和编辑表单协议?难道和后台管理的留言表单协议不相通?
  • [交流吐槽] Thread更新无线协议以支持 Matter智能家居标准
    Thread改进了其无线网络协议,以便为 Matter 智能家居连接标准做好准备。据说,Thread 1.3.0 可以简化物联网设备制造商的研发和部署投资,并为用户提供无缝体验。Thread是一个行业联盟,旨在实现物联网融合,并解决网络层的安全、能源足迹和架构问题。其无线网络协议的Thread 1.3.0迭代现在支持Matter。基于之前的迭代,Thread 1.3.0向后兼容,通过消除设备制造商和最终用户的障碍,为家庭和商业建筑中广泛采用物联网开辟了可能性。房主和建筑规划师期望从他们的智能环境中获得无缝体验。这种体验依赖于易于使用、可互操作且安全的设备,这些设备能够可靠地兑现其承诺。过去,智能设备制造商很难做到这一点,因为在将产品推向市场时常常受到互操作性问题的阻碍。Thread 的无线网络协议与 Matter 一起,这为制造商提供无缝连接家庭和商业建筑环境中的设备奠定了基础。通过支持Matter设备,将IP路由和服务发现的全部功能带到Thread 网络,从而使Matter在Thread网络上无缝运行。这使制造商可以专注于创新,而不是连接性,直接使最终用户受益。Thread 是一种可靠、安全且低功耗的网络协议,可提供快速的响应时间、扩展的覆盖范围和多年的电池续航时间,以提升连接体验。作为一种基于IP的开放标准,Thread允许照明、恒温器、门锁、传感器和智能扬声器等家庭自动化设备安全、可靠、简单地集成到智能家居或建筑中,并直接连接到云端。作为基于IP的网络传输层协议,Thread可以与任何基于IP的应用层一起工作。除了支持Matter外,Thread 1.3.0还将支持KNX IoT、Dali+、OCF和Bacnet等其他应用层。使用 Thread 1.3.0,强调并专注于 Matter,用户现在将体验到:●跨 Matter 设备的无缝响应:Thread 1.3.0 使 Matter 设备能够加入用户的基于 IP 的网络,同时支持低功耗、远程用例。Matter 终端设备可以使用任何经过认证的Thread路由器,并与所有智能设备一起工作,使其更容易添加到网络中。●无缝集成到现有网络基础设施中:Thread 路由器使 Thread 设备很容易被发现并与 Thread 网络之外的设备进行通信,因为它们看起来就像网络上的任何其他 wifi 设备。它们可以通过 IP 访问,并可以使用MDN发现服务。与 wifi 接入点一样,Thread 路由器是独特的,因为它们可以内置到任何公司的现有设备中,从而减少对额外专用硬件的需求。●简化的现场固件更新:可以在 Thread 设备上快速自动更新固件,而不会影响控件的响应性或事件传递的及时性。升级已安装的设备可能很麻烦;Thread 1.3 允许同时对所有 Thread 设备进行固件更新,而不会牺牲网络性能。Thread 总裁Vividh Siddha表示:“Thread 一直在寻找通过基于IP、低功耗、低延迟、可靠且安全的网状网络技术来利用物联网力量的方法。借助Thread 1.3.0,用户可以更轻松地连接、配置和使用他们的Matter设备,因为它们可以与任何经过认证的Thread border路由器配合使用,并与其他智能设备一起工作。这确保用户可以轻松地从其Thread产品中体验到更强大、更快和更可靠的网络。”Thread 1.3.0 网络协议规范和认证计划现在可供 Thread 成员使用。 即将支持其他合作伙伴生态系统,例如 KNX、Dali 和 OCF。成立于 2013 年的非盈利组织 Thread 致力于使 Thread 成为家庭和商业建筑中物联网的基础。Thread 建立在开放标准之上,是一种低功耗无线网络协议,可在物联网设备、移动设备和互联网之间实现直接、端到端、安全和可扩展的连接。而且,因为Thread是基于IP的,所以它可以与许多环境、应用、设备和云无缝集成。Thread 提供一个认证计划以确保设备互操作性和良好的用户体验。Thread 得到了亚马逊、苹果、谷歌 Nest、路创、北欧半导体、NXP半导体、欧司朗、高通、西门子、Silicon Labs、三星 SmartThings、Somfy和耶鲁安全等公司的支持。原文链接:https://www.iothome.com/archives/7494
  • [热门活动] 大型商超连锁企业5大核心业务、20+文件电子签场景
    在大型商超连锁企业“商品采购、质检、运输、仓储、销售等”各环节中,都离不开签字、盖章的推动。签署场景覆盖采购、加盟、人事、货运、财务等20+业务文件,不仅文件种类多,签署量也大。借力电子签章实现网上签署、线上归档,将成商超降本提效新动力。场景看点大型商超连锁企业要签文件有哪些?供货合同 发包合同 折让单采购合同 招商合同 退货单供应商协议 加盟合同 费用单加盟证明 品牌授权书 对账单加盟申请表 品牌入驻协议 结算单加盟意向书 劳动合同 货运单收/验货单 出/入库单 +需求分析大型商超连锁企业“签字、盖章”到底有多难?• 一些超大型商超连锁企业,全国门店多达上千家,门店印章每天都签了哪些文件、谁使用了印章、印章管理制度是否落实,很难监管到位。• 供应链、招商、发包业务体系庞大,各类货物采购、商家入驻、场地设备租赁业务合同签署需求大,纸质合同签署周期长、成本高、安全隐患大。• 长期经营下来,积存了大量合同、单据需要存管,人工归档工作量大,长期存储成本高。• 虽然部署了SRM、ERP、OA、加盟管理系统等多套管理软件,但是签字盖章一直留在线下,签署成本始终无法释放,业务线上、线下脱节。契约锁电子签章“两步”助力商超连锁企业化解签署难题第一步建立商超连锁集团印章管控平台解决印章管控和使用难题帮助商超连锁企业建立统一的数字化“印章管控平台”,让商超集团总部、全国连锁门店的印章通过一个平台实现统一管理、审批调用。帮助商超连锁集团落实内部印章管理制度,在线监管和使用每一枚印章,解决门店多、印章多带来的签署效率和风险难题。第二步拓展商超现有管理软件电子签署功能解决具体业务的电子签难题与商超现有“SRM、仓储管理、财务管理、OA等”各类管理软件无缝集成,将契约锁数字身份、电子签章、电子模板、数据存证等功能,嵌入到商超业务运营过程中。让商超员工在不改变现有办公习惯的基础上,通过现有管理软件就能调用契约锁电子签章页面,在线签署“采购合同、加盟合同、招商合作合同、货运单、财务单据等”文件,降低商超运营成本,提升管理效率。场景展示5大核心业务、20+电子签场景01“商品采购、供货业务文件”电子签文件类型:供货合同、采购合同、折让单、退货单、费用单、收货单、供应商协议等。线下签署:手动制作并寄给各地供应商商品多、合同种类多,草拟慢供应商身份难核验、风险高快递邮寄传输,5-8天签完....电子签署:批量签署,告别机械化操作电子模板套用,生成合同快供应商身份权威认证,防冒签一条流程、最快2分钟签署....契约锁电子签署方案契约锁电子签章系统可以和OA以及SRM供应商管理系统集成,为商超采购签约提供标准合同模板。采购中的所有签字、盖章环节,都可以在管理软件流程中直接调用电子签章线上签署。各地供应商通过手机短信链接查收签署通知,在线统一认证身份、在线添加电子签名及印章,上百份合同文件、30分钟内就能完成签约。例如:1)与全国供应商远程签署采购合同、合作协议线上批量发起采购合同、协议签署流程,供应商短信查收签署通知,手机端即可完成签署。2)SRM系统一键通知供应商认证身份在业务系统供应商信息库,批量短信通知供应商上传材料完成身份认证。3)与供应商在线签署费用单、折让单、退货单等单据在采购、退货以及折让、结算过程中,各类单据都需要进行盖章、开票,签署量大,发票签发效率关系到供应商送货、退货效率。契约锁通过集成超市管理系统或者SRM,可以在业务系统一键发起折让、退货以及费用单签署申请,双方根据签署需求通过业务流程、短信链接调用契约锁电子签页面,在线签署单据,推动财务开票,提升送货、退货效率。02“招商、加盟业务”电子签文件类型:招商合同、加盟合同、品牌入驻合同、加盟商证明、加盟申请表、加盟意向书、品牌授权书等。线下签署 :加盟商/品牌商分布广-数量多签署量大、签署成本高纸质合同签署周期长影响招商、门店拓展效率....电子签署:支持合同批量发起和盖章无需纸质合同,手机即可操作最快几分钟内就能完成签署签署进度可查,支持在线催签....契约锁电子签署方案契约锁帮助集成商超加盟、招商业务系统,打造“招商信息发布-招商合同签署-合同信息储存”业务闭环,推动实现全程电子化招商管理。商户在线提交入驻申请,企业审核达标后自动触发“电子招商合同”签署流程,几分钟就能完成对接,释放人工管理压力。03“商超发包业务”电子签签署需求:类似于招投标业务,在门店、店铺装修、物流委托、采购过程中,通过发包确定服务商,期间必须与承包方签署“发包合同”。线下签署:业务、合同类型多,起草麻烦依靠快递传输,签署成本高往返慢、周期长,影响业务进度....电子签署:电子模板快速生成格式合同一条流程、几分钟内远程签署零快递-零纸张-零打印,简化成本....契约锁电子签署方案契约锁支持集成微信小程序,帮助零售企业打造面向全国承包商的网上签约平台。商超内部业务系统便捷发起发包合同,承包方短信查收签署消息,微信端移动签署合同,商超内部自动盖章、归档,加快服务进度。04“场地及设备租赁业务”电子签签署需求:大型百货商场内的各类店面、设备常常对外提供租赁服务,各类安装、维修、保养等事项,需要提前签订“租赁合同”明确租赁条款和服务协议。线下签署:每年耗费大量纸张用于签署合同人工监管,续签不及时要耗费大量精力协商签约时间....电子签署:在线草拟、制作电子合同文件合同到期自动提醒,在线续签不见面,实名认证、短信签约....契约锁电子签署方案契约锁支持集成OA以及ERP软件,为商超租赁合同的签署提供“电子模板、数字身份、电子签章”支持,实现“电子租赁合同制作、填报、盖章、签约、归档”一体化。商超组织通过OA系统实现租赁合同审批、批量盖章,提升内部签署效率。外部承租商户通过手机短信链接认证身份、快速在线签字盖章,全程自动流转、归档,无需人工干预。05“商超仓储及物流业务”电子签文件类型:货运单、收货单、验货单、入库单、出库单等。线下签署:司机全程携带货运单,容易丢等着验货入库找不到人签字单据易损坏、丢失签字环节容易出现代签....电子签署:生成电子单据,线上签署手机短信通知网上签名电子单据长期保存自动核验签署人真实身份....契约锁电子签署方案契约锁帮助集成ERP管理软件,为商超物流单据、仓储单据提供标准化电子模板,在线套用模板生成电子单据,在流程驱动下,短信通知各环节签署人在线电子签名。无需随身携带纸质单据、无需四处找人签字,真实可信,高效推动财务结算和商品出入库。总结在数字化时代,提高企业内部服务响应效率才能快速响应客户需求,提升企业竞争力。合法、便捷、有效的电子签章应用将为越来越多零售企业的数字化转型注入全新动力,推动业务无纸化,进一步简化商超连锁企业运营、服务成本。
  • [技术干货] 第八讲:鲲鹏DevKit 性能分析
    课程链接:https://www.hikunpeng.com/zh/developer/live/detail/1541238613160189954 《sudoku》项目大作业解析在做这个大作业之前,我们需要做一些准备的工作。第一点就是准备好本地的环境和远程的服务器。本地环境可以选取大家比较熟悉的 Windows 环境,也可以,如果大家使用的 Mac 电脑的话,也可以使用 Mac 本。然后远程服务器这边推介大家去到我们的海空恒这边来开发者下面去申请远程服务器。那里面大家只需要填好自己的邮箱,然后就选好操作系统,然后就可以邀请到我们的一个免费的通服务器。第二点就是准备好本地的一个 IDE 环境,这里我们用的是 VSCode 然后在 vs code 上我们去装一些插件,一个是 C 和 C 加加的一个插件。第二个是我们的控力调试插件准备工作。第三点就是说我们对远程服务器上要去安装我们的 CMake 然后它的一个版本是要求到 3.12 及以上。第四点就是我们今天的所讲的一个项目,就是从 github 上面去下载的这一个 C 加加的一个速度游戏的源码。好,接下来我通过本地实操给大家演示一下这些准备工作的实操。那么我们先退出我们的 PPT 然后第一步就是我们去申请我们的远程服务器,然后来到坤的网站海坤文网站大家进来之后往下翻后到这个远程实验室这边,然后去点击立即申请。这里面会让大家去填入自己的邮箱,然后去学,操作系统推荐大家去用欧朋欧拉,然后申请的额度可以学的时长一点,然后这个时间如果不够用的话,后续也可以做一个续时使用。这里面不要忘记勾上。我已经同意隐私声明,在这之后大家都把 B 选项填完之后,点击提交申请,就会跳转到这个用来到申请成功的一个界面。这个是我以前申请一点时间,然后我就可以看到。然后同时在大家自己刚刚填的邮箱里会收到一封邮件,这个就是我们第一步远程实验室申请的步骤。那么第二个我们去准备我们的 IDE 的环境,这里面是在我的本地去打开 vs code 上需要我们安装两款插件,第一个是 C 和 C 加加,第二个是控 B 调试,我们进入到 S code ID 这边的插件市场里去点去搜索控棚,点这里面就会搜索出我们共同推出的全部的插件,然后我们这里面去选择空鹏空拍了,然后去自己安装。然后大家发现就是我们在 ID 的左侧这边有一个编译调试插件的图标,或者安装提示已经消失的时候,说明我们并已调试插件已经装好了。然后还有一个是我们去装 C 和 C 加加的茶叶,因为这个我已经提前装了,所以说这块就不去做一个演示了。一个是我们在 ID 上去做的一些准备工作。到此我们就 ID 这边也准备好了,然后回到第三点就是我们去远程服务器安装 CMake 3.12 以上的版本。就是大家在申请远程服务器成功的时候,他会给发的邮件里面有我们的区域连接远程服务器需要连接的 VPN 然后才可以去登录上去。这里有一天的话,我这边也下载下来了,通过研究一天。后,我进入到。如果大家第一次去连的话,这边一定去选择新建连接。新建连接的时候大家注意,就是这个端口级别在收到的邮件里面基本上是10,001,一定要注意这一点,一定是远程的网关都是这边收到的是大家看那个 VPN 网关幺二三点六零点幺幺四六零,然后端口是10,001,考虑建平城就叫 remote 远程实验室的一个VPN 。这个好了,业绩,那我们去点击连接。好,这边取叠取消用户名也在我们的邮件里面 BC 压线80,然后再是零八七七密码的话是。里面推荐大家去做一个记录密码和自动登录的过程,这样的话就不需要我们一次去做输入密码这么一个动作了。另外我可以继续忽略它。好,这边在右下角会提示让他去连接成功这么一个提示,这样的话我们就可以去登录到与城市服务器上。那么登录的工具推荐大家去都可以,其实叉 shell 也可以。然后我们去用 MOBA 也可以,这里面我们就用 MOBA 去登录就好了。建立一个 SSH 连接。这里面大家去输入的这个 SSH 连接,就去选用我们的搜到邮件给的那个弹性器 IP 我这里面这个弹性服务器 AB 是由其二。后给的用户下发的是root。 port 一直是2,这个没有发生变化点。好我们等了一段时间看网速,然后如果快的话就立马会让我们去输这个刚刚我输入的弹性 IP 的一个密码,我们再输入 SSH 的密码。好,输入成功后敲入回车这里面我们就登录上来了,去把这些名字信息清理掉。这里面我们现在已经登录我们的远程服务器,我们去看一下 CMake 有没有大家去用 CMake 杠杠 version 这个名。大家可以看到提示就是说 command not found 就是说我们在新申请的一套服务器,其实它没有去装 MIC 那么我们去安装 yum install 这个去安装我们的 CMake 那里面去输入yes。是 3.12 的,所以说这个版本是啊适合我们的,到这一步为止,其实我们服务器器上需要做的准备工作也做好了。嗯还有一步,最后一步就是我们去从 github 网址上面去把我们的这个源码下载下来,去直接访问这个地址。这个我就不用重新再输一遍了。就这个地址我们可以去使用 it 克隆也好,然后我们也可以直接从这没有我们不去推代码,然后直接去用这个下载下来就可以了。方便性的拷贝到一个。然后解压之后用 ID 把它打开。好的支持,我们的所有的准备工作均已完成。我们用 ID 然后把刚刚我们下的从 github 上面下的这个源码把它打开,我简单的浏览一下或者是去阅读看一下这个代码它是怎么去写的,然后以及它的代码结构是怎么样的。这里面就是一般一个好的 get up 像我们正常来说去来之后我们会去读一下他的 read me 这个是对比较好的一个习惯,我们去从这里面去了解我们这个工程。首先它是个什么功能,或者说的功能是什么这个我们比较清楚,就是在我们一开始上课的时候就说了他是一个用 C 加语言写的一个跨平台的数独游戏,就是大家应该都去玩过一个数独,小时候比如说小学初中有可能都知道或者没玩过,也听过行列总共是 9 乘 9 的一个方格。然后每行每列都是从 1 到 99 数字,然后还有一个九宫格,还有 9 个九宫格这一格,然后有个九宫格也是 1 到 9 就这么简单的一个小游戏,这里面还依赖了解了它的依赖,就比如说我们的 CMake 要求 3.12 的 CMake 版本,这个也就是我们在准备环境之前需要装的 CMake 版本。接下来就是如何去构建我们这个工程,告诉你如何去构建。这里他做的比较好一点,就是说他把我们的构建命令就是编译命令整体上去写到了一个脚本里面,而不是说去到时候让我们构建数据大篇命令,这个也是比较好的一点做的。 Windows 下面它我们用的是 bat 文件。这种 mark Linux 下面用的是一个 builder sx 文件。当然我们去执行这种在 Windows 在 Linux 和 Mac Mac 下面去执行这种。在此文件一定去给他一个可执行捷径,这个 change mode 就是去给它去加了一个图片。最后就是我们构建成功之后,然后变成一个二进制,把我们的源码打包成一个二进制。然后我们怎么去做运行是吧?去运行里面也给了两种运行的方式,一个就是直接启动。第二个就是去读游戏进度文件去启动。再往下就是我们去如何去玩这个游戏了就是 wasd 的一些操作,30左右男孩尝试通过自己退出。最后一点比较重要,就是这个项目的一个结构,就是文件是怎么去布置的,工程是怎么样的。这里面也给这几个也是以脚本构建。这个是 symic list symake list 大家应该,比较清楚。在我们 Linux 和 UNIX 环境下开发 C 或 C 加程序,我们经常去写的一个编译的一个文件行。最后一个是源代码的一个目录,这里面它分了几块,就是一个是几个类。我这里面先不带大家去细看了,大家了解一下大概看一下,一个是头文件,一个是实现,然后整体上有块命令这些还有一个 driver 就是或者是叫入口的一个文件。 MI MI 文件以后是比较好的一个工程或者项目的话都会开发者一定会写 UT 去写一些测试用例的测试文件,这里面也都在这里了。后面说一嘴就是个人感觉这一个可能弹幕比较小无所谓,就是我们原文件下面正常来说头文件会放到一个 include 文件里的功能文件,当然你的头文件如果比较多的话,也会再问文件夹功能环节放到一个文件夹里,再细分。我的测试 UT 也会单独形成一个文件去写我们的测试。这里面的作者可能是考虑到弹幕比较小,没有去做细分。不过就是我们正常去写代码,也好,后续去做我们的需求也好,推荐大家去划分一个比较好的一个。看完这个 read me 之后,也简单地跟大家聊聊我们去做工去如何划分我们的代码结构以及文件夹的划分。看一下我们对于 C 和 C 加加程序里比较重要的一个文件。这里面就会写我们配置要求还有如何去整个 project 它是如何项目结构是如何就是相互关联的,先编译哪一块,再后编译哪一块编译也是这个样子。那我们简单看一下,首先他会做我们 3.12 最低版本的,去要求我们的工作名叫什么,就是以后再去添加一些我们编译使用的选项。那这些东西写上去演绎,最后去做一些的编译出来的二进制的名字叫什么?大家可以看到我们刚刚的是执行的远程编译的那个脚本里面,它有创建一个 build 文件夹对吧,记不记得这块,然后有个野生文件夹,然后逛街之后执行的编译。最后的编译成功的东西,它在病里面,所以我们直接切到病里面,我是不是有速度这个东西。好,接下来我们去先看一下他这个速度,一个项目大家拿到手。比如说编辑成功之后,我们肯定是就去就是简单地运行一下,看看它到底是个什么东西对吧,然后怎么去操作。刚刚我们也看到 admin 了,所以这块我们先看。切到我们的病,然后再运行有点高,可以看到现在进到了代码实际运行,代码实际运行。我们学个简单一点的。这边就是我们生成的速度网格或者速度棋盘,可以看到简单的话确实少一些网格。然后就可以无聊的时候大家可以去玩一玩这个东西。按其他的东西了,然后我们用 wasd 去移动这些网格,是这个每一行每一列,然后九宫格一刀九都可以去填帮我们移动光标。看一下这一行填 1 到 9 我们缺1。首先因为大家看我这个光标刚刚给大家看了一下,有成编译之后生成二进制,我们在远端这边运行了一下那个二进制,现在我们回到 ID 这边,然后去做一个远程调试的演示。这里面主要是去看一下我们一个测试代码的一个演唱调试。那么我需要在代码从这个 test 改为1,让他这个我这样子的话我就需要添加我们的测试用例。好这个测试用例,这样我们刚刚重新保存了代码之后,我们需要重新执行编译。那么我先只存编译,然后并把代码上传。在这里其实被一条插件,它提供了一个叫自动上传的和手动上传的功能,我们可以在这里面去配置把自动上传的功能给它配置好,修改配置目标服务器,它选到 R 这样的话也保存配置,这样的话它会监测到比如说我这个 main CPP 1,比如说我这边代码一改,它就会自动往代码服务器上。不比如说我这边还在改回1,原来可以看到代码就自动已经同步到一层补气了。这样我们再去编译的时候,比如我们刚刚在去执行我们这个速度 build 的时候,它就我们就不需要去这个之后我们不需要叫同步并编译了,这样的话它就已经同步好了,仅编译就好,这是我们的。编译的重新代码同步之后编译的一个结果。然后我们在这个目录下是有。在这里吗?我们去看一下帮我的编译测试用例任务。你好,就叫。然后程序的路径我们也查一下,也输入pwd。与粘贴,那我们就把它添加好。这边已经添加成功了。添加成功之后,我们刚刚看一下我们的刚刚改的这个代码是干什么的。就是如果我这个 test 变为 1 了,那么我们正常的它就会走 24 和 25 行这样分支。那我们 24 就是其实生成一个棋盘的测试函数,这里面大家可以看到就是棋盘生成的一个函数。我们到测试用例。这边首先获取一下我们的测试用例。我等了一会,发现那个自身用力出不来了,为什么出不来呢?我们回来看一下这块代码,发现这边其实在我们生成起盘之后,这边其实程序一直在等我们键盘的一个输入,但是因为我们这边的通道是没法去模拟,那边就是 Linux 那边端去接盘输入的,所以说这块测试用例就出不来了。那么我们是详如果是只测试我们的这个棋盘的一个生成情况,其实我们来做一件事情,就是把我们的就是这样重新去上传我们的代码 S 之后,我们刚刚配置了自动同步,它也同步过去了。同步完成之后,我们需要回到每条插件之前,重新执行我们的运营任务。因为编译成功了,然后我们再重新把我们的。盈利加回来。好添加成功,这次我们再一次去获取。来看,现在的话就测试用例可以获取了,然后我们运行在远端进行一个运行,好这边就是运行的一个结果。那么我们如果说想要去做一个测试代码的调试,那我们需要在我们的每行然后试一下。因为其实正常来说测试代码跟业务代码不放到一块,还是用几 Google test 一个比较好的一个测试框架去写我们的 UG 的,但是这个 demo 它写得比较简单,所以说我们还正常利用这个去做调试。好,这边进来了,直接进到这个 test case 1,我们步入进到这里面去看一下,可以看到这里面都会又回到我们正常的一个调试环节而生成这一面,我们也可以步入进去去看一下。好,然后我们直接让她走完。这样大家可以看到其实在我们的控制台这边调试过程中的输出,就是我们这个期盼是一个完整的棋盘。我这里面大家也可以看到,其实我们调试控制台它也是用 gdv 进行一个调试的,只不过就是中间步骤它这边也会做一个展示。那么刚刚我们去做了一个简单的就测试用例的调试,那么下面我们再去做最开始的业务代码的一个调试,我们还是回到这里,我们把 S 接着别为0。然后这里面大家注意看一下这个代码就是这里面也是去输入 if code 然后去生成可以看一下这里面它其实也是在输入 DEV code 它也有一个就是读取键盘的一个操作这个。然后这里面它会有一个依据,我们如果是 easy 它就会挖取 20 个空格,困难的话挖取 50 个空格这样的一个例子。那么如果我们方便调试的话,这个代码它写成这样,我们这里面就不要去用输入直接这行代码。就直接用它定义为20,然后去做这种调试。那么 play 它其实也是一个show。然后监测我们的输入。所以说这个 play 我们也先不需要去做这样的调试,我们回到那主函数,然后把这个杯这样的话我们刚刚修改了代码,使用 control S 进行保存。我们把。我把代码拷出来,拷不到。然后我们去打一个断点。这里好代码,我们通过到服务器重新去编译,也去做编译。重新去做调试,调试动作。这样的话他就会进到我们的。业务代码里面,业务代码里面我们去做一个调试,进入步入,因为你这个步入其实在这里面会进到我们的CS。 Csthink. 之后我们走 next 这里面就是一个棋盘完全生成的过程,我们可以进来。进来之后它大家会看到这个随机的一个映射,再往后这个我也不去做也是了,大家去做一个自己的调试,然后我们再回到多少数。当然这里面是一些堆栈信息,我们的变量取值说对战,然后端底回到最外面这一层最外面这一层这个端底,然后执行到一插手这块进去。一期的做完。这样的话,一个调试过程正常,那个正常来说他就走完了。所以说调试过程有可能大家会遇到各种各样的问题,没有一个统一比较好的一个。那种定论去我们去做操作。然后最开始肯定是要找到我们的函数的入口,入口处,可以学得一半一半的去调试。二分法类似的那种方式去调,比方到中间,看看你的数据组是不是符合你预期的。整体上我们毕业调试插件的功能有远程编译和远程调试。大概就这么多,然后这一个速度的小例子。然后对调试来说并不是特别的去那么友好。然后我们今天因为我们现在拿到的这个 github 代码,它是最后的一个成型过,成型后的一个代码,真实的去写代码的场景,肯定是在这种一参数类型下把代码去调好也好,用特殊用例调好,在 3 的这种类型也去调好。然后。把这两种场景全部调好之后,再去把条件拆解来去。这样的话你的两个只调好调黑。关于编译调试原生的编译和调试功能。我跟大家就简单的先说到这里,下去有兴趣可以去把我们的比如说幂函数,我们的数独的一些小操作,比如说 wsd 不符合你的那个就是按键的习惯,我们可以改成那个上下左右这种箭头。那么怎么去改呢?当然去干嘛去搜索它哪个地方。通过 W 这里面大家可以去使用是 S code 这里面一个再搜索。这样的话我们就可以看到 read meins.app 里面。我们通过这节课从一开始的环境准备,然后到环境准备的一些实操,然后再到一些从 github 上面把源码下来。如何去对一个 github 上面的一个工程进行一个文件顺序的读取,去了解这个工程结构。还有说去对一个比较好的一个工程结构代码结构的划分。我们的正常来说是用 include 去装我们的头文件,然后 hrc 去放我们的其他文件。还有一些 test 正常来说我们有专门的文件夹去放我们的测试用例 UT 以及我们正常去写一个比较好的工程。
  • [技术干货] 第七讲: 《 sudoku》项目大作业解析
    课程链接:https://www.hikunpeng.com/zh/developer/live/detail/1541238613160189954 在做这个大作业之前,我们需要做一些准备的工作。第一点就是准备好本地的环境和远程的服务器。本地环境可以选取大家比较熟悉的 Windows 环境,也可以,如果大家使用的 Mac 电脑的话,也可以使用 Mac 本。然后远程服务器这边推介大家去到我们的海空恒这边来开发者下面去申请远程服务器。那里面大家只需要填好自己的邮箱,然后就选好操作系统,然后就可以邀请到我们的一个免费的通服务器。第二点就是准备好本地的一个 IDE 环境,这里我们用的是 VSCode 然后在 vs code 上我们去装一些插件,一个是 C 和 C 加加的一个插件。第二个是我们的控力调试插件准备工作。第三点就是说我们对远程服务器上要去安装我们的 CMake 然后它的一个版本是要求到 3.12 及以上。第四点就是我们今天的所讲的一个项目,就是从 github 上面去下载的这一个 C 加加的一个速度游戏的源码。好,接下来我通过本地实操给大家演示一下这些准备工作的实操。那么我们先退出我们的 PPT 然后第一步就是我们去申请我们的远程服务器,然后来到坤的网站海坤文网站大家进来之后往下翻后到这个远程实验室这边,然后去点击立即申请。这里面会让大家去填入自己的邮箱,然后去学,操作系统推荐大家去用欧朋欧拉,然后申请的额度可以学的时长一点,然后这个时间如果不够用的话,后续也可以做一个续时使用。这里面不要忘记勾上。我已经同意隐私声明,在这之后大家都把 B 选项填完之后,点击提交申请,就会跳转到这个用来到申请成功的一个界面。这个是我以前申请一点时间,然后我就可以看到。然后同时在大家自己刚刚填的邮箱里会收到一封邮件,这个就是我们第一步远程实验室申请的步骤。那么第二个我们去准备我们的 IDE 的环境,这里面是在我的本地去打开 vs code 上需要我们安装两款插件,第一个是 C 和 C 加加,第二个是控 B 调试,我们进入到 S code ID 这边的插件市场里去点去搜索控棚,点这里面就会搜索出我们共同推出的全部的插件,然后我们这里面去选择空鹏空拍了,然后去自己安装。然后大家发现就是我们在 ID 的左侧这边有一个编译调试插件的图标,或者安装提示已经消失的时候,说明我们并已调试插件已经装好了。然后还有一个是我们去装 C 和 C 加加的茶叶,因为这个我已经提前装了,所以说这块就不去做一个演示了。一个是我们在 ID 上去做的一些准备工作。到此我们就 ID 这边也准备好了,然后回到第三点就是我们去远程服务器安装 CMake 3.12 以上的版本。就是大家在申请远程服务器成功的时候,他会给发的邮件里面有我们的区域连接远程服务器需要连接的 VPN 然后才可以去登录上去。这里有一天的话,我这边也下载下来了,通过研究一天。后,我进入到。如果大家第一次去连的话,这边一定去选择新建连接。新建连接的时候大家注意,就是这个端口级别在收到的邮件里面基本上是10,001,一定要注意这一点,一定是远程的网关都是这边收到的是大家看那个 VPN 网关幺二三点六零点幺幺四六零,然后端口是10,001,考虑建平城就叫 remote 远程实验室的一个VPN 。这个好了,业绩,那我们去点击连接。好,这边取叠取消用户名也在我们的邮件里面 BC 压线80,然后再是零八七七密码的话是。里面推荐大家去做一个记录密码和自动登录的过程,这样的话就不需要我们一次去做输入密码这么一个动作了。另外我可以继续忽略它。好,这边在右下角会提示让他去连接成功这么一个提示,这样的话我们就可以去登录到与城市服务器上。那么登录的工具推荐大家去都可以,其实叉 shell 也可以。然后我们去用 MOBA 也可以,这里面我们就用 MOBA 去登录就好了。建立一个 SSH 连接。这里面大家去输入的这个 SSH 连接,就去选用我们的搜到邮件给的那个弹性器 IP 我这里面这个弹性服务器 AB 是由其二。后给的用户下发的是root。 port 一直是2,这个没有发生变化点。好我们等了一段时间看网速,然后如果快的话就立马会让我们去输这个刚刚我输入的弹性 IP 的一个密码,我们再输入 SSH 的密码。好,输入成功后敲入回车这里面我们就登录上来了,去把这些名字信息清理掉。这里面我们现在已经登录我们的远程服务器,我们去看一下 CMake 有没有大家去用 CMake 杠杠 version 这个名。大家可以看到提示就是说 command not found 就是说我们在新申请的一套服务器,其实它没有去装 MIC 那么我们去安装 yum install 这个去安装我们的 CMake 那里面去输入yes。是 3.12 的,所以说这个版本是啊适合我们的,到这一步为止,其实我们服务器器上需要做的准备工作也做好了。嗯还有一步,最后一步就是我们去从 github 网址上面去把我们的这个源码下载下来,去直接访问这个地址。这个我就不用重新再输一遍了。就这个地址我们可以去使用 it 克隆也好,然后我们也可以直接从这没有我们不去推代码,然后直接去用这个下载下来就可以了。方便性的拷贝到一个。然后解压之后用 ID 把它打开。好的支持,我们的所有的准备工作均已完成。我们用 ID 然后把刚刚我们下的从 github 上面下的这个源码把它打开,我简单的浏览一下或者是去阅读看一下这个代码它是怎么去写的,然后以及它的代码结构是怎么样的。这里面就是一般一个好的 get up 像我们正常来说去来之后我们会去读一下他的 read me 这个是对比较好的一个习惯,我们去从这里面去了解我们这个工程。首先它是个什么功能,或者说的功能是什么这个我们比较清楚,就是在我们一开始上课的时候就说了他是一个用 C 加语言写的一个跨平台的数独游戏,就是大家应该都去玩过一个数独,小时候比如说小学初中有可能都知道或者没玩过,也听过行列总共是 9 乘 9 的一个方格。然后每行每列都是从 1 到 99 数字,然后还有一个九宫格,还有 9 个九宫格这一格,然后有个九宫格也是 1 到 9 就这么简单的一个小游戏,这里面还依赖了解了它的依赖,就比如说我们的 CMake 要求 3.12 的 CMake 版本,这个也就是我们在准备环境之前需要装的 CMake 版本。接下来就是如何去构建我们这个工程,告诉你如何去构建。这里他做的比较好一点,就是说他把我们的构建命令就是编译命令整体上去写到了一个脚本里面,而不是说去到时候让我们构建数据大篇命令,这个也是比较好的一点做的。 Windows 下面它我们用的是 bat 文件。这种 mark Linux 下面用的是一个 builder sx 文件。当然我们去执行这种在 Windows 在 Linux 和 Mac Mac 下面去执行这种。在此文件一定去给他一个可执行捷径,这个 change mode 就是去给它去加了一个图片。最后就是我们构建成功之后,然后变成一个二进制,把我们的源码打包成一个二进制。然后我们怎么去做运行是吧?去运行里面也给了两种运行的方式,一个就是直接启动。第二个就是去读游戏进度文件去启动。再往下就是我们去如何去玩这个游戏了就是 wasd 的一些操作,30左右男孩尝试通过自己退出。最后一点比较重要,就是这个项目的一个结构,就是文件是怎么去布置的,工程是怎么样的。这里面也给这几个也是以脚本构建。这个是 symic list symake list 大家应该,比较清楚。在我们 Linux 和 UNIX 环境下开发 C 或 C 加程序,我们经常去写的一个编译的一个文件行。最后一个是源代码的一个目录,这里面它分了几块,就是一个是几个类。我这里面先不带大家去细看了,大家了解一下大概看一下,一个是头文件,一个是实现,然后整体上有块命令这些还有一个 driver 就是或者是叫入口的一个文件。 MI MI 文件以后是比较好的一个工程或者项目的话都会开发者一定会写 UT 去写一些测试用例的测试文件,这里面也都在这里了。后面说一嘴就是个人感觉这一个可能弹幕比较小无所谓,就是我们原文件下面正常来说头文件会放到一个 include 文件里的功能文件,当然你的头文件如果比较多的话,也会再问文件夹功能环节放到一个文件夹里,再细分。我的测试 UT 也会单独形成一个文件去写我们的测试。这里面的作者可能是考虑到弹幕比较小,没有去做细分。不过就是我们正常去写代码,也好,后续去做我们的需求也好,推荐大家去划分一个比较好的一个。看完这个 read me 之后,也简单地跟大家聊聊我们去做工去如何划分我们的代码结构以及文件夹的划分。看一下我们对于 C 和 C 加加程序里比较重要的一个文件。这里面就会写我们配置要求还有如何去整个 project 它是如何项目结构是如何就是相互关联的,先编译哪一块,再后编译哪一块编译也是这个样子。那我们简单看一下,首先他会做我们 3.12 最低版本的,去要求我们的工作名叫什么,就是以后再去添加一些我们编译使用的选项。那这些东西写上去演绎,最后去做一些的编译出来的二进制的名字叫什么?大家可以看到我们刚刚的是执行的远程编译的那个脚本里面,它有创建一个 build 文件夹对吧,记不记得这块,然后有个野生文件夹,然后逛街之后执行的编译。最后的编译成功的东西,它在病里面,所以我们直接切到病里面,我是不是有速度这个东西。好,接下来我们去先看一下他这个速度,一个项目大家拿到手。比如说编辑成功之后,我们肯定是就去就是简单地运行一下,看看它到底是个什么东西对吧,然后怎么去操作。刚刚我们也看到 admin 了,所以这块我们先看。切到我们的病,然后再运行有点高,可以看到现在进到了代码实际运行,代码实际运行。我们学个简单一点的。这边就是我们生成的速度网格或者速度棋盘,可以看到简单的话确实少一些网格。然后就可以无聊的时候大家可以去玩一玩这个东西。按其他的东西了,然后我们用 wasd 去移动这些网格,是这个每一行每一列,然后九宫格一刀九都可以去填帮我们移动光标。看一下这一行填 1 到 9 我们缺1。首先因为大家看我这个光标刚刚给大家看了一下,有成编译之后生成二进制,我们在远端这边运行了一下那个二进制,现在我们回到 ID 这边,然后去做一个远程调试的演示。这里面主要是去看一下我们一个测试代码的一个演唱调试。那么我需要在代码从这个 test 改为1,让他这个我这样子的话我就需要添加我们的测试用例。好这个测试用例,这样我们刚刚重新保存了代码之后,我们需要重新执行编译。那么我先只存编译,然后并把代码上传。在这里其实被一条插件,它提供了一个叫自动上传的和手动上传的功能,我们可以在这里面去配置把自动上传的功能给它配置好,修改配置目标服务器,它选到 R 这样的话也保存配置,这样的话它会监测到比如说我这个 main CPP 1,比如说我这边代码一改,它就会自动往代码服务器上。不比如说我这边还在改回1,原来可以看到代码就自动已经同步到一层补气了。这样我们再去编译的时候,比如我们刚刚在去执行我们这个速度 build 的时候,它就我们就不需要去这个之后我们不需要叫同步并编译了,这样的话它就已经同步好了,仅编译就好,这是我们的。编译的重新代码同步之后编译的一个结果。然后我们在这个目录下是有。在这里吗?我们去看一下帮我的编译测试用例任务。你好,就叫。然后程序的路径我们也查一下,也输入pwd。与粘贴,那我们就把它添加好。这边已经添加成功了。添加成功之后,我们刚刚看一下我们的刚刚改的这个代码是干什么的。就是如果我这个 test 变为 1 了,那么我们正常的它就会走 24 和 25 行这样分支。那我们 24 就是其实生成一个棋盘的测试函数,这里面大家可以看到就是棋盘生成的一个函数。我们到测试用例。这边首先获取一下我们的测试用例。我等了一会,发现那个自身用力出不来了,为什么出不来呢?我们回来看一下这块代码,发现这边其实在我们生成起盘之后,这边其实程序一直在等我们键盘的一个输入,但是因为我们这边的通道是没法去模拟,那边就是 Linux 那边端去接盘输入的,所以说这块测试用例就出不来了。那么我们是详如果是只测试我们的这个棋盘的一个生成情况,其实我们来做一件事情,就是把我们的就是这样重新去上传我们的代码 S 之后,我们刚刚配置了自动同步,它也同步过去了。同步完成之后,我们需要回到每条插件之前,重新执行我们的运营任务。因为编译成功了,然后我们再重新把我们的。盈利加回来。好添加成功,这次我们再一次去获取。来看,现在的话就测试用例可以获取了,然后我们运行在远端进行一个运行,好这边就是运行的一个结果。那么我们如果说想要去做一个测试代码的调试,那我们需要在我们的每行然后试一下。因为其实正常来说测试代码跟业务代码不放到一块,还是用几 Google test 一个比较好的一个测试框架去写我们的 UG 的,但是这个 demo 它写得比较简单,所以说我们还正常利用这个去做调试。好,这边进来了,直接进到这个 test case 1,我们步入进到这里面去看一下,可以看到这里面都会又回到我们正常的一个调试环节而生成这一面,我们也可以步入进去去看一下。好,然后我们直接让她走完。这样大家可以看到其实在我们的控制台这边调试过程中的输出,就是我们这个期盼是一个完整的棋盘。我这里面大家也可以看到,其实我们调试控制台它也是用 gdv 进行一个调试的,只不过就是中间步骤它这边也会做一个展示。那么刚刚我们去做了一个简单的就测试用例的调试,那么下面我们再去做最开始的业务代码的一个调试,我们还是回到这里,我们把 S 接着别为0。然后这里面大家注意看一下这个代码就是这里面也是去输入 if code 然后去生成可以看一下这里面它其实也是在输入 DEV code 它也有一个就是读取键盘的一个操作这个。然后这里面它会有一个依据,我们如果是 easy 它就会挖取 20 个空格,困难的话挖取 50 个空格这样的一个例子。那么如果我们方便调试的话,这个代码它写成这样,我们这里面就不要去用输入直接这行代码。就直接用它定义为20,然后去做这种调试。那么 play 它其实也是一个show。然后监测我们的输入。所以说这个 play 我们也先不需要去做这样的调试,我们回到那主函数,然后把这个杯这样的话我们刚刚修改了代码,使用 control S 进行保存。我们把。我把代码拷出来,拷不到。然后我们去打一个断点。这里好代码,我们通过到服务器重新去编译,也去做编译。重新去做调试,调试动作。这样的话他就会进到我们的。业务代码里面,业务代码里面我们去做一个调试,进入步入,因为你这个步入其实在这里面会进到我们的CS。 Csthink. 之后我们走 next 这里面就是一个棋盘完全生成的过程,我们可以进来。进来之后它大家会看到这个随机的一个映射,再往后这个我也不去做也是了,大家去做一个自己的调试,然后我们再回到多少数。当然这里面是一些堆栈信息,我们的变量取值说对战,然后端底回到最外面这一层最外面这一层这个端底,然后执行到一插手这块进去。一期的做完。这样的话,一个调试过程正常,那个正常来说他就走完了。所以说调试过程有可能大家会遇到各种各样的问题,没有一个统一比较好的一个。那种定论去我们去做操作。然后最开始肯定是要找到我们的函数的入口,入口处,可以学得一半一半的去调试。二分法类似的那种方式去调,比方到中间,看看你的数据组是不是符合你预期的。整体上我们毕业调试插件的功能有远程编译和远程调试。大概就这么多,然后这一个速度的小例子。然后对调试来说并不是特别的去那么友好。然后我们今天因为我们现在拿到的这个 github 代码,它是最后的一个成型过,成型后的一个代码,真实的去写代码的场景,肯定是在这种一参数类型下把代码去调好也好,用特殊用例调好,在 3 的这种类型也去调好。然后。把这两种场景全部调好之后,再去把条件拆解来去。这样的话你的两个只调好调黑。关于编译调试原生的编译和调试功能。我跟大家就简单的先说到这里,下去有兴趣可以去把我们的比如说幂函数,我们的数独的一些小操作,比如说 wsd 不符合你的那个就是按键的习惯,我们可以改成那个上下左右这种箭头。那么怎么去改呢?当然去干嘛去搜索它哪个地方。通过 W 这里面大家可以去使用是 S code 这里面一个再搜索。这样的话我们就可以看到 read meins.app 里面。我们通过这节课从一开始的环境准备,然后到环境准备的一些实操,然后再到一些从 github 上面把源码下来。如何去对一个 github 上面的一个工程进行一个文件顺序的读取,去了解这个工程结构。还有说去对一个比较好的一个工程结构代码结构的划分。我们的正常来说是用 include 去装我们的头文件,然后 hrc 去放我们的其他文件。还有一些 test 正常来说我们有专门的文件夹去放我们的测试用例 UT 以及我们正常去写一个比较好的工程。
  • [交流吐槽] 鸿蒙设备
    一、物联网典型构架物联网层次划分的方法没有形成公论。除了物联网“云-管-端”架构外,还有一种典型4层架构划分的方法,华为在“云-管-端”基础上提出了“应用、平台、网络、感知”4层架构。二、物联网常见通讯协议一类是接入协议:一般负责子网内设备间的组网及通信一类是通讯协议:主要是运行在传统互联网TCP/IP协议之上的设备通讯协议,负责设备通过互联网进行数据交换及通信三、物联网设备接入方式物联网设备接入方式有六种:以太网、无线上网、低功耗广域网(LPWAN)、蜂窝电话、卫星、蓝牙有线通讯技术:短距无线通讯技术:蜂窝移动网络:LPWA通信技术:四、鸿蒙设备开发-环境搭建五、鸿蒙系统开发-内核基于鸿蒙开发的方式有两个方向:面向应用开发(应用层)和面向设备开发(内核 层、驱动子系统)。 六、鸿蒙设备开发-驱动子开发
  • [交流吐槽] 【14天鸿蒙设备开发实战】第一天
    物联网架构端——边——管——云——行业应用1.部分端可以直接通过管与云相连;2.再工业园区局域网部署,对本地要求较高,只能通过边来上传物联网常见通信协议1.CoAP 受限制的应用协议 小巧,最小数据包4字节2.MQTT 消息队列遥测传输协议 为硬件性能低下的远程设备以及网络状况差情况提供的发布/订阅“轻量级”通讯协议,提供一对多的消息分发和应用之间的解耦3.ModBus 工业通讯系统 包括硬件,软件 适用于数据采集和过程监控4.OPC-UA 跨平台面向服务,应用广泛连通机制交互机制:Client/server publisher/Subscriber话务机制物联网设备接入方式鸿蒙设备开发1. WIFI接入2. WIFI STA联网
  • [业界动态] 行业资讯|上海人工智能研究院与华为签署全面合作协议; 三维家产品已覆盖1.5万家工厂客户…
    行业资讯一览鹰熊汇联合华为组织Top卖家半年聚圆满成功7月8日,十几位跨境行业TOP大咖出席Top卖家半年聚,共同探讨“驶入2022下半场,跨境电商如何玩?”出席活动的嘉宾既有跨境电商行业开拓型领军企业的创始人和新生代多平台型优秀卖家企业、品牌型顶级产品卖家企业创始人,也有资深独立站领军企业创始人、当红独立站领军企业创始人、风靡北美潮牌品牌的创始人、玩转单品潮牌的年轻才俊,以及全情准备加入的顶级巨头公司高管,与华为相关领域的专家一起深入探讨交流行业未来在品牌、流量、合规、生态、产品、垂类上的机会点。(点击了解活动详情)智慧芽步入“SaaS+ 定制”双模式时代7 月 14 日消息:近日,智慧芽宣布公司旗下知识产权管理系统 InnoSnap(下称“智慧芽InnoSnap”)全新迭代,升级为“SaaS+定制”双模式,全面满足不同规模企业的知识产权管理系统需求。据了解,智慧芽 InnoSnap 使用低代码平台支撑灵活知识产权应用构建,支持管理系统七大核心引擎,结合知产法规库、企业内部管理模板库,实现了知产常规应用完全配置化方式,使用拖拉拽即可完成应用调整与扩展。(来源:牛透社)AI智能云平台Akool与TCC达成合作近日,AI智能云平台Akool宣布与智能解决方案提供商TCC正式达成合作,成立为期五年的独家合作伙伴关系。本次合作Akool将以沙特市场为基点辐射周边地区提供人工智能解决方案,包括生物识别身份、智能工厂、智能机场、AI医疗保健等与当地生活密切相关的板块。(来源:36氪)中国银河:云计算方兴未艾,数字经济底座服务器长期向好中国银河证券表示,公有云增速目前依然高企但边际趋缓,非公有云业务增速略升。2021年国内公有云市场规模达到2290.5亿元,同比增52.7%,非公有云市场规模接近1000亿元,同比增30.9%。预计未来三年国内公有云复合增速约45%;对应非公有云业复合增速约35%。IaaS+PaaS市场趋向分化,运营商崛起,重点关注政务云、金融云,厂商层面重点关注国资背景云服务商。(来源:一财)工业软件公司“三维家”:产品已覆盖1.5万家工厂客户家居云工业软件服务商“三维家”创始人兼CEO蔡志森近日披露,公司产品使用者已覆盖15000家家居工厂企业、260万设计师用户、150万家门店,与超过3600家企业达成软件的前后端一起化合作。根据此前2022中国家居工业软件市场研究报告预测,预计到2031年,国内家居工业软件整体市场规模将达到1007亿元。(来源:36氪)上海人工智能研究院与华为签署全面合作协议上海人工智能研究院与华为技术有限公司签署全面合作协议,共同构建昇腾AI产业生态,共同推动上海及全国领先的人工智能技术融合。双方将围绕为上海、长三角地区乃至全国提供人工智能算力资源及服务为目标,开展公共算力服务平台运营合作,推动人工智能算力网络生态建设。并围绕智能制造、智慧医疗、生物制药、智能网联汽车、机器人等垂直行业数字化转型共同开展应用场景挖掘、解决方案设计及落地实施,赋能行业创新发展。云思智学与华东师范大学共建教育数字化战略实验室7月12日,北京云思智学科技有限公司与华东师范大学共建教育数字化战略实验室签约暨揭牌仪式在上海举行。根据合作协议,华东师范大学与云思智学将共建教育数字化战略实验室,并在课题研究、技术创新应用研究、前沿学术活动、重大项目、人才培养等方面展开深入合作。(来源:36氪)微软 AI 识图微信小程序已暂停服务,曾支持拍图识字并复制粘贴据网友反馈,现在打开微软 AI 识图微信小程序时,已提示“微软 AI 识图小程序已暂停服务,开发者已于 2022 年 7 月 6 日暂停微软 Al 识图”。据了解,由微软中国开发的微软 AI 识图微信小程序是一款免费的识图转文字小工具,在识别文字方面成功率很高。目前尚不清楚暂停服务原因,以及何时会恢复服务。(来源:36氪)IDC:预测未来五年企业团队协同 SaaS 复合增长率为 36%7月11日消息:近日,市场研究机构IDC最新发布的《2021年中国企业团队协同软件市场跟踪报告》显示,2021年中国企业团队协同软件市场规模为3.8亿美元(约合25.5亿元人民币),同比增长39.1%。其中,SaaS模式的企业团队协同软件规模为1.5亿美元(约合10.1亿元人民币),同比增长 41.4%。中国企业团队协同SaaS市场格局较为分散,2021年排名前五的厂商市场份额总计占比42.1%。IDC预测,未来五年,企业团队协同SaaS市场的增速要远高于本地部署模式,企业团队协同SaaS软件的未来5年复合增长率预计为36.0%。预计在2025年,企业团队协同SaaS的市场份额将超过本地部署模式市场。(来源:牛透社)云商店一周动态慧科人才培养服务平台登顶云商店6月商品推荐榜!华为云云商店助力教育伙伴慧科,充分发挥差异化优势,为教育领域的管理部门、教育机构、学术机构等提供联合解决方案服务,以云+AI+5G技术的应用,不断促进智慧教育的发展创新,保障高质量新兴技术人才的持续培养输出。6月,慧科人才培养服务平台荣登云商店商品推荐榜,并荣获企业管理推荐榜第一、产品热销榜第二的好成绩,来看看榜单第一到底有多强:上云精品 | 云商店助力慧科 推动校企联合,共育人才发展面向小微企业的记账报税SaaS产品——快报税,使用指南来了!针对小规模纳税人的业务需求和服务需求,云商店携手云帐房推出快报税,助中小微企业实现AI 记账、自动报税和智能风控,共同进入税务服务智能化新时代。快报税操作简单,读完这篇操作指南,包你记税报税速成:0基础当“会计”:手机上完成企业记账报税的“神器”来了数字冰雹IOC可视化平台,助力苏州工业园区智慧城市框架体系搭建数字冰雹IOC可视化平台为苏州工业园区初步建成了“四区一城”的智慧城市框架体系,通过“云+5G+IoT+AI+中国芯”新基建试点,精心打造了集运行分析、事件处置、风险预警、安全防控、指挥决策于一体的新一代智慧城市运行管理中心。2021年,数字冰雹还荣获了华为云云商店应用创新奖、全球政府政务行业优秀合作伙伴奖、市智能体突出贡献奖、地区部优质交付专项奖、华为云云原生认证伙伴奖等众多奖项,赢得了华为伙伴及客户的广泛认可与好评!点击了解一下优秀的它吧:探秘“城市大脑”,如何让城市运转得“更聪明”?编辑 | 一只大月亮
  • [技术干货] 【论文分享】空间信息网络与激光通信发展现状及趋势
    空间信息网络与激光通信发展现状及趋势姜会林1,2,3, 付强1,2,3, 赵义武1,2,3, 刘显著1,2,31 长春理工大学空间光电技术国家地方联合工程研究中心,吉林 长春 1300222 长春理工大学光电测控与光信息传输技术教育部重点实验室,吉林 长春 1300223 长春理工大学空地激光通信技术国防重点学科实验室,吉林 长春 130022摘要天地一体化信息网络是科技强国的重要标志,根据国家整体规划,到 2030 年将建成全球覆盖、按需服务、随域接入、安全可信的信息网络,服务国防建设和社会发展。空间激光通信是实现信息高速传输和保密安全的重要手段,将在构建天地一体化网络中发挥重要作用。首先从概念内涵与系统架构、研究现状与发展趋势、总体目标与主要难点3个方面介绍了天地一体化网络,然后总结了空间激光通信的概念和特点、研究现状和发展趋势,以期为我国天地一体化信息网络的构建提供有益参考。关键词: 天地一体化 ; 空间信息网络 ; 激光通信 ; 卫星1 空间信息网络1.1 空间信息网络的概念内涵与系统组成天地一体化信息网络是指以地面网为依托,以天基网为拓展,采用统一的网络架构、技术体制、标准规范,实现天、空、地、海互联互通,其内涵是实现多种功能平台之间的数据融合与信息共享[1,2,3]。天地一体化信息网络系统包括网络架构、网络协议和网络设施,天地一体化网络架构如图1所示。1) 网络架构网络架构包含骨干网、接入网和子网。① 骨干网:天基、地基双骨干网络。② 接入网:卫星、飞机(飞艇)、地面之间的接入网络。③ 子网:卫星星座、飞机群、地面基站用户等构成的多个节点网络。2) 网络协议网络协议采用TCP/IP、CCSDS和DTN相结合的协议体系,天地一体化信息网络协议体系如图2所示。3) 网络设施网络设施包括通信基础设施、网络基础设施和应用基础设施,天地一体化网络组成如图3所示。1.2 空间信息网络的研究现状与发展趋势1) 空间信息网络的国外发展现状美国空间信息网络研究起步最早,技术也最为成熟[4,5]。2) 空间信息网络的国内发展现状我国空间信息网络发展呈现“天弱地强”特征。目前在轨卫星超过200颗,其中,通信卫星有34颗,中继卫星有3颗,最高通信速率为622 Mbit/s。地面网络发展情况为互联网普及率达55.8%。目前,我国在空间信息网络方面有代表性的规划如下。中国航天科技集团提出“鸿雁”全球卫星通信系统,由300颗低轨道小卫星组成,将实现“沟通连接万物、全球永不失联”。2018年12月29日,长征二号丁运载火箭成功将“鸿雁”星座首颗试验星送入预定轨道。表1   美国提出的主要空间信息网络阶段系统时间星座性能一Iridium铱星系统1990—2000年66颗LEO+6颗极地圆轨道建成低/中轨系统无星上处理能力二Teledesic1994—2004年228颗LEO+12颗圆轨道建成“空间因特网”有星上路由交换能力三WGS2007年GEO卫星(已发射6颗)建成高轨卫星信息系统实现全球覆盖四AEHF2010年GEO+LEO+地面组成星地网初步实现空间网络五O3b2013年16颗微MEO星MEO微卫星与地面中心组网实现特殊区域组网六OneWeb2015年720颗微LEO星低轨微卫星与地面中心组网实现特殊区域组网七Kuiper2019年3 236颗微LEO星低轨通信互联网接入新窗口打开| 下载CSV中国航天科工集团提出“虹云”星座,是“五云一车”(飞云、快云、行云、虹云、腾云和飞行列车)项目之一,计划发射 156 颗卫星,预计在2023年建设完成实现通、导、遥的信息一体化。2018年12月22日,“虹云”工程首星在酒泉卫星发射中心成功发射,进入预定轨道。3) 空间信息网络的发展趋势根据国内外研究现状,可以总结空间信息网络的发展趋势如下。网络节点:由数量较多的 LEO 与 GEO、MEO、LEO 相结合,进一步向大量微小卫星星座方向发展。网络架构:由点、线、面向天空地海一体化方向发展。网络路由:由透明转发向星上处理方向发展。网络协议:由PPP协议向与TCP/IP、CCSDS、DTN相结合方向发展。网络功能:由单一业务向多业务方向发展。1.3 空间信息网络的总体目标与主要难点空间信息网络的总体目标是以国家战略需求为牵引,以保障国家信息安全为出发点,按照“天基组网、地网跨代、天地互联”的思路,经过“技术突破、规模建设、扩展提高”3 个阶段,建立世界领先水平的天地一体化信息网络技术体系,具备全球覆盖、按需服务、随域接入、安全可信能力,形成与我国新时代战略需求相适应的体系能力,实现“国家利益到哪里,信息网络覆盖到哪里”。要想实现上述目标,主要面临以下6个方面的难点。① 体系设计难:网络规模庞大,结构立体化;② 星上路由难:网络拓扑时变,动态不规则;③ 保密通信难:无线开放方式,安全性能差;④ 信息获取难:环境影响严重,链路质量差;⑤ 星上处理难:卫星载荷受限,节点功能弱;⑥ 网络管理难:链路时间较长,时延抖动大。2 结束语空间信息网络在充分继承和集成我国在空基网络、天基网络及地基网络等方面已有成果的基础上,按照“统筹规划、分步实施、资源共享”的原则,充分发挥后发优势,实现系统的跨越式发展。空间激光通信具有高速率、抗干扰、抗截获、轻小型和保密性好等优点,在军事保密通信、民用应急通信、电磁干扰下通信以及天地一体化信息网络建设等方面具有广泛的应用前景。下一步应继续刻苦攻关,努力拼搏,加快发展我国的空间激光通信技术在空间信息网络中的应用,为国家安全和国防建设做出应有的贡献。The authors have declared that no competing interests exist.作者已声明无竞争性利益关系。3 原文链接http://www.infocomm-journal.com/wlw/article/2019/2096-3750/2096-3750-3-2-00001.shtml
  • [技术干货] 梅科尔工作室-鸿蒙设备开发第一天学习
    一、物联网开发概述1.物联网典型层级架构端:各种终端设备进行信息的收集和处理,获取到物理世界的一些相关数据。边:实现端侧数据的上报,对设备的就近接入和设备本地处理的优化。管:接入过程中的核心角色,接入和传输网络。云:实现所有的数据接入和数据汇聚,统一管理设备数据。2.物联网常见通信协议CoAP:受限制的应用协议。运行于UDP协议之上,模式:发布/订阅,长连接。比较小巧。适合智能程度较高的设备。MQTT:消息队列遥测传输协议。构建于TCP/IP协议,模式:请求/响应,短连接。适合硬件性能低下的远程设备,以及网络状况较差的情况。ModBus网络:工业通信系统。带智能终端的可编程序控制器+计算机+公用路线/局部专用路线。分为物理层、数据链路层、应用层。OPC-UA(OPC统一架构)优点:跨平台、面向服务的架构。信息通信安全。运用广泛。3.物联网设备接入方式有线通信技术:短距无线通信技术:蓝牙、Wi-Fi、ZigBee(主要用于家庭/楼宇自动化、远程控制)、Z-Wave(智能家居,监控和控制)、SigFox(智慧家庭、智能电表、移动医疗)、LoRa(智慧农业、智能建筑、物流追踪)、NB-IoT(水表、停车、宠物跟踪)、eMTC(共享单车、宠物项圈、POS、智能电梯)二、鸿蒙设备开发-环境搭建硬件准备:Linux编译服务器、Windows工作台、USB。开发工具要求:VS Code、Hiburn、MovaXterm或其他超级终端、CH341SER.EXELinux构建工具要求:Python3.7+、SCons3.0.4+、bash、gn、ninja、交叉编译器gcc_riscv32三、鸿蒙设备开发-内核开发1.任务管理、软件定时器和信号量的理解2.事件管理、互斥锁、消息队列的理解四、鸿蒙设备开发-驱动子系统开发1.操作GPIOLED对应的GPIO引脚是GPIO2,实现LED灯的闪烁。2.GPIO终端F1和F2按键对应的GPIO引脚分别是GPIO11和GPIO12,实现LED灯亮灭。3.PWM输出通过代码实现输出不同占空比的PWM,改变LED的亮度。4.ADC采样实现读取ADC通道5的电压值。5.I2C总线产生I2C信号去控制NFC芯片。6.UART数据的收发。五、鸿蒙设备开发-无线联网开发1.WIFI AP热点作为一个WIFI热点,可以进行搜索联网。以下是头文件中封装的一些函数。2.WIFI STA联网将开发板作为一个设备,接入到周边用的wifi热点,作为一个终端设备接入涉及到以下相关源代码头文件。六、由浅入深,“理论+实操+考试”一站式学习华为云IoT,构建开发的物联网平台,加速企业数字化转型。极简的物联方案构建,支持全联接广覆盖,开放的物联入口。华为云IoT物联网平台,华为设备接入服务。流程:创建产品、注册设备、联网上云。
  • [技术干货] 计算机网络重点回顾[转载]
    一.计算机网络概述计算机网络的概念:(*)1.计算机网络的定义:​ 计算机网络是指将地理位置不同的具有独立功能的多台计算机及其外部设备,通过通信线路链接起来,在网络操作系统,网络管理软件及网络通信协议的管理和协调下,实现资源共享和信息传递的计算机系统。2.计算机网络的组成:终端系统/资源子网:提供共享的软件资源和硬件资源通信子网:提供信息交换的网络结点和通信线路。3.计算机网络的类型:按照拓朴分类: 星型结构 树形结构 总线型结构 环形结构 网状结构按照范围分类:局域网LAN 城域网MAN 广域网 WAN 补充:个人区域网PAN 互联网Internet按照传输方式分类:有线网络(IEEE802.3) 无线网络:( IEEE802.11 WLAN无线局域网(wireless) WPAN无线个域网)计算机网络体系结构1.传输方式:按照传输的方向分:单工:只能单方向传输的工作模式双工:在同一时间,线路上只能允许一个方向的数据通过全双工:双方可以同时进行数据通信按照传输对象(方式)分:单播: 1对1多播:1对多广播:1对all2.数据交换:电路交换:整个报文从源头到终点连续的传输报文交换:整个报文先传达到相邻节点,全部存储下来查找转发表,再转发到下一个节点分组交换:将一个报文分成多个分组,传送到相邻结点,在查找转发表,在转发到下一个结点3.通信协议和体系结构:网络协议三要素:语法 语义 时序OSI参考模型:应用层:使用应用程序通过网络服务。表示层:表示层用于处理交互数据的表示方式,例如格式转换,数据的加密和解密,数据压缩和回复等功能会话层:负责维护通信中两个结点之间的会话建立维护和断开,以及数据的交换传输层:提供端到端之间的数据传输服务,实现对数据进行控制和操作的功能。网络层:单位 分组,在数据链路层的基础之上,提供点到点之间的通信,提供路由功能,实现拥塞控制,网络互联等功能。数据链路层:单位 帧,在物理层的基础之上,提供结点到结点之间的服务,采取差错控制和流量控制的方法实现网路互联物理层:单位bit,利用传输介质为通信的网络节点之间的建立TCP/IP参考模型:网络接口层:物理层和数据链路层网际层:网络层传输层应用层:会话层,表示层,应用层二.物理层1.物理层的基本概念:1.1四大特性:(***)机械特性:接口是怎么样的电气特性:用多少伏的电功能特性:线路上电平电压的特性过程特性:实现不同功能所发射信号的顺序1.2两种信号:模拟信号—特定频段的信号—有更加丰富的表现形式------抗干扰能力弱数字信号—不是1就是0--------抗干扰能力强1.3调制和编码:调制:模拟信号转换编码:数字信号转换编码的步骤:采样 量化 编码区别:数据可以通过编码手段转成数字信号,也可以通过调制手段将数据转成模拟型号。数字数据可以通过数字发送器转化为数字信号(编码),也可以通过调制器转化为模拟信号。模拟信号可以通过PCM编码器转化为数字信号(编码),也可以通过放大器调制器转化为模拟型号(调制)。1.4传输介质:双绞线:传输距离100-500(中继器 最多四个,超过就失真了)屏蔽双绞线STP:抗干扰强,贵一些非屏蔽双绞线:便宜,抗干扰差制作标准:568B:橙白,橙,绿白,蓝,蓝白,绿,棕白,棕 :八种568A:13,26调换—绿白,绿,绿白,蓝,蓝白,橙,棕白,棕光纤:多模光纤:芯较粗(50或62.5)。可以传多种模式的光。但其模间色散较大,这就限制了传输数字信号的频率,而且随距离的增加会更加的严重。例如:600MB/KM的光纤在2KM时只有300MB的宽带了。因此多模光纤传输距离就比较的近,一般只有几公里。距离:2KM单模光纤:单模光纤:中间纤芯很细(芯径一般是8-10),只能传一种模式的光,因此。其模间色散很小,适合语远程通讯,但还存在着材料色散和波导色散,这样单模光纤对光源的谱宽和稳定性有较高的要求,即谱宽要窄。稳定性要好。距离:100KM同轴电缆:淘汰了无线:无线信号频率 IEEE802.111.5三大部分:源系统:发送数据的一端传输系统:传输过程中的各种传输介质目的系统:接收数据的电脑2.物理层的基本通信技术2.1四种信道复用技术2.1.1复用技术复用技术是指一种在传输路径上综合多路道信道,然后恢复原机制或则解除终端各信道复用技术的过程将多种不同的信号在同一信道上进行传输,复用技术主要是用来解决不同信号传输时应该如何区分。2.1.2频分复用FDM频分多路复用,是在适于某种传输媒介的传输频带内,若干个频谱互不重叠的信号一并传输的方式,简称FDM。在每路信号进入传输频带前,先要以此搬移频率(调制),而在接收端,在搬回到原来的频段,恢复每路的原信号,从而使传输频带得到多路信号的复用。划分不同频率来并行传输信号2.1.3时分复用TDM时分复用TDM是采用同一物理连接的不同时段来传输不同的信号,也能达到多路传输的此目的。时分多路复用以时间作为信号分割的参量,故必须使各路信号在时间轴上互不重叠。时分复用TDM就是将提供给整个信道传输信息的时间划分为若干时间片(简称时隙),并将这些时隙分给每一个信号源使用划分不同的时间段来传输信号2.1.4波分复用WDM(波)是将两种或多种不i同波长的光载波信号(携带各种信息)在发送端经复用器(亦称合波器)汇合在一起,并耦合到光线路的同一根光纤中进行传输技术根据光波的波长进行传输(合波器耦合)2.1.5码分复用码分复用CDM是靠不同的编码来区分各路原始信号的一种复用方式,主要和各种多址技术结合产生了各种接入技术,包括无线和有线接入。在同一时间同一频率根据传输的数据码进行区分2.数据传输方式2.1通过同时间传输数量分为串行传输使用一条数据线,将数据一位一位的依次输入,每一位数据占据一个固定的时间长度。只需要少数几条先就可以在系统间交换信息,特别适用于计算机语计算机,外设之间的远距离通信。并行传输并行传输指的是数据以成组的方式,在多条并行信道上同时进行传输,是在传输中有多个数据位同时在设备之间进行的传输。2.2通过数据报文的双方的行为分为同步传输同步:在计算机网络中,定时的因素称为位同步。同步是要接收按照发送放放送的每个位的起止时刻和速率来接受数据,否则会产生误差。同步传输的比特分组要大得多。他不会独立的发送每个字符,每个字符都有自己的开始位和停止位,而是把他们组合起来发送。我们将这些组合称为数据帧,或简称帧异步传输:异步传输将比特分成小组进行传输,小组可以是8位的1个字符或更长。发送方可以在任何时刻发送这些比特组,而接受方从不知道它们会在什么时候到达。3.3通过传输的信号分基带传输:传输数字信号叫做基带传输频带传输:传输模拟信号叫做频带传输(300-3400HZ)3.4通过传输方向分单工 半双工 全双工3.5通过传输对象分单播 组播 广播三.数据链路层1.数据链路层的基础概念1.1数据链路层的概念数据链路层是在物理层和网际层之间的协议,提供相邻结点的可靠数据传输1.2帧的概念数据链路层的协议数据单元组成:帧头:源MAC地址,目的MAC地址,类型(MAC地址用于在网络中唯一标示一个网卡,一台设备若有一或多个网卡,则每个网卡都需要并会有一个唯一的MAC地址)数据帧尾:校验1.3以太网数据帧中的MAC和LLCMAC(一种协议,对接物理层)MAC介质控制访问作用:数据帧的封装/卸载,帧的寻址和识别,帧的接收语发送,链路的管理,帧的差错控制等。MAC子层的存在屏蔽了不同的物理链路层种类的差异性LLC(对接网络层)LLC逻辑控制访问作用:LLC子层的主要功能为传输可靠性保障和控制,数据包的分段与重组。数据包的顺序传播。注解:该协议位于OSI七层协议中数据链路层,数据链路层分为上层LLC(逻辑链路控制),和下层的MAC(媒体访问控制),MAC主要负责控制与链接物理层的物理介质。在发送数据的时候,MAC协议可以事先判断是否发送数据,如果可以发送将给数据加上一些控制信息,最终将数据以及控制信息以规定的格式发送到物理层;在接收数据的时候,MAC协议首先判断输入的信息并是否发生传输错误,如果没有错误,则去掉控制信息发送至LLC(逻辑链路控制)层。1.4数据链路层的两种传输方式单播 广播1.5数据链路层的三个基本问题(***)封装成帧(PPP)封装成帧就是在一段数据的前后分别添加首部和尾部,这样就构成了一个帧,接收端在收到物理层上交的比特流后,就能根据首部和尾部的标记,从收到的比特流中识别帧的开始和结束。透明传输透明传输是指不管所传数据是什么样的比特组合,都应当能够在链路上传输差错检测(奇数校验 偶数校验 CRC:需要计算)收到正确的帧就要向发送端发送确认,发送算在一定的期限内若没有收到对方的确认,就认为出现了差错,因而就进行重传,直到收到对方的确认为止,1.6局域网中的设备网桥(在物理层和数据链路层之间)两个端口的交换机集线器(在物理层 共享带宽)集线器的英文为:“HUB”是“中心”的意思,集线器的主要功能是对接受的信号进行再生整形放大,以扩大网络的传输距离,同时把所有结点集中在以它为中心的结点上。交换机(数据链路层 独享带宽)交换机(Switch)意为“开关”是一种用于电(光)信号转发的网络设备。它可以为接入交换机的任意两个网络结点提供独享的电信号通路。最常见的交换机式以太网交换机。2数据链路层的通信协议2.1冲突域和广播域(*)冲突域交换机的每一个端口都是一个冲突域;冲突域只能发生在一个网段广播域交换机的所有端口都在一个广播域;广播域在一个或多个网段内发生区别广播域可以跨网段冲突域是基于第一层(物理层),而广播域是基于第二层(数据链路层)HUB所有端口都在同一个广播域,冲突域内,Switch所有端口都在同意广播域内,而每一个端口就是一个冲突域。同一冲突域共享宽带2.2虚拟局域网(实验)VLAN(***)VLAN(Virtual local Area Network)即虚拟局域网,是将一个物理的LAN在逻辑上划分成多个广播域的通信技术。VLAN间不能直接通信,而VLAN间不能直接通信,从而将广播报文限制在一个VLAN内。优点和目的划分广播域:减少垃圾数据增强局域网的安全性提高健壮性灵活构建工作组划分VLAN的方式基于端口给交换机的每个接口配置不同的PVID,当一个数据帧进入交换机接口时,如果没有带VLAN标签,且该接口上配置了PVID。如果进入的帧已经带有VLAN标签,那么交换机不会在增加VLAN标签,即使接口已经配置了PVIDAccess:只允许通过一个VLANTrunk:允许通过多个VLANHybird基于子网配置好子网域VLAN映射表,如果交换设备收到的是untagged(不带VLAN标签)帧,交换设备根据报文中的源IP地址信息,确认添加的VLAN iD。将指定网段或IP地址发出的报文在指定的VLAN中传输,减轻了网络管理着的任务量,且有利于管理基于MAC地址先配置好MAC地址和VLAN映射关系表,当终端用户的物理位置发生改变,不需要重新配置VLAN。提高了终端用户的安全性和接入的灵活性基于协议将网络中提供的服务类型域VLAN相绑定,方便管理和维护。需要对网络中所有的协议类型和VLAN ID 的映射关系表进行初始配置。需要分析各种协议的地址格式并进行相应的转换,消耗交换机较多的资源,速度上稍具劣势。基于匹配策略先在交换机上配置好终端的MAC地址和IP地址,并与VLAN 并联。只有符合条件的终端才能加入指定VLAN。符合策略的终端加入指定VLAN后,严禁修改IP地址和MAC地址,否则会导致终端从指定VLAN中退出。2.3:CSMA/CD(总线型)(***)CSDN/CD即载波侦听多路访问/冲突检测,是广播信道中采用一种随机访问技术的竞争型访问方法,具有多目标地址的特点,总线型网络传输数据四大特点(重要)先听再发边听边发冲突停止延迟后发2.4:PPP(单播)点对点通信是一对一通道,因此不会发生碰撞,因此比较简单,采用PPP协议;其中PPP协议就是用户计算机和ISP(互联网服务提供商)进行通信时使用的数据链路层的协议PPP最初设计是为两个对等节点之间的IP流量传输提供一种封装协议。2.5:CRC(需要单独的深入学习)循环冗余校验是数据通信领域中最常用的一种查错校验码,其特征是信息字段和校验字段的长度可以任意选定。循环冗余检查(CRC)是一种数据传输检错功能。l例题:要发送的数据为1101011011,采用CRC的生成多项式是P(x)=x^4+x+1.求余数。四.网络层1.网络层的作用提供端到端的服务 单位:分组网络层的目的是实现两个端系统之间的数据透明传输,具体功能包括寻址和路由选择,连接的建立,保持和终止等。它提供的服务使传输层不需要了解网络中的数据传输和交换技术。2.网际层协议IPARP地址解析协议根据IP地址获取物理地址RARP反地址解析协议ICMP网际控制报文协议通过ICMP传输控制消息,控制消息是指网络通不通,主机是否可达,路由是否可用等网络本身的消息。IGMP网际组管理协议适用于管理协议多播组成员的一种通信协议。IP主机和相邻路由器利用IGMP来创建多播组的组成员。组播方式解决了单播情况下数据的重复拷贝及带宽的重复占用,也解决了广播方式下带宽资源的浪费3.IP地址3.1IP地址的概念IP地址使IP协议提供的一种统一的地址格式,他为互联网上的每一个网络和每一台主机分配一个逻辑地址,以此来屏蔽物理地址的差异。组成:一个IP地址由4个字节,32位组成,一般用点分十进制的方式表现,IP地址和MAC地址的区别IP地址是一个逻辑地址,MAC地址是物理地址MAC地址是唯一的但是IP地址不受唯一的MAC地址主要是工作在第二层,IP地址在网际层MAC地址是48位,IP地址一般是32位(v6是128位)IP地址的分配取决于网络拓扑,MAC地址分配取决于制造商3.2IP地址的组成主机地址和网络地址组成的主机地址/主机号标识某一台设备的地址网络地址/网络号标识某一网段的地址子网掩码子网掩码用于区分网络号和主机号它是一种用来指明一个IP地址的哪些位标识的是主机所在的子网,以及哪些位标识的是主机的位掩码。子网掩码不能单独存在,它必须结合IP地址一起使用。子网掩码只能有一个作用,就是将某一个IP地址划分成为网络地址和主机地址两部分3.3IP地址的分类3.3.1A类一个A类IP地址是指,在IP地址的四段号码中,第一段号为网络号码,剩下的三段号码为本地计算机的号码。A类IP地址中网络的标识长度为8位,主机标识的长度为24位,A类网络地址数量较少,有126个网络,每一个网络可以容纳主机数量高达1600多万台. A类IP地址 地址范围1.0.0.1到127.255.255.254第一个字节为网络号,第一个字节第一位为03.3.2B类一个B类地址是指,在IP地址的四段号码中,前两段号码为网络号码。B类IP地址中网络的标识长度为16位,主机标识的长度为16位,B类网络地址适用于中等规模的网络,有16384个网络,每个网络所能容纳的计算机数6万多台。 B类IP地址 地址范围128.0.01-191.255.255.254前两个字节为网络号,第一个字节前两位是103.3.3C类一个C类IP地址是指,在IP地址的四段号码中,前三段号码为网络号码,剩下的一段号码为本地计算机的号码。C类IP地址中网络的标识长度为24位,主机标识的长度为8位,C网络地址数量较多,有209万余个网络。适用于小规模的局域网络,每个网络最多只能包含254台计算机。C类IP地址范围192.0.0.1-223.255.255.254前三个字节为网络号,第一个字节前两位是1103.3.4D类D类IP地址在历史上呗叫做多播地址,及组播地址。在以太网中,多播地址命名了一组应该在这个网络中应用接收到一个分组的站点。多播地址的最高位必须是“1110”,范围从224.0.0.0到239.255.255.2553.3.5E类保留3.3.6特殊地址网络地址:主机号全为0的地址不可用广播地址:主机号全为1的地址不可用回环地址:127.0.0.0 测试使用4.IPv6因为IPv4地址满足不了需求,出现匮乏的情况,所以就诞生了IPv6地址继续使用。v6地址由128位,16字节组成,一般表现形式为十六进制。4.网络层的路由4.1路由路由是什么?路由是指分组从源到目的地时,决定端到端路径的网络范围的进程。路由是指导报文转发的路径信息,通过路由可以确认转发IP报文的路径路由是网络层最主要的工作任务路由器网络层的基础设备数据转发一个端口代表一个网段,路由器中存放着通往各个网段的表格,叫做路由表路由表又称路由择域信息库,是一个存储在路由器或者联网计算机中的电子表格(文件)或者类数据库。路由表存储着指向特定网络地址的路径网关又称网间连接器,协议转换器。用于两个高层协议不同的网络互连。网关既可以用于广域网互连,也可以用于局域网互连路由获取方式直连路由静态路由动态路由4.2路由的配置方式静态路由静态路由:由管理员手工配置,配置方便,对系统要求低,适用于拓扑结构简单稳定的小型网络缺省路由:是一种特殊的路由,当报文没有在路由表中找到匹配的具体表项时才能使用的路由动态路由动态路由通过动态路由协议来实现不同网段的路由互通动态路由协议有自己的路由算法,能够自动适应网络拓扑的变化,适用于具有一定数量的三层设备的网络动态路由协议RPIRPI:路由信息协议基于矢量的动态路由协议适用于中小规模的网络拓扑,最大跳数为15OSPFOSPF:开放式最短路径优先基于链路状态的路由使用SPF算法,计算最短路径。树形协议BGPBGP是自治系统间的路由协议。自治系统之间的路由协议自治系统间的路由协议IS-ISIS-IS:中间系统到中间系统与OSPF类似,IS-IS是基于路由路划分区域,OSPF利用接口划分内部网关协议RIP和OSPF的区别RIP是基于矢量的协议,OSPF是基于链路状态RIP适用于中小型网络拓扑,OSPF适用于较大规模的网络OSPF支持可变长度子网掩码(VLSM)。RIP不支持ODPF的收敛速度比RIP更加的迅速五.传输层1.传输层概念1.1传输层传输层提供端到端服务从通信和信息处理的角度看,传输层向上层应用层提供通信服务所谓的端口,就好像是门牌号一样,客户端可以通过IP地址找到对应的服务器端,但是服务器端是有很多的端口的,每个应用程序对应一个端口号,通过类似门牌号的端口号,客户端才能真正的访问到该服务器。为了对端口号进行区分,将每个端口进行编号,这就是端口号1.2端口号FTP:21(20)*FTP(文件传输协议)21连接;20传输数据TELNET:23*:TELNET(远程登录)SMTP:25*SMTP(电子邮件传输协议)POP3(邮局协议版本3):110DNS:53*:DNS(域名系统)TFTP:69:TFTP(简单文件传输协议)HTTP:80*:HTTP(超文本传输协议)SNMP:161:SNMP(简单网络管理协议)HTTPS:443*:HTTPS(超文本传输安全协议)2.传输层的两个重要协议3.1TCP传输控制协议:TCPTCP是TCP/IP体系中较为复杂的协议,是传输层中最重要的协议TCP的主要特点是:TCP是面向连接的传输层协议TCP提供可靠的交付服务TCP提供全双工通信TCP是面向字节流窗口固定窗口:如果窗口过小,当传输比较大的数据的时候需要不停的对数据进行确认,这个时候就会造成很大的延迟滑动窗口:滑动窗口通俗的讲就是一种流量控制技术。它本质上是描述接收方TCP数据报缓冲区大小的数据,发送根据这个数据来计算自己最多能发送所长的数据,如果发送方收到接收方的窗口大小为0的TCP数据报,那么发送方将停止发送数据,等到接受方发送窗口大小不为0的数据报的到来拥塞处理和流量控制TCP的三次握手和流量控制3.2UDP用户数据报协议:UDPUDP是在IP数据报服务之上增加了一些功能,增加了复用和分用的功能以及差错检测的功能UDP的主要特点是:UDP是无连接的UDP尽最大努力交付UDP面向报文且没有拥塞控制UDP开销较小传输效率较高UDP首部的概念六.应用层1.应用层的作用通过位于不同主机中的多个应用进程之间的通信和协同工作来完成,应用层的内容就是具体定义通信规则2.应用层中常见的协议域名系统DNS域名结构:每一个域名用标号隔开。 mail.cctv.com (三级域名.二级域名.顶级域名)域名服务器:迭代 递归文件传输协议FTP使用TCP连接,传输数据端口号是21(20) 20发送数据远程终端协议TELNET使用TCP连接,远程登录到远地的另外一台主机上端口号是23万维网和HTTP协议超文本传输协议,是一个简单的请求-响应协议端口号是80电子邮件协议SMTP电子邮件传输协议:端口号25POP3邮局协议版本3:端口号110DHCP动态主机配置协议指的是由服务器控制一段IP地址范围,客户机登录服务器时就可以自动获得服务器分配的IP地址和子网掩码。端口号68七.网络安全1.网络安全概论1.1网络安全网络安全(Cyber Security)是指网络系统的硬件,软件及其系统中的数据受到保护,不因偶然的或者恶意的原因而遭到破坏,更改,泄露。系统连续可靠正常的运行,网络服务不中断。1.2计算机网络面临的威胁主要分为两类1.2.1主动攻击主动的去做一些在网络基础上的恶意行为。恶意串改信息数据,发布恶意程序脚本等篡改恶意程序拒绝服务1.2.2被动攻击被动攻击主要是收集信息而不是进行访问,不改变数据本身的结构,也不对软硬件数据造成影响截取窃听流量分析1.2网络系统特性保密性:信息不泄露给非授权用户,实体或过程,或供其利用的特性完整性:数据未经授权不能进行改变的特性,即信息在存储或传输过程中保持不被修改,不被破坏和丢失的特性可用性:可被授权实体访问并按需求使用的特性。即当需要时能否存取所需信息。例如网络环境下拒绝服务,破坏网络和有关系统的正常运行等后属于对可用性的攻击可靠性:对信息的传播及内容具有控制能力不可抵赖性:出现安全问题时提供依据与手段2.加密和交互2.1加密和解密2.1.1加密是以某种特殊的算法改变原有的信息数据,使得未授权的用户即即使获得了已加密的信息,但因不知解密的方法,仍然无法了解信息的内容加密手段MD5加密(信息-摘要算法):128位AES加密(称秘钥加密):128,192,256位SHAI加密(安全哈希算法):160位RSA加密:公钥加密,私钥解密:1204位2.1.2解密加密的逆过程就是解密2.2公钥和私钥2.2.1对称加密采用单钥密码系统的加密方式,同一个秘钥可以同时用作信息的加密和解密,这种加密方法称为对称加密,也称为单秘钥加密。2.2.2非对称加密使用非对称的加密方式时,会产生两把钥匙。发送方利用自己的公钥加密,接收方利用自己的私钥解密数字签名的四大特点防止重放攻击:攻击者利用网络监听或则其他方式盗取认证凭据,之后再把它重新发给认证服务器。在数字签名中,如果采用了对签名报文加盖时间戳等或添加流水号等技术,就可以有效防止重放攻击防止数据伪造:其他人不能伪造对消息的签名,因为私有秘钥只能签名者自己知道,所有其他人不可以构造出正确的签名结果数据防止数据篡改:数字签名与原始文件或摘要一起发送给接受者,一旦信息被篡改,接受者可以通过计算摘要和验证签名来判断该文件无效,从而保证了文件的完整性防止数据抵赖:数字签名既可以作为身份认证的依据,也可以作为签名者签名操作的证据。要防止接受者抵赖,可以在数字签名系统中要求接收者返回一个自己的签名的表示收到报文,给发送者或者信任第三方。如果接受者不返回任何信息,此次通信可终止或重新的开始,签名方也没有任何的损失,由此双方均不可抵赖。2.3防火墙防火墙是一种访问控制技术,可以严格控制进出网络边界的分组,禁止任何不必要的通信,来减少潜在入侵的发生防火墙的区域们Local本地区域顶级安全区域,安全优先级为100local就是防火墙本身的区域比如ping指令等网际控制协议的回复,需要local域的权限凡是由防火墙主动发出的报文均可认为是从local区域中发出是需要防火墙响应并处理(而不是转发)的报文均可认为是Local区域接收Trust受信区高级安全区域,安全优先级为85通常用来定义内部用户所在的网络,也可以理解为应该是防护最严密的地区DMZ非军事化区中级安全区域,安全优先级50通常用来定义内部服务器坐在网络作用是把WEB。E-mail等允许外部访问的服务器单独接在该区域端口,使整个需要访问,实现内外网分离,达到用户需求。DMZ可以理解为一个不同于外网或内网的特殊网络区域,DMZ内通常放置一些不含机密信息的公用服务器,比如Web,Mail,FTP中的服务。这样来自外网的访问者可以访问DMZ中服务,但不可能接触到存放在内网中的公司机密或私人信息等,及时DMZ中服务器受到破坏,也不会对内网中的机密信造成影响Untrust非受信区低级安全区域,安全优先级为5通常用来定义Internet等不安全的网络,用于网络入口线的接入。————————————————版权声明:本文为CSDN博主「Crisp_LF」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。原文链接:https://blog.csdn.net/weixin_51261234/article/details/121876379