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

【嵌入式】MCU开发基础知识速通

一、MCU开发常用编程语言及语法要求

MCU(微控制器单元)开发常用的编程语言包括C语言、C++、汇编语言和Python,每种语言都有其适用场景和优势。

  • C语言:C语言因其接近硬件特性和高效执行效率而广泛应用于MCU开发。它具有丰富的内置函数和运算符库,适用于嵌入式系统、操作系统、图形和游戏等领域。C语言的代码通常需要遵循ANSI C编码标准,以确保与大多数编译器兼容。

  • C++:C++提供了面向对象的编程特性,适合开发复杂的应用程序。它在资源管理、内存分配和外设访问方面具有优势,但相比C语言,其学习曲线较陡峭。

  • 汇编语言:汇编语言是编写高效代码和简洁设计的理想选择,尤其适用于需要优化性能的嵌入式系统。它直接操作硬件资源,但编写和调试较为复杂。

  • Python:Python在某些MCU开发中也有应用,特别是在需要快速原型开发和跨平台支持的场景中。

在语法要求方面,MCU开发通常需要关注以下几点:

  • 变量和数据类型:合理选择变量类型,避免内存浪费和性能问题。
  • 内存管理:注意内存分配和释放,避免内存泄漏。
  • 外设访问:正确配置和使用外设接口,如UART、SPI和I2C等。
  • 中断处理:编写高效的中断服务程序(ISR),确保系统响应及时。
  • 代码优化:使用编译器优化选项,提高代码执行效率。

MCU开发中选择合适的编程语言和遵循良好的编程规范是确保项目成功的关键。

二、主流MCU架构的基础知识

ARM Cortex-M系列是目前主流的微控制器架构之一,广泛应用于嵌入式系统中。以下是关于ARM Cortex-M系列的基础知识总结:

2.1 发展历程:

  • ARM Cortex-M系列自2004年推出首款处理器Cortex-M3以来,已经发展出多个型号,包括Cortex-M0、M0+、M1、M3、M4、M7等。
  • Cortex-M系列基于ARMv6-M和ARMv7-M架构,分别适用于不同的性能需求。

2.2 架构特点:

  • 指令集:支持Thumb和Thumb-2指令集,前者用于代码密度优化,后者结合了Thumb和ARM32指令的优点。
  • 流水线:Cortex-M3和M4采用3级流水线设计,提高了指令执行速度。
  • 中断管理:集成嵌套向量中断控制器(NVIC),支持多达240个中断优先级,并提供12个中断延迟周期。
  • 内存管理:支持内存保护单元(MPU)和内存管理单元(MMU),可实现灵活的内存保护和管理。

2.3 应用场景:

  • Cortex-M系列处理器适用于成本和功耗敏感的应用,如智能家电、工业自动化、医疗设备、汽车电子等。
  • 高性能型号(如M7)适用于复杂的嵌入式系统,如信号处理和实时控制。

2.4 技术优势:

  • 低功耗:Cortex-M0和M0+主打超低功耗,适合电池供电的设备。
  • 高性能:Cortex-M7是最高性能的处理器,适用于需要高性能计算的复杂系统。
  • 灵活性:支持多线程和内存管理,提供丰富的外设接口(如UART、SPI、I2C和ADC)。

2.5 市场地位:

  • Cortex-M系列凭借其高性能、低功耗和高成本效益,成为嵌入式系统市场的主流选择。
  • ST、NXP、TI等厂商基于Cortex-M内核开发了多种差异化产品,进一步推动了该系列的普及。

2.6 未来趋势:

  • 随着物联网和AIoT的发展,Cortex-M系列正向更高性能和更复杂功能的方向发展,例如加入TrustZone安全特性(如M23、M33、M35P)。
  • 新一代处理器(如Cortex-M55)进一步提升了AI和实时处理能力。

ARM Cortex-M系列以其高性能、低功耗和灵活性,成为嵌入式系统设计的首选架构。

