SylixOS 系统 MQTT中间件移植-程序员宅基地

技术标签: 中间件  ssl  

目  录

1. 测试目的

2. 测试工具

3. 测试平台

4. 操作系统

5. 参考资料

6. MQTT简介

6.1 MQTT开源中间件C库构建工程

MQTT开MQTT协议(低带宽)

6.2 适用范围

6.3 特点

7. 测试内容

7.1 构建工程

7.2 安装测试软件

7.2.1 Windows下安装emqx

7.2.2 Windows下安装Openssl

7.2.3 Windows下安装MQTTX

7.3 SSL/TLS 证书准备

7.3.1 生成自签名 CA 证书

7.3.2 生成服务端证书

7.3.3 生成客户端证书

7.4 SSL/TLS 双向连接的启用及验证

7.4.1 EMQX 配置

7.4.2 MQTT 连接测试

7.5 测试提前操作

1. 板子的lib目录文件如图 7-3所示:

7.6 libpaho-mqtt3c测试

7.7 libpaho-mqtt3a测试

7.8 libpaho-mqtt3as测试

7.9 libpaho-mqtt3as测试(SSL双向加密)

7.10 libpaho-mqtt3cs测试

7.11 libpaho-mqtt3cs测试(SSL双向加密)

8. 测试总结

1.测试目的

        通过测试了解SylixOS对开源MQTT协议上的C库客户端当前1.3.10版本的中间件是否完成了设计要求的相关功能,软件的性能和稳定性能否达到设计要求或者用户所需。

2.测试工具

  1. RealEvo-IDE 5.0.2版本
  2. Putty串口工具或SecureCRT远程调试工具
  3. MQTT 客户端工具 - MQTT X
  4. EMQX 服务器

3.测试平台

  1. 服务器:台式机(64 位操作系统)
  2. 客户端:ARM 4377开发板A9(32位)
  3. 客户端:ARM 3568 开发板(64位)

注:每次测试只需要一个服务器和一个客户端即可。

4.操作系统 

  1. 服务器:Windows 10 家庭版
  2. 客户端:SylixOS操作系统

5.参考资料

 6.MQTT简介

6.1MQTT开源中间件C库构建工程

        MQTT开MQTT协议(低带宽)

        MQTT (Message Queuing Telemetry Transport ),消息队列遥测传输,由IBM开发的即时通讯协议,相比来说比较适合物联网场景的通讯协议。

        MQTT协议采用发布/订阅模式,所有的物联网终端都通过TCP连接到云端,云端通过主题的方式管理各个设备关注的通讯内容,负责将设备与设备之间消息的转发。

        MQTT在协议设计时就考虑到不同设备的计算性能的差异,所以所有的协议都是采用二进制格式编解码,并且编解码格式都非常易于开发和实现。

        最小的数据包只有2个字节,对于低功耗低速网络也有很好的适应性。

        有非常完善的QOS机制,根据业务场景可以选择最多一次、至少一次、刚好一次三种消息送达模式。

        运行在TCP协议之上,同时支持TLS(TCP+SSL)协议,并且由于所有数据通信都经过云端,安全性得到了较好地保障。

6.2适用范围

        在低带宽、不可靠的网络下提供基于云平台的远程设备的数据传输和监控。

6.3特点

  1. 使用基于代理的发布/订阅消息模式,提供一对多的消息发布。
  2. 使用 TCP/IP 提供网络连接。
  3. 小型传输,开销很小(固定长度的头部是 2 字节),协议交换最小化,降低网络流量。
  4. 支持QoS,有三种消息发布服务质量:“至多一次”, “至少一次”, “只有一次”。

