当前位置: 首页 > news >正文

32单片机从入门到精通之数据处理——数学运算(十三)

无论你身在何处,无论你面对什么困难,只要对自己充满信心,坚持不懈地努力,相信自己的能力,你就能战胜任何困难,实现自己的目标。不要害怕失败,因为失败并不意味着你没有能力成功,只是说明你还需要再努力一些。每一次挫折都是人生的一次锻炼,将使你变得更加坚强。无论遇到什么困难,都要勇敢地面对,不要放弃,相信自己,相信你的能力。记住,只有经历了艰辛的努力才能获得真正的成功。所以,不管遇到什么困难,都要坚持下去,直到达到自己的目标。

目录

上一张试卷

一、选择题(每题2分,共20分)

二、简答题(每题10分,共30分)

三、编程题(每题15分,共30分)

知识点讲解

1. 基本数学运算

平均值计算

最大值/最小值查找

简单的一阶低通滤波器

2. 高精度计算

浮点单元(FPU)

定点数运算

试卷

一、选择题(每题2分,共10分)

二、简答题(每题10分,共30分)

三、编程题(每题15分,共30分)


上一张试卷

一、选择题(每题2分,共20分)

  1. 在读取DHT22温湿度传感器数据时,以下哪个库可以简化操作?

    •  B. DHT.h
  2. I2C通信中,用于标识数据传输开始的是:

    •  C. 起始条件
  3. LM35温度传感器输出的电压值与摄氏度之间的关系是:

    •  B. 每10mV对应1°C
  4. PWM信号的主要用途之一是:

    •  B. 控制电机速度或LED亮度
  5. 下列哪种传感器通常使用I²C接口进行通信?

    •  B. ADXL345

二、简答题(每题10分,共30分)

  1. 描述如何使用Arduino平台上的DHT库读取DHT22传感器的数据。

     

    使用Arduino平台上的DHT库可以大大简化对DHT22温湿度传感器的操作。首先需要包含DHT.h库文件,然后定义连接传感器的引脚以及传感器类型。通过创建一个DHT类的对象,并调用其提供的方法如readHumidity()readTemperature()来获取湿度和温度数据。在程序初始化阶段(setup()函数),应该初始化串口通信以便于调试信息的输出,并调用dht.begin()来启动传感器。在主循环中,可以通过这些API读取并处理传感器数据。

  2. 解释如何利用微控制器内置的ADC将来自LM35温度传感器的模拟信号转换为数字值,并计算出实际温度。

     

    微控制器通常配备有模数转换器(ADC),它能够将模拟电压值转换成数字表示形式。对于LM35温度传感器,其输出电压与摄氏温度成线性关系,即每上升1°C,输出电压增加10mV。为了得到实际温度,我们先使用analogRead()函数读取连接到指定模拟输入引脚上的电压值,该函数返回一个介于0到1023之间的整数值,代表了0到5V的电压范围。接下来,根据比例换算公式 voltage = sensorValue * (5.0 / 1023.0) 计算实际电压,再通过 temperatureC = voltage * 100.0 将电压转换为摄氏温度。

  3. 说明PWM(脉宽调制)的工作原理以及它在控制电机或其他执行机构中的应用。

     

    PWM是一种用来生成具有可变占空比的方波的技术,其中周期固定但高电平时间(占空比)可以根据需要调整。当应用于电机驱动时,PWM允许改变施加给电机的平均电压,从而有效地调节电机的速度或扭矩。同样地,PWM也可以用来调整LED灯的亮度,通过快速切换LED的开关状态,在视觉上实现亮度的变化。此外,PWM还可以用于其他类型的执行器,例如伺服电机的位置控制等。


三、编程题(每题15分,共30分)

  1. 编写一段Arduino代码,初始化一个DHT22传感器并打印温度和湿度值。