三、嵌入式系统开发工具链(IDE、调试器、仿真器)使用方法

嵌入式系统开发工具链(IDE、调试器、仿真器)的使用方法如下:

3.1 集成开发环境(IDE):

  • Keil MDK:适用于ARM Cortex-M处理器,提供代码编辑、编译、调试等功能,支持在线调试和项目管理。
  • IAR Embedded Workbench:支持多种微控制器架构,提供强大的代码优化和调试功能。
  • Eclipse:通过插件生态系统支持多种嵌入式开发需求,如C/C++编译器、调试器等。
  • NUCLEI Studio:支持GDB、OpenOCD等调试工具,提供详细的调试配置和仿真功能。

3.2 编译器:

  • GCC:广泛用于嵌入式开发,支持多种编程语言和目标架构。
  • ARM GCC:针对ARM微控制器优化的编译器,生成高效的代码。

3.3 调试工具:

  • J-Link:支持多种微控制器,提供实时调试、追踪和闪存编程功能。
  • GDB:通过OpenOCD配置,支持远程调试和仿真。
  • ST-Link:用于STM32等微控制器的调试和烧录。

3.4 仿真器:

  • QEMU:模拟不同硬件环境,适用于开发和测试。
  • Proteus:用于硬件和软件的联合仿真,适合初学者。
  • ICE(In-Circuit Emulator) :通过JTAG或SWD接口连接目标硬件,进行实时调试。

3.5 调试流程:

  • 配置调试工具:在IDE中配置调试工具,如J-Link或GDB,设置断点、变量监视等。
  • 下载程序:通过调试工具将程序下载到目标硬件。
  • 调试与验证:运行程序,查看输出结果,逐步调试代码以定位问题。

3.6 仿真调试:

  • QEMU仿真:在NUCLEI Studio中选择QEMU进行仿真调试,适用于不同硬件架构的测试。
  • Proteus仿真:通过Proteus模拟硬件电路,验证设计的正确性。

3.7其他工具:

  • 版本控制工具(如Git) :管理代码版本,便于团队协作。
  • 性能分析工具(如Perf):分析代码性能,优化程序运行效率。

四、硬件接口开发技能(GPIO/UART/SPI/I2C等外设配置)

硬件接口开发技能(如GPIO、UART、SPI、I2C等外设配置)涉及多个方面,包括硬件配置、驱动开发和实际应用。

4.1 GPIO配置:

  • GPIO是最基本的外设,用于控制数字信号的输入和输出。通过设置引脚模式(输入或输出)、上拉/下拉电阻和中断类型,可以实现对LED灯、按钮等简单设备的控制。
  • 在STM32中,可以通过使能时钟、配置引脚模式和速度来初始化GPIO。例如,将GPIO引脚配置为推挽输出模式,并设置相应的速度。
  • 在Raspberry Pi中,GPIO的配置可以通过Python库(如RPi.GPIO)实现,支持设置引脚模式、读取和写入引脚电平。

4.2 UART配置:

  • UART是一种异步串行通信协议,常用于短距离通信。配置UART需要设置波特率、时钟源和引脚映射。
  • 在STM32中,UART的配置包括使能时钟、配置引脚模式和设置波特率。
  • 在Raspberry Pi中,UART的配置可以通过修改配置文件或使用特定的库(如pySerial)实现。

4.3 SPI配置:

  • SPI是一种同步串行通信协议,适用于高速数据传输。配置SPI需要设置时钟频率、主从模式和引脚映射。
  • 在STM32中,SPI的配置包括使能时钟、配置引脚模式和设置时钟极性和相位。
  • 在Raspberry Pi中,SPI的配置可以通过修改配置文件或使用特定的库(如spidev)实现。

4.4 I2C配置:

  • I2C是一种串行总线协议,适用于连接多个设备。配置I2C需要设置时钟频率、主从模式和引脚映射。
  • 在STM32中,I2C的配置包括使能时钟、配置引脚模式和设置波特率。
  • 在Raspberry Pi中,I2C的配置可以通过修改配置文件或使用特定的库(如smbus)实现。

