如何通过Linux在高通跃龙QCS6490 平台上优化部署AI/ML模型?

简介

高通于今年推出了高通跃龙,在边缘提供前沿的AI性能和超低延迟,为可扩展的工业创新带来新的可能性。研华已在各种规格尺寸的嵌入式方案中采用跃龙技术,包括由高通跃龙 QCS6490处理器支持的嵌入式模块、单板电脑和AI摄像头解决方案。研华QCS6490解决方案将先进的硬件集成与研华Edge AI SDK的强大功能相结合,不仅优化了性能,还通过集成和测试高通AI软件和SOP以确保无缝兼容性。这种强大的协同作用简化了开发并加快了部署,为创新的边缘AI应用铺平了道路。接下来,我们将带您了解由高通QCS6490支持的AOM-2721 OSM开发套件的快速启动AI开发过程,演示您如何快速利用其功能来推动各行业的变革性解决方案。

准备

硬件

1.AOM-2721开发套件,采用高通跃龙QCS6490,预装Windows 11 IoT企业版操作系统。

  • 高通8核Kryo CPU,主频高达2.7GHz
  • Hexagon Tensor处理器,具备12 TOPS AI能力
  • Adreno VPU 633,4K30编码/4K60解码H.264/265
  • Adreno GPU 643、OpenGL ES3.2 / OpenCL 2.0
  • 板载8 GB LPDDR5 内存,8533MT/s
  • 板载128 GB UFS + 128 GB eMMC 存储器
  • 特色I/O接口:1 x MIPI-DSI / eDP 1920x1080 @60 Hz和1 x DP 1920x1080 @60Hz、2 x 4-Lan MIPI-CSI、1 x USB 3.2 Gen1、2 x PCIe Gen3 x1、1 x PCIe Gen3 x2、1 x GbE

2.一台x86开发机,配备16 GB内存和350 GB存储器

3.一台全高清HDMI显示器和一条HDMI电缆

4.一套USB鼠标和键盘

软件

1.用于x86开发机的Ubuntu 20.04或22.04

2.用于x86开发机的Docker引擎

3.用于AOM-2721的研华Edge AI SDK/推理工具包(下载;安装教程)

本文主要涉及两个主题和详细方法:

1.如何在 AOM-2721 上启用 AI 运行时

  • 编译 Yocto OS 镜像(通过开发机)
  • 安装 Yocto OS(通过 Windows 主机)
  • 在 AOM- 2721 上设置 AI 运行时

2.如何使用研华 Edge AI SDK 中的无代码工具快速评估 AI 性能

  • 在 AOM-2721 上启动 Edge AI SDK/Inference Kit
  • 启动视觉人工智能检测物体
  • 监测工作量和运行基准

3.如何使用AI开发实际应用的工作流程示例:

  • 使用高通AI Hub云服务
  • 在AOM-2721上部署高通AI Hub模型以执行AI任务
  • 在AOM-2721上集成开源YOLO模型以执行AI任务

如何在AOM-2721上设置AI运行时

1.编译Yocto OS镜像(通过开发机)

AOM-2721 的目标操作系统:

  • Yocto Version: 4.0.18
  • Kernel Version: 6.6.28
  • Meta Build ID: QCM6490.LE.1.0-00218-STD.PROD-1

编译时对开发机的要求:

  • OS: Ubuntu 20.04 或 22.04
  • RAM: 16 GB以上
  • Storage: 需350 GB

现在,我们将一步步进行。首先安装构建工具,然后下载研华定制的BSP,获取基本的Yocto OS 镜像,最后编译所需的定制Yocto OS镜像。

首先,使用预编译的docker镜像,其中包含必要的工具链。

要提取docker映像,请执行以下命令:

$ sudo docker pull advrisc/u20.04-qcslbv2:latest

然后,在开发机器上运行docker镜像:

$ mkdir -p /home/bsp/myLinux

$ sudo docker run --privileged -it --name qclinux -v /home/bsp/myLinux:/home/adv/BSP:rw advrisc/u20.04-qcslbv2 /bin/bash