#include <DHT.h>#define DHTPIN 2          // DHT22 数据引脚连接到数字引脚2
#define DHTTYPE DHT22     // 指定使用的是DHT22型号DHT dht(DHTPIN, DHTTYPE); // 创建DHT对象void setup() {Serial.begin(9600); // 初始化串行通信,波特率为9600dht.begin();        // 初始化DHT传感器
}void loop() {float humidity = dht.readHumidity();   // 读取湿度float temperature = dht.readTemperature(); // 读取温度if (isnan(humidity) || isnan(temperature)) { // 检查是否成功读取到了有效数值Serial.println("Failed to read from DHT sensor!");return;}// 打印湿度和温度值到串口监视器Serial.print("Humidity: ");Serial.print(humidity);Serial.print("%  Temperature: ");Serial.print(temperature);Serial.println("°C");delay(2000); // 等待两秒再读取新数据
}
  1. 编写一段Arduino代码,从模拟输入读取LM35温度传感器的电压值,将其转换为摄氏度,并通过串口打印出来。
const int analogPin = A0; // 定义模拟输入引脚void setup() {Serial.begin(9600); // 初始化串行通信,波特率为9600
}void loop() {int sensorValue = analogRead(analogPin); // 读取模拟引脚上的电压值// 将ADC值转换为实际温度(假设使用LM35,每10mV对应1°C)float voltage = sensorValue * (5.0 / 1023.0); // 转换为电压值float temperatureC = voltage * 100.0;         // 转换为摄氏度// 打印温度值到串口监视器Serial.print("Temperature: ");Serial.print(temperatureC);Serial.println("°C");delay(1000); // 等待一秒再读取新数据
}

这份试卷涵盖了基本的传感器接口知识,包括如何读取温度、湿度、加速度计等传感器的数据,处理模拟信号输入,以及控制PWM输出。

知识点讲解

在嵌入式系统中,进行数学运算是常见的任务,包括但不限于平均值、最大最小值的查找、滤波算法等。根据应用的需求和处理器的能力,可以选择使用浮点运算或定点数运算来实现这些功能。下面将详细讲解如何在嵌入式环境中执行基本的数学运算,并提供相应的代码示例及注释。

1. 基本数学运算
平均值计算

知识点讲解:

平均值(Mean)是统计学中最常用的度量之一,它反映了数据集的一般水平。对于一组数值 x1,x2,...,xnx1​,x2​,...,xn​,其平均值可以通过将所有数值相加后除以数值的数量 nn 来计算:

mean=x1+x2+...+xnnmean=nx1​+x2​+...+xn​​

代码及注释:

#include <stdio.h>// 函数:计算数组中所有元素的平均值
float calculate_average(int array[], int size) {float sum = 0; // 初始化累加器为0for (int i = 0; i < size; i++) {sum += array[i]; // 将每个元素加入到累加器中}return sum / size; // 返回平均值,即总和除以元素数量
}int main() {int data[] = {1, 2, 3, 4, 5}; // 定义一个整型数组int size = sizeof(data) / sizeof(data[0]); // 计算数组大小// 调用函数并打印结果printf("Average: %.2f\n", calculate_average(data, size));return 0;
}
最大值/最小值查找

知识点讲解:

为了找到一组数据的最大值或最小值,我们需要遍历整个数据集,并且不断更新当前已知的最大值或最小值。开始时可以假设第一个元素就是最大/最小值,然后逐个比较其他元素。

代码及注释:

#include <stdio.h>// 函数:查找数组中的最大值和最小值
void find_max_min(int array[], int size, int *max, int *min) {*max = *min = array[0]; // 初始化最大值和最小值为第一个元素for (int i = 1; i < size; i++) {if (array[i] > *max) *max = array[i]; // 更新最大值if (array[i] < *min) *min = array[i]; // 更新最小值}
}int main() {int data[] = {3, 1, 4, 1, 5, 9, 2, 6, 5, 3}; // 定义一个整型数组int size = sizeof(data) / sizeof(data[0]);int max, min;// 调用函数并打印结果find_max_min(data, size, &max, &min);printf("Max: %d, Min: %d\n", max, min);return 0;
}
简单的一阶低通滤波器

知识点讲解:

滤波器用于减少信号中的噪声成分。一阶低通滤波器是一种简单的线性滤波器,它允许低频信号通过而衰减高频信号。它可以用来平滑快速变化的数据序列,如传感器读数。公式如下:

y[n]=α⋅y[n−1]+(1−α)⋅x[n]y[n]=α⋅y[n−1]+(1−α)⋅x[n]