4.5 综合应用:

  • 在嵌入式系统开发中,合理选择和配置外设接口可以提高系统的效率和可靠性。例如,使用GPIO控制LED灯、使用UART进行串行通信、使用SPI控制SD卡读写数据。
  • 配置过程中需要注意引脚复用、时钟源选择和中断处理等问题。

4.6 工具和资源:

  • 开发过程中可以参考设备手册、数据手册和开发指南,如STM32CubeMX工具用于生成初始化代码。
  • 使用逻辑分析仪进行协议解码和调试。

五、中断处理与实时任务调度基础

根据我搜索到的资料,中断处理与实时任务调度在实时操作系统(RTOS)中是两个密切相关且重要的概念。以下是基于证据的总结:

5.1 中断处理:

  • 中断处理是实时系统中处理硬件或软件事件的关键机制。中断服务程序(ISR)通常设计为简短高效,以避免阻塞其他任务的执行。
  • 中断优先级决定了中断处理的先后顺序,高优先级中断可以打断低优先级中断。
  • 中断处理完成后,系统会根据当前任务和中断的优先级决定是否继续运行当前任务或切换到新的任务。

5.2 任务调度:

  • 任务调度是实时系统中管理任务执行顺序的核心机制。调度器根据任务的优先级和执行时间来决定任务的执行顺序。
  • 实时任务调度模型包括抢占式调度、协作式调度和时间片轮转调度等。抢占式调度允许高优先级任务随时打断低优先级任务,从而提高系统的实时性。
  • 调度算法的选择对系统的响应时间和任务执行效率有直接影响。常见的调度算法包括最早截止时间优先(EDF)、最短剩余时间优先(SRTF)等。

5.3 中断与任务调度的协同:

  • 中断可以触发任务调度,例如当高优先级任务被中断唤醒时,调度器会根据优先级调整任务执行顺序。
  • 中断处理应尽量简短高效,以减少对任务调度的影响。如果中断处理特别紧急,可以将退出后的同步任务优先级设为最高,确保其随时可以中断其他任务。
  • 在某些情况下,中断处理可能会导致任务切换,但这种切换应尽量避免阻塞任务的正常执行。

5.4 实时系统的优化:

  • 为了提高实时系统的性能和可靠性,需要合理设置中断优先级,避免重要中断与非关键中断冲突。
  • 中断管理策略应考虑减少中断延迟、合理设置中断优先级、避免访问临界区等措施。
  • 实时系统的发展趋势包括硬件和软件的优化,以及任务调度和中断管理的进一步优化。
  • 综上所述,中断处理与实时任务调度在RTOS中相辅相成,良好的设计和优化可以确保系统的实时性和稳定性。

六、固件开发流程与版本控制工具(Git)应用

6.1 固件开发流程:

  • 生成阶段:驱动程序生产者开发操作系统硬件的驱动程序,操作系统生产者开发运行在操作系统上的操作系统,应用程序生产者开发为设备提供特定功能的应用程序,固件制造商将这些组件整合到一个固件包中,并上传到“物联网固件更新服务器”。

  • 分发阶段:固件通过互联网传输,用户通过访问点接收固件更新请求并处理这些请求。用户可以通过手动更新、移动用户代理(MUA)或OTA链接下载和安装固件。

  • 加载阶段:固件被加载到设备中,完成更新过程。