7.测试内容

        使用MQTT应用程序来测试Paho C客户端包含四个库是否正常运行(编译成功后可在lib_paho-mqtt-c/Debug目录下查看)

  1. libpaho-mqtt3a - asynchronous (MQTTAsync)
  2. libpaho-mqtt3as - asynchronous with SSL (MQTTAsync)测试SSL双向加密功能
  3. libpaho-mqtt3c - "classic" / synchronous (MQTTClient)
  4. libpaho-mqtt3cs - "classic" / synchronous with SSL (MQTTClient)测试SSL双向加密功能

        测试中图片会出现地址IP为192.168.1.192和192.168.9.192 ,是因为写文档时分了两次测试。用户在测试中,遇到这两个IP名,都为服务器的IP名。替换即可!!!

7.1构建工程

  1. 打开RealEvo-IDE软件,创建SylixOS Base:SylixOS Base 工程包含 SylixOS 所有内核组件源码,其包含哪些组件可在向导中配置。SylixOS Base 工程是所有项目开发的第一步,也是必须的一个步骤,后续所有工程的创建都需要指定 SylixOS Base 工程的位置。

SylixOS Base勾选组件:

libsylixosSylixOS 内核组件,SylixOS Base 工程必选;

libcexternSylixOS c 库,可选组件,一般也推荐包含在 SylixOS Base 工程中

openssl:开源 SSL 加密实现库;(MQTT库需要依赖openssl库)

创建好Base工程后,工程信息如图 7-1所示:

7-1 Base工程信息

  1. 导入MQTT库:lib_paho-mqtt-c工程,选中所创建的Base,进行编译。编译成功后在/lib_paho-mqtt-c/Debug目录下可生成一下文件如图 7-2所示

7-2 MQTT的库文件

打开虚拟机或开发板系统,直接Upload上传即可。

 7.2安装测试软件

7.2.1Windows下安装emqx

  1. 下载emqx进入官网:下载 EMQX

或者

        2.把下载的EMQX解压,得到一个emqx文件夹(解压名字不一样,可自行改为emqx。注意:解压的目录不应有中文字符,解压的目录最好是目标磁盘下的第一级文件)。

        3.Win10 系统的 【开始】 【右键】 进入win10 系统的 【Windows PowerShell(管理员)】

        4.进入 命令: cd H:\emqx\bin

cd H:\emqx\bin

  1. 在emqx目录下的bin目录中,执行命令./emqx install

./emqx install

  1. 接着启动服务器执行命令 ./emqx start (或者.\emqx start都可)

./emqx start

  1. 停止启动服务器执行命令 ./emqx stop (或者.\emqx stop都可)

./emqx stop

如果停止服务器出现下图问题,无法停止

Node '[email protected]' not responding to pings.

解决办法:移至官网下载对应版本的LICENSE

 

 

 

 

 下载后解压放进目录emqx/etc下,然后重新启动EMQ服务器。

 

 因为此时EMQX服务器正在windows电脑运行,无法关闭。所以请重启电脑,再次从第三步:进入win10 系统的 【Windows PowerShell(管理员)】对emqx服务器进行开启和关闭。

 启动后即可访问 localhost:18083 进入登入页面 默认用户名:admin,密码:public

进入

 

 此时可以用MQTTX来创建一个客户端。(注:当前网络适配器配置的ip都可当作服务端使用,包括虚拟网卡ip)。

 

连接成功可在服务器查看详细情况

7.2.2Windows下安装Openssl

  1. 下载Openssl进入官网:Win32/Win64 OpenSSL Installer for Windows - Shining Light Productions

 

有4种安装包:

Win64 OpenSSL v1.1.1i Light,安装Win64 OpenSSL v1.1.1i最常用的软件包

Win64 OpenSSL v1.1.1i,安装Win64 OpenSSL v1.1.1i完整软件包

Win32 OpenSSL v1.1.1i Light,安装Win32 OpenSSL v1.1.1i最常用的软件包

Win32 OpenSSL v1.1.1i,安装Win32 OpenSSL v1.1.1i完整软件包

对下载的Win64OpenSSL-1_1_1i.exe,进行安装。

 

 一般默认安装,但安装步骤中有一步,“Select Additional Tasks”,让选择OpenSSL的dll拷贝到什么地方,如下:

 建议,不要拷贝到系统目录下,如果其他软件使用的OpenSSL版本与你安装这个版本不同,可能导致该软件无法使用。所以让这些dll待在OpenSSL安装目录下即可。