其中 αα 是介于0到1之间的滤波系数,y[n]y[n] 是当前输出,y[n−1]y[n−1] 是上一次输出,x[n]x[n] 是当前输入。

代码及注释:

#include <stdio.h>#define FILTER_COEFFICIENT 0.9 // 滤波系数,接近1表示更慢响应,但更好的平滑效果// 函数:实现一阶低通滤波器
float low_pass_filter(float input, float previous_output) {return FILTER_COEFFICIENT * previous_output + (1 - FILTER_COEFFICIENT) * input;
}int main() {float input_samples[] = {1.0, 2.0, 3.0, 2.5, 2.0, 1.5, 1.0}; // 输入样本int num_samples = sizeof(input_samples) / sizeof(input_samples[0]);float output = 0.0; // 初始化输出值为0// 对每个输入样本应用滤波器for (int i = 0; i < num_samples; i++) {output = low_pass_filter(input_samples[i], output); // 更新输出printf("Filtered Output: %.2f\n", output); // 打印过滤后的输出}return 0;
}
2. 高精度计算
浮点单元(FPU)

知识点讲解:

现代微控制器通常内置了硬件浮点单元(FPU),可以直接支持IEEE 754标准的单精度(32位)和双精度(64位)浮点数运算。这使得执行复杂的数学运算更加容易,并且能够提供更高的精度。然而,浮点运算相对消耗更多的资源,因此需要权衡性能和功耗。

注意事项:

  • 使用浮点数时应注意溢出、舍入误差等问题。
  • 如果可能的话,尽量减少不必要的浮点运算,以节省资源。
定点数运算

知识点讲解:

对于没有FPU或者为了节省资源的情况,可以采用定点数运算。定点数是一种模拟浮点数的方式,但只使用整数表示法。开发者必须明确指定小数点的位置,并手动处理溢出等问题。虽然这种方法牺牲了一些灵活性和易用性,但它可以在资源受限的环境中提供足够的精度,同时保持较低的能耗。

注意事项:

  • 在设计定点算法时,需考虑数值范围和精度要求。
  • 必须小心处理乘法和除法操作,因为它们可能导致溢出或不准确的结果。

上述代码片段展示了如何在C语言中实现基本的数学运算以及简单的滤波算法。当涉及到更复杂的应用时,可能还需要考虑数值稳定性、边界条件处理等因素。此外,在选择浮点还是定点运算时,应该基于具体应用场景的要求来决定,考虑到精度需求、性能限制和功耗等因素。希望这些内容能帮助你更深入地理解各个知识点,并且能够根据提供的代码示例快速上手实践。

试卷

一、选择题(每题2分,共10分)

  1. 在计算平均值时,如果数据集为 x1,x2,...,xnx1​,x2​,...,xn​,则平均值的公式是:

    • A. mean=x1+x2+...+xnn+1mean=n+1x1​+x2​+...+xn​​
    • B. mean=x1+x2+...+xnnmean=nx1​+x2​+...+xn​​
    • C. mean=x1+x2+...+xn−1nmean=nx1​+x2​+...+xn−1​​
    • D. mean=x1+x2+...+xn−1n−1mean=n−1x1​+x2​+...+xn−1​​
  2. 下列哪种方法可以用来查找一组数据的最大值?

    • A. 遍历数组并更新最大值
    • B. 对数组进行排序后取第一个元素
    • C. 计算所有元素的和然后除以元素数量
    • D. 取所有元素的乘积再开平方根
  3. 一阶低通滤波器的主要作用是什么?

    • A. 提高信号频率
    • B. 减少高频噪声
    • C. 增加信号幅度
    • D. 改变信号相位
  4. 在嵌入式系统中,为了节省资源而选择不使用浮点运算时,通常会采用什么方式来替代?

    • A. 整数运算
    • B. 定点数运算
    • C. 字符串运算
    • D. 布尔运算
  5. 浮点单元(FPU)能够支持哪种标准的浮点数运算?

    • A. IEEE 754
    • B. ASCII
    • C. Unicode
    • D. UTF-8