adv@7cc0fa834366:~$ sudo chown adv:adv -R BSP

下载研华定制 BSP:

【注意】请提前联系研华获取 ADV_GIT_TOKEN。

$ cd /home/adv/BSP

$ git config --global credential.helper 'store --file ~/.my-credentials'

$ echo "https://AIM-Linux:${ADV_GIT_TOKEN}@dev.azure.com" > ~/.my-credentials

(以下是如何获取最新 BSP 的示例)。

$ repo init -u https://dev.azure.com/AIM-Linux/risc_qcs_linux_le_1.1/_git/manifest -b main -m adv-6.6.28-QLI.1.1-Ver.1.1_robotics-product-sdk-1.1.xml

$ repo sync -c -j${YOUR_CPU_CORE_NUM}

下载的BSP将包括以下文件:

下载高通构建的基本Yocto OS镜像。(下载连接,需外网)

-文件大小约为 30 GB。

-MD5 校验和为 02a2d44d728cd8cabf4a9c25752f0606。

解压下载文件:

【注意】请提前联系研华获取密码。

$ cd /home/adv/BSP

$ openssl des3 -d -k ${PASSWORD} -salt -pbkdf2 -in downloads.qcs6490.le.1.1.r00041.0.tar.gz -out downloads.qcs6490.le.1.1.r00041.0.decrypt.tar.gz

$ tar -zxvf downloads.qcs6490.le.1.1.r00041.0.decrypt.tar.gz

接下来,通过给定的脚本设置环境变量:

$ source scripts/env.sh

最后,执行以下脚本来构建所有可用的映像:

$ scripts/build_release.sh -all

//Output ufs images: build-qcom-robotics-ros2-humble/tmp-glibc/deploy/images/qcm6490/qcom-robotics-full-image

//Output emmc images: build-qcom-robotics-ros2-humble/tmp-glibc/deploy/images/qcm6490/qcom-robotics-full-image-emmc

[附加信息]设置交叉编译器,为 AOM-2721 创建可执行代码

下载交叉编译器 SDK。(下载连接,需外网)

-文件大小约为 4 GB。

-MD5 校验和为 f4184521f8d2c71a8a2953ac1b143242。

执行安装。

$ cd build-qcom-robotics-ros2-humble/tmp-glibc/deploy/sdk

$ sudo ./qcom-robotics-ros2-humble-x86_64-qcom-robotics-full-image-armv8-2a-qcm6490-toolchain-1.0.sh

输入新的目录路径,或按Enter键使用默认路径。出现"Proceed [Y/n]?",输入Y确认继续。

当看到以下信息时,就说明交叉编译器已成功安装:

执行以下命令完成交叉编译器的设置:

$ source ${TOOLCHAIN}/environment-setup-armv8-2a-qcom-linux

2.在AOM-2721上安装Yocto操作系统(通过 Windows 主机)

在Windows主机上使用高通PCAT将Yocto OS安装到AOM-2721。

以下是安装Yocto OS的步骤:

  1. 通过Micro USB (EDL)端口将 Windows 主机连接到 AOM-2721。
  2. 进入强制恢复模式:将SW2设置为1-on。
  3. 闪存EMMC:将SW1设置为1-off,2-on。
  4. 闪存UFS:将SW1设置为1-on,2-on。

详情请参阅链接。

3.在 AOM-2721上设置AI运行

然后,需要在AOM-2721上设置AI执行QIRP环境,具体步骤如下:

$ source /opt/qcom/qirp-sdk/qirp-setup.sh

至此,AI运行时已在AOM-2721上成功设置。接下来,我们将介绍如何使用QCS6490在AOM-2721上运行人工智能应用示例。

利用研华边缘AI SDK快速评估AI能力

【注意】请确保已提前安装研华Edge AI SDK/推理工具包,如上文 "准备|软件 "部分所述。

​​​​​​​1.启动边缘AI SDK/推理工具包

步骤 1. 启动终端: 打开一个新的终端窗口。

步骤 2. 执行应用脚本: 在终端中运行以下命令:

/opt/Advantech/EdgeAISuite/MainAPP/QCS6490/app.sh