最后一步,是否捐款,如下:

 看个人情况,全取消就是不捐。

安装完毕。

安装目录下内容:

验证安装是否正确

直接在cmd中,输入命令,查看OpenSSL版本

openssl version

如果看到的并不是自己安装的1.1.1版本

 原因: 如果电脑上已经安装过其他软件,比如Git、VMware、Strawberry等,那么他们都自带了openssl,如下:

所以,当你在cmd中使用openssl命令时,可能会调用到其他版本的openssl。

解决办法: 将openssl 1.1.1i版本命令行工具路径添加到,系统变量Path第一条,以保证它首先被找到。

 

 再次验证,查看OpenSSL版本正确。

7.2.3Windows下安装MQTTX 

无脑安装即可

 

 安装完毕后可用120.25.213.14来测试MQTTX是否正常。

7.3SSL/TLS 证书准备

        在双向认证中,一般都使用自签名证书的方式来生成服务端和客户端证书,因此本文就以自签名证书为例。

        通常来说,我们需要数字证书来保证 TLS 通讯的强认证。数字证书的使用本身是一个三方协议,除了通讯双方,还有一个颁发证书的受信第三方,有时候这个受信第三方就是一个 CA。和 CA 的通讯,一般是以预先发行证书的方式进行的。也就是在开始 TLS 通讯的时候,我们需要至少有 2 个证书,一个 CA 的,一个 EMQX 的,EMQX 的证书由 CA 颁发,并用 CA 的证书验证。

        在这里,我们假设您的系统已经安装了 OpenSSL。使用 OpenSSL 附带的工具集就可以生成我们需要的证书了。

7.3.1生成自签名 CA 证书

        进入OpenSSL-Win64\bin目录中,输入cmd。

        首先,我们需要一个自签名的 CA 证书。生成这个证书需要有一个私钥为它签名,可以执行以下命令来生成私钥:

openssl genrsa -out ca.key 2048

        这个命令将生成一个密钥长度为 2048 的密钥并保存在 ca.key 中。有了这个密钥,就可以用它来生成 EMQX 的根证书了:

openssl req -x509 -new -nodes -key ca.key -sha256 -days 3650 -out ca.pem

        根证书是整个信任链的起点,如果一个证书的每一级签发者向上一直到根证书都是可信的,那个我们就可以认为这个证书也是可信的。有了这个根证书,我们就可以用它来给其他实体签发实体证书了。

7.3.2生成服务端证书

        实体(在这里指的是 EMQX)也需要一个自己的私钥对来保证它对自己证书的控制权。生成这个密钥的过程和上面类似:

openssl genrsa -out emqx.key 2048

新建 openssl.cnf 文件,

req_distinguished_name :根据情况进行修改,

alt_names: BROKER_ADDRESS 修改为 EMQX 服务器实际的 IP 或 DNS 地址,例如:IP.1 = 127.0.0.1,或 DNS.1 = broker.xxx.com

        注意:IP 和 DNS 二者保留其一即可,如果已购买域名,只需保留 DNS 并修改为你所使用的域名地址。

[req]

default_bits  = 2048

distinguished_name = req_distinguished_name

req_extensions = req_ext

x509_extensions = v3_req

prompt = no

[req_distinguished_name]

countryName = CN

stateOrProvinceName = Zhejiang

localityName = Hangzhou

organizationName = EMQX

commonName = CA

[req_ext]

subjectAltName = @alt_names

[v3_req]

subjectAltName = @alt_names

[alt_names]

IP.1 = BROKER_ADDRESS

DNS.1 = BROKER_ADDRESS

        

        下图是我改的配置文件,可做参考模板。(我只用了IP地址)。

        然后以这个密钥和配置签发一个证书请求:

openssl req -new -key ./emqx.key -config openssl.cnf -out emqx.csr

        然后以根证书来签发 EMQX 的实体证书:

openssl x509 -req -in ./emqx.csr -CA ca.pem -CAkey ca.key -CAcreateserial -out emqx.pem -days 3650 -sha256 -extensions v3_req -extfile openssl.cnf

7.3.3生成客户端证书

        双向连接认证还需要创建客户端证书,首先需要创建客户端密钥:

openssl genrsa -out client.key 2048

        

        使用生成的客户端密钥来创建一个客户端请求文件:

openssl req -new -key client.key -out client.csr -subj "/C=CN/ST=JiangSu/L=NanJing/O=EMQX/CN=client"

        最后使用先前生成好的服务端 CA 证书来给客户端签名,生成一个客户端证书:

openssl x509 -req -days 3650 -in client.csr -CA ca.pem -CAkey ca.key -CAcreateserial -out client.pem

        准备好服务端和客户端证书后,我们就可以在 EMQX 中启用 TLS/SSL 双向认证功能。

7.4SSL/TLS 双向连接的启用及验证

        在 EMQX 中 mqtt:ssl 的默认监听端口为 8883。

7.4.1EMQX 配置

        将前文中通过 OpenSSL 工具生成的 emqx.pem、emqx.key 及 ca.pem 文件拷贝到 EMQX 的 etc/certs/ 目录下,并参考如下配置修改 emqx.conf:

## listener.ssl.$name is the IP address and port that the MQTT/SSL

## Value: IP:Port | Port

listener.ssl.external = 8883

## Path to the file containing the user's private PEM-encoded key.

## Value: File

listener.ssl.external.keyfile = etc/certs/emqx.key

## 注意:如果 emqx.pem 是证书链,请确保第一个证书是服务器的证书,而不是 CA 证书。

## Path to a file containing the user certificate.

## Value: File

listener.ssl.external.certfile = etc/certs/emqx.pem

## 注意:ca.pem 用于保存服务器的中间 CA 证书和根 CA 证书。可以附加其他受信任的 CA,用来进行客户端证书验证。

## Path to the file containing PEM-encoded CA certificates. The CA certificates

## Value: File

listener.ssl.external.cacertfile = etc/certs/ca.pem

## A server only does x509-path validation in mode verify_peer,

## as it then sends a certificate request to the client (this

## message is not sent if the verify option is verify_none).

##

## Value: verify_peer | verify_none

listener.ssl.external.verify = verify_peer

## Used together with {verify, verify_peer} by an SSL server. If set to true,

## the server fails if the client does not have a certificate to send, that is,

## sends an empty certificate.

##

## Value: true | false

listener.ssl.external.fail_if_no_peer_cert = true

原本的emqx.conf文件:

 改过之后的emqx.conf文件:

         生成的所需ca.pem、emqx.key、emqx.pem在OpenSSL-Win64/bin中,将这三个文本拷贝进emqt/etc/certs中。

7.4.2MQTT 连接测试

        当配置完成并重启 EMQX 后,我们使用 MQTT 客户端工具 - MQTT X(该工具跨平台且支持 MQTT 5.0),来验证 TLS 双向认证服务是否正常运行。(MQTT X 版本要求:v1.3.2 及以上版本)。

        先将OpenSSL-Win64\bin目录中的(自签名证书中生成的) ca.pem 文件,(客户端证书)client.pem文件 和(客户端密钥 )client.key 文件拷贝到emqt/etc/certs中。

 

        参照下图在 MQTT X 中创建 MQTT 客户端(Host 输入框里的 192.168.7.192 需替换为实际的 EMQX 服务器 IP)。

 

        此时 Certificate 一栏需要选择 Self signed ,并携带自签名证书中生成的 ca.pem 文件, 客户端证书 client.pem 和客户端密钥 client.key 文件。

        点击 Connect 按钮,连接成功后,如果能正常执行 MQTT 发布/订阅 操作,则 SSL 双向连接认证配置成功。

7.5测试提前操作

开发板中所上传的库,每个动态库的名字需要另外用shell命令来cp成后缀加.1.(如cp libpaho-mqtt3a.so libpaho-mqtt3a.so.1)。移植Linux中这几个库带有软链接,在SylixOS中需要手动添加。

  1. 板子的lib目录文件如图 7-3所示:

图 7-3 板子的lib目录mqtt库

        2.如要测MQTTS的SSL双向加密功能,App应用程序文件,将OpenSSL-Win64\bin目录中的(自签名证书中生成的) ca.pem 文件,(客户端证书)client.pem文件 和(客户端密钥 )client.key 文件也上传到apps目录下。如图 7-4所示:

7-4 板子的apps目录 mqtt 测试程序

        3.在每个测试应用程序中需要手动根据自己的电脑进行配置服务器IP,端口号。服务器IP和端口号需要与MQTTX桌面客户端工具中的服务器IP,端口号一致。(测试电脑IP为192.168.1.192),测试代码中的服务器IP宏和MQTTX软件配置信息如图 7-5 所示:

 图 7-5 测试代码中的服务器IP宏和MQTTX软件配置信息

7.6libpaho-mqtt3c测试

  1. 测试目的 

        测试libpaho-mqtt3c的功能是否正常。

  1. 测试方法

        使用MQTTClient_publish.c、MQTTClient_subscribe.c 和 MQTTClient_publish_async.c:MQTT客户端简单代码示例,测试libpaho-mqtt3c的功能是否正常。

  1. 测试步骤
  1. 使用编译出的libpaho-mqtt3c 库文件和自带的测试程序MQTTClient_publish.c、MQTTClient_subscribe.c 和 MQTTClient_publish_async.c上传到开发板的 SylixOS 系统上,进行测试
  2. 打开电脑端的MQTTX服务器,如果开发板的网卡地址为:192.168.1.236,在Win10电脑上分配一个同网段的IP地址为:192.168.1.192。保持能够互相ping通,如图 7-6所示:

ifconfig en1 inet 192.168.1.236    //设置 IP 地址

ifconfig en1 gateway 192.168.1.1  //设置网关

 图 7-6 开发板和电脑同网段

        3.此时测试代码的服务器地址应该配置为:#define ADDRESS  "tcp://192.168.1.192:1883",服务器地址为192.168.1.192,端口号为1883,最后点击Connect即可,配置服务器信息如图 7-7所示。

 

7-7 MQTTX服务器配置

        4. 执行测试指令,先执行MQTTClient_subscribe订阅,再执行MQTTClient_publish和MQTTClient_publish_async发布,此时需要打开两个终端,观察分析输出测试结果图 7-8所示。

终端1输入shell命令:./MQTTClient_subscribe  //订阅

终端2输入shell命令:./MQTTClient_publish    //发布

 图 7-8 输出测试结果

        5.测试结果

        测试MQTTClient_publish和 MQTTClient_publish_async发布,MQTTClient_subscribe订阅都能够收到消息,测试成功,libpaho-mqtt3c的功能正常。

7.7 libpaho-mqtt3a测试

  1. 测试目的 

测试libpaho-mqtt3a的功能是否正常。

        2.测试方法

使用MQTTAsync_publish.c、MQTTAsync_subscribe.c :MQTT异步简单代码示例,测试libpaho-mqtt3a的功能是否正常。

        3.测试步骤

        1 )  使用编译出的libpaho-mqtt3a库文件和自带的测试程序MQTTAsync_publish.c、MQTTAsync_subscribe.c 上传到开发板的 SylixOS 系统上,进行测试

        2 )  执行测试指令,先执行MQTTAsync_subscribe订阅,再执行MQTTAsync_publish发布,观察分析输出测试结果图 7-9所示。

终端1输入shell命令:./MQTTAsync_subscribe  //订阅

终端2输入shell命令:./MQTTAsync_publish    //发布

7-9 输出测试结果

        4.测试结果

        测试MQTTAsync_publish发布,MQTTAsync_subscribe订阅都能够收到消息,测试成功,libpaho-mqtt3a的功能正常。