二、简答题(每题10分,共30分)

  1. 描述如何在嵌入式系统中计算一组数值的平均值,并提供一个简单的C语言代码示例。

  2. 解释如何在嵌入式系统中找到一组数值的最大值和最小值,并给出相应的C语言代码。

  3. 说明一阶低通滤波器的工作原理及其在嵌入式应用中的实际用途,并附上一段C语言代码实现。


三、编程题(每题15分,共30分)

  1. 编写一段C语言代码,初始化一个包含若干整数的数组,并计算这些整数的平均值。

  2. 编写一段C语言代码,从用户输入获取一系列整数,存储在一个动态分配的数组中,然后找到这个数组中的最大值和最小值,并通过屏幕输出。

相关文章:

32单片机从入门到精通之数据处理——数学运算(十三)

无论你身在何处&#xff0c;无论你面对什么困难&#xff0c;只要对自己充满信心&#xff0c;坚持不懈地努力&#xff0c;相信自己的能力&#xff0c;你就能战胜任何困难&#xff0c;实现自己的目标。不要害怕失败&#xff0c;因为失败并不意味着你没有能力成功&#xff0c;只是…...

latex_学习

参考&#xff1a; https://www.overleaf.com/learn/latex/Free_online_introduction_to_LaTeX_(part_3)https://www.overleaf.com/learn/latex/Free_online_introduction_to_LaTeX_(part_2)https://www.overleaf.com/learn/latex/Free_online_introduction_to_LaTeX_(part_1) …...

小程序textarea组件键盘弹起会遮挡住输入框

<textarea value"{{remark}}" input"handleInputRemark" ></textarea> 如下会有遮挡&#xff1a; 一行代码搞定 cursor-spacing160 修改后代码 <textarea value"{{remark}}" input"handleInputRemark" cursor-spacin…...

vue之element-ui文件上传(二)

一、点击上传&#xff0c;使用默认的action上传&#xff0c;添加校验&#xff0c;上传成功后&#xff0c;去除校验&#xff1a; <el-form-item label"文件md5" prop"fileMd5"><el-uploadv-if"!form.fileMd5"v-model"form.fileMd5&…...

DC/AC并网逆变器模型与仿真MATLAB

DC/AC并网逆变器是一种将直流电&#xff08;DC&#xff09;转化为交流电&#xff08;AC&#xff09;&#xff0c;并将其与电网并联的设备。它的核心功能是实现直流电源&#xff08;如光伏电池板或储能电池&#xff09;与电网的有效连接&#xff0c;同时保证输出电能质量满足电网…...

python面向对象

面向对象简介 python完全采用了面向对象的思想&#xff0c;是真正面向对象的变成语言&#xff0c;完全支持面向对象的基本功能&#xff0c;例如&#xff1a;继承、多态、封装等 python中&#xff0c;一切皆为对象。前面学习的数据类型、函数等都是对象 面向过程和面向对象思…...

【UI自动化测试】selenium八种定位方式

&#x1f3e1;个人主页&#xff1a;謬熙&#xff0c;欢迎各位大佬到访❤️❤️❤️~ &#x1f472;个人简介&#xff1a;本人编程小白&#xff0c;正在学习互联网求职知识…… 如果您觉得本文对您有帮助的话&#xff0c;记得点赞&#x1f44d;、收藏⭐️、评论&#x1f4ac;&am…...

基于物联网疫苗冷链物流监测系统设计

1. 项目开发背景 随着全球对疫苗运输要求的提高&#xff0c;特别是针对温度敏感型药品&#xff08;如疫苗&#xff09;的冷链管理&#xff0c;如何保证疫苗在运输过程中的温度、湿度、震动等环境因素的稳定性已成为亟需解决的问题。疫苗运输过程中&#xff0c;任何温度或湿度的…...

实训云上搭建集群

文章目录 1. 登录实训云1.1 实训云网址1.2 登录实训云 2. 创建网络2.1 网络概述2.2 创建步骤 3. 创建路由器3.1 路由器名称3.1 创建路由器3.3 查看网络拓扑 4. 连接子网5. 创建虚拟网卡5.1 创建原因5.2 查看端口5.3 创建虚拟网卡 6. 管理安全组规则6.1 为什么要管理安全组规则6…...

【网页自动化】篡改猴入门教程

