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

STM32单片机GUI系统1 GUI基本内容

目录

一、GUI简介

1、emWin

2、LVGL (Light and Versatile Graphics Library)

3、TouchGFX

4、Qt for Embedded

5、特性对比总结

二、LVGL移植要求

三、优化LVGL运行效果方法

四、LVGL系统文件


一、GUI简介

        在嵌入式系统中,emWin、LVGL、TouchGFX 和 Qt 是四种常见的图形用户界面(GUI)框架。它们各自具有不同的特性和优势,适用于不同类型的嵌入式开发需求。以下是这四种框架的详细比较,涵盖它们的特性、优缺点以及应用场景。

1、emWin

  • 特性

    • 图形用户界面(GUI):emWin 是一个高效、功能强大的图形库,专为嵌入式应用设计,广泛用于高性能嵌入式显示器中。
    • 任务特性:emWin 本身不具备任务调度的功能,它只是一个图形库,通常需要与实时操作系统(RTOS)结合使用。可以在多任务环境中运行,配合 RTOS 进行任务调度。
    • 内存管理:emWin 允许开发者根据系统需求来调整内存分配,包括屏幕缓存、字体和资源。内存的使用可以进行配置,以适应不同的嵌入式设备。
    • 字符与字体:支持多种字体,用户可以选择内置字体或自定义字体,字符集支持广泛,可以根据需要选择存储方式(如动态或静态)。
    • 性能:在性能方面,emWin 可以针对硬件优化,支持硬件加速(如 GPU 渲染)。
  • 适用场景

    • 适用于需要较高性能、丰富 GUI 功能且硬件资源有限的嵌入式设备,尤其是在需要精细控制内存的场景中,如医疗、工业和消费类电子产品。

2、LVGL (Light and Versatile Graphics Library)

  • 特性

    • 图形用户界面(GUI):LVGL 是一个开源的图形库,设计上轻量、灵活、适用于各种嵌入式设备,尤其是资源有限的设备。支持触摸屏、按钮、滑块、图形、动画等 GUI 控件。
    • 任务特性:LVGL 本身没有内置任务调度系统,但可以与 RTOS 或单任务系统集成。在使用 RTOS 时,LVGL 可以运行在一个任务中,通过实时调度和事件驱动来进行界面更新。
    • 内存管理:LVGL 支持内存配置,可以根据需要选择不同的内存管理方式,适应不同的嵌入式系统。开发者可以控制内存池的大小、使用方式等。
    • 字符与字体:支持自定义字体,字符集支持较广,可以选择字体大小、字形以及是否启用抗锯齿等。
  • 适用场景

    • 适用于低功耗、资源有限的嵌入式设备,特别是对于有触摸屏需求的系统(如智能家居、汽车仪表盘、便携设备等)。

3、TouchGFX

  • 特性

    • 图形用户界面(GUI):TouchGFX 是一个专为嵌入式系统设计的高性能图形框架,支持丰富的图形界面元素,如图标、按钮、滑块、动画等。
    • 任务特性:TouchGFX 支持与 RTOS 集成,通过任务调度器进行任务分配。TouchGFX 可以在 RTOS 上的任务中运行,并通过事件驱动来更新显示内容。
    • 内存管理:TouchGFX 提供灵活的内存管理方式,可以根据应用需求调整内存池的大小。它支持图形硬件加速(如 GPU 和 DMA2D),使得图形渲染更加高效。
    • 字符与字体:支持自定义字体,内置了多种字符集和字体格式,且提供了图形界面元素的个性化定制。
  • 适用场景

    • 适用于中高端嵌入式显示应用,特别是要求高性能和精美动画效果的设备,如智能仪表、嵌入式消费电子产品、汽车显示屏等。

