
笔记
兮++
让每一行代码都有改变世界的力量
展开
-
java.lang.RuntimeException: java.security.InvalidKeyException: Illegal key size
java.lang.RuntimeException: java.security.InvalidKeyException: Illegal key size异常原因:如果密钥大于128, 会抛出java.security.InvalidKeyException: Illegal key size 异常. 因为密钥长度是受限制的, java运行时环境读到的是受限的policy文件. 文件位于${java_home}/jre/lib/security.解决方法一:找到jre 的lib 下java.sec原创 2021-06-29 11:02:25 · 1355 阅读 · 0 评论 -
Paho Java Client 连接阿里云物联网平台
Paho Java Client 连接阿里云物联网平台进入阿里云物联网平台->点击产品->新建点击设备->添加设备查看设备证书,复制记录,后面使用阿里云TCP通信一机一密、一型一密预注册认证方式:使用设备证书(ProductKey、DeviceName和DeviceSecret)连接。mqttClientId: clientId+"|securemode=3,signmethod=hmacsha1,timestamp=132323232|"mqttUsername:原创 2021-06-28 16:45:43 · 1242 阅读 · 1 评论 -
DTU连接自建MQTT服务器
DTU连接自建MQTT服务器DTU串口助手连接电脑 ,图片中485端口被变送器占用,飞线用来测试配置参数如图:重启DTU 网络连接正常。启动 java 服务端启动连接成功发送透传测试数据查看串口助手:收到透传数据DTU发送透传数据查看Java服务端收到透传数据...原创 2021-06-26 15:58:34 · 71773 阅读 · 4 评论 -
MQTT Java 客户端
MQTT Java 客户端库Eclipse Paho Java Client 是用 Java 编写的 MQTT 客户端库(MQTT Java Client),可用于 JVM 或其他 Java 兼容平台(例如Android)。Eclipse Paho Java Client 提供了MqttAsyncClient 和 MqttClient 异步和同步 API。通过 Maven 安装 Paho Java通过包管理工具 Maven 可以方便地安装 Paho Java 客户端库,截止目前最新版本安装如下:原创 2021-06-26 14:20:49 · 71724 阅读 · 3 评论 -
MQTT 协议是什么
MQTT 协议是什么随着 5G 时代的来临,万物互联的伟大构想正在成为现实。联网的 物联网设备 在 2018 年已经达到了 70 亿,在未来两年,仅智能水电气表就将超过10亿。海量的设备接入和设备管理对网络带宽、通信协议以及平台服务架构都带来了很大挑战。对于 物联网协议 来说,必须针对性地解决物联网设备通信的几个关键问题:其网络环境复杂而不可靠、其内存和闪存容量小、其处理器能力有限。MQTT 协议 是基于发布/订阅模式的物联网通信协议,凭借简单易实现、支持 QoS、报文小等特点,占据了物联网协议的半原创 2021-06-26 09:55:13 · 71343 阅读 · 1 评论 -
开源 MQTT
到目前为止,比较流行的开源 MQTT 服务器有几个:1. Eclipse Mosquitto使用 C 语言实现的 MQTT 服务器。Eclipse 组织还还包含了大量的 MQTT 客户端项目:https://www.eclipse.org/paho/# 2. EMQ X 使用 Erlang 语言开发的 MQTT 服务器,内置强大的规则引擎,支持许多其他 IoT 协议比如 MQTT-SN、 CoAP、LwM2M 等。3. Mosca 使用 Node.JS 开发的 MQTT 服务器,简单易用原创 2021-06-26 09:40:41 · 83400 阅读 · 2 评论 -
MQTT协议介绍
MQTT协议概览MQTT是一个轻量的发布订阅模式消息传输协议,专门针对低带宽和不稳定网络环境的物联网应用设计。MQTT官网: http://mqtt.orgMQTT V3.1.1协议规范: http://docs.oasis-open.org/mqtt/mqtt/v3.1.1/os/mqtt-v3.1.1-os.html特点开放消息协议,简单易实现发布订阅模式,一对多消息发布基于TCP/IP网络连接1字节固定报头,2字节心跳报文,报文结构紧凑消息QoS支持,可靠传输保证应用MQ原创 2021-06-26 08:38:35 · 71566 阅读 · 2 评论 -
Dijkstra算法
戴克斯特拉算法(Dijkstra’s algorithm)是由荷兰计算机科学家艾兹赫尔·戴克斯特拉提出。迪科斯彻算法使用了广度优先搜索解决非负权有向图的单源最短路径问题,算法最终得到一个最短路径树。该算法常用于路由算法或者作为其他图算法的一个子模块。该算法的输入包含了一个有权重的有向图 G,以及G中的一个来源顶点 S。我们以 V 表示 G 中所有顶点的集合。每一个图中的边,都是两个顶点所形成的有序元素对。(u, v) 表示从顶点 u 到 v 有路径相连。我们以 E 表示G中所有边的集合,而边的权重则由权重原创 2021-02-17 12:19:05 · 71612 阅读 · 9 评论 -
BFS(广度优先搜索)
广度优先搜索算法(Breadth-First-Search),是一种图形搜索算法。简单的说,BFS是从根节点开始,沿着树(图)的宽度遍历树(图)的节点。如果所有节点均被访问,则算法中止。BFS同样属于盲目搜索。一般用队列数据结构来辅助实现BFS算法。算法步骤:1. 首先将根节点放入队列中。2. 从队列中取出第一个节点,并检验它是否为目标。如果找到目标,则结束搜寻并回传结果。否则将它所有尚未检验过的直接子节点加入队列中。3. 若队列为空,表示整张图都检查过了——亦即图中没有欲搜寻的目标。结束搜寻并原创 2021-02-17 12:16:48 · 77003 阅读 · 5 评论 -
DFS(深度优先搜索)
深度优先搜索算法(Depth-First-Search),是搜索算法的一种。它沿着树的深度遍历树的节点,尽可能深的搜索树的分支。当节点v的所有边都己被探寻过,搜索将回溯到发现节点v的那条边的起始节点。这一过程一直进行到已发现从源节点可达的所有节点为止。如果还存在未被发现的节点,则选择其中一个作为源节点并重复以上过程,整个进程反复进行直到所有节点都被访问为止。DFS属于盲目搜索。深度优先搜索是图论中的经典算法,利用深度优先搜索算法可以产生目标图的相应拓扑排序表,利用拓扑排序表可以方便的解决很多相关的图论问题原创 2021-02-17 12:14:45 · 460 阅读 · 1 评论 -
BFPRT(线性查找算法)
BFPRT算法解决的问题十分经典,即从某n个元素的序列中选出第k大(第k小)的元素,通过巧妙的分析,BFPRT可以保证在最坏情况下仍为线性时间复杂度。该算法的思想与快速排序思想相似,当然,为使得算法在最坏情况下,依然能达到o(n)的时间复杂度,五位算法作者做了精妙的处理。 算法步骤: 1. 将n个元素每5个一组,分成n/5(上界)组。 2. 取出每一组的中位数,任意排序方法,比如插入排序。 3. 递归的调用selection算法查找上一步中所有中位数的中位数,设为x,偶数个中位数的原创 2021-02-17 12:12:45 · 72254 阅读 · 6 评论 -
二分查找算法
二分查找算法是一种在有序数组中查找某一特定元素的搜索算法。搜素过程从数组的中间元素开始,如果中间元素正好是要查找的元素,则搜素过程结束;如果某一特定元素大于或者小于中间元素,则在数组大于或小于中间元素的那一半中查找,而且跟开始一样从中间元素开始比较。如果在某一步骤数组为空,则代表找不到。这种搜索算法每一次比较都使搜索范围缩小一半。折半搜索每次把搜索区域减少一半,时间复杂度为Ο(logn) 。...原创 2021-02-17 12:10:29 · 70898 阅读 · 3 评论 -
归并排序
归并排序(Merge sort,合并排序)是建立在归并操作上的一种有效的排序算法。该算法是采用分治法(Divide and Conquer)的一个非常典型的应用。算法步骤:1. 申请空间,使其大小为两个已经排序序列之和,该空间用来存放合并后的序列2. 设定两个指针,最初位置分别为两个已经排序序列的起始位置3. 比较两个指针所指向的元素,选择相对小的元素放入到合并空间,并移动指针到下一位置4. 重复步骤3直到某一指针达到序列尾5. 将另一序列剩下的所有元素直接复制到合并序列尾 ...原创 2021-02-17 11:47:24 · 70652 阅读 · 0 评论 -
堆排序算法
堆排序(Heapsort)是指利用堆这种数据结构所设计的一种排序算法。堆积是一个近似完全二叉树的结构,并同时满足堆积的性质:即子结点的键值或索引总是小于(或者大于)它的父节点。 堆排序的平均时间复杂度为Ο(nlogn) 。 算法步骤:创建一个堆H[0…n-1]把堆首(最大值)和堆尾互换把堆的尺寸缩小1,并调用shift_down(0),目的是把新的数组顶端数据调整到相应位置重复步骤2,直到堆的尺寸为1...原创 2021-02-17 10:40:00 · 70332 阅读 · 0 评论 -
快速排序算法
快速排序是由东尼·霍尔所发展的一种排序算法。在平均状况下,排序 n 个项目要Ο(n log n)次比较。在最坏状况下则需要Ο(n2)次比较,但这种状况并不常见。事实上,快速排序通常明显比其他Ο(n log n) 算法更快,因为它的内部循环(inner loop)可以在大部分的架构上很有效率地被实现出来。 快速排序使用分治法(Divide and conquer)策略来把一个串行(list)分为两个子串行(sub-lists)。算法步骤:从数列中挑出一个元素,称为 “基准”(pivot)重新排序数原创 2021-02-17 10:19:59 · 70625 阅读 · 0 评论