【蓝桥杯——物联网设计与开发】拓展模块3 - 温度传感器模块
一、温度传感器模块
(1)资源介绍
🔅原理图
蓝桥杯物联网竞赛实训平台提供了一个拓展接口 CN2,所有拓展模块均可直接安装在 Lora 终端上使用;

温度传感器模块电路原理图如下所示:

通过两张电路图连接可知,引脚资源配置情况为:
Temperature | MCU |
---|---|
SCL | PB6 |
SDA | PB7 |
ALE | PB0 |
🔅STS30-DIS-B(以下资料来源于STS30-DIS-B数据手册)
STS3x-DIS是盛思锐最新的高精度数字温度传感器。它依赖于业界成熟的CMOSens®技术,与其前身相比,提供更高的智能,可靠性和更高的精度规格。其功能包括增强的信号处理,两个独特的用户可选择的I2C地址和高达1 MHz的通信速度。DFN封装的占地面积为2.5 x 2.5 mm2,同时保持0.9 mm的高度。这允许将STS3x-DIS集成到各种各样的应用中。此外,2.15 V至5.5 V的宽电源电压范围保证了广泛应用的兼容性。总而言之,STS3x-DIS融合了盛思锐超过15年的数字传感器专业知识。

🌙引脚分配
Pin | Name | Comments |
---|---|---|
1 | SDA | 串行数据;输入/输出 |
2 | ADDR | 地址引脚;输入;连接到逻辑高或低,不要浮空 |
3 | ALERT | 指示警告状态;输出;如果不使用,必须保持浮空 |
4 | SCL | 串行时钟;输入/输出 |
5 | VDD | 电源电压;输入 |
6 | nRESET | 复位引脚,低电平有效;输入;如果不使用,建议保持浮空状态;可通过串联电阻R≥2kΩ与VDD连接 |
7 | R | 无电气功能;连接到VSS |
8 | VSS | 接地 |
🌙通信
向传感器发送命令后,在传感器接收另一条命令之前,需要最小的等待时间为1ms。
所有STS30-DIS-B命令和数据都映射到16位地址空间。此外,数据和命令受到CRC校验和的保护。这提高了通信的可靠性。对传感器的16位命令已经包括3位CRC校验和。传感器发送和接收的数据总是经过一个8位的CRC校验。
- 在写方向上,必须传输校验和,因为STS30-DIS-B只接受后面跟着正确校验和的数据;
- 在读方向上,它留给主机来读取和处理校验和;
🌙时钟拉伸(Clock Stretching)
- 当没有时钟拉伸的命令发出时,如果没有数据存在,传感器响应一个带有不确认(NACK)的读报头;
- 当发出带有时钟拉伸的命令时,传感器响应一个带有ACK的读报头,然后拉下SCL线。将SCL线拉下,直到测量完成。一旦测量完成,传感器释放SCL线并发送测量结果;
🌙单次触发模式

由图4的流程图可知,单次触发模式的数据获取流程如下:
1. 第一部分

🟠️伪代码如下:
I2C开始;
发送7位I2C地址+写命令位;
等待传感器发送ACK;
发送高8位命令;
等待传感器发送ACK;
发送低8位命令;
等待传感器发送ACK;
I2C结束;
2. 第二部分

🟠️伪代码如下:
/* 时钟拉伸不使能 */
释放时钟线;(传感器测量中)
I2C开始;
发送7位I2C地址+读命令位;
等待传感器发送NACK;
I2C结束;
释放时钟线;(传感器测量中->传感器测量完成)
I2C开始;
发送7位I2C地址+读命令位;
等待传感器发送ACK;/* 时钟拉伸使能 */
释放时钟线;(传感器测量中)
I2C开始;
发送7位I2C地址+读命令位;
等待传感器发送ACK;
(传感器将时钟线拉低)
3. 第三部分