​​​​​​​2.启动视觉人工智能AI检测物体

步骤 1. 导航至 "快速启动(Vision)": 访问 "快速入门(Vision)"页面,如下图所示。

步骤 2. 选择应用程序: 从可用的应用程序中选择一个

步骤 3. 要关闭人工智能推理应用程序,请确保图形用户界面实用程序显示在屏幕顶部。

步骤 4. 按 "Esc "键关闭或退出应用程序。

​​​​​​​3.监控工作量和运行基准

提供可视化折线图,用于实时监控数据。

它能迅速评估DSP计算性能,提供性能指标值。

  • AI应用案例

    1.使用高通AI Hub云服务

本案例说明了如何使用高通云服务AI Hub评估QCS6490的AI计算性能。

Qualcomm® AI Hub旨在简化将视觉、音频和语音应用的AI模型部署到边缘终端的过程。您可以在几分钟内优化、验证并在托管的高通平台终端上部署自己的AI模型。

首先,登录高通AI Hub网站,选择目标芯片组--QCS6490。然后,AI Hub 将列出所有支持的 AI 模型和应用。

https://aihub.qualcomm.com/iot/models?domain=Computer+Vision&useCase=Object+Detection&chipsets=qualcomm-qcs6490-proxy

然后,选择所需的AI模型。(例如,YOLOv8用于物体检测)

https://aihub.qualcomm.com/iot/models/yolov8_det?domain=Computer+Vision&useCase=Object+Detection&chipsets=qualcomm-qcs6490-proxy

在这里,您可以找到有关模型及其在 QCS6490 上的推理性能的详细信息。

​​​​​​​2.部署高通AI Hub模型

您还可以从 AI Hub 下载人工智能模型,并通过 QCS6490 将其部署到 AOM-2721 上。

例如,下面是 AOM-2721 上的一个物体检测应用程序:

  • OS/Kernel: LE QIRP1.1 Yocto-4.0 / 6.6.28
  • BSP: qcs6490aom2721a1
  • AI 模型: YOLOv8-Detection
  • 输入: 视频或USB摄像头接入
  • AI 加速器: DSP

AOM-2721提供所需的AI推理框架:

组件

版本

描述

SNPE

v2.20.0.240223

用于执行深度神经网络的高通骁龙软件加速运行时。

GStreamer

1.20.7

用于构建音频/视频流等媒体处理组件图形的库。

用于连接高通 AI 中枢的主机如下:

配置

描述

备注

CPU

10th to 13th Gen Intel®

x86_64

OS

Ubuntu 22.04

Python 3.10 is required

首先,请在以下网址注册或登录高通AI Hub:

https://app.aihub.qualcomm.com/

然后,保存 "设置 - 帐户 "页面上的 token_value。

接下来,安装AI Hub工具。

$ sudo apt install git

$ sudo apt install python3-pip -y

$ sudo pip install qai-hub

导出 AI Hub 模型。

$ qai-hub configure --api_token token_value
$ pip install "qai-hub-models[yolov8-det]"
$ python3 -m qai_hub_models.models.yolov8_det.export --quantize w8a8

找到 tflite 推理模型。

$ build/yolov8_det/yolov8_det.tflite

$ mv yolov8_det.tflite yolov8_det_quantized.tflite

下载YOLO所需的标签文件。

$ git clone https://github.com/ADVANTECH-Corp/EdgeAI_Workflow.git
$ EdgeAI_Workflow\ai_system\qualcomm\aom-2721\labels\coco_labels.txt

最后,将tflite推理模型及其标签文件从主机复制到AOM-2721,并通过GStreamer管道启动AI应用程序。

输入

指令

备注

USB camera

export XDG_RUNTIME_DIR=/dev/socket/weston && export WAYLAND_DISPLAY=wayland-1

source /opt/qcom/qirp-sdk/qirp-setup.sh

