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

32单片机从入门到精通之开发环境——库文件(六)

每个人都有自己的追求和梦想,但要实现这些梦想并不容易。在追逐梦想的路上,我们会遇到各种困难和挫折,甚至会感到无助和失望。然而,正是这些困难和挫折让我们更加坚韧和坚定地追求自己的目标。不要害怕失败,失败只是暂时的,只要我们不放弃,就一定能够取得成功。别人是否相信你的能力并不重要,最重要的是你自己要相信自己。不要被别人的意见所左右,坚持自己的想法和信念,勇往直前。无论你遇到什么样的困难和挑战,都要坚持下去,相信自己的能力,相信自己的梦想。只有坚持不懈,才能走向成功的道路。所以,不要放弃,努力奋斗,相信自己,你就能够实现自己的梦想!

目录

上一张试卷讲解

一、选择题

二、简答题

三、编程题

四、分析题

五、应用设计题

HAL库详解

知识点

示例代码

代码注释

LL库详解

知识点

示例代码

代码注释

试卷

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

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

三、编程题(每题20分,共40分)

四、分析题(每题15分,共30分)

五、应用设计题(每题15分,共15分)


上一张试卷讲解

一、选择题

  1. STM32CubeIDE是由哪家公司提供的?

    • B) STMicroelectronics
  2. Keil MDK中的μVision IDE主要用于:

    • B) 嵌入式系统开发
  3. 以下哪个功能是STM32CubeIDE特有的?

    • A) 内置GCC编译器 (虽然其他IDE也支持GCC,但STM32CubeIDE内置了它,这是其特性之一)
  4. 在Keil MDK中,哪种编译器能够生成高效的机器代码?

    • B) ARM编译器
  5. STM32CubeIDE支持的微控制器系列是:

    • B) 仅限于STM32系列

二、简答题

  1. STM32CubeMX工具的主要作用及其如何简化STM32项目的创建和配置: STM32CubeMX是一个图形化配置工具,允许用户轻松设置STM32微控制器的时钟树、外设和其他硬件资源。通过简单的点击和选择,用户可以生成初始化代码,从而大大减少了手动配置寄存器所需的时间和复杂性。此外,STM32CubeMX还提供项目管理功能,帮助开发者快速切换到不同的IDE环境进行进一步的开发工作。

  2. Keil MDK的调试功能及其重要性: Keil MDK提供了强大的调试功能,包括断点设置、单步执行、变量监视、内存查看等。这些功能对于复杂项目的开发至关重要,因为它们使得开发者能够在程序运行时深入检查和分析问题,而不需要猜测或假设。良好的调试环境可以帮助团队更快地找到并修复错误,提高开发效率和产品质量。

  3. STM32CubeIDE和Keil MDK在功耗管理和优化方面的差异: STM32CubeIDE和Keil MDK都提供了功耗管理的功能,但具体实现可能有所不同。STM32CubeIDE内置了对STM32低功耗模式的支持,并且可以通过图形界面方便地配置这些模式。相比之下,Keil MDK则更加依赖于开发者的手动配置和对特定库函数的调用。此外,由于Keil使用专有的ARM编译器,它可能在某些情况下提供更优的代码优化选项,这有助于减少功耗。

三、编程题

  1. 使用STM32 HAL库配置微控制器进入停止模式(Stop Mode):
#include "stm32f4xx_hal.h"void EnterStopMode(void)
{// 确保所有中断已处理完毕__HAL_RCC_PWR_CLK_ENABLE();HAL_PWREx_EnableUltraLowPower(); // 启用超低功耗模式HAL_PWREx_DisablePVDE();         // 禁用PVD// 配置电源模式为STOP模式HAL_PWR_EnterSTOPMode(PWR_LOWPOWERREGULATOR_ON, PWR_STOPENTRY_WFI);// 这里不会被执行,直到退出STOP模式为止
}int main(void)
{HAL_Init(); // 初始化HAL库// 初始化系统时钟SystemClock_Config();// ... 其他必要的初始化...// 进入停止模式EnterStopMode();while (1);
}
  1. LED闪烁程序适用于STM32CubeIDE和Keil MDK两种IDE环境:
#include "stm32f4xx_hal.h" // 或者根据所使用的微控制器系列包含对应的头文件// 定义LED连接的GPIO端口和引脚
#define LED_PORT GPIOA
#define LED_PIN  GPIO_PIN_5void SystemClock_Config(void); // 系统时钟配置函数声明int main(void)
{HAL_Init(); // 初始化HAL库// 初始化系统时钟SystemClock_Config();// 使能GPIOA时钟__HAL_RCC_GPIOA_CLK_ENABLE();// 配置GPIO引脚: LED_PIN作为输出GPIO_InitTypeDef GPIO_InitStruct = {0};GPIO_InitStruct.Pin = LED_PIN;GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;GPIO_InitStruct.Pull = GPIO_NOPULL;GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;HAL_GPIO_Init(LED_PORT, &GPIO_InitStruct);// 设置LED初始状态为关闭HAL_GPIO_WritePin(LED_PORT, LED_PIN, GPIO_PIN_RESET);while (1){// 切换LED状态HAL_GPIO_TogglePin(LED_PORT, LED_PIN);// 使用HAL_Delay()延时一段时间HAL_Delay(500);}
}

注释已经在代码中给出,这段代码适用于基于HAL库的STM32CubeIDE和Keil MDK环境,因为两者都支持相同的HAL库API。

四、分析题

  1. STM32CubeIDE和Keil MDK各自的优点和缺点,以及针对不同应用场景的推荐:

    • STM32CubeIDE优点:免费;内置GCC编译器;与STM32CubeMX无缝集成;丰富的示例代码。
    • STM32CubeIDE缺点:相对于Keil MDK,调试体验稍逊;对非STM32平台的支持有限。
    • Keil MDK优点:成熟稳定的调试环境;专有ARM编译器生成高效代码;广泛支持多种ARM Cortex-M内核MCU。
    • Keil MDK缺点:需要购买许可证;成本较高。

    对于教育用途、个人项目或者预算有限的小型团队,推荐使用STM32CubeIDE。对于专业级产品开发,尤其是对性能要求极高的应用,以及大型企业拥有足够的预算,可能会倾向于选择Keil MDK。

  2. 商业项目中选择商用IDE与免费IDE之间的权衡因素: 商业项目考虑的因素包括但不限于开发效率、长期维护成本、技术支持、编译器质量及性能优化能力等。免费IDE如STM32CubeIDE可以节省初期投资,但对于复杂的项目,可能需要更多的内部资源来解决遇到的问题。另一方面,商用IDE通常伴随着更好的技术支持和更高质量的工具链,但这也意味着更高的前期投入。最终的选择应该基于项目的具体需求、团队的技术水平以及公司的财务状况。

五、应用设计题

设计一个基于STM32的智能监控系统:

  • 主要功能模块

    • 传感器读取:通过ADC采集温度、湿度等环境数据。
    • Wi-Fi通信:利用ESP8266或类似模块实现与互联网的连接,以便远程监控和控制。
    • 数据处理和存储:使用内部Flash或外部SPI Flash保存历史记录。
    • 用户界面:通过OLED显示屏或其他方式展示实时信息。
  • 各模块的最佳工作频率

    • 根据系统的实时性和功耗要求,合理分配各个模块的工作频率。例如,传感器采样可以设定为较低频率以节省能量,而Wi-Fi通信则需保持较高的响应速度以确保数据传输的及时性。
  • 通过时钟配置优化系统的整体性能和功耗

    • 使用STM32CubeMX工具配置最佳的时钟树结构,保证满足性能需求的同时尽量降低功耗。对于不频繁使用的模块,可以在空闲时将其时钟关断。同时,利用STM32CubeIDE的强大调试功能,在开发过程中不断调整和优化代码,确保系统在运行时能够有效地管理工作频率,达到性能和功耗的最佳平衡。

以上设计考虑到了智能监控系统的各个方面,旨在提供一个既高效又节能的解决方案。

下面我将详细讲解HAL库和LL库的使用,并给出相应的代码示例。为了简化讨论,假设我们正在使用STM32微控制器系列,因为它们广泛支持这两种库。

HAL库详解

知识点
  • 初始化外设:通过配置结构体(如GPIO_InitTypeDef)来设置引脚模式、速度等参数。
  • 中断处理:HAL库提供了标准的中断回调函数,用于响应硬件中断事件。
  • 错误处理:HAL库包含了错误检测机制,可以捕获并处理硬件操作中的异常情况。
  • 高级功能:支持DMA、定时器、ADC等功能的复杂配置。