安装篡改猴 打开浏览器扩展商店&#xff08;Edge、Chrome、Firefox 等&#xff09;。搜索 Tampermonkey 并安装。 如图安装后&#xff0c;浏览器右上角会显示一个带有猴子图标的按钮。 创建用户脚本 已进入篡改猴管理面板点击创建 脚本注释说明 name&#xff1a;脚本名称。…...

(概率论)无偏估计

参考文章&#xff1a;(15 封私信 / 51 条消息) 什么是无偏估计&#xff1f; - 知乎 (zhihu.com) 首先&#xff0c;第一个回答中&#xff0c;马同学图解数学讲解得很形象&#xff0c; 我的概括是&#xff1a;“注意&#xff0c;有一个总体的均值u。然后&#xff0c;如果抽样n个&…...

JavaScript 正则表达式

JavaScript 正则表达式(RegEx)是一种强大的工具,用于在字符串中查找匹配的模式、替换文本,或者验证输入的格式。下面是一些常用的正则表达式操作和语法: 常用正则表达式符号: .:匹配任意字符(除了换行符)。^:匹配输入字符串的开始。$:匹配输入字符串的结束。[]:定…...

Swift语言的正则表达式

Swift语言的正则表达式 正则表达式是一种用于匹配字符串的强大工具&#xff0c;它可以帮助开发者在文本处理中高效地搜索和操作字符串。在Swift语言中&#xff0c;正则表达式的支持是通过Foundation框架提供的。本文将全面介绍Swift中的正则表达式&#xff0c;从基础知识到进阶…...

Matlab 数据处理与可视化的多元拓展应用(具体代码分析)

一、代码整体功能概述&#xff1a; 该代码主要实现了以下几个功能&#xff1a; 从文件&#xff08;part1.txt&#xff09;中读取数据&#xff0c;并提取第二列数据&#xff0c;将其存储在 originalColumnData 中。对原始数据进行可视化&#xff0c;包括绘制置零前数据的折线图…...

小程序与内嵌网页的数据通信

小程序与内嵌网页的数据通信 前言 微信小程序提供了web-view组件&#xff0c;允许开发者在小程序中嵌入网页。然而&#xff0c;由于小程序和网页运行在不同的环境中&#xff0c;它们之间的通信就需要依赖特定的机制来实现。然而我们日常的需求中&#xff0c;很多的时候都涉及…...

【学习笔记】数据结构(十一)

外部排序 文章目录 外部排序11.1 外存信息的存取11.2 外部排序的方法11.3 多路平衡归并的实现 - 增加k11.4 置换-选择排序 - 减少m11.5 最佳归并树 外部排序 指的是大文件的排序&#xff0c;即待排序的记录存储在外存储器 上&#xff0c;在排序过程中需进行多次的内、外存之间的…...

【Logstash03】企业级日志分析系统ELK之Logstash 过滤 Filter 插件

Logstash 过滤 Filter 插件 数据从源传输到存储库的过程中&#xff0c;Logstash 过滤器能够解析各个事件&#xff0c;识别已命名的字段以构建结构&#xff0c; 并将它们转换成通用格式&#xff0c;以便进行更强大的分析和实现商业价值。 Logstash 能够动态地转换和解析数据&a…...

深度学习模型部署——基于Onnx Runtime的深度学习模型CPU与GPU部署(C++实现)

1.概述 许多机器学习和深度学习模型都是在基于 Python 的框架中开发和训练的&#xff0c;例如 PyTorch 和 TensorFlow 等。但是&#xff0c;当需要将这些训练好模型部署到生产环境中时&#xff0c;通常会希望将模型集成到生产流程中&#xff0c;而这些流程大多是用 C 编写的&a…...

Selenium 的四种等待方式及使用场景

Selenium 的四种等待方式及使用场景 隐式等待&#xff08;Implicit Wait&#xff09;显式等待&#xff08;Explicit Wait&#xff09;自定义等待&#xff08;Custom Wait&#xff09;固定等待&#xff08;Sleep&#xff09; 1. 隐式等待 定义&#xff1a; 隐式等待是为 WebD…...

攻防世界 ics-07