gst-launch-1.0 -e v4l2src device="/dev/video2" ! queue ! tee name=split split. ! queue ! qtivcomposer name=mixer sink_1::dimensions="<640,480>" sink_1::alpha=0.5 ! queue ! waylandsink fullscreen=false width=1280 height=720 split. ! queue ! qtivtransform ! video/x-raw (memory:GBM),format=NV12,width=640,height=480 ! qtimlvconverter ! queue ! qtimltflite delegate=external external-delegate-path=libQnnTFLiteDelegate.so external-delegate-options="QNNExternalDelegate,backend_type=htp;" model=yolov8_det_quantized.tflite ! queue ! qtimlvdetection threshold=10.0 results=10 module=yolov8 labels=coco_labels.txt constants="YOLOv8,q-offsets=<20.0, 0.0, 0.0>,q-scales=<3.1391797, 0.0037510, 1.0>;" ! video/x-raw,format=BGRA,width=640,height=360 ! queue ! mixer.

Run on DSP

Video file

export XDG_RUNTIME_DIR=/dev/socket/weston && export WAYLAND_DISPLAY=wayland-1

source /opt/qcom/qirp-sdk/qirp-setup.sh

gst-launch-1.0 -e filesrc location="ObjectDetection.mp4" ! qtdemux ! queue ! h264parse ! v4l2h264dec capture-io-mode=5 output-io-mode=5 ! queue ! tee name=split split. ! queue ! qtivcomposer name=mixer sink_1::dimensions="<640,480>" sink_1::alpha=0.5 ! queue ! waylandsink fullscreen=false width=1280 height=720 split. ! queue ! qtivtransform ! video/x-raw(memory:GBM),format=NV12,width=640,height=480 ! qtimlvconverter ! queue ! qtimltflite delegate=external external-delegate-path=libQnnTFLiteDelegate.so external-delegate-options="QNNExternalDelegate,backend_type=htp;" model=yolov8_det_quantized.tflite ! queue ! qtimlvdetection threshold=31.0 results=5 module=yolov8 labels=coco_labels.txt constants="YOLOv8,q-offsets=<20.0, 0.0, 0.0>,q-scales=<3.1391797,0.0037510, 1.0>;" ! video/x-raw,format=BGRA,width=640,height=360 ! queue ! mixer.

Run on DSP

3.整合开源YOLO模型

本案列演示了如何在配备QCS6490的AOM-2721上使用开源YOLO模型开发物体检测功能。

  • OS/Kernel: LE QIRP1.1 Yocto-4.0 / 6.6.28
  • BSP: qcs6490aom2721a1
  • AI 模型: YOLOv5
  • 输入: 视频或USB摄像头输入 
  • AI 加速器: DSP

AOM-2721提供所需的AI推理框架:

组件

版本

描述

SNPE

v2.20.0.240223

用于执行深度神经网络的高通骁龙软件加速运行时。

GStreamer

1.20.7

用于构建音频/视频流等媒体处理组件图形的库。

这里列出了用于开发的机器:

配置

描述

备注

CPU

10th to 13th Gen Intel

x86_64

OS

Ubuntu 20.04

Python 3.8 is required

SDK -SNPE

* Execute an arbitrary deep neural network

* Execute the network on the Snapdragon CPU, the Adreno GPU, or the Hexagon DSP.

* Debug the network execution on x86 Ubuntu Linux.

* Convert PyTorch, TFLite, ONNX, and TensorFlow models to a Qualcomm® Neural Processing SDK Deep Learning Container (DLC) file.

* Quantize DLC files to 8- or 16-bit fixed point to run on the Hexagon DSP.

* Debug and analyze the performance of the network with Qualcomm® Neural Processing SDK tools.

* Integrate a network into applications and other code via C++ or Java.

如有需要,请按照以下步骤在开发计算机上安装 SNPE。

  1. 注册高通帐户:https://myaccount.qualcomm.com/signup
  2. 下载并安装高通软件包管理器 3:https://qpm.qualcomm.com/#/main/tools/details/QPM3
  3. 下载并安装高通AI Engine Direct SDK:https://qpm.qualcomm.com/#/main/tools/details/qualcomm_ai_engine_direct
  4. 下载并安装高通神经处理SDK:https://qpm.qualcomm.com/#/main/tools/details/qualcomm_neural_processing_sdk
  5. 安装ML框架:

$ pip install onnx==1.11.0

$ pip install tensorflow==2.10.1

$ pip install torch==1.13.1

接下来,在开发机器上按照以下步骤获取开源预训练AI模型,然后针对AOM-2721 (QCS6490) 进行优化和转换。

1.从以下网址下载yolov5n.pt模型 https://github.com/ultralytics/yolov5.

2.转换模型(pt -> onnx):

$ git clone https://github.com/ultralytics/yolov5

$ cd yolov5

$ pip install -r requirements.txt

$ python export.py --weights yolov5n.pt --include onnx

3.优化模型(ONNX -> DLC):下载指南。(参考文件链接)

然后,按照指南中的步骤1至6完成模型优化。

4.获取YOLO所需的标签文件:

$ git clone https://github.com/ADVANTECH-Corp/EdgeAI_Workflow.git

$ EdgeAI_Workflow\ai_system\qualcomm\aom-2721\labels\yolov5.labels

最后,将优化模型 (DLC) 及其标签文件复制到AOM-2721上。然后,通过GStreamer 管道启动AI应用程序。

输入

指令

备注

USB camera

export XDG_RUNTIME_DIR=/dev/socket/weston

export WAYLAND_DISPLAY=wayland-1

source /opt/qcom/qirp-sdk/qirp-setup.sh

gst-launch-1.0 -e qtivcomposer name=mixer sink_1::dimensions="<1920,1080>" ! queue ! waylandsink sync=true fullscreen=false x=10 y=10 width=1280 height=720 v4l2src device="/dev/video0" ! tee name=t ! queue ! mixer. t. ! queue ! qtimlvconverter mean="<0.0, 0.0, 0.0>" sigma="<0.003921, 0.003921, 0.003921>" ! queue ! qtimlsnpe delegate=dsp model="yolov5n-quant.dlc" layers="< Conv_266, Conv_232, Conv_198 >" ! queue ! qtimlvdetection threshold=51.0 results=10 module=yolov5 labels="yolov5.labels" ! video/x-raw,width=480,height=270 ! queue ! mixer.

Run on DSP

Video file

export XDG_RUNTIME_DIR=/dev/socket/weston

export WAYLAND_DISPLAY=wayland-1

source /opt/qcom/qirp-sdk/qirp-setup.sh

gst-launch-1.0 -e qtivcomposer name=mixer sink_1::dimensions="<1920,1080>" ! queue ! waylandsink sync=true fullscreen=false x=10 y=10 width=1280 height=720 filesrc location="file.mp4" ! qtdemux ! queue ! h264parse ! v4l2h264dec capture-io-mode=5 output-io-mode=5 ! queue ! tee name=t ! queue ! mixer. t. ! queue ! qtimlvconverter mean="<0.0, 0.0, 0.0>" sigma="<0.003921, 0.003921, 0.003921>" ! queue ! qtimlsnpe delegate=dsp model="yolov5n-quant.dlc" layers="< Conv_266, Conv_232, Conv_198 >" ! queue ! qtimlvdetection threshold=51.0 results=10 module=yolov5 labels="yolov5.labels" ! video/x-raw,width=480,height=270 ! queue ! mixer.

Run on DSP

下面是一个执行示例。

结论

本文展示了采用高通QCS6490平台的研华AOM-2721如何推进边缘AI开发。它涵盖了如何编译BSP、设置AI运行时和部署可视化AI应用程序--所有这些都在一个简化的流程中完成。我们与高通紧密合作优化了AI计算工作流程,加速部署。

通过集成研华Edge AI SDK,AOM-2721可提供即插即用的推理环境。用户可以跳过耗时的初始系统设置,以最小的工作量快速执行人工智能性能评估。这大大降低了开发开销,加快了早期测试。

我们通过简单易懂的快速入门指南和专门的技术咨询服务提供一站式支持。这种全面的方法降低了入门门槛,加快了开发进度。