6.2 Git在固件开发中的应用:

  • 版本控制:Git是一种分布式版本控制系统,能够跟踪代码的变化、协同工作、恢复到历史版本、分支开发等。它通过分布式架构和强大的分支管理,成为开发者首选的版本控制工具。
  • 基本操作:使用Git进行版本控制的基本步骤包括初始化仓库(git init)、添加文件(git add <file>)、提交更改(git commit -m "commit message")、查看历史记录(git log)、合并分支(git merge <branch>)等。
  • 协作与共享:Git支持多端共享和团队协作,开发者可以在本地进行独立工作,然后将更改推送到远程仓库,实现代码共享和协作。
  • 分支管理:Git的分支管理功能强大,支持创建分支(git branch <branch>)、切换分支(git checkout <branch>)、合并分支(git merge <branch>)等操作,有助于高效管理和协调开发工作。
  • 冲突解决:在合并分支时,Git会自动检测并标记冲突,开发者需要手动解决冲突后再次提交。

6.3 Git的优势:

  • 分布式架构:每个开发者都有项目完整历史的本地副本,支持独立工作和高效协作。
  • 数据完整性:Git使用SHA-1哈希算法确保代码内容的完整性。
  • 灵活性:支持多种操作模式,如命令行、图形界面(如TortoiseGit)和Web界面(如GitHub)。

6.4 应用场景:

  • 项目管理:Git可以用于管理固件项目的整个生命周期,从代码编写到发布。
  • 团队协作:通过Git,多个开发者可以同时在不同分支上工作,避免代码冲突,提高开发效率。
  • 历史记录与回滚:Git保留了所有提交的历史记录,便于追踪变更和恢复到历史版本。

七、嵌入式系统测试与调试方法

7.1 测试方法:

  • 单元测试:针对单个模块进行测试,验证其功能的正确性和边界条件的处理。
  • 集成测试:将多个模块组合起来进行测试,确保模块间的接口正确无误。
  • 系统测试:在所有模块集成之后进行,验证整个系统的功能是否符合需求。
  • 性能测试:评估系统在不同负载下的表现,包括内存分析、性能分析等。
  • 覆盖率分析:确保测试用例覆盖关键路径和边缘情况。

7.2 调试方法:

  • 直接调试法:将目标代码下载到目标机上执行,观察指示灯状态判断程序运行情况。
  • 调试监控法(插桩法) :在宿主机和目标机之间建立通信,通过插桩方式实现调试。
  • 在线仿真法(ICE) :使用替代目标机的CPU,实时检查处理器状态、设置硬件断点和进行跟踪。
  • 片上调试法(ICD) :在CPU芯片内部嵌入调试功能模块,支持仿调试监控器、后台调试模式等。
  • 模拟器法:在宿主机上模拟目标机的指令系统或操作系统,适用于非实时应用程序的调试。

7.3 工具与技术:

  • 调试器:如GDB、JTAG/SWD调试器,用于设置断点、监视变量和跟踪执行过程。
  • 逻辑分析仪:用于捕获数字信号时序信息,分析硬件行为。
  • 性能分析工具:评估代码执行时间和资源利用率,发现性能瓶颈。
  • 远程调试:通过网络连接宿主机和目标机,实现远程监控和调试。

7.4 综合调试策略:

  • 硬件与软件联合调试:结合硬件调试工具(如示波器、逻辑分析仪)和软件调试工具(如IDE内置调试功能),全面排查问题。
  • 层次模型与架构风格:采用层次模型和“模型-过程-处理器”架构风格,提高调试效率和准确性。
  • 实时数字系统验证:结合实时数字系统验证工具,确保嵌入式系统的可靠性和性能。

八、低功耗设计与电源管理基础

低功耗设计与电源管理是一个多方面、多层次的综合工程,涉及硬件选择、电路设计、软件优化和工具应用等多个环节。

8.1 低功耗设计的基本概念:

  • 低功耗设计旨在通过硬件和软件的优化,将电子产品的平均功耗保持在最低水平,以延长电池供电设备的使用时间并减轻对电网的负担。
  • 功耗分为动态功耗和静态功耗。动态功耗由信号变化引起,包括翻转功耗和短路功耗;静态功耗主要由漏电流引起。