4、Qt for Embedded

  • 特性

    • 图形用户界面(GUI):Qt 是一个功能非常强大的跨平台 GUI 框架,Qt for Embedded 版本专为嵌入式系统设计,支持全面的 GUI 功能,如窗口管理、复杂的控件、动画等。
    • 任务特性:Qt 是一个完整的应用程序框架,内建有事件循环和任务调度系统,可以在多任务环境下运行。因此,它可以直接处理任务调度,不需要依赖外部的 RTOS,尽管它也可以与 RTOS 配合使用。
    • 内存管理:Qt for Embedded 相对较重,对于资源有限的嵌入式设备,可能会面临内存占用较高的问题。它需要较大的内存空间(通常为几 MB 到几十 MB)。
    • 字符与字体:支持多种字体格式,并且可以通过 Qt Creator 自定义和优化字体和字符集。Qt 提供的字体库非常丰富,可以通过字体渲染引擎来优化显示效果。
  • 适用场景

    • 适用于需要丰富 GUI 功能、复杂交互、以及较高性能要求的嵌入式系统,尤其是在大屏幕显示、用户界面复杂、需要丰富视觉效果的应用中,如智能家居、工业控制、医疗设备等。

5、特性对比总结

特性/框架emWinLVGLTouchGFXQt for Embedded
图形界面(GUI)强大,支持各种控件和图形元素轻量,支持基础控件和动画强大,支持复杂图形和动画全功能,支持复杂控件和动画
任务调度无内建任务调度,需与 RTOS 配合无内建任务调度,需与 RTOS 配合支持 RTOS,内建任务调度自带任务调度系统
内存管理可配置内存使用,支持硬件加速内存配置灵活,适合低资源设备灵活内存管理,支持 GPU 加速高内存需求,适合较大内存设备
字符与字体自定义字体和字符集,支持抗锯齿支持自定义字体和字符集支持自定义字体和字符集支持多种字体格式和优化
硬件加速支持支持 GPU 渲染加速支持 GPU 加速支持 GPU 加速支持 GPU 加速
资源需求非常低中等较高
应用场景中低端嵌入式设备,特别是资源受限的设备低资源设备,触摸屏应用高性能、高端嵌入式显示高端嵌入式设备,复杂 UI 设计

总结

  • emWin 适用于硬件资源有限且需要较低内存消耗的嵌入式系统,特别是工业控制、医疗设备等。
  • LVGL 是一个开源且灵活的图形库,适用于资源有限的嵌入式系统,尤其是需要触摸屏支持的低功耗设备。
  • TouchGFX 适合高性能嵌入式显示应用,支持动画和硬件加速,适用于需要复杂界面的中高端嵌入式设备。
  • Qt for Embedded 适用于需要复杂图形界面和较高硬件资源支持的系统,适合大屏幕、复杂界面的嵌入式设备。

二、GUI重要结合内容

1、触摸与DMA2D

        触摸屏和图形渲染是嵌入式系统中常见的输入输出方式,特别是在基于显示器的交互界面中。DMA2D(Direct Memory Access 2D)是一个图形加速器,用于提高图形绘制的效率,尤其是在有触摸输入的应用中。

  • 触摸屏:嵌入式系统的触摸屏通常使用 ADCI2C/SPI 接口与微控制器进行通信,获取用户触摸坐标。这些坐标会传递给图形库(如 LVGLTouchGFX),并用来驱动 UI 元素的更新。

  • DMA2D:DMA2D 主要用于加速 2D 图形处理,如图像缩放、旋转、色彩填充、图形绘制等。通过 DMA 通道,数据可以直接在内存中传输,减少 CPU 的负担,提升图形的渲染速度。对于触摸屏应用,DMA2D 可以帮助加速 UI 渲染,尤其是当需要频繁更新 UI(如滑动、动画效果等)时。

    例如,TouchGFXLVGL 都可以通过 DMA2D 实现高效的图形绘制,尤其是在 STM32 等具有硬件加速的微控制器上。通过结合 DMA2D,系统可以实现更平滑的 UI 更新和更低的延迟。

2、系统配合

        GUI 在嵌入式系统中的实现通常需要与其他系统组件(如 RTOS、硬件、输入设备等)配合工作。系统配合主要是指 GUI 与系统其他部分的协同工作。

  • RTOS(实时操作系统):在多任务的系统中,RTOS 提供了任务调度和资源管理。GUI(如 LVGLTouchGFX 等)通常与 RTOS 配合,作为一个或多个任务存在,定期更新屏幕,处理用户输入事件等。RTOS 会负责调度这些任务的执行,确保系统响应及时。通常,GUI 会有一个或多个定时任务,用来定时刷新界面,处理触摸输入等。

  • 硬件配合:嵌入式系统中的 GUI 通常需要与显示控制器、图形加速器、触摸控制器等硬件组件配合。不同的显示屏(如 TFTOLEDLCD 等)会与不同的硬件接口(如 SPIParallel 等)配合,GUI 库会利用这些硬件资源来实现图形渲染。

    • 显示控制器:GUI 系统通过显示控制器(如 ST7789ILI9341 等)进行屏幕输出。GUI 库会将渲染的图像数据发送到显示控制器进行显示。
    • 触摸控制器:触摸输入会通过触摸屏控制器(如 FT5x06XPT2046)获取,GUI 库需要通过触摸控制器的接口获取输入坐标,并更新相应的 UI 元素。