示例代码
#include "stm32f4xx_hal.h"// 定义LED连接的GPIO端口和引脚
#define LED_PORT GPIOA
#define LED_PIN  GPIO_PIN_5// 初始化所有需要的外设
void SystemClock_Config(void);
static void MX_GPIO_Init(void);int main(void)
{// 初始化系统时钟SystemClock_Config();// 初始化GPIOMX_GPIO_Init();while (1){// 切换LED状态HAL_GPIO_TogglePin(LED_PORT, LED_PIN);// 延时一段时间HAL_Delay(500);}
}// GPIO初始化函数
static void MX_GPIO_Init(void)
{GPIO_InitTypeDef GPIO_InitStruct = {0};// 使能GPIOA时钟__HAL_RCC_GPIOA_CLK_ENABLE();// 配置GPIO引脚: LED_PIN作为输出GPIO_InitStruct.Pin = LED_PIN;GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;GPIO_InitStruct.Pull = GPIO_NOPULL;GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;HAL_GPIO_Init(LED_PORT, &GPIO_InitStruct);// 设置LED初始状态为关闭HAL_GPIO_WritePin(LED_PORT, LED_PIN, GPIO_PIN_RESET);
}
代码注释
  • #define指令定义了与硬件相关的常量,以便于代码维护。
  • SystemClock_Config()函数用于配置系统时钟,具体实现通常由CubeMX工具生成。
  • MX_GPIO_Init()函数中配置了GPIO引脚,使之能够控制一个LED。
  • main()函数的无限循环内,LED每500毫秒切换一次状态。

LL库详解

知识点
  • 直接寄存器访问:LL库允许开发者直接操作硬件寄存器,这提供了更精细的控制。
  • 精简的API:相比于HAL库,LL库提供的API更为精简,减少了抽象层带来的开销。
  • 性能优化:由于更接近底层硬件,因此可以在性能上进行更细致的调整。
示例代码
#include "stm32f4xx_ll_gpio.h"
#include "stm32f4xx_ll_system.h"
#include "stm32f4xx_ll_bus.h"// 定义LED连接的GPIO端口和引脚
#define LED_PORT LL_GPIO_PORT_A
#define LED_PIN  LL_GPIO_PIN_5// 初始化所有需要的外设
void SystemClock_Config(void);
static void MX_GPIO_Init(void);int main(void)
{// 初始化系统时钟SystemClock_Config();// 初始化GPIOMX_GPIO_Init();while (1){// 切换LED状态LL_GPIO_TogglePin(LED_PORT, LED_PIN);// 使用软件延时函数代替HAL_Delayfor(uint32_t i = 0; i < 500000; i++);}
}// GPIO初始化函数
static void MX_GPIO_Init(void)
{// 使能GPIOA时钟LL_AHB1_GRP1_EnableClock(LL_AHB1_GRP1_PERIPH_GPIOA);// 配置GPIO引脚: LED_PIN作为输出LL_GPIO_SetPinMode(LED_PORT, LED_PIN, LL_GPIO_MODE_OUTPUT);LL_GPIO_SetPinSpeed(LED_PORT, LED_PIN, LL_GPIO_SPEED_FREQ_LOW);LL_GPIO_SetPinOutputType(LED_PORT, LED_PIN, LL_GPIO_OUTPUT_PUSHPULL);LL_GPIO_SetPinPull(LED_PORT, LED_PIN, LL_GPIO_PULL_NO);// 设置LED初始状态为关闭LL_GPIO_ResetOutputPin(LED_PORT, LED_PIN);
}
代码注释
  • LL_GPIO_PORT_ALL_GPIO_PIN_5是LL库特定的宏定义,用来指代GPIOA端口和引脚5。
  • LL_AHB1_GRP1_EnableClock()函数用于启用GPIOA的时钟。
  • LL_GPIO_*函数用于配置和操作GPIO引脚,提供对硬件寄存器的直接访问。
  • 软件延时函数是简单的循环计数,替代了HAL库中的HAL_Delay()函数,后者依赖于系统的滴答定时器。

以上代码示例展示了如何使用HAL库和LL库在STM32微控制器上配置和控制一个简单的LED。请注意,实际应用中应当根据具体的硬件平台选择合适的库,并确保正确地配置系统时钟和其他必要的外设。

试卷

