摘要:
介绍 一、MQTT简介 MQTT(Message Queuing Telemetry Transport) 是一种轻量级的消息传输协议,通常用于在物联网(IoT)和传感器网络中进行通信。它设计用于在低带宽、不稳定或高延迟的网络环境下传输数据,因此非常适用于连接设备之间的通信,尤其是在资源有限的环境中 阅读全文
摘要:
## 引言 今天在做一个设置文件夹路径的功能,就是一个文本框,加个按钮,点击按钮,弹出 `FolderBrowserDialog` 再选择文件夹路径,简单做法,可以直接 `StackPanel` 横向放置一个 `TextBox` 和一个 `Image Button`,然后点击按钮在 后台代码中给 ` 阅读全文
摘要:
## 引言 排序算法是最基础的算法,对于排序算法,除学习算法原理,代码实现之外,更重要的是学习每个算法的特点,知道在什么场景下选择那种算法。 那一定是选择时间复杂度最低的排序算法就是最优的吗? 可以从以下几个方面分析一下。 ## 排序算法的执行效率 对于排序算法的执行效率,一般从以下几个方面来分析: 阅读全文
摘要:
## 介绍 **CAS**(Compare And Swap) 是一种无锁算法的实现手段,中文名称为比较并交换。它由 CPU 的原子指令实现,可以在多线程环境下实现无锁的数据结构。 ### 原理 **CAS** 的原理是:它会先比较内存中的某个值是否和预期值相同,如果相同则更新这个值,否则不做任何操 阅读全文
摘要:
## 灵感 最近在做配置模块,然后整个配置的参数是非常多的,层级结构也很深。可能有几百个参数,三、四层的层级关系,想要捋顺所有的类和参数,太繁琐了,而且 Visual Studio 的类视图只能看到属性,却看不出层级关系来,所以花费些许精力,写一个控制台小程序,展示类结构。 原理就是通过反射得到所有 阅读全文
摘要:
## 引言 最近想把一些英文官方文档的资料翻译成中文,然后转化为Markdown文档,然后发现[百度通用翻译的API](https://fanyi-api.baidu.com/doc/21)有不错的免费额度,个人申请也能申请到高级版。这个额度足够个人的日常使用了。 ![image.png](http 阅读全文
摘要:
## 引言 上一篇[数据结构与算法 排序算法(一)](https://niuery.com/post/54)中,学习了冒泡排序,插入排序,选择排序这三种时间复杂度为 $O(n^2)$ 的算法。实时上 $O(n^2)$ 时间复杂度是非常高的,所以一般只适合小规模数据排序,那接下来,就在看一看时间复杂度 阅读全文
摘要:
## 引言 按照时间复杂度,将一些常见排序算法进行分类,分为以下三类: - $O(n^2)$:冒泡排序,插入排序,选择排序。 - $O(nlogn)$:快速排序,归并排序。 - $O(n)$:桶排序,计数排序,基数排序。 本篇文章讨论以下第一类:冒泡排序,插入排序,选择排序。 上一篇[数据结构与算法 阅读全文
摘要:
## 引言 上文[数据结构与算法 递归(一)](https://niuery.com/post/51) 讲述了什么是递归算法,如何编写递归算法及如何写好递归算法,本文着重讲述一下如何避免递归过深导致的堆栈溢出问题。 ## 探究产生堆栈溢出的原因 函数调用采用**函数调用栈**来保存当前“快照”(局部 阅读全文
摘要:
## 什么是递归? **递归(Recursion)** 是一种解决问题的方法,它将问题分解为更小的子问题,并逐层解决这些子问题。递归算法的核心思想是:**一个函数可以直接或间接地调用自身**。通过这种自我调用,我们可以用简洁的代码来解决复杂问题。 ## 满足递归的条件 一般来说,满足下面三个条件就可 阅读全文