Ubuntu20.04安装OpenVINO环境以及YOLOv8 C++部署测试
深度学习
文章目录
- 深度学习
- 一、三种推理框架介绍
- 1、OpenVINO介绍
- 2、TensorRT介绍
- 3、Mediapipe介绍
- 二、三种框架的对比
- 1、框架自身比较
- 2.1、从模型部署上:
- 2.2.从支持深度学习模型上:
- 2.3.从应用平台上:
- 2.4.从上手的难易程度上:
- 2、应用平台比较
- 三、Ubuntu 安装 OpenVINO
- 3.1、创建或指定安装目录
- 3.2、下载 OpenVINO 安装包
- 3.3、安装 linux 环境依赖
- 3.4、创建软链接(非必须)
- 3.5、配置环境变量
- 四、YOLOv8 C++ 编译测试
- 2.1、编译安装OpenCV
- 2.2、下载 ultralytics 源码
- 2.3、修改 CMakeLists.txt
- 2.4、编译可执行文件
- 2.5、准备 OpenVINO 模型
- 2.6、detect 测试
一、三种推理框架介绍
1、OpenVINO介绍
OpenVINO是英特尔针对自家硬件平台开发的一套深度学习工具库,包含推断库,模型优化等等一系列与深度学习模型部署相关的功能。
OpenVINO™工具包是用于快速开发应用程序和解决方案的综合工具包,可解决各种任务,包括模拟人类视觉,自动语音识别,自然语言处理,推荐系统等。该工具包基于最新一代的人工神经网络,包括卷积神经网络(CNN),循环和基于注意力的网络,可在英特尔®硬件上扩展计算机视觉和非视觉工作负载,从而最大限度地提高性能。它通过从边缘到云的高性能,人工智能和深度学习推理来加速应用程序。
OpenVINO特点
在边缘启用基于CNN的深度学习推理
支持通过英特尔®Movidius™VPU在英特尔®CPU,英特尔®集成显卡,英特尔®神经计算棒2和英特尔®视觉加速器设计之间进行异构执行
通过易于使用的计算机视觉功能库和预先优化的内核加快上市时间
包括对计算机视觉标准(包括OpenCV *和OpenCL™)的优化调用
OpenVINO是一个比较成熟且仍在快速发展的推理库,提供的demo和sample都是很充足的,上手比较容易,可以用来快速部署开发,尤其是Intel的硬件平台上性能超过了大部分的开源库,毕竟是自家的亲儿子。可以这么说在x86上推断能力没有什么框架可以与之媲美。
OpenVINO对各类图形图像处理算法进行了针对性的优化,从而扩展了Intel的各类算力硬件以及相关加快器的应用空间,实现了AI范畴的异构较量,使传统平台的视觉推理能力获得了很大水平的提高。OpenVINO实现了一套通用的API,能够夹杂挪用CPU、GPU、Movidius NCS和FGPA的算力来配合完成一次视觉推理,预先实现了一系列的功能库、OpenCL kernel等,能够缩短产品面世时间。
基于OpenVINO,应用在新零售、教育、智能交通、智慧金融、智慧城市、智能工场以及无人驾驶等范畴,OpenVINO已经在国内外顶尖客户的方案中显现出强大的优势。
2、TensorRT介绍
TensorRT是一个高性能的深度学习推理优化器,可以为深度学习应用提供低延迟,高吞吐率的部署推理。TensorRT可用于对超大规模数据中心,嵌入式平台或自动驾驶平台进行推理加速。TensorRT现已能支持TensorFlow,Caffe,Mxnet,Pytorch等几乎所有的深度学习框架,将TensorRT和NVIDIA的GPU结合起来,能在几乎所有的框架中进行快速和高效的部署推理。
3、Mediapipe介绍
MediaPipe是个基于图形的跨平台框架,用于构建多模式应用的机器学习管道。
MediaPipe可在移动设备,工作站和服务器上跨平台运行,并支持移动GPU加速。使用MediaPipe,可以将应用的机器学习管道构建为模块化组件的图形。
MediaPipe专为机器学习从业者而设计包括研究人员,学生,和软件开发人员,他们实施生产就绪的ML应用程序,发布伴随研究工作的代码,以及构建技术原型。MediaPipe的主要用例上使用推理模型和其他可重用组件对应用机器学习管道进行快速原型设计。MediaPipe还有助于机器学习技术部署到各种不用硬件平台上的演示和应用程序中。
二、三种框架的对比
1、框架自身比较
2.1、从模型部署上:
OpenVINO模型部署分为两个部分:模型优化器和推理引擎。
模型优化器将训练好的模型转换为推理引擎可以识别的中间表达–IR文件,并在转换过程中对模型进行优化。推理引擎接受经过模型优化器转换并优化的网络模型,为Intel的各种计算设备提供高性能的神经网络推理运算。
TensorRT也是两个部分:build和deployment 。
build:这个阶段主要完成模型转换,将不同框架的模型转换到TensorRT。模型转换时会完成前述优化过程中的层间融合,精度校准。这一步的输出是一个针对特定GPU平台和网络模型的优化过的TensorRT模型,这个TensorRT模型可以序列化存储到磁盘或内存中。存储到磁盘中的文件称之为 plan file。deployment主要完成推理过程。将上面一个步骤中的plan文件首先反序列化,并创建一个 runtime engine,然后就可以输入数据(比如测试集或数据集之外的图片),然后输出分类向量结果或检测结果。
2.2.从支持深度学习模型上:
2.3.从应用平台上:
2.4.从上手的难易程度上:
TensorRT只能在GPU设备上运行。如果仅作为学习就需要一台不错的电脑,而要部署到硬件上,更是需要额外购买Jetson设备,因为Jetson仅是一块开发板,彩色摄像头,双目摄像头都需要自己购买安装,还要学习Jetson的开发。学习时间学习成本非常高。
Mediapipe仅支持TensorFlow ML框架。对于学习其他深度学习框架的小伙伴来说是非常不友好的。Mediapipe提供的预训练模型也是非常少的,不能给小伙伴们学习提供太多的帮助。
2、应用平台比较
好马还需配好鞍。软件层面上的对比我们已经看到,现在让我们来看看它们各自部署到的硬件平台。
OpenVINO用于OpenCV AI Kit(OAK)
OpenCV的首款开源软硬一体智能深度相机OAK,也叫DepthAI,是嵌入式空间AI平台,可帮助你构建具有真正实时3D对象定位和跟踪的产品。OAK相机减轻了AI深度视觉等工作的负担,直接从内置摄像头进行处理,使你的主机有能力处理特定位于应用程序的数据。最棒的是它是模块化的并获得MIT许可的开源设备。可以将这些Spatial AI/CV的超级功能添加到实际的商业产品中。
OAK-D系列的产品自身带有一颗4K/60fps的彩色摄像头和双目摄像头,搭载Intel MyriadX VPU芯片,算力是树莓派4B的40倍,却只有2.5W的功耗。可以应用于人脸识别,车辆识别,社交距离探测,避障等场景。
TensorRT用于Jetson Nano
Jetson Nano是NVIDIA推出的人工智能计算机。Jetson Nano支持高分辨率传感器,可以并行处理多个传感器,并且可在每个传感器流上运行多个神经网络。它还支持许多常见的人工智能框架,让开发人员轻松地将自己偏爱的模型及框架集成到产品中。
MediaPipe用于Coral Dev Board
Coral Dev Board是Google推出的单板计算机,Coral Dev Board TPU可快速构建原型,涵盖物联网(IOT)和需要快速设备上ML推理的通用嵌入式系统。然后,用户可以使用SOM结合使用板对板连接器的自定义底板,快速从原型过渡到生产。
三者优缺点总结
总结
在Coral,OAK,Jetson Nano之间让你做出选择的主要理由可能是:
最快:Egde TPU
深度感知+AI:OAK
最灵活:Jetson Nano
不过,你要为Jetson Nano的灵活性付出金钱的代价。。。它是最昂贵的,最慢且功耗最高。
而OAK价格最低,功耗最低,速度第二快,同时允许直接从图像传感器获得大量专用的计算机视觉功能。
Edge TPU是最快的,但是相对于Jetson Nano和OAK(Myriad)而言,缺点是,数据路径(视频)必须流经主CPU,并被压缩为Edge的正确格式TPU芯片需要,然后从芯片外进入神经处理(Edge TPU芯片本身),因此功率/热量大大超过了需要,并且CPU承担了这项工作。
OAK和Jetson Nano都在这里占有优势。在OAK上,MIPI摄像机直接连接到具有直接访问神经处理的内存的成像管道,并且还连接了视差深度,哈里斯滤波,运动估计等计算机视觉硬件模块,因此非常高效。同样,Jetson Nano在CPU和GPU之间具有有效的共享内存设置,因此直接从图像传感器获取图像数据并进行神经推理是资源高效的。而且,尽管没有专用的硬件模块,但GPU在这项工作上也相当出色。这是Edge TPU的唯一真正缺点,但是它仍然具有很多优势,例如与Google的所有机器学习工具,模型等紧密集成在一起,这些都是业界领先的。
三、Ubuntu 安装 OpenVINO
3.1、创建或指定安装目录
建立一个 /opt/intel 目录用于安装,也可以指定其他目录
sudo mkdir /opt/intel
3.2、下载 OpenVINO 安装包
通过以下命令下载并解压 x86_64 平台的安装包
curl -L https://storage.openvinotoolkit.org/repositories/openvino/packages/2025.0/linux/openvino_toolkit_ubuntu22_2025.0.0.17942.1f68be9f594_x86_64.tgz --output openvino_2025.0.0.tgz
tar -xf openvino_2025.0.0.tgz
sudo mv openvino_toolkit_ubuntu22_2025.0.0.17942.1f68be9f594_x86_64 /opt/intel/openvino_2025.0.0
也可从 openvino-linux 手动下载并解压。
3.3、安装 linux 环境依赖
cd /opt/intel/openvino_2025.0.0
sudo -E ./install_dependencies/install_openvino_dependencies.sh
3.4、创建软链接(非必须)
为了方便,可以通过以下命令创建一个软链接,但不是必须的
cd /opt/intelsudo ln -s openvino_2025.0.0 openvino_2025
3.5、配置环境变量
source /opt/intel/openvino_2025/setupvars.sh
以上命令只在当前终端有效,当每打开一个新终端时,需要重新执行一遍。
如果需要配置永久有效,可将上述命令添加到 ~/.bashrc 文件的最后一行,如果系统中有多个版本的openvino,不推荐这样做。
四、YOLOv8 C++ 编译测试
2.1、编译安装OpenCV
参考 ubuntu18.04 编译安装opencv3.4.8
2.2、下载 ultralytics 源码
从 ultralytics 下载源码,并解压,文件目录如下
2.3、修改 CMakeLists.txt
修改 ultralytics-8.3.72/examples/YOLOv8-OpenVINO-CPP-Inference 目录中的 CMakeLists.txt 文件,将其中的 openvino 目录改为本机安装的目录,如
2.4、编译可执行文件
通过以下命令编译 detect 可执行文件
cd ultralytics-8.3.72/examples/YOLOv8-OpenVINO-CPP-Inference
mkdir build
cd build
cmake ..
make
执行成功后,将在build目录生成detect可执行文件
2.5、准备 OpenVINO 模型
在 ultralytics 环境中通过以下命令导出 openvino 模型
yolo export model=yolov8n.pt imgsz=640 format=openvino
执行成功后,将生成 yolov8n_openvino_model 目录,里面是转换成功的openvino模型
2.6、detect 测试
将上述转换成功的 yolov8n_openvino_model 目录复制到可执行文件所在的 build 目录,同时准备一张测试图片,执行以下命令
./detect yolov8n_openvino_model/yolov8n.xml safehat.jpg
执行该命令时发生 GLIBCXX_3.4.30 找不到的错误
./detect: /home/csp/anaconda3/lib/libstdc++.so.6: version `GLIBCXX_3.4.30' not found (required by /opt/intel/openvino_2025.0.0/runtime/lib/intel64/libopenvino.so.2500)
解决方法是通过以下命令将 libstdc++.so.6 所在目录加入到环境变量中
# 查找 libstdc++.so.6 所在目录
find /usr -name "libstdc++.so.6"
# 输出 /usr/lib/x86_64-linux-gnu/libstdc++.so.6# 将目录添加到环境变量
export LD_LIBRARY_PATH=/usr/lib/x86_64-linux-gnu:$LD_LIBRARY_PATH# 查看环境变量
echo $LD_LIBRARY_PATH# 输出以下内容,说明添加成功
# /usr/lib/x86_64-linux-gnu:/opt/intel/openvino_2025.0.0/runtime/3rdparty/tbb/lib:/opt/intel/openvino_2025.0.0/runtime/lib/intel64
继续执行 detect 命令,报以下错误
原因是程序中需要将识别的结果图片显示出来,但终端没有安装图形界面,导致报错,解决办法是修改源代码重新编译执行,或者在 MobaXterm 终端中执行,可以正常显示,如
至此,说明openvino安装成功,且 yolov8 c++ 目标检测示例能够成功编译和执行。
主要参考以下官方文档
Install OpenVINO
YOLOv8-OpenVINO-CPP-Inference
相关文章:
Ubuntu20.04安装OpenVINO环境以及YOLOv8 C++部署测试
深度学习 文章目录 深度学习一、三种推理框架介绍1、OpenVINO介绍2、TensorRT介绍3、Mediapipe介绍 二、三种框架的对比1、框架自身比较2.1、从模型部署上:2.2.从支持深度学习模型上:2.3.从应用平台上:2.4.从上手的难易程度上: 2、应用平台比…...
uniapp微信小程序封装navbar组件
一、 最终效果 二、实现了功能 1、nav左侧返回icon支持自定义点击返回事件(默认返回上一步) 2、nav左侧支持既显示返回又显示返回首页icon 3、nav左侧只显示返回icon 4、nav左侧只显示返回首页icon 5、nav左侧自定义left插槽 6、nav中间支持title命名 7…...
Docker中安装MySQL--------【详细图解】
1.根据所需拉取镜像---------不指定版本会下载最新版 docker pull mysql:8.0.27 2.查看所拉取的镜像 docker images 3.在/usr/local下创建docker、mysql目录 cd /usr/local mkdir docker mkdir mysql 4.进入mysql文件夹 cd mysql 5.创建config文件夹 mkdir config 6.编写配…...
QT基础:安装与简介
QT初级 1、简介1.1 安装1.2 设置1.3 在VS中配置Qt1.3 帮助文档 2、Qt项目2.1 创建项目2.1 项目文件2.2 Qt中的窗口类窗口显示 2.3 坐标体系2.4 内存回收 1、简介 QT是一个跨平台的C应用程序开发框架。几乎支持所有的平台, 可用于桌面程序开发以及嵌入式开发。 Qt是标准 C 的扩…...
智能打印预约系统:微信小程序+SSM框架实战项目
微信小程序打印室预约系统,采用SSM(SpringSpringMVCMyBatis)经典框架组合。 一、系统核心功能详解 1. 智能化管理后台 用户数据看板打印店资源管理预约动态监控服务评价系统 2. 微信小程序端 智能定位服务预约时段选择文件…...
AWTK-WEB 快速入门(6) - JS WebSocket 应用程序
WebSocket 可以实现双向通信,适合实时通信场景。本文介绍一下使用 Javacript 语言开发 AWTK-WEB 应用程序,并用 WebSocket 与服务器通讯。 用 AWTK Designer 新建一个应用程序 先安装 AWTK Designer: https://awtk.zlg.cn/web/index.html …...
一.搭建ubuntu系统服务器
搭建ubuntu系统服务器 一:Ubantu下载及安装1.Ubuntu的U盘系统安装工具制作2.Ubuntu系统安装 二.安装ssh实现远程连接1.安装OpenSSH服务器2.启动SSH服务并设置开机自启3.配置文件4.配置防火墙5.处理SELinux(仅限CentOS/RHEL)6.设置和修改SSH密…...
[python]基于yolov8实现热力图可视化支持图像视频和摄像头检测
YOLOv8 Grad-CAM 可视化工具 本工具基于YOLOv8模型,结合Grad-CAM技术实现目标检测的可视化分析,支持图像、视频和实时摄像头处理。 功能特性 支持多种Grad-CAM方法实时摄像头处理视频文件处理图像文件处理调用简单 环境要求 Python 3.8需要电脑带有…...
微软 GraphRAG 项目学习总结
微软2024年4月份发布了一篇《From Local to Global: A GraphRAG Approach to Query-Focused Summarization》(GraphRAG:从局部到全局的查询式摘要方法)论文,提出了一种名为GraphRAG的检索增强生成(RAG)方法…...
DeepSeek结合MCP Server与Cursor,实现服务器资源的自动化管理
MCP Server是最近AI圈子中又一个新的热门话题。很多用户都通过结合大语言模型、MCP Server,实现了一些工具流的自动化,例如,你只需要给出文字指令,就可以让Blender自动化完成建模的工作。你有没有想过,利用MCP来让AI A…...
DFX架构详解:构建面向全生命周期的卓越设计体系
引言 在当今高度竞争的市场环境中,产品开发已不再是单纯的功能实现,而是需要从设计源头考虑制造效率、用户需求、成本控制、环境兼容性等多维目标。DFX(Design for X)架构作为一种系统化的设计方法论,正成为企业实现产…...
如何在 Vue 项目中使用 Vite 和 Cordova 动态加载 Layui 和 DTree
随着前端开发工具的不断进步,Vue 项目的构建工具也从 Webpack 升级到了 Vite。Vite 的快速构建和热更新功能使得开发体验大大提升。 本文将介绍如何在迁移至 Vite 后,动态加载 Layui 和 DTree 库,并兼容 Cordova 应用中的资源路径。 1. Vite …...
如何在 vue 渲染百万行数据,vxe-table 渲染百万行数据性能对比,超大量百万级表格渲染
vxe-table 渲染百万行数据性能对比,超大量百万级表格渲染;如何在 vue 渲染百万行数据;当在开发项目时,遇到需要流畅支持百万级数据的表格时, vxe-table 就可以非常合适了,不仅支持强大的功能,虚…...
el-select+el-tree实现下拉树形选择
主要实现el-select下使用树结构,支持筛选功能 封装的组件 composeTree.vue <template><div class"vl-tree"><el-select class"treeScroll" popper-class"treeScrollSep"v-model"selectedList"placeholder"请选择…...
JavaScript函数知识点总结
JavaScript函数是一种可重复使用的代码块,它接受输入值(参数)、执行特定任务,并返回输出值。 1. 声明函数 function greet(name) {return "Hello, " + name + "!"; }console.log(greet("Alice")); // 输出: Hello, Alice! console.log( t…...
SQL INSERT INTO 语句详解
SQL INSERT INTO 语句详解 引言 SQL(Structured Query Language)是数据库管理系统的标准语言,用于处理数据库中的数据。在SQL中,INSERT INTO 语句是用于向数据库表中插入新记录的重要命令。本文将详细介绍 INSERT INTO 语句的用…...
为什么可视化大屏越来越多应用3D元素呢?
现在可视化大屏应用3D元素越来越普及了,背后的原因是什么呢?3D元素相较于2D元素有什么优势?应用3D元素涉及到哪些技术呢?大象数据工场通过本文与大家分享一下。 一、3D元素普及的原因是什么? 可视化大屏应用中使用3D…...
Github Webhook 以及主动式
Github配置 GitHub 默认支持两种 Content-Type: application/json application/x-www-form-urlencoded 特别要注意 Content-Type 我们选择: application/json Flask代码 import os import shutil import subprocess from flask import Flask, request, jsonifyapp = Fla…...
MySQL的基础语法1(增删改查、DDL、DML、DQL和DCL)
目录 一、基本介绍 二、SQL通用语法 三、SQL分类(DDL、DML、DQL、DCL) 1.DDL 1.1数据库操作 1.2表操作 1.2.1表操作-查询创建 1.2.2表操作-数据类型 1)数值类型 2)字符串类型 3)日期时间类型编辑 4)表操作-案例 1.2.3…...
基于 SpringBoot 的火车订票管理系统
收藏关注不迷路!! 🌟文末获取源码数据库🌟 感兴趣的可以先收藏起来,还有大家在毕设选题(免费咨询指导选题),项目以及论文编写等相关问题都可以给我留言咨询,希望帮助更多…...
c#的反射和特性
在 C# 中,反射(Reflection)和特性(Attributes)是两个强大的功能,它们在运行时提供元编程能力,广泛用于框架开发、对象映射和动态行为扩展。以下是对它们的详细介绍,包括定义、用法、…...
MaxEnt物种分布建模全流程;R+ArcGIS+MaxEnt模型物种分布模拟、参数优化方法、结果分析制图与论文写作
融合R语言的MaxEnt模型具有以下具体优势: 数据处理高效便捷 📊强大的数据预处理功能:R语言提供了丰富的数据处理工具,能够轻松完成数据清洗、筛选、转换等操作,为MaxEnt模型提供高质量的输入数据。 🌐自动…...
【AI插件开发】Notepad++插件开发实践:从基础交互到ScintillaCall集成
一、背景与目标 在文本编辑器领域,Notepad凭借其轻量级特性和强大的插件生态,成为开发者群体中的热门选择。作为基于Scintilla组件构建的编辑器(Scintilla是开源的代码编辑控件,被Notepad、Geany等知名工具广泛采用)&…...
TCP/IP协议的应用层与传输层
TCP/IP协议簇是互联网的核心通信框架,定义了数据如何在网络中封装、寻址、传输和路由(确定数据包从源主机到目标主机的传输路径的过程)。 应用层 直接面向用户和应用,负责实现网络服务的具体功能(如网页浏览、文件传输…...
CentOS与Ubuntu命令对比指南:从软件包管理到系统配置
CentOS与Ubuntu命令对比指南 作为两大主流Linux发行版,**CentOS(基于RHEL)和Ubuntu(基于Debian)**在日常运维中常因命令差异引发混淆。本文通过关键场景对比,助您快速掌握两者的核心操作区别。 一、软件包管理:yum/dnf vs apt 操作CentOSUbuntu更新软件源yum check-upd…...
python-leetcode 61.N皇后
题目: 按照国际象棋的规则,皇后可以攻击与之处在同一行或同一列或同一斜线上的棋子。 n 皇后问题 研究的是如何将 n 个皇后放置在 nn 的棋盘上,并且使皇后彼此之间不能相互攻击 给你一个整数 n ,返回所有不同的 n 皇后问题 的解…...
Scala 正则表达式
Scala 正则表达式 引言 正则表达式(Regular Expression)是一种强大的文本处理工具,在Scala编程语言中也有着广泛的应用。Scala正则表达式可以帮助开发者高效地进行字符串匹配、搜索、替换和解析等操作。本文将深入探讨Scala正则表达式的相关知识,包括语法、常用模式、匹配…...
【分布式】分布式限流方案解析
文章目录 固定窗口限流方案实现方式优点缺点 滑动窗口限流方案实现方式优点缺点 令牌桶限流方案实现方式优点缺点 漏斗限流方案实现方式优点缺点 在分布式系统蓬勃发展的当下,系统面临的流量挑战日益复杂。为确保系统在高并发场景下…...
Docker 拉取镜像部分成功部分失败?
🐋 Docker 拉取镜像部分成功部分失败?一次代理配置踩坑记录! 最近在部署 Zitadel 身份认证平台的过程中,遇到一个看似“随机”的问题:Docker 有些镜像可以拉取,有些却一直超时失败。最终通过配置 Docker 守…...
Spring AI Alibaba 对话记忆使用
一、对话记忆 (ChatMemory)简介 1、对话记忆介绍 ”大模型的对话记忆”这一概念,根植于人工智能与自然语言处理领域,特别是针对具有深度学习能力的大型语言模型而言,它指的是模型在与用户进行交互式对话过程中,能够追踪、理解并利…...
Mysql从入门到精通day5————子查询精讲
本文主要讲述子查询的几种方法,读者注意体会它们的不同场合的适用情况及功能,本篇文章也融入了小编实践过程遇到的坑,希望读者不要再踩坑 一.带IN关键字的子查询 in关键字可以检测结果集中是否存在某个特定的值,检测成功则执行外…...
QScreen 捕获屏幕(截图)
一、QScreen核心能力解析 硬件信息获取 // 获取主屏幕对象 QScreen* primaryScreen QGuiApplication::primaryScreen();// 输出屏幕参数 qDebug() << "分辨率:" << primaryScreen->size(); qDebug() << "物理尺寸:" << primar…...
Skyeye 云智能制造办公系统 VUE 版本 v3.15.15 发布
Skyeye 云智能制造,采用 Springboot winUI 的低代码平台、移动端采用 UNI-APP。包含 30 多个应用模块、50 多种电子流程,CRM、PM、ERP、MES、ADM、EHR、笔记、知识库、项目、门店、商城、财务、多班次考勤、薪资、招聘、云售后、论坛、公告、问卷、报表…...
【最新】探索CFD的未来:从OpenFOAM到深度学习,全面解析计算流体力学的顶级资源与前沿技术
计算流体力学(CFD)作为现代工程与科学研究的核心工具,正以前所未有的速度迈向智能化与多物理场耦合的新时代。本文全面梳理了在线学习CFD的顶级资源,涵盖了从传统数值模拟到深度学习驱动的物理信息模型的广泛领域,旨在为研究者、工程师和学生提供一站式参考指南。内容分为…...
【QT5 网络编程示例】TCP 通信
文章目录 TCP 通信 TCP 通信 QT主要通过QTcpSocket 和 QTcpServer两个类实现服务器和客户端的TCP 通信。 QTcpSocket 是 Qt 提供的套接字类,看用于建立、管理和操作 TCP 连接。 常用方法 connectToHost(host, port):连接到指定服务器。disconnectFro…...
QT五 文件系统,QFile,QfileInfo
总览 QIODevice:所有 I/O 设备类的父类,提供了字节块读写的通用操作以及基本接口;QFileDevice:Qt5新增加的类,提供了有关文件操作的通用实现。QFlie:访问本地文件或者嵌入资源;QTemporaryFile&a…...
OpenMCU(五):STM32F103时钟树初始化分析
概述 本文主要描述了STM32F103初始化过程系统时钟的初始化,主要描述了系统时钟的初始化,AHB总线时钟,APB总线时钟等的初始化。 硬件板卡3d图 时钟树 STM32F103的时钟树,如下所示: 时钟源选择 从STM32F103的时钟树框图,我们可以…...
docker save如何迁移镜像更节省空间?
文章目录 方法一:使用docker save命令方法二:直接保存多个镜像到一个tar文件哪个方法更节省磁盘空间?空间效率对比实际测试示例其他优势结论 如何用脚本迁移加载镜像 迁移镜像时候,往往会碰到基础镜像相同的很多镜像需要迁移&…...
在 UniApp 编译小程序时出现 `:class` 不支持 `getStatusClass(device.deviceStatus)` 语法的报错
在 UniApp 编译小程序时出现 :class 不支持 getStatusClass(device.deviceStatus) 语法的报错,这是因为在非 H5 平台,v-bind:class(:class 是其简写形式)里直接使用方法调用这种动态计算类名的方式可能不被支持。下面为你提供几种…...
Python之贪心算法
Python实现贪心算法(Greedy Algorithm) 概念 贪心算法是一种在每一步选择中都采取当前状态下最优的选择,从而希望导致结果是全局最优的算法策略。 基本特点 局部最优选择:每一步都做出当前看起来最佳的选择不可回退:一旦做出选择…...
Javaweb后端AOP记录操作日志
日志记录表 提示词 切入点表达式,注解的方法 查询不用加上日志记录功能...
obsidian ios git同步
首先感谢几位博主的文章,我现在时间久了,未保存原文地址。以下是我自己的执行步骤总结。 应用商店安装 iSH 打开iSH,执行 apk update 安装下面软件,(我觉得只安装第一个应该就行,下次测试)。 …...
我的机器学习学习之路
学习python的初衷 • hi,今天给朋友们分享一下我是怎么从0基础开始学习机器学习的。 • 我是2023年9月开始下定决心要学python的,目的有两个,一是为了提升自己的技能和价值,二是将所学的知识应用到工作中去,提升工作…...
Python的ASGI Web 服务器之uvicorn
文章目录 什么是uvicornUvicorn 和 uWSGI 对比区别安装 Uvicorn使用示例 什么是uvicorn 官网https://www.uvicorn.org/ Uvicorn 是一个用于 Python 的 ASGI Web 服务器实现。 Until recently Python has lacked a minimal low-level server/application interface for async…...
Spring Boot分布式项目实战:装饰模式的正确打开方式
我在最近参与的物流中台项目中,面对复杂的分布式服务调用场景时,发现装饰模式(Decorator Pattern)竟成为提升系统扩展性的秘密武器。当某个基础服务接口需要同时支持缓存、日志、限流等多种能力时,传统的继承方式已难以…...
基于WebSocket的金融数据实时推送系统架构设计对接多国金融数据API
基于WebSocket的金融数据实时推送系统架构设计 ——高可用、低延迟与全球化数据支持的技术实践 一、实时数据推送的技术演进 在证券交易、外汇监控、量化策略等场景中,毫秒级延迟可能带来完全不同的业务结果。早期基于HTTP轮询的方案存在三大核心问题:…...
Java虚拟机JVM知识点(已完结)
JVM内存模型 介绍下内存模型 根据JDK8的规范,我们的JVM内存模型可以拆分为:程序计数器、Java虚拟机栈、堆、元空间、本地方法栈,还有一部分叫直接内存,属于操作系统的本地内存,也是可以直接操作的。 详细解释一下 程…...
ffuf:一款高效灵活的Web模糊测试利器
在网络安全领域,模糊测试(Fuzzing)是一种强大的技术,用于发现系统中的隐藏功能、潜在漏洞或未公开资源。而在Web渗透测试中,ffuf(Fast Fuzzing Tool)凭借其高效性、灵活性和强大的自定义能力&am…...
深入理解二叉树、B树与B+树:原理、应用与实现
文章目录 引言一、二叉树:基础而强大的结构基本概念特性分析Java实现应用场景 二、B树:适合外存的多路平衡树基本概念关键特性查询流程示例Java简化实现典型应用 三、B树:数据库索引的首选核心改进优势分析范围查询示例Java简化实现实际应用 …...
NLP高频面试题(二十八)——Reward model是如何训练的,怎么训练一个比较好的Reward model
在强化学习领域,**奖励模型(Reward Model)是关键组件之一,旨在通过预测特定行为或输出的奖励值,指导智能体的学习方向。特别是在基于人类反馈的强化学习(RLHF)**中,奖励模型通过整合…...