一、选择题(每题2分,共10分)
  1. 下列哪一项是HAL库的主要优势?

    • A) 更低的性能开销
    • B) 易于使用的API
    • C) 对硬件的直接访问
    • D) 更高的代码效率
  2. LL库最适合哪种应用场景?

    • A) 快速原型开发
    • B) 需要优化性能的应用
    • C) 不同微控制器间的代码移植
    • D) 简单应用开发
  3. 使用HAL库时,初始化外设通常通过什么来完成?

    • A) 直接操作寄存器
    • B) 调用底层驱动函数
    • C) 配置结构体与初始化函数
    • D) 手动编写汇编代码
  4. 在STM32CubeMX中生成的初始化代码,默认使用的是哪个库?

    • A) LL库
    • B) HAL库
    • C) 标准外设库
    • D) 自定义库
  5. 如果开发者需要对硬件进行精细控制,应该选择哪个库?

    • A) HAL库
    • B) LL库
    • C) Standard Peripheral Library
    • D) CMSIS
二、简答题(每题10分,共30分)
  1. 解释HAL库和LL库之间的主要区别,并说明它们各自适合的应用场景。

  2. 描述在STM32CubeMX工具中如何配置以生成基于LL库的初始化代码。

  3. 举例说明如何利用HAL库中的中断处理机制来响应外部事件。

三、编程题(每题20分,共40分)
  1. 编写一段C代码,使用HAL库配置并启动一个定时器,使其每隔1秒触发一次中断。请包括必要的初始化步骤,并添加适当的注释。

  2. 编写一段C代码,使用LL库实现GPIO引脚的配置为推挽输出模式,并使LED连接到该引脚上闪烁。要求代码适用于STM32系列微控制器,并附上详细注释。

四、分析题(每题15分,共30分)
  1. 比较HAL库和LL库在代码可读性和维护性方面的优缺点。

  2. 深入探讨在项目初期选择HAL库或LL库时应考虑的因素,并给出针对不同项目类型的推荐。

五、应用设计题(每题15分,共15分)

设计一个简单的温度监控系统,该系统使用STM32微控制器、温度传感器以及LCD显示器。请详细描述你将如何根据系统的性能需求选择合适的库(HAL库或LL库),并说明选择的理由。此外,请概述如何利用所选库的功能来优化开发流程和系统性能。

相关文章:

32单片机从入门到精通之开发环境——库文件(六)

每个人都有自己的追求和梦想&#xff0c;但要实现这些梦想并不容易。在追逐梦想的路上&#xff0c;我们会遇到各种困难和挫折&#xff0c;甚至会感到无助和失望。然而&#xff0c;正是这些困难和挫折让我们更加坚韧和坚定地追求自己的目标。不要害怕失败&#xff0c;失败只是暂…...

大电流和大电压采样电路

大电压采样电路&#xff1a; 需要串联多个电阻进行分压&#xff0c;从而一级一级降低电压&#xff0c;防止电阻损坏或者短路直接打穿MCU。 为什么需要加电压跟随器&#xff1a;进行阻抗的隔离&#xff0c;防止MCU的IO阻抗对分压产生影响&#xff1a; 大电流检测电路&#xff…...

用户态和内核态?

目录 一、定义与特点 二、功能与权限差异 三、安全性与稳定性 四、系统调用与交互 五、参考 用户态和内核态是操作系统中的两种基本运行状态&#xff0c;它们各自具有不同的特点和权限&#xff0c;共同构成了操作系统的运行基础。以下是对用户态和内核态的详细解释&#x…...

Qt天气预报系统设计界面布局第四部分左边

Qt天气预报系统设计 1、第四部分左边的第一部分1.1添加控件1.2修改控件名字 2、第四部分左边的第二部分2.1添加控件2.2修改控件名字 3、第四部分左边的第三部分3.1添加控件3.2修改控件名字 4、对整个widget04l调整 1、第四部分左边的第一部分 1.1添加控件 拖入一个widget&…...

【Spring MVC 常用注解】注解驱动开发的魔法

在 Spring MVC 中&#xff0c;注解可以说是开发者的“魔法棒”&#xff0c;通过简单的注解配置&#xff0c;开发者能够实现请求处理、参数绑定、响应返回等复杂功能&#xff0c;真正做到“少写代码多干活”。 我们接下来就来一起看看 Spring MVC 中常用的注解&#xff0c;它们的…...

FFmpeg 4.3 音视频-多路H265监控录放C++开发二十一.4,SDP协议分析

SDP在4566 中有详细描述。 SDP 全称是 Session Description Protocol&#xff0c; 翻译过来就是描述会话的协议。 主要用于两个会话实体之间的媒体协商。 什么叫会话呢&#xff0c;比如一次网络电话、一次电话会议、一次视频聊天&#xff0c;这些都可以称之为一次会话。 那为什…...

STM32 高级 WIFi案例1:测试AT指令