3、SRAM与内存

        在嵌入式系统中,GUI 的渲染需要大量的内存来存储图形数据和 UI 元素。内存的管理和分配对于 GUI 性能至关重要。

  • SRAM(静态随机存取存储器):SRAM 是嵌入式系统中的主要内存类型之一,通常用于存储屏幕缓冲区、图形资源等。由于 SRAM 速度较快,适用于图形渲染过程中需要频繁读写的区域。

    • 内存分配:GUI 库(如 emWinLVGLTouchGFX 等)会根据系统的内存限制,分配相应的缓冲区用于存储图形数据。例如,显示缓冲区存储完整的图像数据,通常分为前缓冲区和后缓冲区(双缓冲),以避免屏幕闪烁。

    • 图形库优化:有些图形库(如 TouchGFX)允许开发者配置内存使用策略,比如在 SDRAM 中存储图形数据,而在 SRAM 中存储关键 UI 元素。这样可以优化内存的使用,避免 SRAM 的不足问题。

  • 外部内存:如果系统的内部内存(SRAM)不足,常常需要使用外部 SDRAMFlash 来存储图形数据。图形库可以通过 DMA 控制器将数据从外部内存传输到显示控制器进行显示。为了提高性能,开发者通常会选择使用高带宽的内存接口(如 FSMCQuad SPI)。

4、字符与图片

图形库的功能不仅限于绘制基本图形(如矩形、圆形、线条等),还包括字符和图片的显示。字符和图片的渲染是 GUI 的重要组成部分,尤其是在显示文本信息或图标时。

  • 字符显示:大多数图形库(如 emWinLVGL)提供了字符渲染的功能,可以通过字体库来显示不同的字符。字符的渲染通常依赖于位图字体(如 MonospaceTrueType 字体),并通过算法将字符的形状绘制到屏幕上。字体的大小、颜色、样式等可以根据需求配置。

    • 内存管理:字符渲染时,需要将字符数据从内存读取到显示缓冲区。在内存不足的情况下,开发者可以选择通过外部 Flash 或 SRAM 存储字体资源,并动态加载显示需要的字符。
  • 图片显示:图形库还支持图片的显示,通常通过 BMPJPEGPNG 等格式来存储和显示图片。不同的库对图片格式的支持不同,但基本上都提供了将图片解码并显示到屏幕上的功能。

    • 图片解码:有些图形库提供了图片解码器,可以直接解码并显示图片。比如 LVGL 支持 BMP、PNG、JPEG 等格式的解码,并能够将解码后的图片显示在屏幕上。

    • 内存管理:图片通常需要更大的内存来存储。例如,显示一张 320x240 分辨率的 24 位 RGB 图片,需要约 230 KB 的内存空间。对于内存有限的嵌入式系统,开发者需要优化内存管理,例如只在需要时加载图片,或者使用低分辨率图像来节省内存。

5、GUI配置

(1)、emWin

  • 特性:专为嵌入式设备设计,适合在内存和计算资源有限的环境中运行。支持多种显示接口,能够有效管理内存和图形资源。
  • 任务调度:不具备内建的任务调度,需要依赖外部的 RTOS。
  • 配置:支持动态内存管理、字体和图像的配置。开发者可以根据硬件资源配置字体大小、图像分辨率等。
  • 内存管理:允许开发者灵活配置显示缓冲区、字体库等内存使用策略。

(2)、LVGL

  • 特性:开源的图形库,支持多种显示和输入设备。具有高度可配置性,支持动画、事件驱动、触摸输入等功能。
  • 任务调度:与 RTOS 集成,利用 RTOS 的任务调度来管理 GUI 的更新。支持自定义任务周期和优先级。
  • 配置:支持动态和静态内存管理,字体、图片、屏幕分辨率、触摸屏配置等都可以自定义。
  • 内存管理:可以根据系统配置存储图形资源(如图片、字体等)到外部存储器。