7.8libpaho-mqtt3as测试

  1. 测试目的 

        测试libpaho-mqtt3as的功能是否正常。

        2.测试方法

        使用paho_c_pub.c、paho_c_sub.c和pubsub_opts.c :MQTT异步简单代码示例,测试libpaho-mqtt3as的功能是否正常。

        3.测试步骤

        1 )  使用编译出的libpaho-mqtt3as库文件和自带的测试程序paho_c_pub.c、paho_c_sub.c上传到开发板的 SylixOS 系统上,进行测试

        2 )  执行测试指令,先执行paho_c_sub订阅,再执行paho_c_pub发布,在发布端可随意输入想要发布的信息。观察分析输出测试结果图 7-10所示。

终端1输入shell命令:./paho_c_sub -t topic -c "tcp://192.168.7.192:8883"  //订阅

终端2输入shell命令:./paho_c_pub -t topic -c "tcp://192.168.7.192:8883"  //发布

7-10 输出测试结果

        4.测试结果

        测试paho_c_pub连续发布,paho_c_sub订阅能够连续接收消息,测试成功,libpaho-mqtt3as的功能正常。

7.9libpaho-mqtt3as测试(SSL双向加密)

  1. 测试目的 

        测试libpaho-mqtt3as的ssl加密功能是否正常。

        2.测试方法

        使用paho_c_pub.c、paho_c_sub.c和pubsub_opts.c :MQTT异步简单代码示例,测试libpaho-mqtt3as的功能是否正常。

        3.测试步骤

        1 )  使用编译出的libpaho-mqtt3as库文件和自带的测试程序paho_c_pub.c、paho_c_sub.c上传到开发板的 SylixOS 系统上,进行测试

        2 )  执行测试指令,先执行paho_c_sub订阅,再执行paho_c_pub发布,在发布端可随意输入想要发布的信息。观察分析输出测试结果图 7-10所示。

终端1输入shell命令:./paho_cs_sub -t topic -c "ssl://192.168.7.192:8883"  //订阅

终端2输入shell命令:./paho_cs_pub -t topic -c "ssl://192.168.7.192:8883"  //发布

 

 

7-10 输出测试结果

        4.测试结果

        测试paho_c_pub连续发布,paho_c_sub订阅能够连续接收消息,测试成功,libpaho-mqtt3as的SSL加密功能正常。

7.10libpaho-mqtt3cs测试

  1. 测试目的 

        测试libpaho-mqtt3cs的功能是否正常。

        2.测试方法

        使用paho_cs_pub.c、paho_cs_sub.c和pubsub_opts.c :MQTT异步简单代码示例,测试libpaho-mqtt3cs的功能是否正常。

        3.测试步骤

        1 )  使用编译出的libpaho-mqtt3cs库文件和自带的测试程序paho_cs_pub.c、paho_cs_sub.c上传到开发板的 SylixOS 系统上,进行测试

        2 )  执行测试指令,先执行paho_cs_sub订阅,再执行paho_cs_pub发布,在发布端可随意输入想要发布的信息。观察分析输出测试结果图 7-11所示。

终端1输入shell命令:./paho_cs_sub -t topic -c "ssl://192.168.7.192:8883"  //订阅

终端2输入shell命令:./paho_cs_pub -t topic -c "ssl://192.168.7.192:8883"  //发布

7-11 输出测试结果

        4.测试结果

        测试paho_cs_pub连续发布,paho_cs_sub订阅能够连续接收消息,测试成功,libpaho-mqtt3cs的功能正常。

7.11libpaho-mqtt3cs测试SSL双向加密

  1. 测试目的 

        测试libpaho-mqtt3cs的ssl加密功能是否正常。

        2.测试方法

        使用paho_cs_pub.c、paho_cs_sub.c和pubsub_opts.c :MQTT异步简单代码示例,测试libpaho-mqtt3cs的功能是否正常。

        3.测试步骤

        1 )  使用编译出的libpaho-mqtt3cs库文件和自带的测试程序paho_cs_pub.c、paho_cs_sub.c上传到开发板的 SylixOS 系统上,进行测试

        2 )  执行测试指令,先执行paho_cs_sub订阅,再执行paho_cs_pub发布,在发布端可随意输入想要发布的信息。观察分析输出测试结果图 7-11所示。