从本质上讲,研华的QCS6490解决方案通过集成Edge AI SDK,实现了更快、更具成本效益的创新,让您更轻松地将Edge AI概念变为现实。通过简化从开发到部署各个阶段的解决方案,迎接智能、高效、安全的人工智能部署的未来。

了解更多信息可访问:

  1. AOM-2721 Quick Start Guide (QSG)
  2. 研华Edge AI SDK

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/pingmian/96100.shtml
繁体地址,请注明出处:http://hk.pswp.cn/pingmian/96100.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

MySQL内核革新:智能拦截全表扫描,百度智能云守护数据库性能与安全

在日常数据库运维中&#xff0c;“扫表风暴”数次悄然而至——某条未走索引的 SQL 突然执行全表扫描&#xff0c;短短几分钟内吃光 IO、拖高 CPU&#xff0c;最终引发集群抖动甚至服务不可用。这样的事故&#xff0c;你是否也曾经历过&#xff1f; 全表扫描&#xff08;Full Ta…

TCP 三次握手、四次挥手

三次握手 三次握手形象版&#xff0c;快速理解 deepseek 的象形比喻&#xff1a;三次握手建立连接就像打电话一样&#xff1a; (1) A 打给 B&#xff0c;“喂&#xff0c; 你能听到我说话吗&#xff1f;” (2) B 回答 A&#xff0c;“嗯&#xff0c;可以听到&#xff0c;你能听…

数据管理战略|1概念及组成部分

【小语】前面两个文章讲到了“数据管理战略数字化转型、数据驱动”三者之间关系,数字化改革中的原则与逻辑,本节用三次文章学习数据管理战略内容的组成部分(DAMA数据管理第1章1.2.6节)。 数据战略 VS 数字化转型 VS 数据驱动 数据管理战略|熵减与熵增相容原则 下文为【…

3.远程控制网络编程的设计上

RemoteCtrl.cpp// RemoteCtrl.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。 //#include "pch.h" #include "framework.h" #include "RemoteCtrl.h"#ifdef _DEBUG #define new DEBUG_NEW #endif// 唯一的应用程序对象C…

毕业设计|基于Python的课程智能问答系统

4系统设计4.1功能模块设计对本系统进行全面的系统功能的分析&#xff0c;可以得出基于Python《Python程序设计》课程智能问答系统的功能模块图&#xff0c;如图4-1所示。图4-1 系统功能模块图4.2数据库设计4.2.1数据库设计原则学习程序设计时&#xff0c;若想要深入理解数据库管…

iOS原生开发和Flutter开发的看法

这是一个技术选型的问题。作为一名同时精通iOS原生和Flutter的开发者&#xff0c;我的看法是&#xff1a;这不是一个“二选一”的问题&#xff0c;而是一个“如何根据场景做最佳选择”的问题。 它们不是替代关系&#xff0c;而是互补关系。以下是我对两者的对比和看法&#xff…

docker桌面版 镜像配置

配置内容 Docker Engine配置*&#xff08;截止2025年09月10日能用&#xff09; {"builder": {"gc": {"defaultKeepStorage": "20GB","enabled": true}},"experimental": false,"registry-mirrors": [&q…

Java 面向对象基础初步

Java 面向对象基础初步 面向对象的核心概念概览 面向对象的核心目标是 把数据和操作封装在一起&#xff08;对象&#xff09;&#xff0c;并通过抽象、继承与多态组织程序。简而言之&#xff0c;我们总是没法回避程序设计的四个话题&#xff1a; 封装&#xff08;Encapsulation…

反向代理技术

一、核心比喻&#xff1a;公司的总机前台 想象一下一家大公司&#xff1a; 客户&#xff1a;想联系公司里的某位员工&#xff08;比如技术部的张三&#xff09;。公司的总机号码&#xff08;唯一公开的号码&#xff09;&#xff1a;比如 400-123-4567。前台&#xff1a;接听总机…

数据整理器(Data Collators)(90)

数据整理器(Data Collators) 数据整理器(Data Collators) 导致问题的“罪魁祸首”,往往是长度不一的序列。 指令格式 关键术语说明 数据整理器(Data Collators) 数据整理器负责将多个数据样本拼接成一个迷你批次(mini-batch)。它通常处于“隐形”状态——每次使用PyT…