🟠️伪代码如下:
接收高8位温度数据;
发送ACK;
接收低8位温度数据;
发送ACK;
接收CRC校验和;
发送NACK;
I2C结束;
🌙温度数据转换
(2)STM32CubeMX 软件配置
🔅“工程建立、时钟树配置、Debug 串行线配置、代码生成配置” 在下文中有讲解,这里不再赘述❗️
【蓝桥杯——物联网设计与开发】基础模块1- GPIO输出https://blog.csdn.net/m0_63116406/article/details/135604705?spm=1001.2014.3001.5502
1️⃣点击引脚 PB6 → 选择 GPIO_Output 模式(此处默认为推挽输出);
点击引脚 PB7 → 选择 GPIO_Output 模式(此处配置为开漏输出);

2️⃣初始化 OLED;(配置步骤在下文中有讲解,这里不再赘述);
【蓝桥杯——物联网设计与开发】基础模块6 - OLED_蓝桥杯物联网oled-CSDN博客
3️⃣生成代码即可;
(3)代码编写
🟢️main 函数
/* Private variables ---------------------------------------------------------*//* USER CODE BEGIN PV */
uint8_t H_VALUE, L_VALUE, CRC_VALUE; // 高8位数据、低8位数据、CRC校验数据
float temp; // 温度数据
uint16_t ui_dat_temp; // 显示数据
uint8_t puc_oled[17]; // OLED显示存储区
/* USER CODE END PV */
/*** @brief The application entry point.* @retval int*/
int main(void)
{/* USER CODE BEGIN 1 *//* USER CODE END 1 *//* MCU Configuration--------------------------------------------------------*//* Reset of all peripherals, Initializes the Flash interface and the Systick. */HAL_Init();/* USER CODE BEGIN Init *//* USER CODE END Init *//* Configure the system clock */SystemClock_Config();/* USER CODE BEGIN SysInit *//* USER CODE END SysInit *//* Initialize all configured peripherals */MX_GPIO_Init();MX_I2C3_Init();/* USER CODE BEGIN 2 */OLED_Init();/* USER CODE END 2 *//* Infinite loop *//* USER CODE BEGIN WHILE */while (1){/* 第一部分 */I2CStart2();I2CSendByte2(0x94);I2CWaitAck2();I2CSendByte2(0x24);I2CWaitAck2();I2CSendByte2(0x0B);I2CWaitAck2();I2CStop2();/* 第二部分 */HAL_Delay(2);I2CStart2();I2CSendByte2(0x95);I2CWaitAck2();I2CStop2();HAL_Delay(2);I2CStart2();I2CSendByte2(0x95);I2CWaitAck2();/* 第三部分 */H_VALUE = I2CReceiveByte2();I2CSendAck2();L_VALUE = I2CReceiveByte2();I2CSendAck2();CRC_VALUE = I2CReceiveByte2();I2CSendNotAck2();I2CStop2();if(CRC_VALUE){;}temp = ((H_VALUE << 8) | L_VALUE) * 175.0 / 65535 - 45;ui_dat_temp = (uint16_t)(Temp_Read() * 10);sprintf((char*)puc_oled, " Temperature ");OLED_ShowString(0, puc_oled);sprintf((char*)puc_oled, " %.1f ", ui_dat_temp / 10.0);OLED_ShowString(2, puc_oled);HAL_Delay(500); //延时一会儿/* USER CODE END WHILE *//* USER CODE BEGIN 3 */}/* USER CODE END 3 */
}
(4)实验现象
能够实时测量环境温度。
二、温度采集接口函数封装
🟡️软件i2c.c
#include "i2c_2.h"#define DELAY_TIME 20//I2C总线内部延时函数
static void delay1(unsigned int n)
{uint32_t i;for ( i = 0; i < n; ++i);
}//配置SDA引脚为输入模式
void SDA_Input_Mode2(void)
{GPIO_InitTypeDef GPIO_InitStruct = {0};GPIO_InitStruct.Pin = SDA2;GPIO_InitStruct.Mode = GPIO_MODE_INPUT;GPIO_InitStruct.Pull = GPIO_PULLUP;GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH;HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);
}
//配置SDA引脚为输出模式
void SDA_Output_Mode2(void)
{GPIO_InitTypeDef GPIO_InitStruct = {0};GPIO_InitStruct.Pin = SDA2;GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_OD;GPIO_InitStruct.Pull = GPIO_NOPULL;GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH;HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);
}
//SDA引脚输出
void SDA_Output2(uint16_t val )
{if(val)GPIOB->BSRR |= SDA2;elseGPIOB->BRR |= SDA2;
}
//SCL引脚输出
void SCL_Output2( uint16_t val )
{if(val)GPIOB->BSRR |= SCL2;elseGPIOB->BRR |= SCL2;
}
//读取SDA引脚状态
uint8_t SDA_Input2(void)
{return HAL_GPIO_ReadPin(GPIOB, SDA2);
}//I2C总线启动信号
void I2CStart2(void)
{SDA_Output2(1);delay1(DELAY_TIME);SCL_Output2(1);delay1(DELAY_TIME);SDA_Output2(0);delay1(DELAY_TIME);SCL_Output2(0);delay1(DELAY_TIME);
}//I2C总线停止信号
void I2CStop2(void)
{SCL_Output2(0);delay1(DELAY_TIME);SDA_Output2(0);delay1(DELAY_TIME);SCL_Output2(1);delay1(DELAY_TIME);SDA_Output2(1);delay1(DELAY_TIME);}//等待应答
unsigned char I2CWaitAck2(void)
{unsigned short cErrTime = 5;SDA_Input_Mode2();delay1(DELAY_TIME);SCL_Output2(1);delay1(DELAY_TIME);while(SDA_Input2()){cErrTime--;delay1(DELAY_TIME);if (0 == cErrTime){SDA_Output_Mode2();I2CStop2();return ERROR;}}SCL_Output2(0);SDA_Output_Mode2();delay1(DELAY_TIME);return SUCCESS;
}//发送应答
void I2CSendAck2(void)
{SDA_Output2(0);delay1(DELAY_TIME);delay1(DELAY_TIME);SCL_Output2(1);delay1(DELAY_TIME);SCL_Output2(0);delay1(DELAY_TIME);}//发送非应答
void I2CSendNotAck2(void)
{SDA_Output2(1);delay1(DELAY_TIME);delay1(DELAY_TIME);SCL_Output2(1);delay1(DELAY_TIME);SCL_Output2(0);delay1(DELAY_TIME);}//发送一个字节数据
void I2CSendByte2(unsigned char cSendByte)
{unsigned char i = 8;while (i--){SCL_Output2(0);delay1(DELAY_TIME);SDA_Output2(cSendByte & 0x80);delay1(DELAY_TIME);cSendByte += cSendByte;delay1(DELAY_TIME);SCL_Output2(1);delay1(DELAY_TIME);}SCL_Output2(0);delay1(DELAY_TIME);
}//接收一个字节数据
unsigned char I2CReceiveByte2(void)
{unsigned char i = 8;unsigned char cR_Byte = 0;SDA_Input_Mode2();while (i--){cR_Byte += cR_Byte;SCL_Output2(0);delay1(DELAY_TIME);delay1(DELAY_TIME);SCL_Output2(1);delay1(DELAY_TIME);cR_Byte |= SDA_Input2();}SCL_Output2(0);delay1(DELAY_TIME);SDA_Output_Mode2();return cR_Byte;
}
🟡️软件i2c.h
#ifndef __I2C_2_H
#define __I2C_2_H#include "main.h"
//I2C总线引脚定义
#define SCL2 GPIO_PIN_6
#define SDA2 GPIO_PIN_7//接口函数
void I2CStart2(void);
void I2CStop2(void);
unsigned char I2CWaitAck2(void);
void I2CSendAck2(void);
void I2CSendNotAck2(void);
void I2CSendByte2(unsigned char cSendByte);
unsigned char I2CReceiveByte2(void);#endif
🟡️温度采集函数
/* 温度采集函数,中等可重复性+不使能时钟拉伸 */
float Temp_Read(void)
{uint8_t H_VALUE, L_VALUE, CRC_VALUE;float temp;I2CStart2();I2CSendByte2(0x94);I2CWaitAck2();I2CSendByte2(0x24);I2CWaitAck2();I2CSendByte2(0x0B);I2CWaitAck2();I2CStop2();HAL_Delay(2);I2CStart2();I2CSendByte2(0x95);I2CWaitAck2();I2CStop2();HAL_Delay(2);I2CStart2();I2CSendByte2(0x95);I2CWaitAck2();H_VALUE = I2CReceiveByte2();I2CSendAck2();L_VALUE = I2CReceiveByte2();I2CSendAck2();CRC_VALUE = I2CReceiveByte2();I2CSendNotAck2();I2CStop2();if(CRC_VALUE){;}temp = ((H_VALUE << 8) | L_VALUE) * 175.0 / 65535 - 45;return temp;
}
🔴温度采集接口函数调用实例
/* 采集任务函数 */
void Task_Colt(void)
{/* 200ms进入一次 */if(cnt_colt < 200) return;cnt_colt = 0;/* 温度采集与转换 */ui_dat_temp = (uint16_t)(Temp_Read() * 10);
}
三、踩坑日记
(1)引脚配置问题
- 推荐使用软件模拟I2C(硬件I2C,在4ti测试出来有问题);
- PB7(SDA)配置为开漏输出、速度快;PB6(SCL)配置为推挽输出,速度快;
(2)底层驱动延时问题
🔅注意编写底层驱动时存在两次HAL_Delay(2),释放时钟线作用,根据芯片手册说明,此处需要≥1ms;
(3)ALERT引脚
🔅报警引脚Alert一般用于连接MCU的中断引脚。引脚的输出取决于可编程限制的温度读数值。当满足报警条件时,引脚拉高;
🔅根据手册说明,不使用时必须保持浮空。
相关文章:
【蓝桥杯——物联网设计与开发】拓展模块3 - 温度传感器模块
一、温度传感器模块 (1)资源介绍 🔅原理图 蓝桥杯物联网竞赛实训平台提供了一个拓展接口 CN2,所有拓展模块均可直接安装在 Lora 终端上使用; 图1 拓展接口 温度传感器模块电路原理图如下所示: 图2 …...
Zookeeper 底层原理解析
一、引言 在分布式系统的浩瀚星空中,Zookeeper 宛如一颗最为闪耀的导航星,为众多分布式应用指引方向、保驾护航。无论是大名鼎鼎的 Hadoop、HBase,还是其他各类复杂的分布式架构,Zookeeper 都扮演着不可或缺的关键角色。它如同一…...
面试题整理9----谈谈对k8s的理解1
谈谈对k8s的理解 1. Kubernetes 概念 1.1 Kubernetes是什么 Kubernetes 是一个可移植、可扩展的开源平台,用于管理容器化的工作负载和服务,方便进行声明式配置和自动化。Kubernetes 拥有一个庞大且快速增长的生态系统,其服务、支持和工具的…...
PromptGIP:Unifying lmage Processing as Visual Prompting Question Answering
“Unifying Image Processing as Visual Prompting Question Answering” 文章提出了一种名为 PromptGIP 的通用模型,将图像处理任务统一为视觉提示问答范式,在多个图像处理任务上展现出良好性能,为通用图像处理提供了新的思路和方法。 confe…...
chart文件结构
在 Helm 中,Chart 是一个用于定义、安装和升级 Kubernetes 应用程序的包。Chart 文件结构遵循一定的目录和文件组织方式,以下是典型的 Helm Chart 文件结构: 1. Chart 文件结构示例 mychart/ ├── Chart.yaml # 描述 Chart 的基…...
SQL优化
SQL优化 插入数据 insert优化 批量插入 insert into tb_test 2values(1, Tom), (2, Cat), (3, jerry); 手动提交事务 start transaction; insert into test1 values(4, Tom), (5, Cat), (6, jerry); insert into test1 values(7, Tom), (8, Cat), (9, jerry); insert int…...
输出1-100之间的随机数,控制输出格式,每行10个(注释有详解)
C 随机数生成与格式化输出 在编程中,随机数的生成是一个常见的需求,尤其是在游戏开发、模拟实验和数据分析等领域。本文将通过一个简单的 C 程序来演示如何生成随机数并进行格式化输出。我们将逐步解析代码,并讨论其工作原理及应用场景。 代…...
【数字化】华为数字化转型架构蓝图-2
目录 1、客户联结的架构思路 1.1 ROADS体验设计 1.2 具体应用场景 1.3 统一的数据底座 1.4 案例与成效 2、一线作战平台的架构思路 2.1 核心要素 2.2 关键功能 2.3 实施路径 2.4 案例与成效 3、能力数字化的架构思路 3.1 能力数字化的核心目标 3.2 能力数字化的实…...
MyBatis是什么?为什么有全自动ORM框架还是MyBatis比较受欢迎?
MyBatis是什么? MyBatis是一个半自动的ORM持久层框架,内部封装了JDBC,mybatis是通过XML或注解的方式将需要执行的statement配置,支持定制化sql,存储过程以及高级映射。 解释 所谓的半自动ORM意思就是将JDBC的工作交…...
基础元器件的学习
1、二极管 1.1二极管的符号 ZD是稳压二极管 VD、V、D是普通二极管的符号。 1.2二极管的反向恢复时间 首先交流电为上正下负,然后下正上负。当二极管接到反向电压,二极管存在寄生电容,电压不能立刻突变,当输入频率变高时&#…...
GTID下复制问题和解决
环境介绍 数据库1主2从,mysql版本是v5.19 表结构 一、主库新增记录,从库提示主键冲突 模拟故障 1, master上关闭 sql_log_bin,删除id 103 后打开 2, 确认此时从库有id103,主库没有 3, master insert id103 主从异常…...
Linux 下的 GPT 和 MBR 分区表详解
文章目录 Linux 下的 GPT 和 MBR 分区表详解一、分区表的作用二、MBR(Master Boot Record)1. **特点**2. **优点**3. **缺点**4. **适用场景** 三、GPT(GUID Partition Table)1. **特点**2. **优点**3. **缺点**4. **适用场景** 四…...
mysql的事务控制和数据库的备份和恢复
事务控制语句 行锁和死锁 行锁 两个客户端同时对同一索引行进行操作 客户端1正常运行 客户端2想修改,被锁行 除非将事务提交才能继续运行 死锁 客户端1删除第5行 客户端2设置第1行为排他锁 客户端1删除行1被锁 客户端2更新行5被锁 如何避免死锁 mysql的备份和还…...
2014年IMO第4题
△ A B C \triangle ABC △ABC 中, B C BC BC 上有一点 P P P 满足 ∠ B A P = ∠ A C B \angle BAP=\angle ACB ∠BAP=∠ACB, 还有一点 Q Q Q 满足 ∠ A = Q A C = ∠ A B C \angle A=QAC=\angle ABC ∠A=QAC=∠ABC. 分别延长 A P AP AP, A Q AQ AQ 一倍至 M M M, N …...
如何实现层叠布局
文章目录 1 概念介绍2 使用方法3 示例代码我们在上一章回中介绍了GirdView Widget,本章回中将介绍Stack这种Widget,闲话休提,让我们一起Talk Flutter吧。 1 概念介绍 在Flutter中Stack主要用来叠加显示其它的Widget,类似我们日常生活中的楼层或者说PS中的图层,因此它也是一…...
Qwen2.5-7B-Instruct Lora微调
Qwen2.5-7B-Instruct Lora 微调 本文简要介绍如何基于 transformers、peft 等框架,对 Qwen2.5-7B-Instruct 模型进行 Lora 微调。Lora 是一种高效微调方法。 环境配置 在完成基本环境配置和本地模型部署的情况下,你还需要安装一些第三方库,…...
MacOS安装MySQL
官网下载MySQL 苹果芯片选择ARM版本 安装过程中会要求你输入root的密码(不少于8位),这里设置为12345678 打开系统设置查看是否成功安装MySQL 配置MySQL环境变量 vi ~/.zshrc加入一行export PATH$PATH:/usr/local/mysql/bin 执行source ~/…...
基础库正则表达式
我们已经可以用requests 库来获取网页的源代码,得到 HTML 代码。但我们真正想要的数据是包含在 HTML代码之中的,要怎样才能从 HTML,代码中获取想要的信息呢?正则表达式就是其中一个有效的方法。 本篇博客我们将了解一下正则表达式的相关用法。正则表达…...
Matlab 和 R 语言的数组索引都是从 1 开始,并且是左闭右闭的
文章目录 一、前言二、主要内容三、小结 🍉 CSDN 叶庭云:https://yetingyun.blog.csdn.net/ 一、前言 在早期的计算机科学中,数组索引从 1 开始是很常见的。例如,Fortran 和 Pascal 等编程语言也采用了从 1 开始的索引。 这种索引…...
选择排序和冒泡排序;MySQL架构
1. 选择排序和冒泡排序 (1)选择排序 原理: 选择排序有升序和降序两种排序方法。升序排序的原理是:对于一个无序数列,先假定其中一个数为这个数列的最小值,然后让这个假定最小值和其他数依次比较࿰…...
蓝桥杯算法训练 黑色星期五
题目描述 有些西方人比较迷信,如果某个月的13号正好是星期五,他们就会觉得不太吉利,用古人的说法,就是“诸事不宜”。请你编写一个程序,统计出在某个特定的年份中,出现了多少次既是13号又是星期五的情形&am…...
Mybatis-Plus快速入门
参考:黑马MyBatisPlus教程全套视频教程,快速精通mybatisplus框架 1.Mapper-plus配置 1.MapperScan("Mapper目录的位置") 2.Mapper层文件需要继承BaseMapper extends BaseMapper<实体类> 3.开启日志 4.配置类 Configuration public cl…...
MySQL库的操作
目录 1. 创建数据库2. 创建数据库案例3. 认识系统编码以及字符集和校验规则4. 操纵数据库4.1 查看数据库4.2 显示创建语句4.3 修改数据库4.4 数据库的删除4.5 备份和恢复4.6 查看连接情况 1. 创建数据库 (1)语法: create database db_name;…...
JVM性能优化一:初识内存泄露-内存溢出-垃圾回收
本文主要是让你充分的认识到什么叫做内存泄露,什么叫做内存溢出,别再傻傻分不清了,别再动不动的升级服务器的内存了。 文章目录 1.基本概念1.1.内存泄露1.2.内存溢出1.3.垃圾回收1.4.内存泄露-垃圾回收-内存溢出三者的关系关系 2.代码示例2.…...
2024年山东省职业院校技能大赛网络建设与运维X86架构与ARM架构搭建赛题
完整赛题解析主页联系! 一、X86架构计算机操作系统安装与管理 1.PC1 系统为 ubuntu-desktop-amd64 系统(已安装,语言为英文),登录用户为 ubuntu,密码为Key-1122。配置ubuntu用户能免密使用sudo命令。 sud…...
flask_sqlalchemy event监听查询事件
flask_sqlalchemy event监听查询事件 在Flask-SQLAlchemy中,可以使用事件监听器来监控查询事件。这可以通过listens_for(ModelClass, “event_name”)装饰器来实现,其中ModelClass是你想要监控的模型类,event_name是你想要监控的事件名称&…...
解决vscode ssh远程连接服务器一直卡在下载 vscode server问题
目录 方法1:使用科学上网 方法2:手动下载 方法3 在使用vscode使用ssh远程连接服务器时,一直卡在下载"vscode 服务器"阶段,但MobaXterm可以正常连接服务器,大概率是网络问题,解决方法如下: 方…...
OpenAI发布全新AI模型 o3 与 o3-mini:推理与编码能力迎来重大突破. AGI 来临
每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗?订阅我们的简报,深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同,从行业内部的深度分析和实用指南中受益。不要错过这个机会,成为AI领…...
Java --- 多线程
目录 前言: 一.线程的创建: 1.通过继承 Thread 类来创建线程: 2.通过Runnable接口创建线程: 3.通过Java8引入的lambda语法: 线程的优先级: 二.线程的生命周期: 三. 中断线程:…...
医学图像 三维重建,原图与灰度图叠加,原图与多图叠加显示;多图像融合显示,彩色灰度图像融合
Part1: Summary 我们在做图像分割或融合时,有时需要显示多份数据进行叠加显示;可能需要这种效果: 四视图: 基于这个,我看一下网上的实现总结了一下;实现了以下几种效果: Part2:多种…...
Linux中的多线程
1.Linux线程概念 什么叫做线程? 我们认为,线程操作系统调度的基本单位!重新理解进程? Linux内核观点:进程是承担分配系统资源的基本实体,即操作系统分配资源,是以进程为单位进行分配的。线程是进程内部的执行流资源…...
hive常用函数有哪些
Hive是一个基于Hadoop的数据仓库工具,它提供了类似于SQL的接口,用于数据查询和分析。Hive提供了许多内置函数,这些函数可以分为几种类型,包括: • 字符串函数:用于处理字符串数据。 • concat()࿱…...
深度学习试题及答案解析(二)
1. 神经风格转换中,优化算法的每次迭代更新的是什么? 神经风格转换(Neural Style Transfer, NST)是一种使用深度学习技术,特别是卷积神经网络(CNN),来将一幅图像的风格应用到另一幅图…...
【CSS in Depth 2 精译_089】15.2:CSS 过渡特效中的定时函数
当前内容所在位置(可进入专栏查看其他译好的章节内容) 第五部分 添加动效 ✔️【第 15 章 过渡】 ✔️ 15.1 状态间的由此及彼15.2 定时函数 ✔️ 15.2.1 定制贝塞尔曲线 ✔️15.2.2 阶跃 ✔️ 15.3 非动画属性 文章目录 15.2 定时函数 Timing function…...
LINUX内核常用加锁
1、mutex互斥锁 互斥锁的实现主要利用到了原子变量可以锁内存总线的机制来对lock变量值进行原子修改,并通过在加锁及释放锁过程中引入内存屏障(加锁引入lfence,释放锁引入sfence),来确保锁临界区资源(Critical Section)能够在不同的CPU之间可…...
【Select 语法全解密】.NET开源ORM框架 SqlSugar 系列
系列文章目录 🎀🎀🎀 .NET开源 ORM 框架 SqlSugar 系列 🎀🎀🎀 文章目录 系列文章目录前言一、Select 执行位置二、返回一个字段和多个字段三、单表返回DTO四、多表返回DTO4.1 手动DTO4.2 实体自动映射14.…...
STM32之GPIO输出与输出
欢迎来到 破晓的历程的 博客 ⛺️不负时光,不负己✈️ 文章目录 一.GPIO输入1.1GPIP简介1.2GPIO基本结构1.3GPIO位结构1.4GPIO的八种模式1.4.1浮空/上拉/下拉输入1.4.2 模拟输入1.4.3 推挽输出\开漏输出 二.GPIO输入2.1.按键介绍2.2传感器模块介绍2.3按键电路 一.G…...
【数据库】Redis—Java 客户端
一、常见的几种 Java 客户端 Jedis:以 Redis 命令作为方法的名称,便于学习,简单实用,但其实例是线程不安全的,多线程下需要基于连接池来使用。lettce:基于 Netty 实现,支持同步、异步和响应式编…...
《图解机器学习》(杉山将著)第一部分绪论学习笔记
《图解机器学习》(杉山将著)第一部分绪论学习笔记 《图解机器学习》(杉山将著)第一部分绪论学习笔记一、什么是机器学习1.1 学习的种类1.2 机器学习任务的例子1.3 机器学习的方法 二、学习模型2.1 线性模型2.2 核模型2.3 层级模型…...
Deepin和Windows传文件(Xftp,WinSCP)
在Linux系统和Windows系统传输文件,通常通过Windows系统中安装的Xftp和WinSCP访问Linux系统,在访问前需要安装配置SSH-Server 安装SSH-Server 安装SSH-Server sudo apt-get install openssh-server ssh -v 启动SSH服务 sudo systemctl start ssh //也…...
C语言习题2.0
C语言习题1.0 C语言习题-CSDN博客 目录 C语言习题1.0 C语言习题-CSDN博客 找一个数字的连续因子 求N个分数的和 正整数AB 函数 预处理 文件处理 操作符 找一个数字的连续因子 //找连续因子,及其个数 int main() {int a;scanf("%d", &a);int num 0; …...
达梦 本地编码:PG_GBK, 导入文件编码:PG_UTF8错误
问题 达梦 本地编码:PG_GBK, 导入文件编码:PG_UTF8错误 解决 右键管理服务器 查看配置 新建一个数据库实例,配置跟之前的保持一致 新建一个用户,跟以前的用户名一样 在用户上,右键导入,选择dmp的位置 导…...
【Apache Paimon】-- 11 -- Flink 消费 kakfa 写 S3 File
目录 1、项目构建 2、项目新增和修改 2.1 pom.xml 新增依赖 2.2 本地测试或者 flink on k8s 时,新增 S3FileSystemFactory.java 第一步:创建包=org.apache.flink.fs.s3hadoop 第二步:新增 java 类 S3FileSystemFactory 特别注意 (1)本地测试时需要新增以下内容 (…...
使用C语言编写UDP循环接收并打印消息的程序
使用C语言编写UDP循环接收并打印消息的程序 前提条件程序概述伪代码C语言实现编译和运行C改进之自由设定端口注意事项在本文中,我们将展示如何使用C语言编写一个简单的UDP服务器程序,该程序将循环接收来自指定端口的UDP消息,并将接收到的消息打印到控制台。我们将使用POSIX套…...
QT6静态编译并配置及错误解决
使用Github workflow进行编译,无需本地编译。 断断续续半年间,试了很多次静态编译,也尝试过别人编译的静态包,但一直失败。不是无法成功编译,就是编译后无法正常使用,经常报错链接失败。 参考的教程&#…...
Docker部署GitLab服务器
一、GitLab介绍 1.1 GitLab简介 GitLab 是一款基于 Git 的开源代码托管平台,集成了版本控制、代码审查、问题跟踪、持续集成与持续交付(CI/CD)等多种功能,旨在为团队提供一站式的项目管理解决方案。借助 GitLab,开发…...
flink实现复杂kafka数据读取
接上文:一文说清flink从编码到部署上线 环境说明:MySQL:5.7;flink:1.14.0;hadoop:3.0.0;操作系统:CentOS 7.6;JDK:1.8.0_401。 常见的文章中&…...
小雅Alist缓存太多怎么清理?教程来了
声明:不喜欢小白在开头唠嗑的小伙伴可以直接滑动到【 正文开始】处阅读。 前言 前段时间讲到在飞牛OS上部署小雅超集AList,后台看到很多小伙伴都部署了。 飞牛NAS上的小雅根本没有资源?只剩下打赏码?那得按照这个重新配置了&…...
Python字符串及正则表达式(十一):正则表达式、使用re模块实现正则表达式操作
前言:在 Python 编程的广阔天地中,字符串处理无疑是一项基础而关键的技能。正则表达式,作为处理字符串的强大工具,以其灵活的模式匹配能力,在文本搜索、数据清洗、格式验证等领域发挥着不可替代的作用。本系列博客已经…...
前端:金额高精度处理
Decimal 是什么 想必大家在用js 处理 数字的 加减乘除的时候,或许都有遇到过 精度不够 的问题,还有那些经典的面试题 0.20.1 ! 0.3, 至于原因,那就是 js 计算底层用的是 IEEE 754 ,精度上有限制, 那么Deci…...