终端1输入shell命令:./paho_cs_sub -t topic -c "ssl://192.168.7.192:8883"  //订阅

终端2输入shell命令:./paho_cs_pub -t topic -c "ssl://192.168.7.192:8883"  //发布

 

 

7-11 输出测试结果

        4.测试结果

        测试paho_cs_pub连续发布,paho_cs_sub订阅能够连续接收消息,测试成功,libpaho-mqtt3cs的ssl加密功能正常。

8.测试总结

        1. lib_paho-mqtt-c 在翼辉信息的  RealEvo-IDE 5.0.2 软件中可以编译成功生成库工程。

        2. 在 SylixOS 32/64位操作系统中,均可以完成消息传递的且正确无误。

        3.本次测试是在32位虚拟机和64位虚拟机测试的。详情配置可参考《RealEvo-Simulator使用手册》。

 

注意在a9的板子上需要加上这段代码:

否则会出现

 的问题。

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/Win_czl/article/details/130885445

智能推荐

攻防世界_难度8_happy_puzzle_攻防世界困难模式攻略图文-程序员宅基地

文章浏览阅读645次。这个肯定是末尾的IDAT了,因为IDAT必须要满了才会开始一下个IDAT,这个明显就是末尾的IDAT了。,对应下面的create_head()代码。,对应下面的create_tail()代码。不要考虑爆破,我已经试了一下,太多情况了。题目来源:UNCTF。_攻防世界困难模式攻略图文

达梦数据库的导出(备份)、导入_达梦数据库导入导出-程序员宅基地

文章浏览阅读2.9k次,点赞3次,收藏10次。偶尔会用到,记录、分享。1. 数据库导出1.1 切换到dmdba用户su - dmdba1.2 进入达梦数据库安装路径的bin目录,执行导库操作  导出语句:./dexp cwy_init/[email protected]:5236 file=cwy_init.dmp log=cwy_init_exp.log 注释:   cwy_init/init_123..._达梦数据库导入导出

js引入kindeditor富文本编辑器的使用_kindeditor.js-程序员宅基地

文章浏览阅读1.9k次。1. 在官网上下载KindEditor文件,可以删掉不需要要到的jsp,asp,asp.net和php文件夹。接着把文件夹放到项目文件目录下。2. 修改html文件,在页面引入js文件:<script type="text/javascript" src="./kindeditor/kindeditor-all.js"></script><script type="text/javascript" src="./kindeditor/lang/zh-CN.js"_kindeditor.js

STM32学习过程记录11——基于STM32G431CBU6硬件SPI+DMA的高效WS2812B控制方法-程序员宅基地

文章浏览阅读2.3k次,点赞6次,收藏14次。SPI的详情简介不必赘述。假设我们通过SPI发送0xAA,我们的数据线就会变为10101010,通过修改不同的内容,即可修改SPI中0和1的持续时间。比如0xF0即为前半周期为高电平,后半周期为低电平的状态。在SPI的通信模式中,CPHA配置会影响该实验,下图展示了不同采样位置的SPI时序图[1]。CPOL = 0,CPHA = 1:CLK空闲状态 = 低电平,数据在下降沿采样,并在上升沿移出CPOL = 0,CPHA = 0:CLK空闲状态 = 低电平,数据在上升沿采样,并在下降沿移出。_stm32g431cbu6

计算机网络-数据链路层_接收方收到链路层数据后,使用crc检验后,余数为0,说明链路层的传输时可靠传输-程序员宅基地