点击之后发现有个项目管理能进&#xff0c;点进去&#xff0c;点击看到源码&#xff0c;如下三段 <?php session_start(); if (!isset($_GET[page])) { show_source(__FILE__); die(); } if (isset($_GET[page]) && $_GET[page] ! index.php) { include(flag.php);…...

一文读懂「LoRA」:大型语言模型的低秩适应

LoRA: Low-Rank Adaptation of Large Language Models 前言 LoRA作为大模型的微调框架十分实用&#xff0c;在LoRA出现以前本人都是通过手动修改参数、优化器或者层数来“炼丹”的&#xff0c;具有极大的盲目性&#xff0c;但是LoRA技术能够快速微调参数&#xff0c;如果LoRA…...

新车月交付突破2万辆!小鹏汽车“激活”智驾之困待解

首次突破月交付2万辆规模的小鹏汽车&#xff0c;稳吗&#xff1f; 本周&#xff0c;高工智能汽车研究院发布的最新监测数据显示&#xff0c;2024年11月&#xff0c;小鹏汽车在国内市场&#xff08;不含出口&#xff09;交付量&#xff08;上险口径&#xff0c;下同&#xff09…...

dockerfile 中 #(nop)

在 Dockerfile 中&#xff0c;#(nop) 通常出现在 docker history 命令的输出中。以下是对它的详细解释&#xff1a; 背景 当你使用 docker history <image_name> 命令查看 Docker 镜像的构建历史时&#xff0c;你可能会看到 #(nop) 这样的标记。这是因为 Docker 镜像由…...

升级 Spring Boot 3 配置讲解 —— 为何 SpringBoot3 淘汰了 JDK8?

学会这款 &#x1f525;全新设计的 Java 脚手架 &#xff0c;从此面试不再怕&#xff01; 随着 Spring Boot 3 的发布&#xff0c;许多开发者发现了一个重要的变化&#xff1a;Spring Boot 3 不再支持 JDK 8。这一变化引发了不少讨论&#xff0c;尤其是对于那些仍然在使用 JDK …...

IT面试求职系列主题-人工智能(一)

想成功求职&#xff0c;必要的IT技能一样不能少&#xff0c;再从人工智能基础知识来一波吧。 1&#xff09;您对人工智能的理解是什么&#xff1f; 人工智能是计算机科学技术&#xff0c;强调创造能够模仿人类行为的智能机器。这里智能机器可以定义为能够像人一样行动、像人一…...

JVM 优化指南

JVM 优化指南 1. JVM 参数配置 1.1 基础参数配置 设置堆内存大小 -Xms2048m -Xmx2048m 设置新生代大小 -Xmn1024m 设置元空间大小 -XX:MetaspaceSize256m -XX:MaxMetaspaceSize256m 设置线程栈大小 -Xss512k1.2 垃圾回收器配置 使用 G1 垃圾回收器 -XX:UseG1GC 设置期望停顿…...

windows下编写的shell脚本在Linux下执行有问题解决方法

前言&#xff1a; 这个问题在实际工作中经常会遇到(非语法错误)&#xff0c;脚本来源有些是自己在windows系统编写的、有些是从别人那里copy来的&#xff0c;还有些原本是好的被别人拿到windows下修改了一些内容&#xff0c;总之各种场景&#xff0c;但是如果是一个内容比较多的…...

使用 SQL 和表格数据进行问答和 RAG(6)—将指定目录下的 CSV 或 Excel 文件导入 SQLite 数据库

将指定目录下的 CSV 或 Excel 文件导入 SQLite 数据库。以下是详细代码逻辑&#xff1a; 1. 类结构 该类包含三个主要方法&#xff1a; _prepare_db&#xff1a;负责将文件夹中的 CSV 和 XLSX 文件转换为 SQL 表。_validate_db&#xff1a;用于验证 SQL 数据库中创建的表是否…...

【算法】算法大纲

这篇文章介绍计算机算法的各个思维模式。 包括 计数原理、数组、树型结构、链表递归栈、查找排序、管窥算法、图论、贪心法和动态规划、以及概率论:概率分治和机器学习。没有办法逐个说明,算法本身错综复杂,不同的算法对应着不同的实用场景,也需要根据具体情况设计与调整。…...