需求描述 测试AT指令是否能够正常控制ESP32的wifi&#xff0c;比如重启、读取设备信息等。 思路&#xff1a; stm32通过串口usart2向ESP32发布命令。ESP32通过串口1返回信息。 配置&#xff1a; 第一步&#xff1a;对ESP32芯片烧录可以读取stm32命令的固件&#xff08;fac…...

Mono里运行C#脚本18—mono_image_load_names

前面已经分析完成加载CLR的流表,接着下来就是使用前面分析的数据,更进一步来处理了。下面就是通过函数mono_image_load_names获得程序集的名称和模块名称。 在CLI定义的文档里,表Assembly : 0x20: Assembly表结构信息,以下是该表各列的简要说明: HashAlgId: 这是一个4字…...

Java和Python区别: 应用领域与性能抉择的深度解析

文章目录 1. 引言2. 语言特性对比&#xff1a;灵活性与严谨性的碰撞3. 应用场景分析&#xff1a;专注任务的工具选择3.1 数据库交互&#xff1a;Java 的优势所在3.2 图像识别与计算&#xff1a;Python 的专长3.3 Web 开发 4. 高并发请求处理&#xff1a;架构设计与硬件选择4.1 …...

SQL Server详细使用教程(包含启动SQL server服务、建立数据库、建表的详细操作) 非常适合初学者

SQL Server详细使用教程(包含启动SQL server服务、建立数据库、建表的详细操作) 非常适合初学者 文章目录 目录 前言 一、启动SQL server服务的三种方法 1.不启动SQL server服务的影响 2.方法一&#xff1a;利用cmd启动SQL server服务 3.方法二&#xff1a;利用SQL Serv…...

基于Docker+模拟器的Appium自动化测试(二)

模拟器的设置 打开“夜神模拟器”的系统设置&#xff0c;切换到“手机与网络”页&#xff0c;选中网络设置下的“开启网络连接”和“开启网络桥接模式”复选框&#xff0c;而后选择“静态IP”单选框&#xff0c;在IP地址中输入“192.168.0.105”&#xff0c;网关等内容不再赘述…...

CSS系列(47)-- Animation Timeline详解

前端技术探索系列&#xff1a;CSS Animation Timeline详解 ⏱️ 致读者&#xff1a;探索动画时间线的艺术 &#x1f44b; 前端开发者们&#xff0c; 今天我们将深入探讨 CSS Animation Timeline&#xff0c;这个强大的动画控制特性。 基础概念 &#x1f680; 时间线定义 …...

1、pycharm、python下载与安装

1、去官网下载pycharm 官网&#xff1a;https://www.jetbrains.com/pycharm/download/?sectionwindows 2、在等待期间&#xff0c;去下载python 进入官网地址&#xff1a;https://www.python.org/downloads/windows/ 3、安装pycharm 桌面会出现快捷方式 4、安装python…...

【翻译】优化加速像素着色器执行的方法

中文翻译 在回复我的 Twitter 私信时,我遇到了一个关于如何提高像素/片段着色器执行速度的问题。这是一个相当广泛的问题,具体取决于每个 GPU/平台和游戏内容的特性,但我在本帖中扩展了我“头脑风暴”式的回答,以便其他人也觉得有用。这不是一份详尽的清单,更像是一个高层…...

ZLib库使用详细教程 以及标准ZLib函数和QT自带压缩函数比较

1. 下载Zlib 官网下载地址如下&#xff1a;http://www.zlib.net/ 2. 利用cmake编译zlib 有两种方法可以打开cmake-gui winR输入cmd打开命令行&#xff0c;在命令行中输入cmake-gui可以直接打开应用界面找到你一开始安装cmake的文件夹&#xff0c;在bin子文件夹中双击cmake-…...

android stdudio环境: gradle一直安装失败

一、一直显示如下错误 The specified Gradle distribution file:/home/wangqingyuan/.gradle/wrapper/dists/gradle-8.6-bin/gradle-8.6-bin.zip does not exist. 经分析&#xff0c;是因为应用本身设置了gradle版本的地址为本地&#xff1a; 应用目录&#xff1a;gradle/gra…...

2024年12月31日Github流行趋势

项目名称&#xff1a;free-programming-books 项目地址url&#xff1a;https://github.com/EbookFoundation/free-programming-books项目语言&#xff1a;HTML历史star数&#xff1a;344575今日star数&#xff1a;432项目维护者&#xff1a;vhf, eshellman, davorpa, MHM5000, …...