(3)、TouchGFX

  • 特性:专为高性能嵌入式图形应用设计,支持硬件加速(DMA2D)。适合于 STM32 系列微控制器。
  • 任务调度:与 RTOS 集成,支持任务和定时器管理。
  • 配置:支持丰富的图形界面设计,能够根据硬件特性配置图形资源、动画等。
  • 内存管理:支持外部 SDRAM 存储图形资源,可以动态加载和显示图像。

(4)、Qt

  • 特性:功能强大的跨平台图形框架,支持多种嵌入式系统。支持复杂的 GUI 设计,拥有丰富的控件和工具。
  • 任务调度:内建的事件调度系统,支持信号与槽机制。通常与嵌入式 RTOS 配合使用,支持多任务调度。
  • 配置:提供详细的图形界面和控件配置。支持字体、图片、动画、触摸输入等多种功能。
  • 内存管理:需要较大的内存资源,不太适用于低内存的嵌入式系统,但在高性能系统中表现出色。

相关文章:

STM32单片机GUI系统1 GUI基本内容

目录 一、GUI简介 1、emWin 2、LVGL (Light and Versatile Graphics Library) 3、TouchGFX 4、Qt for Embedded 5、特性对比总结 二、LVGL移植要求 三、优化LVGL运行效果方法 四、LVGL系统文件 一、GUI简介 在嵌入式系统中,emWin、LVGL、TouchGFX 和 Qt 是…...

Prometheus+Grafana实现对服务的监控

PrometheusGrafana实现对服务的监控 前言:PrometheusGrafana实现监控会更加全面,监控的组件更多 Prometheus官网 https://prometheus.io/docs/prometheus/latest/getting_started/ Grafana官网 https://grafana.com/docs/ 一、安装PrometheusGrafana 这…...

hook原理和篡改猴编写hook脚本

