thumbnail
详细了解多线程和多进程 C/C++
0、线程和进程 进程是指一个程序的运行实例,而线程是指进程中独立的执行流程。 一个进程可以有多个线程,多个线程之间可以并发执行。 不同进程拥有不同的地址空间,互不相关,而不同线程共同拥有相同进程的地址空间。 创建一个新线程的代价要比创建一个新进程小得多 与进程之间的切换相比,线程之间的切换需要操作系统做的工作要少很多 线程占用的资源要比进程少很多 …
thumbnail
TCP和UDP的运作原理和C/C++的网络编程实现
1、TCP 0、数据协议 七层网络协议 1、TCP协议 0、概念 TCP(Transmission Control Protocol 传输控制协议)是一种面向连接(连接导向)的、可靠的、 基于IP的传输层协议。 七层协议 TCP工作在网络OSI的七层模型中的第四层——传输层,IP在第三层——网络层,ARP 在第二层——数据链路层;数据从应用层发下来…
thumbnail
PID 算法
0、前言 我这个文章慢慢更新,我现在也是学习阶段,后面会慢慢更新 1、 PID的概述 在我们学习PID之前在程序经常会写 if(温度<温度阈值) { 加热 } else { 不加热 } 他就是直接判断当前的测量值是否跟我的阈值相同,如果相同做什么,不相同就做什么。这样虽然可以做出判断保证这个事件有被处理但是不精确,就比如这个加热模块,我要保证…
thumbnail
树莓派记录
0、锁定文件 sudo rm /var/lib/apt/lists/lock # 解决 “Could not get lock /var/lib/apt/lists/lock”错误 sudo rm /var/lib/dpkg/lock # 解决 “Could not get lock /var/lib/dpkg/lock”错误 1、32位更改源(6…
thumbnail
使用hexo+github搭建个人博客
1、安装软件 1、hexo是什么 官网:hexo.io Hexo 是一个快速、简洁且高效的静态博客框架,它基于 Node.js 运行,可以将我们撰写的 Markdown 文档解析渲染成静态的 HTML 网页。 2、node 安装 nodejs, 因为Hexo是基于 Node.js 驱动的一款博客框架。 ⭐nodejs下载地址 3、git 安装git…
thumbnail
排序算法
1、冒泡排序 原理 从第一个开始与后面的一个比较如果不相等就替换,一直比下去就会把最大的或者最小的比到最后一个元素,下一次比较的时候就把第二大或者第二小的放在倒数第二个,依次重复下去就实现排序。 时间复杂度 冒泡排序最好的时间复杂度为O(n) 冒泡排序的最坏时间复杂度为O(n^2) 冒泡排序最好的时间复杂度为O(n) 空间复杂度 排序过程中只是使用…
thumbnail
stm32f103c8t6+esp8266(esp-01s)+mqtt固件+hal库连接阿里云(最详细+可移植)教程
概要 STM32F103c8t6+ESP8266(esp-01s)+MQTT固件 连接阿里云 里面用到了对串口不定长的数据的DMA+中断的接受方式。不了解的可以看这个篇文章STM32F407的串口接收不定长数据两种方式HAL库 一、MQTT固件 对于该项目我们利用了MQTT固件,这个固件可以让我们更加简单的利用MQTT进行数据传输,利用该固件我们不…
thumbnail
基于智能家居的安防系统
0、任务需求 采集摄像头、烟雾传感器、温湿度传感器 (DHT11)、火焰传感器、光敏传感器 执行器:风扇、花洒、led灯 pc端订阅:video_stream、shu_data pc端发布:pc_data 树莓派:发布视频流到:video_stream, 发布数据:shu_data,接收(订阅)数据在:pc_data 温度:tem 温度阈值: th…
thumbnail
笔试合集
1、宏定义printf() 问题提出 有时候我们想用宏定义来决定是编译debug版本的代码还是release的代码,dubug版本的代码会通过printf打印调试信息,release版本的代码则不会。我们总不能对每一条printf都这样写: #if IS_DEBUG printf("hello world!"); #endif …
thumbnail
STM32F407的串口接收不定长数据两种方式HAL库
概要 STM32的串口接收不定长数据,最近在看超子说物联网,感觉太麻烦了不适合直接上手,然后我自己总结了两种方法: 1、不利用DMA 2、利用DMA方式 整体架构流程 这个HAL整起来是方便,但是HAL整体来说对于细节很到位就是逻辑很强逻辑,也就很繁琐,效率又不高,还缺胳膊少腿的。好用,就比如说这个串口接收,没有专门的方法调用。搞的就很麻烦,我第一…