文章浏览阅读1.2k次,点赞2次,收藏8次。数据链路层习题自测问题1.数据链路(即逻辑链路)与链路(即物理链路)有何区别?“电路接通了”与”数据链路接通了”的区别何在?2.数据链路层中的链路控制包括哪些功能?试讨论数据链路层做成可靠的链路层有哪些优点和缺点。3.网络适配器的作用是什么?网络适配器工作在哪一层?4.数据链路层的三个基本问题(帧定界、透明传输和差错检测)为什么都必须加以解决?5.如果在数据链路层不进行帧定界,会发生什么问题?6.PPP协议的主要特点是什么?为什么PPP不使用帧的编号?PPP适用于什么情况?为什么PPP协议不_接收方收到链路层数据后,使用crc检验后,余数为0,说明链路层的传输时可靠传输

软件测试工程师移民加拿大_无证移民,未受过软件工程师的教育(第1部分)-程序员宅基地

文章浏览阅读587次。软件测试工程师移民加拿大 无证移民,未受过软件工程师的教育(第1部分) (Undocumented Immigrant With No Education to Software Engineer(Part 1))Before I start, I want you to please bear with me on the way I write, I have very little gen...

随便推点

Thinkpad X250 secure boot failed 启动失败问题解决_安装完系统提示secureboot failure-程序员宅基地

文章浏览阅读304次。Thinkpad X250笔记本电脑,装的是FreeBSD,进入BIOS修改虚拟化配置(其后可能是误设置了安全开机),保存退出后系统无法启动,显示:secure boot failed ,把自己惊出一身冷汗,因为这台笔记本刚好还没开始做备份.....根据错误提示,到bios里面去找相关配置,在Security里面找到了Secure Boot选项,发现果然被设置为Enabled,将其修改为Disabled ,再开机,终于正常启动了。_安装完系统提示secureboot failure

C++如何做字符串分割(5种方法)_c++ 字符串分割-程序员宅基地

文章浏览阅读10w+次,点赞93次,收藏352次。1、用strtok函数进行字符串分割原型: char *strtok(char *str, const char *delim);功能:分解字符串为一组字符串。参数说明:str为要分解的字符串,delim为分隔符字符串。返回值:从str开头开始的一个个被分割的串。当没有被分割的串时则返回NULL。其它:strtok函数线程不安全,可以使用strtok_r替代。示例://借助strtok实现split#include <string.h>#include <stdio.h&_c++ 字符串分割

2013第四届蓝桥杯 C/C++本科A组 真题答案解析_2013年第四届c a组蓝桥杯省赛真题解答-程序员宅基地

文章浏览阅读2.3k次。1 .高斯日记 大数学家高斯有个好习惯:无论如何都要记日记。他的日记有个与众不同的地方,他从不注明年月日,而是用一个整数代替,比如:4210后来人们知道,那个整数就是日期,它表示那一天是高斯出生后的第几天。这或许也是个好习惯,它时时刻刻提醒着主人:日子又过去一天,还有多少时光可以用于浪费呢?高斯出生于:1777年4月30日。在高斯发现的一个重要定理的日记_2013年第四届c a组蓝桥杯省赛真题解答

基于供需算法优化的核极限学习机(KELM)分类算法-程序员宅基地

文章浏览阅读851次,点赞17次,收藏22次。摘要:本文利用供需算法对核极限学习机(KELM)进行优化,并用于分类。

metasploitable2渗透测试_metasploitable2怎么进入-程序员宅基地

文章浏览阅读1.1k次。一、系统弱密码登录1、在kali上执行命令行telnet 192.168.26.1292、Login和password都输入msfadmin3、登录成功,进入系统4、测试如下:二、MySQL弱密码登录:1、在kali上执行mysql –h 192.168.26.129 –u root2、登录成功,进入MySQL系统3、测试效果:三、PostgreSQL弱密码登录1、在Kali上执行psql -h 192.168.26.129 –U post..._metasploitable2怎么进入

Python学习之路:从入门到精通的指南_python人工智能开发从入门到精通pdf-程序员宅基地

文章浏览阅读257次。本文将为初学者提供Python学习的详细指南,从Python的历史、基础语法和数据类型到面向对象编程、模块和库的使用。通过本文,您将能够掌握Python编程的核心概念,为今后的编程学习和实践打下坚实基础。_python人工智能开发从入门到精通pdf