8.2 低功耗设计的方法:

  • 硬件层面

    • 选择低功耗处理器和电源管理芯片,如STM32微控制器。
    • 采用多电源域设计,通过关闭待机模块降低漏电电流。
    • 使用多阈值电压技术(MT-CMOS)和门控时钟技术来减少开关活动。
    • 优化电路布局,减少负载电容和开关活动。
  • 软件层面

    • 通过软件控制实现功耗优化,如定时器控制和传感器管理。
    • 编译优化技术,减少指令开销。

8.3 电源管理:

  • 电源管理包括电源状态管理(如活动、空闲、挂起和关闭模式)和连接性管理。
  • 采用分区分时供电技术,减少不必要的功耗。
  • 使用低功耗电源管理器件,如低压差线性稳压器和开关稳压器。

8.4 低功耗设计的应用:

  • 在物联网(IoT)设备中,低功耗设计确保设备长时间稳定运行,延长电池寿命。
  • 在嵌入式系统中,通过硬件和软件协同设计,实现低功耗目标。

8.5 低功耗设计的工具和方法:

  • 使用EDA工具进行功耗分析和优化,如LTspice和Power Compiler。
  • 通过仿真验证电路的性能和稳定性。

九、RTOS(如FreeRTOS)入门知识

RTOS(实时操作系统)是一种用于嵌入式系统和微控制器的轻量级操作系统,广泛应用于工业自动化、物联网设备等领域。FreeRTOS是其中一种流行的开源RTOS,以其开源、轻量级和可移植性特点受到开发者的青睐。

9.1 基本概念

  • RTOS:实时操作系统,用于管理硬件资源并按预定时间执行任务。它分为硬实时系统和软实时系统,硬实时系统要求任务在规定时间内完成,否则会产生严重后果;软实时系统则允许任务在有限时间内完成,但超时需尽早处理。
  • FreeRTOS:一个开源的实时操作系统,支持多种处理器架构和硬件平台,具有高度可配置的内核。

9.2 主要功能

  • 任务管理:支持任务的创建、挂起、恢复和删除。
  • 时间管理:提供系统延时函数、相对延时函数和绝对延时函数。
  • 消息队列:用于任务间通信。
  • 信号量:用于同步任务。
  • 互斥锁:用于保护共享资源。
  • 事件标志组:用于任务间的条件触发。

9.3 学习资源

  • 官方文档:FreeRTOS官网提供了详细的教程和指南。
  • 视频教程:如韦东山的FreeRTOS视频课程,涵盖调试技术、数组越界、内存泄漏等调试技巧。
  • 书籍:如《FreeRTOS内核实现与应用开发实战指南》,结合书籍和代码进行学习。
  • 实践项目:通过实际项目如STM32开发板进行动手实践。

9.4 学习步骤

  • 基础知识:了解RTOS的工作原理和分类。
  • 配置环境:在开发环境中配置FreeRTOS,如STM32CubeMX。
  • 动手实践:通过编写简单任务和队列管理等基础代码进行实践。
  • 深入学习:阅读源码,理解内核机制,优化代码性能。

9.5 应用场景

  • 工业自动化:如AGV(自动导引车)、汽车ECU等。
  • 物联网设备:如智能家居、环境监测等。
  • 嵌入式系统:如ESP系列芯片项目。

9.6 调试与优化

  • 调试技术:使用工具快速定位调用过程中的错误,解决数组越界等问题。
  • 性能优化:通过配置调度策略和减少内存占用来提高系统性能。

相关文章:

【嵌入式】MCU开发基础知识速通

一、MCU开发常用编程语言及语法要求 MCU&#xff08;微控制器单元&#xff09;开发常用的编程语言包括C语言、C、汇编语言和Python&#xff0c;每种语言都有其适用场景和优势。 C语言&#xff1a;C语言因其接近硬件特性和高效执行效率而广泛应用于MCU开发。它具有丰富的内置函…...

Yocto + 树莓派摄像头驱动完整指南