音视频入门基础:MPEG2-TS专题(24)——FFmpeg源码中,显示TS流每个packet的pts、dts的实现

音视频入门基础&#xff1a;MPEG2-TS专题系列文章&#xff1a; 音视频入门基础&#xff1a;MPEG2-TS专题&#xff08;1&#xff09;——MPEG2-TS官方文档下载 音视频入门基础&#xff1a;MPEG2-TS专题&#xff08;2&#xff09;——使用FFmpeg命令生成ts文件 音视频入门基础…...

设计模式の状态策略责任链模式

文章目录 前言一、状态模式二、策略模式三、责任链模式 前言 本篇是关于设计模式中的状态模式、策略模式、以及责任链模式的学习笔记。 一、状态模式 状态模式是一种行为设计模式&#xff0c;核心思想在于&#xff0c;使某个对象在其内部状态改变时&#xff0c;改变该对象的行为…...

TI毫米波雷达原始数据解析之Lane数据交换

TI毫米波雷达原始数据解析之Lane数据交换 背景Lane 定义Lane 确认确认LVDS Lane 数量的Matlab 代码数据格式参考 背景 解析使用mmWave Studio 抓取的ADC Data Lane 定义 芯片与DCA100之间的数据使用LVDS接口传输&#xff0c;使用mmWave Studio 配置过程中有一个选项是LVDS L…...

Python-Pdf转Markdown

使用pdfminer.sixmarkdownify pdfminer.six可以提取Pdf文本内容markdownify可以将文本内容写markdown文件 安装 pip install pdfminer.six pip install markdownify实现 from pdfminer.high_level import extract_text from markdownify import markdownifydef pdf2markdo…...

win32汇编环境下,双击窗口程序内生成的listview列表控件的某行,并提取其内容的示例程序

;运行效果 ;双击后 ;上源码&#xff0c;仔细研究里面的几条备注就理解原理了 ;提取窗口程序内生成的listview列表控件的内容示例程序 ;抄下面源码&#xff0c;可以在radasm里面直接编译运行。主要的部分加了备注。 ;>>>>>>>>>>>>>>…...

对45家“AI+安全”产品/方案的分析

一. 关键洞察 “AI+安全”创新非常活跃,一片百家争鸣之势,赛道选择上,以事件分诊Incident Triage、 安全辅助Security Copilots、自动化Automation三者为主为主,这充分反映了当前安全运营的主要需求,在产品理念选择上以 AI 和 自动化为主,这确实又切合上了在关键…...

家用电器销售系统|Java|SSM|JSP|

【技术栈】 1⃣️&#xff1a;架构: B/S、MVC 2⃣️&#xff1a;系统环境&#xff1a;Windowsh/Mac 3⃣️&#xff1a;开发环境&#xff1a;IDEA、JDK1.8、Maven、Mysql5.7 4⃣️&#xff1a;技术栈&#xff1a;Java、Mysql、SSM、Mybatis-Plus、JSP、jquery,html 5⃣️数据库可…...

小程序租赁系统构建指南与市场机会分析

内容概要 在当今竞争激烈的市场环境中&#xff0c;小程序租赁系统正崭露头角&#xff0c;成为企业转型与创新的重要工具。通过这个系统&#xff0c;商户能够快速推出自己的小程序&#xff0c;无需从头开发&#xff0c;节省了大量时间和资金。让我们来看看这个系统的核心功能吧…...

《XML Schema 字符串数据类型》

《XML Schema 字符串数据类型》 1. 引言 XML Schema 是一种用于描述和验证 XML 文档结构和内容的语言。在 XML Schema 中&#xff0c;字符串数据类型是一种基本的数据类型&#xff0c;用于表示文本数据。本文将详细介绍 XML Schema 中的字符串数据类型&#xff0c;包括其定义…...

探索框架领域的新兴技术:微框架与插件化框架的崛起

近年来&#xff0c;随着软件开发技术的快速发展&#xff0c;开发者对框架的需求也在不断变化。从传统的重量级框架到轻量级微框架&#xff0c;以及支持高度扩展性的插件化框架&#xff0c;技术生态系统日新月异。本文旨在介绍这些新兴框架技术中的一些小众但创新的理念与实现&a…...

【数据结构-单调队列】力扣2762. 不间断子数组

给你一个下标从 0 开始的整数数组 nums 。nums 的一个子数组如果满足以下条件&#xff0c;那么它是 不间断 的&#xff1a; i&#xff0c;i 1 &#xff0c;…&#xff0c;j 表示子数组中的下标。对于所有满足 i < i1, i2 < j 的下标对&#xff0c;都有 0 < |nums[i1…...