vue(2,3), react (16及以上)开发者工具资源

在前端开发的广阔领域中&#xff0c;Vue.js 和 React.js 作为两大主流框架&#xff0c;各自拥有庞大的用户群体和丰富的生态系统。为了帮助开发者更高效地进行调试和开发&#xff0c;Vue Devtools 和 React 开发者工具应运而生&#xff0c;成为这两个框架不可或缺的辅助工具。本…...

系统编程(网络,文件基础)

网络链接 虚拟机和主机之间网络连接的主要模式有三种&#xff0c;分别是桥接模式&#xff08;Bridged&#xff09;、网络地址转换模式&#xff08;NAT&#xff09;以及主机模式&#xff08;Host-Only&#xff09;。以下是这三种模式的详细解释&#xff1a; 一、桥接模式&…...

重温设计模式--13、策略模式

策略模式介绍 文章目录 策略模式介绍C 代码示例 策略模式是一种行为设计模式&#xff0c;它允许在运行时选择算法的行为。该模式将算法的定义和使用分离开来&#xff0c;使得算法可以独立于使用它的客户端而变化&#xff0c;提高了代码的灵活性和可维护性。 其主要包含以下几个…...

数字IC设计高频面试题

在数字IC设计领域&#xff0c;面试是评估候选人技术能力和问题解决能力的重要环节。数字IC设计的复杂性和要求在不断提高。面试官通常会提出一系列面试题&#xff0c;以考察应聘者在数字设计、验证、时钟管理、功耗优化等方面的专业知识和实践经验。 这些题目不仅涉及理论知识…...

C#异步多线程——ThreadPool线程池

C#实现异步多线程的方式有多种&#xff0c;以下总结的是ThreadPool的用法。 线程池的特点 线程池受CLR管理&#xff0c;线程的生命周期&#xff0c;任务调度等细节都不需要我们操心了&#xff0c;我们只需要专注于任务实现&#xff0c;使用ThreadPool提供的静态方法把我们的任…...

矩母函数(MGF)

矩母函数&#xff08;MGF&#xff09;简介 矩母函数&#xff08;Moment Generating Function&#xff0c;MGF&#xff09;是概率统计中描述随机变量分布特征的重要工具。MGF的主要用途是通过导数来计算随机变量的矩&#xff08;比如均值、方差等&#xff09;&#xff0c;同时它…...

【技术支持】安卓无线adb调试连接方式

Android 10 及更低版本&#xff0c;需要借助 USB 手机和电脑需连接在同一 WiFi 下&#xff1b;手机开启开发者选项和 USB 调试模式&#xff0c;并通过 USB 连接电脑&#xff08;即adb devices可以查看到手机&#xff09;&#xff1b;设置手机的监听adb tcpip 5555;拔掉 USB 线…...

OpenCV相机标定与3D重建(46)将三维空间中的点投影到二维图像平面上函数projectPoints()的使用

操作系统&#xff1a;ubuntu22.04 OpenCV版本&#xff1a;OpenCV4.9 IDE:Visual Studio Code 编程语言&#xff1a;C11 算法描述 将3D点投影到图像平面上。 cv::projectPoints 是 OpenCV 库中的一个函数&#xff0c;用于将三维空间中的点投影到二维图像平面上。这个过程涉及到…...

Android wifi常见问题及分析

参考 Android Network/WiFi 那些事儿 前言 本文将讨论几个有意思的网络问题&#xff0c;同时介绍 Android 上常见WiFi 问题的分析思路。 网络基础Q & A 一. 网络分层缘由 分层想必大家很熟悉&#xff0c;是否想过为何需要这样分层&#xff1f; 网上大多都是介绍每一层…...

如何用 ESP32-CAM 做一个实时视频流服务器

文章目录 ESP32-CAM 概述ESP32-S 处理器内存Camera 模块MicroSD 卡槽天线板载 LED 和闪光灯其他数据手册和原理图ESP32-CAM 功耗 ESP32-CAM 引脚参考引脚排列GPIO 引脚哪些 GPIO 可以安全使用&#xff1f;GPIO 0 引脚MicroSD 卡引脚 ESP32-CAM 的烧录方式使用 ESP32-CAM-MB 编程…...