—— 从驱动配置、Yocto 构建&#xff0c;到 OpenCV 实战 在树莓派上运行摄像头&#xff0c;在官方的 Raspberry Pi OS 可能很简单&#xff0c;但在 Yocto 项目中&#xff0c;需要手动配置驱动、设备树、软件依赖 才能确保摄像头正常工作。本篇文章从 BSP 驱动配置、Yocto 关键…...

swift 开发效率提升工具

安装github copliot for xcode github/CopilotForXcode brew install --cask github-copilot-for-xcode安装swiftformat for xcode brew install swiftformatXcode Swift File代码格式化-SwiftFormat...

基于 Flink CDC YAML 的 MySQL 到 Kafka 流式数据集成

本教程的演示都将在 Flink CDC CLI 中进行&#xff0c;无需一行 Java/Scala 代码&#xff0c;也无需安装 IDE。 这篇教程将展示如何基于 Flink CDC YAML 快速构建 MySQL 到 Kafka 的 Streaming ELT 作业&#xff0c;包含整库同步、表结构变更同步演示和关键参数介绍。 准备阶段…...

Hue UI展示中文

个人博客地址&#xff1a;Hue UI展示中文 | 一张假钞的真实世界 如果使用开发分支代码如master分支&#xff09;编译安装&#xff0c;需要自己编译语言文件。例如Hue安装目录为“/opt/hue”&#xff0c;则安装后执行以下命令&#xff1a; $ cd /opt/hue $ make locales 如果…...

(十 一)趣学设计模式 之 组合模式!

目录 一、 啥是组合模式&#xff1f;二、 为什么要用组合模式&#xff1f;三、 组合模式的实现方式四、 组合模式的优缺点五、 组合模式的应用场景六、 总结 &#x1f31f;我的其他文章也讲解的比较有趣&#x1f601;&#xff0c;如果喜欢博主的讲解方式&#xff0c;可以多多支…...

安全模块设计:token服务、校验注解(开启token校验、开启签名校验、允许处理API日志)、获取当前用户信息的辅助类

文章目录 引言pom.xmlI 校验注解ApiValidationII token服务TokenService获取当前用户信息的辅助类III 域登录接口响应数据登陆用户信息引言 pom.xml <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/PO…...

Python学习第十八天之深度学习之Tensorboard

Tensorboard 1.TensorBoard详解2.安装3.使用4.图像数据格式的一些理解 后续会陆续在词博客上更新Tensorboard相关知识 1.TensorBoard详解 TensorBoard是一个可视化的模块&#xff0c;该模块功能强大&#xff0c;可用于深度学习网络模型训练查看模型结构和训练效果&#xff08;…...

Redis安装及其AnotherRedisDesktopManagera安装使用

一、Redis安装 1. 下载Redis安装包 通过网盘分享的文件&#xff1a;Redis 链接: https://pan.baidu.com/s/1elAT8mk3EIoYQQ3WoVVoNg?pwd7yrz 提取码: 7yrz 2. 解压Redis安装包 下载完成后&#xff0c;将Redis安装包解压到一个指定的目录&#xff0c;例如&#xff1a;C:\Re…...

C# dll文件的反编译获取源码

目录 前言操作流程结论 前言 上一篇文章介绍了将C# cs类文件加密为dll文件&#xff0c;在此给大家写一篇关于反编译dll文件的文章。 操作流程 首先&#xff0c;我们需要准备一个C#反编译工具&#xff0c;我这里用的是免费的软件JetBrains dotPeek&#xff0c;类似的有很多&am…...

大语言模型学习--LangChain

LangChain基本概念 ReAct学习资料 https://zhuanlan.zhihu.com/p/660951271 LangChain官网地址 Introduction | &#x1f99c;️&#x1f517; LangChain LangChain是一个基于语言模型开发应用程序的框架。它可以实现以下应用程序&#xff1a; 数据感知&#xff1a;将语言模型…...

Spark内存迭代计算