【复盘】2024年终总结

工作 重构风控系统 今年上半年其实就是整体重构系统&#xff0c;经历了多次加班的&#xff0c;其中的辛酸苦辣只有自己知道&#xff0c;现在来看的话&#xff0c;其实对自己还有一定的成长&#xff0c;从这件事情上也明白 绩效能不能拿到A&#xff0c;在分配的任务的时候就决…...

QT 学习第十四天 QWidget布局

QT 学习十四天 布局 布局管理Qt Widgets 布局布局管理器简介基本布局管理器栅格布局管理器窗体布局管理器综合使用布局管理器设置部件大小可扩展窗口 布局管理 今天讲 Qt Widgets 和 Qt Quick 中的布局。 前者主要用布局管理器 后者除了布局管理器还有基于锚的布局&#xff08…...

各个Spring Cloud版本有何主要差异

Spring Cloud 的各个版本之间确实存在一些关键差异&#xff0c;这些差异主要体现在功能更新、性能优化、对新技术的支持以及对旧有技术的替代等方面。 1. Spring Cloud Dalston 这是 Spring Cloud 的一个早期版本&#xff0c;它提供了微服务架构所需的基本组件&#xff0c;如服…...

开发AI电子宠物 参考资料

开发AI电子宠物涉及多个方面&#xff0c;包括但不限于硬件选择、软件编程、人工智能算法的应用等。下面我将提供一个概览性的指南&#xff0c;并列出一些资源链接&#xff0c;帮助您开始自己的AI电子宠物项目。 AI电子宠物开发教程概览 1. 确定需求与规划 定义目标&#xff…...

数据结构与算法之动态规划: LeetCode 62. 不同路径 (Ts版)

不同路径 https://leetcode.cn/problems/unique-paths/description/ 描述 一个机器人位于一个 m x n 网格的左上角 &#xff08;起始点在下图中标记为 “Start” &#xff09;机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角&#xff08;在下图中标记为 “…...

操作系统论文导读(八):Schedulability analysis of sporadic tasks with multiple criticality specifications——具有多个

Schedulability analysis of sporadic tasks with multiple criticality specifications——具有多个关键性规范的零星任务的可调度性分析 目录 一、论文核心思想 二、基本定义 2.1 关键性指标 2.2 任务及相关参数定义 2.3 几个基础定义 三、可调度性分析 3.1 调度算法分…...

Android IO 问题:java.io.IOException Operation not permitted

问题描述与处理策略 1、问题描述 java.io.IOException: Operation not permittedjava.nio.file.FileSystemException: /storage/emulated/0/test/test.txt: Operation not permittedjava.io.IOException: Operation not permitted&#xff1a;异常为操作不被允许 java.nio.f…...

Unity Mesh生成Cube

1. 配置一个Cube的每个面的数据 一共是6个面&#xff0c;每个面包含的数据包括4个顶点的相对顶点坐标&#xff08;Cube的中心为原点&#xff09;&#xff0c;法线方向&#xff0c;UV坐标&#xff0c;顶点渲染顺序&#xff0c;以及这个面用到的材质&#xff0c;因为这里是Top&am…...

Wend看源码-Java-Collections 工具集学习

摘要 java.util.Collections它提供了一系列静态方法&#xff0c;用于对集合&#xff08;如List、Set、Map等&#xff09;进行操作。这些操作包括排序、查找、替换、同步等多种功能&#xff0c;帮助开发者更方便地处理集合数据。以下是Collections 提供的一些主要方法的总结。…...

怎样用 Excel 做数据分析?

与其单纯地学习怎么使用Excel&#xff0c;不如结合AI工具来进行数据分析。 接下来就来盘一盘AI在Excel做数据分析方面会带来哪些改进和帮助。 原本不能非常复杂的公式&#xff0c;变成聊天的方式。Excel门槛被大大降低&#xff0c;以前技术大佬才能干的活&#xff0c;现在前台…...

深度学习——损失函数汇总

1. 连续值损失函数 总结:主要使用胡贝儿损失函数,应用于连续数值的预测之间的误差损失,参考地址 import torch import torch.nn as nna = torch.tensor([[1, 2], [3, 4]], dtype=torch.float) b = torch.tensor([[3, 5], [8, 6]], dtype=torch.float)loss_fn1 = torch.nn.M…...

KAFKA入门:原理架构解析