PySpark EDA 完整案例介绍,附代码(三)

本篇文章Why Most Data Scientists Are Wrong About PySpark EDA — And How to Do It Right适合希望高效处理大数据的从业者。文章的亮点在于强调了使用PySpark进行探索性数据分析&#xff08;EDA&#xff09;的重要性&#xff0c;避免了将Spark数据框转换为Pandas的低效做法。…

leetcode18(无重复字符的最长子串)

给定一个字符串 s &#xff0c;请你找出其中不含有重复字符的 最长 子串 的长度。示例 1:输入: s "abcabcbb" 输出: 3 解释: 因为无重复字符的最长子串是 "abc"&#xff0c;所以其长度为 3。思路&#xff1a;对于长度为0的数组单独处理其他数组最小的可能…

计算机毕设 java 高校家教平台 基于 SSM 框架的高校家教服务平台 Java+MySQL 的家教预约与课程管理系统

计算机毕设java高校家教平台75snd9 &#xff08;配套有源码 程序 mysql数据库 论文&#xff09;本套源码可以先看具体功能演示视频领取&#xff0c;文末有联xi 可分享在高校家教需求增长的背景下&#xff0c;传统家教对接依赖线下中介、信息分散&#xff0c;存在沟通成本高、课…

【自记】Python 的 SQLAlchemy 完整实践教程

目录 SQLAlchemy 介绍环境准备与安装数据库连接数据模型定义基本数据操作复杂查询操作高级特性实战项目示例性能优化与最佳实践常见问题与解决方案 1. SQLAlchemy 介绍 1.1 什么是SQLAlchemy SQLAlchemy 是一个用于 Python 的 SQL 工具和对象关系映射&#xff08;ORM&#x…

springboot rabbitmq 延时队列消息确认收货订单已完成

供应商后台-点击发货-默认3天自动收货确认&#xff0c;更新订单状态已完成。1 pom.xml 引入依赖&#xff1a;<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-amqp</artifactId></dependency>2 …

Linux内核TCP输出引擎:深入解析数据传输的核心机制

引言 传输控制协议(TCP)作为互联网最重要的基础协议之一,其实现质量直接关系到网络性能和应用体验。在Linux内核中,TCP协议的输出引擎是实现可靠数据传输的核心组件,负责将应用层数据高效、可靠地传输到网络对端。本文将深入分析Linux内核中TCP输出引擎的关键机制和实现原…

数据仓库详解

数据仓库详解第一节 数据仓库构建方法论和实践一、数据仓库与数据库的区别二、数据仓库对于企业的价值三、数据仓库的模型构建1、数据仓库构建需要考虑的问题2、什么是数仓的数据模型3、如何构建数仓的数据模型&#xff08;1&#xff09;概念模型设计&#xff08;2&#xff09;…

单身杯1(web)

web签到<?php# -*- coding: utf-8 -*- # Author: h1xa # Date: 2022-03-19 12:10:55 # Last Modified by: h1xa # Last Modified time: 2022-03-19 13:27:18 # email: h1xactfer.com # link: https://ctfer.comerror_reporting(0); highlight_file(__FILE__);$file $_…

RNN/LSTM/GRU/Transformer

RNN的局限1&#xff1a;长期依赖&#xff08;Long-TermDependencies&#xff09;问题但是同样会有一些更加复杂的场景。比如我们试着去预测“I grew up in France...I speak fluent French”最后的词“French”。当前的信息建议下一个词可能是一种语言的名字&#xff0c;但是如…

浏览器开发CEFSharp+X86 (十六)网页读取电子秤数据——仙盟创梦IDE

一、东方仙盟智能浏览器&#xff1a;跨平台&#xff0c;畅连百种硬件&#xff0c;速启现场编译东方仙盟 VOS 智能浏览器在网页调用硬件 SDK 领域堪称卓越典范。它全面兼容多平台&#xff0c;无论是电脑、手机还是各类移动终端&#xff0c;都能完美适配&#xff0c;无缝对接。令…