一、宽窄依赖 窄依赖&#xff1a;父RDD的一个分区数据全部发往子RDD的一个分区 宽依赖&#xff1a;父RDD的一个分区数据发往子RDD的多个分区&#xff0c;也称为shuffle 二、Spark是如何进行内存计算的&#xff1f;DAG的作用&#xff1f;Stage阶段划分的作用&#xff1f; &a…...

Python之参数星号(*)使用笔记

背景 在学习python时发现方法调用和方法定义会经常发现有带星号的标记&#xff0c;为了弄明白是怎么使用的。特此做个笔记。 一、参数符号对比速查表 符号类使用场景作用描述示例无符号函数定义/调用普通位置参数或关键字参数.def func(a, b)*函数定义收集多余位置参数为元组…...

一文掌握 Scrapy 框架的详细使用,包括实战案例

更多内容请见: 爬虫和逆向教程-专栏介绍和目录 文章目录 1. Scrapy 简介2. Scrapy 的核心组件3. 安装 Scrapy4. 创建 Scrapy 项目4.1 创建项目4.2 创建 Spider5. 编写 Spider5.1 定义 Item5.2 编写 Spider 逻辑6. 运行 Scrapy 爬虫6.1 运行爬虫6.2 保存爬取数据7. Scrapy 的高…...

【Mac】git使用再学习

目录 前言 如何使用github建立自己的代码库 第一步&#xff1a;建立本地git与远程github的联系 生成密钥 将密钥加入github 第二步&#xff1a;创建github仓库并clone到本地 第三步&#xff1a;上传文件 常见的git命令 git commit git branch git merge/git rebase …...

【MySQL篇】数据库基础

目录 1&#xff0c;什么是数据库&#xff1f; 2&#xff0c;主流数据库 3&#xff0c;MySQL介绍 1&#xff0c;MySQL架构 2&#xff0c;SQL分类 3&#xff0c;MySQL存储引擎 1&#xff0c;什么是数据库&#xff1f; 数据库&#xff08;Database&#xff0c;简称DB&#xf…...

SpringBoot项目注入 traceId 来追踪整个请求的日志链路

SpringBoot项目注入 traceId 来追踪整个请求的日志链路&#xff0c;有了 traceId&#xff0c; 我们在排查问题的时候&#xff0c;可以迅速根据 traceId 查找到相关请求的日志&#xff0c;特别是在生产环境的时候&#xff0c;用户可能只提供一个错误截图&#xff0c;我们作为开发…...

【Block总结】SAFMN,空间自适应调制与局部特征增强的协同设计|即插即用

论文信息 标题&#xff1a;Spatially-Adaptive Feature Modulation for Efficient Image Super-Resolution论文链接&#xff1a;https://arxiv.org/pdf/2302.13800代码与模型&#xff1a;https://github.com/sunny2109/SAFMN 创新点 空间自适应特征调制&#xff08;SAFM&…...

Python爬虫:一文掌握PyQuery模块

文章目录 1. PyQuery 简介2. PyQuery 的安装2.1 安装 PyQuery2.2 安装依赖库3. PyQuery 的基本使用3.1 初始化 PyQuery 对象3.2 选择元素3.3 获取元素内容3.4 遍历元素4. PyQuery 的高级用法4.1 过滤元素4.2 查找子元素4.3 获取属性值4.4 修改元素4.5 添加和删除元素4.6 遍历文…...

LearnOpenGL之Shader编程用算法绘画

———————————————————— 前序 ——————————————————— AndroidLearnOpenGL是本博主自己实现的LearnOpenGL练习集合&#xff1a; Github地址&#xff1a;GitHub - wangyongyao1989/AndroidLearnOpenGL: OpenGL基础及运用 系列文章&#xff…...

鸿蒙中用HarmonyOS SDK应用服务 HarmonyOS5开发一个医院挂号小程序

一、开发准备 ​​环境搭建​​&#xff1a; 安装DevEco Studio 3.0或更高版本配置HarmonyOS SDK申请开发者账号 ​​项目创建​​&#xff1a; File > New > Create Project > Application (选择"Empty Ability") 二、核心功能实现 1. 医院科室展示 /…...