文章目录 一、认识kafka二、架构介绍2.1 工作流程2.2 Kafka可靠性保证2.3 Kafka存储 一、认识kafka Kafka到底是个啥&#xff1f;用来干嘛的&#xff1f; 官方定义如下&#xff1a; Kafka is used for building real-time data pipelines and streaming apps. It is horizont…...

记录第一次跑YOLOV8做目标检测

今天是24年的最后一天&#xff0c;终于要向新世界开始破门了&#xff0c;开始深度学习&#xff0c;YOLO来敲门~ 最近做了一些皮肤检测的功能&#xff0c;在传统的处理中经历了反复挣扎&#xff0c;终于要上YOLO了。听过、看过&#xff0c;不如上手体会过~ 1、YOLO是什么&#x…...

全场景——(十一)综合实现

文章目录 一、产品框架1.1 硬件框架1.2 设计思路1.2.1 上位机如何定位到传感器1.2.2 上位机如何读写传感器1.2.3 中控如何读写传感器1.2.4 上位机如何发送映射关系、传输固件1.2.5 上位机界面 1.3 软件框架 二、改造libmodbus 实现文件传输2.1 分析Write File Record 功能2.2 实…...

mysql系列7—Innodb的redolog

背景 本文涉及的内容较为底层&#xff0c;做了解即可&#xff0c;是以前学习《高性能Mysql》和《mysql是怎样运行的》的笔记整理所得。 redolog(后续使用redo日志表示)的核心作用是保证数据库的持久性。 在mysql系列5—Innodb的缓存中介绍过&#xff1a;数据和索引保存在磁盘上…...

数据表中列的完整性约束概述

文章目录 一、完整性约束概述二、设置表字段的主键约束三、设置表字段的外键约束四、设置表字段的非空约束五、设置表字段唯一约束六、设置表字段值自动增加七、设置表字段的默认值八、调整列的完整性约束 一、完整性约束概述 完整性约束条件是对字段进行限制&#xff0c;要求…...

深入解析 Wireshark 的 TLS 设置:应用场景与实操技巧

简述 在网络数据分析中&#xff0c;传输层安全&#xff08;TLS&#xff09;协议的流量解密和分析是一项重要的技能。Wireshark 提供了专门的设置选项&#xff0c;帮助用户处理 TLS 流量&#xff0c;例如解密会话、重组分片等。本文将详细解析上图所示的 Wireshark TLS 设置功能…...

小波与傅里叶变换在去噪效果上的对比分析-附Matlab源程序

&#x1f468;‍&#x1f393; 博主简介&#xff1a;博士研究生 &#x1f52c; 超级学长&#xff1a;超级学长实验室&#xff08;提供各种程序开发、实验复现与论文指导&#xff09; &#x1f4e7; 个人邮箱&#xff1a;easy_optics126.com &#x1f56e; 目 录 摘要一、…...

Tailwind CSS 实战:社交媒体信息流开发

在社交媒体的世界里&#xff0c;信息流就像是一条永不停歇的河流&#xff0c;承载着用户的分享与互动。记得在一个社交平台项目中&#xff0c;我们通过重新设计信息流的展示方式&#xff0c;让用户的平均浏览时长提升了 45%。今天&#xff0c;我想和大家分享如何使用 Tailwind …...

深入解析:谱分解、SVD与PCA在算法中的应用与实现

特征值分解&#xff08;EVD&#xff09;、奇异值分解&#xff08;SVD&#xff09;和主成分分析&#xff08;PCA&#xff09;是矩阵分解技术的三种重要形式&#xff0c;它们在人工智能中扮演了关键角色。随着数据维度的快速增长和信息复杂度的提升&#xff0c;这些技术为处理高维…...

C#编写的金鱼趣味小应用 - 开源研究系列文章

今天逛网&#xff0c;在GitHub中文网上发现一个源码&#xff0c;里面有这个金鱼小应用&#xff0c;于是就下载下来&#xff0c;根据自己的C#架构模板进行了更改&#xff0c;最终形成了这个例子。 1、 项目目录&#xff1b; 2、 源码介绍&#xff1b; 1) 初始化&#xff1b; 将样…...

Android 系统 AlarmManager 系统层深度定制

Android 系统 AlarmManager 系统层深度定制 目录 引言AlarmManager 概述AlarmManager 系统架构AlarmManager 核心代码解读AlarmManager 深度定制方法 修改 AlarmManagerService 修改定时任务调度策略增加定时任务类型定制内核层 修改定时触发精度增加定时触发类型优化定时任务…...