编译与汇编

本文来自《程序员的自我修养》 编译过程是把预处理完的文件进行一系列词法分析&#xff0c;语法分析&#xff0c;语义分析以及优化后生成相应的汇编文件代码。 现在版本的GCC把预编译和编译两个步骤合并为一个步骤。 gcc -S HelloWorld.c HelloWorld.sint main() {//test/* …...

Linux入门攻坚——43、keepalived入门-1

Linux Cluster&#xff08;Linux集群的类型&#xff09;&#xff1a;LB、HA、HPC&#xff0c;分别是负载均衡集群、高可用性集群、高性能集群。 LB&#xff1a;lvs&#xff0c;nginx HA&#xff1a;keepalived&#xff0c;heartbeat&#xff0c;corosync&#xff0c;cman HP&am…...

备考蓝桥杯:顺序表相关算法题

目录 询问学号 寄包柜 移动0 颜色分类 合并两个有序数组 物品移动 询问学号 我们的思路&#xff1a;创建一个顺序表存储从1开始依次存放进入教室的学生学号&#xff0c;然后查询 #include <iostream> #include <vector> using namespace std; const int N 2…...

【STM32+QT项目】基于STM32与QT的智慧粮仓环境监测与管理系统设计(完整工程资料源码)

视频演示: 基于STM32与QT的智慧粮仓环境监测与管理系统设计 目录: 目录 视频演示: 目录: 前言:...

Vue3 自定义hook

文章目录 Vue3 自定义hook概述用法 Vue3 自定义hook 概述 Vue3推荐利用Vue的组合式API函数进行代码封装&#xff0c;这种封装方式统称为自定义hook。 用法 定义 hook/countHook.js&#xff1a; import {computed, ref, watch} from "vue";export default (initC…...

【VBA】【EXCEL】将某列内容横向粘贴到指定行

Sub CopyRowToColumn()On Error GoTo ErrorHandler 添加错误处理Application.ScreenUpdating FalseApplication.Calculation xlCalculationManualApplication.EnableEvents False 禁用事件处理Dim lastCol As LongDim lastRow As LongDim i As Long, colCount As LongDim …...

使用Llama 3.1创建合成数据集以调优你的大型语言模型

使用Llama 3.1创建合成数据集以调优你的大型语言模型 在数据驱动的人工智能领域&#xff0c;数据是核心资产。开发高质量数据集既复杂又昂贵&#xff0c;因此很多实验室和开发者选择使用合成数据集。本文将介绍如何利用大型语言模型Llama 3.1 405B创建合成数据集&#xff0c;并…...

【Ubuntu22.04】VMware虚拟机硬盘扩容

1.首先打开虚拟机设置 2.根据需要对硬盘扩展 这边提示我们还需要进入虚拟机在内部分区 3.安装界面化磁盘管理工具 # 安装 sudo apt install gparted# 启动 sudo gparted调整硬盘大小 调整的时候会提示我们硬盘是只读的&#xff0c;因此还要进行操作 新建终端重新挂载文件系…...

初学stm32 --- DMA直接存储器

目录 DMA介绍 STM32F1 DMA框图 DMA处理过程 DMA通道 DMA优先级 DMA相关寄存器介绍 F1 DMA通道x配置寄存器&#xff08;DMA_CCRx&#xff09; DMA中断状态寄存器&#xff08;DMA_ISR&#xff09; DMA中断标志清除寄存器&#xff08;DMA_IFCR&#xff09; DMA通道x传输…...

reactor中的并发

1. reactor中的并发有两种方式 1.1 flatmap&#xff0c;底层是多线程并发处理。在reactor的演讲中&#xff0c;flatmap对于io类型的并发效果较好. flamap有两个参数: int concurrency, int prefetch。分别代表并发的线程数和缓存大小 注意凡是参数中有prefetch的&#xff0c;都…...

HTML - <script>,<noscript>

<script>标签用于在网页插入脚本&#xff0c;<noscript>标签用于指定浏览器不支持脚本时的显示内容。 1.<script> <script>用于加载脚本代码&#xff0c;目前主要是加载 JavaScript 代码。 <script> console.log(hello world); </script&g…...