hook原理: hook是常用于js反编译的技术;翻译就是钩子,他的原理就是劫持js的函数然后进行篡改 一段简单的js代码 :这个代码是顺序执行的 function test01(){console.log(test01)test02() } function test02(){console.log(02)tes…...

Sign签证绕过

Sign的简介 Sign是指一种类似于token的东西 他的出现主要是保证数据的完整性,防篡改 就是一般的逻辑是 sign的加密的值和你输入的数据是相连的(比如sign的加密是使用输入的数据的前2位数字配合SHA1 等这样的) 绕过 :碰运气可以…...

【Vue篇】重剑无锋:面经PC项目工程化实战面经全解

目录 引言 一、项目功能演示 1. 目标 2. 项目收获 二、项目创建目录初始化 vue-cli 建项目 三、ESlint代码规范及手动修复 1. JavaScript Standard Style 规范说明 2. 代码规范错误 3. 手动修正 四、通过eslint插件来实现自动修正 五、调整初始化目录结构 1. 删除…...

JVM参数详解与实战案例指南(AI)

JVM参数详解与实战案例指南 一、JVM参数概述与分类 JVM参数是控制Java虚拟机运行时行为的关键配置项,合理设置这些参数可以显著提升应用性能。根据功能和稳定性,JVM参数主要分为三类: 标准参数:所有JVM实现都必须支持&#xff…...

C++通过空间配置器实现简易String类

C实现简易String类 在C中&#xff0c;使用空间配置器&#xff08;allocator&#xff09;实现自定义string类需要管理内存分配、释放及对象构造/析构。 #include <memory> #include <algorithm> #include <cstring> #include <stdexcept> #include &l…...

MyBatis:简化数据库操作的持久层框架

1、什么是Mybatis? MyBatis 本是apache的一个开源项目iBatis, 2010年这个项目由 apachesoftwarefoundation 迁移到了google code,由谷歌托管,并且改名为MyBatis 。 2013年11月迁移到Github。 iBATIS一词来源于“internet”和“abatis”的组合,是一个基于Java的持久层框…...

Spring Boot集成Spring AI与Milvus实现智能问答系统

在Spring Boot中集成Spring AI与Milvus实现智能问答系统 引言 随着人工智能技术的快速发展&#xff0c;越来越多的企业开始探索如何将AI能力集成到现有系统中。本文将介绍如何在Spring Boot项目中集成Spring AI和向量数据库Milvus&#xff0c;构建一个高效的智能问答系统。 …...

软件工程(六):一致性哈希算法

哈希算法 定义 哈希算法是一种将任意长度的输入&#xff08;如字符串、文件等&#xff09;转换为固定长度输出的算法&#xff0c;这个输出称为“哈希值”或“摘要”。 常见的哈希算法 哈希算法哈希位数特点MD5128位快速&#xff0c;但已不安全SHA-1160位安全性提高&#xf…...

Linux内存分页管理详解

Linux内存分页管理详解:原理、实现与实际应用 目录 Linux内存分页管理详解:原理、实现与实际应用 一、引言 二、内存分页机制概述 1. 虚拟地址与物理地址的划分 2. 分页的基本原理 三、虚拟地址到物理地址的转换 1. 地址转换流程 2. 多级页表的遍历 四、多级页表的…...

work-platform阅读

Redis存储的是字节数据&#xff0c;所以任何对象想要存进redis&#xff0c;都要转化成字节。对象转化为字节流的过程&#xff0c;叫序列化&#xff0c;反之&#xff0c;叫反序列化 Redis 序列化详解及高性能实践-CSDN博客https://blog.csdn.net/zhangkunls/article/details/14…...

在 Excel xll 自动注册操作 中使用东方仙盟软件————仙盟创梦IDE

windows 命令 "C:\Program Files\Microsoft Office\root\Office16\EXCEL.EXE" /X "C:\Path\To\仙盟.xll" excel 注册 Application.RegisterXLL "XLMAPI.XLL" 重点代码解析 excel 命令模式 [ExcelCommand(Description "使用参数")] …...

微调后的模型保存与加载

在Hugging Face Transformers库中&#xff0c;微调后的模型保存与加载方式因微调方法&#xff08;如常规微调或参数高效微调&#xff09;而异。 一、常规微调模型的保存与加载 1、 保存完整模型 使用 save_pretrained() 方法可将整个模型&#xff08;包含权重、配置、分词器…...

PostgreSQL 日常维护

目录 一、基本使用 1、登录数据库 2、数据库操作 &#xff08;1&#xff09;列出库 &#xff08;2&#xff09;创建库 &#xff08;3&#xff09;删除库 &#xff08;4&#xff09;切换库 &#xff08;5&#xff09;查看库大小 3、数据表操作 &#xff08;1&#xff…...

Ntfs!ATTRIBUTE_RECORD_HEADER结构$INDEX_ROOT=0x90的一个例子

Ntfs!ATTRIBUTE_RECORD_HEADER结构$INDEX_ROOT0x90的一个例子 1: kd> dx -id 0,0,899a2278 -r1 ((Ntfs!_FILE_RECORD_SEGMENT_HEADER *)0xc431a400) ((Ntfs!_FILE_RECORD_SEGMENT_HEADER *)0xc431a400) : 0xc431a400 [Type: _FILE_RECORD_SEGMENT_HEADER …...

leetcode hot100刷题日记——7.最大子数组和

class Solution { public:int maxSubArray(vector<int>& nums) {//方法一&#xff1a;动态规划//dp[i]表示以i下标结尾的数组的最大子数组和//那么在i0时&#xff0c;dp[0]nums[0]//之后要考虑的就是我们要不要把下一个数加进来&#xff0c;如果下一个数加进来会使结…...

LlamaIndex

1、大语言模型开发框架的价值是什么? SDK:Software Development Kit,它是一组软件工具和资源的集合,旨在帮助开发者创建、测试、部署和维护应用程序或软件。 所有开发框架(SDK)的核心价值,都是降低开发、维护成本。 大语言模型开发框架的价值,是让开发者可以更方便地…...

下一代电子电气架构(EEA)的关键技术

我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 钝感力的“钝”,不是木讷、迟钝,而是直面困境的韧劲和耐力,是面对外界噪音的通透淡然。 生活中有两种人,一种人格外在意别人的眼光;另一种人无论…...

CSDN gitcode代码推送

当我使用用户名密码时一直无法推送&#xff0c;报下面这个错误 找了半天才知道&#xff0c; 他这个git不能用账号密码推送代码&#xff0c;idea弹出来的用户名&#xff0c;就是你头像旁边这个&#xff0c;没有符号 密码需要你创建一个令牌 这个令牌才是你要填写的密码&#x…...

中级统计师-统计学基础知识-第五章 相关分析

第一节 相关关系 1. 函数关系 vs 相关关系 函数关系 定义&#xff1a;变量间存在严格确定性的对应关系&#xff08;如 y f ( x ) y f(x) yf(x)&#xff09;例子&#xff1a;本金 x x x 与利息收入 y x 0.027 x y x 0.027x yx0.027x特点&#xff1a;一一对应&#xff…...

OpenCV CUDA模块图像过滤------用于创建一个最大值盒式滤波器(Max Box Filter)函数createBoxMaxFilter()

操作系统&#xff1a;ubuntu22.04 OpenCV版本&#xff1a;OpenCV4.9 IDE:Visual Studio Code 编程语言&#xff1a;C11 算法描述 createBoxMaxFilter()函数创建的是一个 最大值滤波器&#xff08;Maximum Filter&#xff09;&#xff0c;它对图像中每个像素邻域内的像素值取最…...

OpenCv高阶(十五)——EigenFace人脸识别

文章目录 前言一、EigenFace人脸识别原理二、EigenFace人脸识别代码1、导入OpenCV和NumPy库2、数据加载与预处理部分3、创建与训练EigenFace模型部分4、预测与结果输出部分5、可视化部分&#xff1a;在测试图像上叠加识别结果 总结 前言 人脸识别作为生物特征识别技术的重要分…...

Linux系统下nslookup命令的基本使用

Linux系统下 nslookup命令的基本使用 引言一、nslookup介绍二、使用帮助三、 基本使用方法1. 查询域名对应的IP地址2. 查询特定的DNS记录类型3. 使用特定的DNS服务器进行查询4. 交互模式 四、注意事项五、总结 引言 在网络管理中&#xff0c;DNS&#xff08;域名系统&#xff…...

【笔记】PyCharm 中创建Poetry解释器

#工作记录 在使用 PyCharm 进行 Python 项目开发时&#xff0c;为项目配置合适的 Python 解释器至关重要。Poetry 作为一款强大的依赖管理和打包工具&#xff0c;能帮助我们更便捷地管理项目的依赖项与虚拟环境。下面将详细记录在 PyCharm 中创建 Poetry 解释器的步骤。 前提条…...

Qwen 3技术报告详细解读

近日&#xff0c;Qwen 3系列大模型正式发布&#xff0c;涵盖从0.6B到235B参数的多个规模版本&#xff0c;包括6个Dense模型和2个混合专家&#xff08;MoE&#xff09;模型。本文将从模型架构、预训练策略、后训练优化等方面进行全面解读&#xff0c;帮助读者深入理解Qwen 3的技…...

leetcode 螺旋矩阵 java

官方还得是官方&#xff01; class Solution {public List<Integer> spiralOrder(int[][] matrix) {int l 0, r matrix[0].length - 1;int t 0, b matrix.length - 1;int x 0;List<Integer> res new ArrayList<>();while (true) {for (int i l; i …...

Spring Boot 项目中 Redis 存储 Session 对象序列化处理

目录 一、为什么需要序列化处理二、Spring Boot 集成 Redis 存储 Session2.1 添加依赖2.2 配置 Redis 三、自定义序列化和反序列化3.1 创建序列化配置类3.2 测试序列化和反序列化 四、其他序列化方式4.1 使用 JdkSerializationRedisSerializer4.2 使用 StringRedisSerializer 五…...

军工与航空航天特种PCB精密制造:猎板如何定义行业技术新标准?

一、军工与航空航天PCB的极限挑战 在低轨卫星载荷、战机航电系统等场景中&#xff0c;特种PCB需同时满足三大核心指标&#xff1a; ​​极端环境耐受性​​&#xff1a;工作温度横跨-55℃至200℃&#xff0c;承受20G机械振动与100krad辐射剂量&#xff0c;盐雾腐蚀测试超过50…...

springboot+vue实现鲜花商城系统源码(带用户协同过滤个性化推荐算法)

今天教大家如何设计一个 鲜花商城 , 基于目前主流的技术&#xff1a;前端vue3&#xff0c;后端springboot。学习完这个项目&#xff0c;你将来找工作开发实际项目都会又很大帮助。文章最后部分还带来的项目的部署教程。 系统有着基于用户的协同过滤推荐算法&#xff0c;还有保证…...

MyBatis 关联映射与多表查询实战教程

一、关联查询基础 1. 连接类型与选择 LEFT JOIN(左连接)SELECT u.*, r.role_name FROM User u LEFT JOIN user_role ur ON u.id = ur.uid LEFT JOIN Role r ON ur.rid = r.id;- **规则**:以左表为主,保留左表所有记录,右表无匹配时填充`NULL`。 - **场景**:查询主体…...

【AI流程应用】智能知识库搭建与实战应用

JeecgBoot 平台的 AIGC 功能模块&#xff0c;是一套类似 Dify 的 AIGC应用开发平台 知识库问答 子系统&#xff0c;是一款基于 LLM 大语言模型 AI 应用平台和 RAG 的知识库问答系统。 其直观的界面结合了 AI 流程编排、RAG 管道、知识库管理、模型管理、对接向量库、实时运行可…...

微店平台店铺商品接口开发指南

微店API获取店铺所有商品实现方案 以下是使用微店开放平台API获取店铺所有商品的完整实现代码&#xff0c;包含请求封装、分页处理和错误处理机制。 点击获取key和secret from weidian_api import WeidianAPI # 配置你的微店应用凭证 APP_KEY "your_app_key" APP_…...

springboot3+vue3融合项目实战-大事件文章管理系统-更新文章分类和增加文章分类优化-分组校验

因为我们之前在category实体类里面增加了notnull注解&#xff0c;而之前新增文章分类模块新增文章是不需要id的&#xff0c;而id是由数据库自动分配的&#xff0c;这就导致不能新增文章了&#xff0c;所以我们要进行分组校验 思路如下&#xff1a; 我们更改category代码&…...

Vue.js教学第九章:Vue动态与异步组件,高效开发全攻略

Vue 组件的动态与异步:探索高效开发路径 在 Vue.js 开发领域中,组件的动态与异步加载机制是构建复杂且高性能前端应用的关键策略。本研究深入探究 Vue 中动态组件与异步组件的原理、用法及性能优化实践,旨在为开发者提供全面且深入的技术指引,助力其在实际项目中高效运用。…...

CVE-2018-1270源码分析与漏洞复现(spring-messaging 表达式注入)

漏洞概述 CVE-2018-1270 是 Spring 框架中的一个高危远程代码执行&#xff08;RCE&#xff09;漏洞&#xff0c;影响版本为 Spring Framework 5.0–5.0.4 和 4.3–4.3.14。攻击者通过构造包含恶意 SpEL&#xff08;Spring Expression Language&#xff09;表达式的 STOMP&…...

DevOps学习回顾03-ops三部曲之配置管理(CM)

快速回顾 Ops 中配置管理的一些常见的方式&#xff0c;以及一些配置文件常见的组织形式 参考来源 极客时间-全栈工程师修炼指南-OPS三部曲之配置管理 什么是配置管理&#xff1f;–IBM 五大最流行的配置管理工具 为啥需要配置管理&#xff1f; CM 的主要目标是控制复杂系统…...

二进制编码、定点数与浮点数

1. 二进制编码 1.1. 字符串的表示&#xff0c;从编码到数字 不仅数值可以用二进制表示&#xff0c;字符乃至更多的信息都能用二进制表示。最典型的例子就是字符串&#xff08;Character String&#xff09;。最早计算机只需要使用英文字符&#xff0c;加上数字和一些特殊符号…...

CentOS:搭建国内软件repository,以实现自动yum网络安装

centosgit仓库_寂寞沙冷州的技术博客_51CTO博客 yum 很慢 centos yum安装慢_mob64ca1417b0c6的技术博客_51CTO博客 yum配置&#xff0c;文件&#xff0c;命令详解-CSDN博客 yum仓库简介_yum库是什么-CSDN博客 rootwww:/etc/yum.repos.d# pwd /etc/yum.repos.d ###创建下面这个.…...

C# AOP编程

AOP(面向切片编程的概念我这里就不介绍了&#xff0c;这里先介绍一下C#中的AOP编程框架。 1.AOP的分类 .net下支持AOP的框架很多&#xff0c;搜了一下有&#xff1a;PostSharp、AspectInjector、Fody 、Castle Windsor、Spring.NET、Ninject、Unity等&#xff0c;实现的方式主要…...

【Element UI排序】JavaScript 的表格排序sortable=“custom“和 @sort-change

目录 一、elementUI排序功能实际案例二、 实例2三、 实例3 Sortable — 是一个 JavaScript 库&#xff0c;用于在现代浏览器和触摸设备上对拖放列表进行重新排序。 一、elementUI排序功能实际案例 表格每一项中加上sortable&#xff0c;可以展示排序的小图标。 在列中设置so…...

使用Jenkins部署nodejs前端项目

1. 安装node环境 1.1 下载 https://nodejs.org/zh-cn/download 1.2 解压到安装目录 tar -xJvf node-v22.15.1-linux-x64.tar.xz mv node-v22.15.1-linux-x64 /home/soft/ mv node-v22.15.1-linux-x64/ node22原本计划安装 node22和node18&#xff0c;但是CentOS7.9 GLIBCXX …...

阿里云域名 绑定 华为云服务器ip

阿里云&#xff08;万网&#xff09;域名转入华为云域名图文教程 上-云社区-华为云 阿里云&#xff08;万网&#xff09;域名转入华为云域名图文教程-云社区-华为云 在阿里云备案了域名&#xff0c;解析到华为云服务器&#xff0c;不在同一个服务商这样可以使用么&#xff1f…...

在局域网(LAN)中查看设备的 IP 地址

在局域网&#xff08;LAN&#xff09;中查看设备的 IP 地址&#xff0c;可以使用以下几种方法&#xff1a; 方法 1&#xff1a;使用 ipconfig&#xff08;Windows&#xff09; 1. 打开 CMD&#xff1a; 按 Win R&#xff0c;输入 cmd&#xff0c;回车。 2. 输入命令&#…...

第3周作业-1层隐藏层的神经网络分类二维数据

文章目录 ***1层隐藏层的神经网络分类二维数据***1. 导入包2. 数据集2.1 导入数据集2.2 查看数据集图案2.3 查看数据集维度 3. Logistic回归3.1 Logistic回归简介3.2 Logistic回归模型3.3 绘制边界 4. 神经网络模型4.1 神经网络简介4.2 神经网络数学模型4.3 建立神经网络方法4.…...

中天智能装备科技有限公司:智能仓储领域的卓越之选​

在仓储智能化转型的时代浪潮中&#xff0c;中天智能装备科技有限公司以深厚的技术积淀与创新实力&#xff0c;成为众多企业迈向高效仓储的理想合作伙伴。无论是自动化立体库的精准搭建&#xff0c;还是 AGV 系统的智能部署&#xff0c;中天都以专业姿态为行业树立标杆。​ 硬核…...

Linux nbd 网络块设备(2)-内核实现

Linux nbd网络块设备(2)-内核实现 关注我&#xff0c;一起学习吧&#xff0c;后续持续更新内核相关 1. 概述&#xff1a; 内核linux/drivers/block/nbd.c 是nbd 网络设备的底层驱动实现逻辑。本文主要介绍nbd 设备注册及I/O请求的处理逻辑。 2. nbd 设备的初始化&#xff1…...

Python输出与输入

White graces&#xff1a;个人主页 &#x1f649;专栏推荐:Java入门知识&#x1f649; &#x1f439;今日诗词:吟怀未许老重阳&#xff0c;霜雪无端入鬓长&#x1f439; ⛳️点赞 ☀️收藏⭐️关注&#x1f4ac;卑微小博主&#x1f64f; ⛳️点赞 ☀️收藏⭐️关注&#x1f4…...

【C语言】复习~数组和指针

数组和指针 1.字符指针 char* 使用方法一&#xff1a; 使用方法二&#xff1a; 这里本质上是把常量字符串的首地址放到了指针变量pstr里面 看下面的面试题 str3和str4指向的是同一个常量字符串&#xff0c;c/c会把常量字符串存储到一个单独的内存区域&#xff0c; 当几…...

rocketmq优先级控制 + 并发度控制

背景 最近在做大模型的项目&#xff0c;算法部门提供的文档解析接口&#xff0c; 并发度为1&#xff0c; 业务这边需要在ai问答和上传文档时进行解析和向量化&#xff0c;文档解析只能单线程跑&#xff0c;问答的文档解析需要高优先级处理。 采用 rocketmq 做文档上传和解析的…...