Neo4j 集群管理:原理、技术与最佳实践深度解析

Neo4j 的集群技术是其企业级高可用性、可扩展性和容错能力的核心。通过深入分析官方文档,本文将系统阐述其集群管理的核心原理、关键技术、实用技巧和行业最佳实践。 Neo4j 的 Causal Clustering 架构提供了一个强大而灵活的基石,用于构建高可用、可扩展且一致的图数据库服务…...

uniapp微信小程序视频实时流+pc端预览方案

方案类型技术实现是否免费优点缺点适用场景延迟范围开发复杂度​WebSocket图片帧​定时拍照Base64传输✅ 完全免费无需服务器 纯前端实现高延迟高流量 帧率极低个人demo测试 超低频监控500ms-2s⭐⭐​RTMP推流​TRTC/即构SDK推流❌ 付费方案 &#xff08;部分有免费额度&#x…...

解决本地部署 SmolVLM2 大语言模型运行 flash-attn 报错

出现的问题 安装 flash-attn 会一直卡在 build 那一步或者运行报错 解决办法 是因为你安装的 flash-attn 版本没有对应上&#xff0c;所以报错&#xff0c;到 https://github.com/Dao-AILab/flash-attention/releases 下载对应版本&#xff0c;cu、torch、cp 的版本一定要对…...

解读《网络安全法》最新修订,把握网络安全新趋势

《网络安全法》自2017年施行以来&#xff0c;在维护网络空间安全方面发挥了重要作用。但随着网络环境的日益复杂&#xff0c;网络攻击、数据泄露等事件频发&#xff0c;现行法律已难以完全适应新的风险挑战。 2025年3月28日&#xff0c;国家网信办会同相关部门起草了《网络安全…...

认识CMake并使用CMake构建自己的第一个项目

1.CMake的作用和优势 跨平台支持&#xff1a;CMake支持多种操作系统和编译器&#xff0c;使用同一份构建配置可以在不同的环境中使用 简化配置&#xff1a;通过CMakeLists.txt文件&#xff0c;用户可以定义项目结构、依赖项、编译选项等&#xff0c;无需手动编写复杂的构建脚本…...

Elastic 获得 AWS 教育 ISV 合作伙伴资质,进一步增强教育解决方案产品组合

作者&#xff1a;来自 Elastic Udayasimha Theepireddy (Uday), Brian Bergholm, Marianna Jonsdottir 通过搜索 AI 和云创新推动教育领域的数字化转型。 我们非常高兴地宣布&#xff0c;Elastic 已获得 AWS 教育 ISV 合作伙伴资质。这一重要认证表明&#xff0c;Elastic 作为 …...

从物理机到云原生:全面解析计算虚拟化技术的演进与应用

前言&#xff1a;我的虚拟化技术探索之旅 我最早接触"虚拟机"的概念是从Java开始的——JVM&#xff08;Java Virtual Machine&#xff09;让"一次编写&#xff0c;到处运行"成为可能。这个软件层面的虚拟化让我着迷&#xff0c;但直到后来接触VMware和Doc…...

Qt的学习(一)

1.什么是Qt Qt特指用来进行桌面应用开发&#xff08;电脑上写的程序&#xff09;涉及到的一套技术Qt无法开发网页前端&#xff0c;也不能开发移动应用。 客户端开发的重要任务&#xff1a;编写和用户交互的界面。一般来说和用户交互的界面&#xff0c;有两种典型风格&…...

麒麟系统使用-进行.NET开发

文章目录 前言一、搭建dotnet环境1.获取相关资源2.配置dotnet 二、使用dotnet三、其他说明总结 前言 麒麟系统的内核是基于linux的&#xff0c;如果需要进行.NET开发&#xff0c;则需要安装特定的应用。由于NET Framework 是仅适用于 Windows 版本的 .NET&#xff0c;所以要进…...