从零开始配置Qt+VsCode环境
从零开始配置Qt+VsCode环境
文章目录
- 从零开始配置Qt+VsCode环境
- 写在前面
- 扩展安装及配置
- Qt Configure配置
- VsCode创建Qt工程
- VsCode+QMake+MinGw
- VsCode+QMake+Msvc
- VsCode+CMake+MinGw
- VsCode+CMake+Msvc
- QtCreator+QMake+MinGw->VsCode
- QtCreator+QMake+Msvc->VsCode
- QtCreator+CMake+MinGw->VsCode
- QtCreator+CMake+Msvc->VsCode
- 脚本和配置的通用化
- VsCode+QMake
写在前面
- 测试环境(20241120):
Win11 + VsCode1.93.0 + Qt5.15.2 + CMake3.28.0-rc3
- 本文章适用于有一定Qt使用基础,并且想转到VsCode的同学。
扩展安装及配置
-
Qt Configure(@vector-wlc)
必须 -
Qt Extension Pack(@Qt Group)
,不是必要但可提升使用体验,Qt UI
具有点击.ui
文件启动Qt Widgets Designer
。
-
Qt C++ Extension Pack(@Qt Group)
,该扩展包包含了Qt Extension Pack(@Qt Group)
,同时增加了C/C++(@Microsoft)
,CMake(@twxs)
,CMake Tools(@Microsoft)
,对于不想手动一个一个安装的可以推荐。若想使用CMake这个三个都是必须的。 -
对于C/C++推荐装一个
C/C++ Extension Pack(@Microsoft)
Qt Configure配置
-
Qt Configure: Mingw Path
,请设置MinGw
的bin
之前那个路径,请根据自身环境实际情况进行配置D:\Programs\Qt\5.15.2\mingw81_64
-
Qt Configure: Qt Dir
,请根据自身环境实际情况设置Qt
的安装路径D:\Programs\Qt
-
Qt Configure: Vcvarsall Path
,设置VS
环境变量脚本路径,在使用Msvc
编译器时会用到,同样请根据自身环境实际情况进行配置D:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\vcvarsall.bat
- 这里主要了就是配置Qt Configure扩展其它扩展记不太清楚了,若有不懂的可评论或者私信沟通。
- 还有就是我的CMake是设置了系统环境变量的,有可能会对项目操作有一些影响。
VsCode创建Qt工程
-
Ctrl + Shift + P
通过QtConfigure
插件新建工程 -
输入项目名称并确认
-
选择Qt的构建套件,这些都是Qt的构建套件包含MinGw和Msvc,不同的Qt版本略有不同,请结合自身实际情况进行选择
-
选择构建工具
-
选择是否带UI文件
-
选择完成过后将自动创建项目工程
- 自动创建的工程如下,
- 其中
.pro
文件是Qt
的项目文件, src
是自动生成的源文件.vscode
中是VsCode
工程工作时必要的配置信息,scripts
中是项目构建生成时的脚本,- 其实
VsCode
编译器工程本质上是通过命令行执行这些脚本调用qmake
进行工程编译和生成的。
-
若想要编译运行
- 第一种可通过先单击一个
.cpp
文件,后会在右上角出现运行符号,可直接点击也可下拉选择
-
第二种
Ctrl + Shift + P
输入run
,选择运行生成任务- 选择
debug
或者release
- 选择
- 第一种可通过先单击一个
VsCode+QMake+MinGw
-
若是创建工程时选择
MinGw
作为构建套件,QMake
作为构建工具则需要做一些修改 -
修改构建脚本
./scripts/build_debug.bat
- 在创建脚本的时候自动生成的
mingw32-make
的路径是在D:\Programs\Qt\5.15.2\mingw81_64
下面,这可能是由于我这里是Qt5.15.2
,它不在这个路径下而是D:\Programs\Qt\Tools\mingw810_64
,读者请根据自身实际情况进行修改。
@echo off title qmake and nmake build prompt @REM 修改mingw32-make的路径 @REM set MINGW_PATH=D:\Programs\Qt\5.15.2\mingw81_64 set MINGW_PATH=D:\Programs\Qt\Tools\mingw810_64 set QT_DIR=D:\Programs\Qt\5.15.2\mingw81_64 set BUILD_DIR=%cd%\build set PRO_DIR=%cd% set PATH=%MINGW_PATH%\bin;%QT_DIR%\bin;%PATH%if not exist %BUILD_DIR% (md %BUILD_DIR% )cd build qmake.exe %PRO_DIR%\VsCodeQMakeMinGw.pro -spec win32-g++ "CONFIG+=debug" "CONFIG+=console" if exist %BUILD_DIR%\debug\VsCodeQMakeMinGw.exe del %BUILD_DIR%\debug\VsCodeQMakeMinGw.exe @REM D:\Programs\Qt\Tools\QtCreator\bin\jom.exe -j4 %MINGW_PATH%\bin\mingw32-make -f Makefile.Debug cd debug if not exist %BUILD_DIR%\debug\Qt5Core.dll (windeployqt VsCodeQMakeMinGw.exe )
- 在创建脚本的时候自动生成的
-
修改运行配置文件
./.vscode/launch.json
-
同样因为
Qt
不同版本的gbd.exe
的调试器路径可能不同这样也需要做出一定修改否则会报错 -
修改
gdb.exe
路径即miDebuggerPath
参数
{"version": "0.2.0","configurations": [{"name": "debug","type": "cppdbg","request": "launch","program": "${workspaceRoot}/build/debug/VsCodeQMakeMinGw.exe","args": [],"stopAtEntry": false,"cwd": "${workspaceRoot}","environment": [],"externalConsole": false,"MIMode": "gdb",// 修改gdb路径// "miDebuggerPath": "D:/Programs/Qt/5.15.2/mingw81_64/bin/gdb.exe","miDebuggerPath": "D:/Programs/Qt/Tools/mingw810_64/bin/gdb.exe","setupCommands": [{"description": "Enable pretty-printing for gdb","text": "-enable-pretty-printing","ignoreFailures": true}],"preLaunchTask": "debug"}] }
-
-
这时候编译运行应该能直接弹出
Qt
窗口了
VsCode+QMake+Msvc
-
VsCode1.93.0 + Qt5.15.2 + Msvc2015
-
创建工程时选择
Msvc
作为构建套件,QMake
作为构建工具时唯一需要注意的就是设置好Qt Configure: Vcvarsall Path
路径,在扩展配置中有说明。 -
若是配置没有问题直接编译运行应该就能看到弹出的
Qt
窗口了。
VsCode+CMake+MinGw
-
VsCode1.93.0 + Qt5.15.2 + CMake3.28.0-rc3 + mingw81_64
-
在创建工程时选择
MinGw
作为构建套件,选择CMake
作为构建工具。 -
构建生成运行
-
第一次运行时需要选择构建器
-
这里请选择
QtBuild
-
-
同时需要修改
./.vscode/launch.json
文件,这样也是修改dgb
的路径,请读者根据自身情况就行修改。{"version": "0.2.0","configurations": [{"name": "QtBuild","type": "cppdbg","request": "launch","program": "${command:cmake.launchTargetPath}","args": [],"stopAtEntry": false,"cwd": "${workspaceRoot}","environment": [{"name": "PATH","value": "D:/Programs/Qt/5.15.2/mingw81_64/bin"}],"externalConsole": false,// "miDebuggerPath": "D:/Programs/Qt/5.15.2/mingw81_64/bin/gdb.exe""miDebuggerPath": "D:/Programs/Qt/Tools/mingw810_64/bin/gdb.exe"}] }
-
对于CMake工程这里还有一种构建运行方式,且好像不用修改
launch.json
文件。 -
项目运行效果
VsCode+CMake+Msvc
-
VsCode1.93.0 + Qt5.15.2 + CMake3.28.0-rc3 + Msvc2015
-
在创建工程时选择
Msvc
作为构建套件,选择CMake
作为构建工具。 -
只有第一次运行时需要选择对应的编译构建器,其它都与VsCode+CMake+MinGw一样。
-
构建生成运行
-
第一次运行时需要选择构建器
-
这里请选择
QtBuild
-
-
运行效果如下
QtCreator+QMake+MinGw->VsCode
-
Qt5.15.2 + QtCreator12.0.1 + VsCode1.93.0 + mingw81_64
-
特别说明:QtCreator和VsCode扩展(Qt Configure)自动创建的工程有些不同,但是都会依赖于pro文件,QMake是基于进行编译生成的
-
使用QtCreator创建一个以
MinGw
为构建套件,QMake
为构建工具的工程,并将其转换为VsCode
工程,并在VsCode
中进行编辑编译并运行。(这里不再赘述QtCreator
工程的创建) -
这里进行说明一下,
Qt
工程文件是.pro
文件,但VsCode并没有明确的工程文件只有工程的配置文件,通过我们前面的VsCode+QMake+MinGw 可以知道其实VsCode
只是将工程编译整合到脚本命令中了,编译时依然会使用.pro
工程。 -
所以我们直接将VsCode+QMake+MinGw 创建的
.vscode
和scripts
文件夹拷贝到QtCreator
创建的工程,并用VsCode
打开。 -
先修改
./scripts/build_debug.bat
脚本- 这里是VsCode+QMake+MinGw 工程创建的脚本进行修改的,可以对比着看。
- 最好不要使用中文,
bat
脚本有时候会因为编码问题导致运行不正常,可将其转换为ASCII
编码,VsCode
默认保存为UTF-8
。
@echo off title qmake and nmake build prompt @REM set MINGW_PATH=D:\Programs\Qt\5.15.2\mingw81_64 set MINGW_PATH=D:\Programs\Qt\Tools\mingw810_64 set QT_DIR=D:\Programs\Qt\5.15.2\mingw81_64 @REM set BUILD_DIR=%cd%\build set BUILD_DIR=%cd%\..\build-QtCreatorQMakeMinGw-Desktop_Qt_5_15_2_MinGW_64_bit set PRO_DIR=%cd% set PATH=%MINGW_PATH%\bin;%QT_DIR%\bin;%PATH%if not exist %BUILD_DIR% (md %BUILD_DIR% )cd %BUILD_DIR% qmake.exe %PRO_DIR%\QtCreatorQMakeMinGw.pro -spec win32-g++ "CONFIG+=debug" "CONFIG+=console" if exist %BUILD_DIR%\debug\QtCreatorQMakeMinGw.exe del %BUILD_DIR%\debug\QtCreatorQMakeMinGw.exe @REM D:\Programs\Qt\Tools\QtCreator\bin\jom.exe -j4 %MINGW_PATH%\bin\mingw32-make -f Makefile.Debug cd debug if not exist %BUILD_DIR%\debug\Qt5Core.dll (windeployqt %BUILD_DIR%\debug\QtCreatorQMakeMinGw.exe )
-
再修改
./.vscode/launch.json
文件,设置运行文件路径{"version": "0.2.0","configurations": [{"name": "debug","type": "cppdbg","request": "launch",// "program": "${workspaceRoot}/build/debug/VsCodeQMakeMinGw.exe","program": "${workspaceRoot}/../build-QtCreatorQMakeMinGw-Desktop_Qt_5_15_2_MinGW_64_bit/debug/QtCreatorQMakeMinGw.exe","args": [],"stopAtEntry": false,"cwd": "${workspaceRoot}","environment": [],"externalConsole": false,"MIMode": "gdb",// 修改gdb路径// "miDebuggerPath": "D:/Programs/Qt/5.15.2/mingw81_64/bin/gdb.exe","miDebuggerPath": "D:/Programs/Qt/Tools/mingw810_64/bin/gdb.exe","setupCommands": [{"description": "Enable pretty-printing for gdb","text": "-enable-pretty-printing","ignoreFailures": true}],"preLaunchTask": "debug"}] }
-
特别说明:
Qt
的.pro
工程使用的是影子构建,所以这里是build-QtCreatorQMakeMinGw-Desktop_Qt_5_15_2_MinGW_64_bit
,若是自定义构建输出路径,以及中间生成参数请,根据实际路径做修改。 -
项目构建编译运行参考,运行效果如下
QtCreator+QMake+Msvc->VsCode
-
Qt5.15.2 + QtCreator12.0.1 + VsCode1.93.0 + msvc2015
-
使用
QtCreator
创建一个以Msvc
为构建套件,QMake
为构建工具的工程,并将其转换为VsCode
工程,并在VsCode
中进行编辑编译并运行。(这里不再赘述QtCreator
工程的创建) -
在QtCreator+QMake+MinGw->VsCode我们已经说明
QtCreator
到VsCode
操作的基本原理,就不在进行说明了。 -
同样我们拷贝VsCode+QMake+Msvc工程创建的
.vscode
和scripts
文件夹到QtCreator
项目中。 -
修改
./scripts/build_debug.bat
脚本- 这里是VsCode+QMake+Msvc工程创建的脚本进行修改的,可以对比着看。
@echo offset QT_DIR=D:\Programs\Qt\5.15.2\msvc2015_64 set SRC_DIR=%cd% @REM set BUILD_DIR=%cd%\build set BUILD_DIR=%cd%\..\build-QtCreatorQMakeMsvc-Desktop_Qt_5_15_2_MSVC2015_64bitif not exist %QT_DIR% exit if not exist %SRC_DIR% exit if not exist %BUILD_DIR% md %BUILD_DIR%cd %BUILD_DIR%call "D:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\vcvarsall.bat" x64%QT_DIR%\bin\qmake.exe %SRC_DIR%\QtCreatorQMakeMsvc.pro -spec win32-msvc "CONFIG+=debug" "CONFIG+=console" if exist %BUILD_DIR%\debug\QtCreatorQMakeMsvc.exe del %BUILD_DIR%\debug\QtCreatorQMakeMsvc.exe nmake Debug if not exist %BUILD_DIR%\debug\Qt5Cored.dll (%QT_DIR%\bin\windeployqt.exe %BUILD_DIR%\debug\QtCreatorQMakeMsvc.exe )
-
修改
./.vscode/launch.json
文件,设置运行文件路径{"version": "0.2.0","configurations": [{"name": "Launch","type": "cppvsdbg","request": "launch",// "program": "${workspaceRoot}/build/debug/VsCodeQMakeMsvc.exe","program": "${workspaceRoot}/../build-QtCreatorQMakeMsvc-Desktop_Qt_5_15_2_MSVC2015_64bit/debug/QtCreatorQMakeMsvc.exe","args": [],"stopAtEntry": false,"cwd": "${workspaceRoot}","environment": [],"console": "integratedTerminal","preLaunchTask": "debug"}] }
-
项目构建编译运行参考,运行效果
QtCreator+CMake+MinGw->VsCode
-
Qt5.15.2 + QtCreator12.0.1 + VsCode1.93.0 + CMake3.28.0-rc3 + mingw81_64
-
使用QtCreator创建以MinGw为构建套件,CMake为构建工具的项目,并使用VsCode打开
-
运行
-
选择对应编译器(第一次时选择),会自动编译生成项目。
-
再次点击运行,会选择启动目标,一般是第一个。(这里没有截到图可参考QtCreator+CMake+Msvc->VsCode)
-
运行效果
-
QtCreator+CMake+Msvc->VsCode
-
Qt5.15.2 + QtCreator12.0.1 + VsCode1.93.0 + CMake3.28.0-rc3 + msvc2015
-
使用QtCreator创建以Msvc为构建套件,CMake为构建工具的项目,并使用VsCode打开
-
点击运行,选择对应编译器(第一次时选择),会自动编译生成项目。
-
再次点击运行,会选择启动目标,一般是第一个。
-
运行效果
脚本和配置的通用化
VsCode+QMake
- 优化脚本,适配从QtCtrator创建的工程,适合使用Qt影子构建生成的构建路径。
- 只需要设置编译器路径,编译debug还是release,工程名称TARGET_NAME,以及当前编译器是否是Msvc
@echo off
title qmake and nmake build promptset TARGET_NAME=VsCodeQMake
set BUILD_NAME=debug
set IS_MSVC=1
if %IS_MSVC%==1 ( set QT_DIR=D:\Programs\Qt\5.15.2\msvc2015_64
) else ( set QT_DIR=D:\Programs\Qt\5.15.2\mingw81_64
)
set PRO_DIR=%cd%for %%A in ("%QT_DIR%") do (set "QT_KIT_NAME=%%~nxA")
for %%A in ("%QT_DIR%\..") do (set "QT_VERSION=%%~nxA")
set "QT_VERSION=%QT_VERSION:.=_%"echo %QT_KIT_NAME%| findstr /i "msvc">nul
if errorlevel 1 ( set QT_KIT_STR=MinGW
set IS_MSVC=0
) else ( set QT_KIT_STR=%QT_KIT_NAME:~0,-3%
set IS_MSVC=1
for %%i in (A B C D E F G H I J K L M N O P Q R S T U V W X Y Z) do call set QT_KIT_STR=%%QT_KIT_STR:%%i=%%i%%
)echo %QT_KIT_NAME%| findstr /i "64" >nul
if errorlevel 1 ( set BIT_STR=32bit) else ( set BIT_STR=64bit)
set QT_KIT_STR=Desktop_Qt_%QT_VERSION%_%QT_KIT_STR%_%BIT_STR%
set BUILD_DIR=%PRO_DIR%/../build-%TARGET_NAME%-%QT_KIT_STR%set FIRST_CHAR=%BUILD_NAME:~0,1%
for %%i in (A B C D E F G H I J K L M N O P Q R S T U V W X Y Z) do call set FIRST_CHAR=%%FIRST_CHAR:%%i=%%i%%
set BUILD_NAME_U=%FIRST_CHAR%%BUILD_NAME:~1%if not exist "%QT_DIR%" exit
if not exist "%PRO_DIR%" exit
if not exist "%BUILD_DIR%" (md "%BUILD_DIR%"
)if %BUILD_NAME%=="debug"( set CONFIG_STR="CONFIG+=%BUILD_NAME%" "CONFIG+=console") else(set CONFIG_STR="CONFIG+=%BUILD_NAME%")cd "%BUILD_DIR%"
if %IS_MSVC%==1 ( goto build_msvc) else ( goto build_mingw):build_msvccall "D:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\vcvarsall.bat" x64%QT_DIR%\bin\qmake.exe %PRO_DIR%\%TARGET_NAME%.pro -spec win32-msvc %CONFIG_STR%set TARGET_NAME_ALL=%BUILD_DIR%\%BUILD_NAME%\%TARGET_NAME%.exeif exist "%TARGET_NAME_ALL%" del "%TARGET_NAME_ALL%"nmake %BUILD_NAME_U%goto end:build_mingwset MINGW_PATH=%QT_DIR%\..\..\Tools\%QT_KIT_NAME:~0,7%0%QT_KIT_NAME:~-3%set PATH=%MINGW_PATH%\bin;%QT_DIR%\bin;%PATH%%QT_DIR%\bin\qmake.exe %PRO_DIR%\%TARGET_NAME%.pro -spec win32-g++ %CONFIG_STR%set TARGET_NAME_ALL=%BUILD_DIR%\%BUILD_NAME%\%TARGET_NAME%.exeif exist "%TARGET_NAME_ALL%" del "%TARGET_NAME_ALL%"@REM D:\Programs\Qt\Tools\QtCreator\bin\jom.exe -j4%MINGW_PATH%\bin\mingw32-make -f Makefile.%BUILD_NAME_U%goto end:end
if not exist %BUILD_DIR%\%BUILD_NAME%\Qt5Cored.dll (%QT_DIR%\bin\windeployqt.exe "%TARGET_NAME_ALL%"
)
相关文章:
从零开始配置Qt+VsCode环境
从零开始配置QtVsCode环境 文章目录 从零开始配置QtVsCode环境写在前面扩展安装及配置Qt Configure配置 VsCode创建Qt工程VsCodeQMakeMinGwVsCodeQMakeMsvcVsCodeCMakeMinGwVsCodeCMakeMsvcQtCreatorQMakeMinGw->VsCodeQtCreatorQMakeMsvc->VsCodeQtCreatorCMakeMinGw-&g…...
Linux中离线安装gcc
gcc在安装一些其他工具的经常用到,在此记录下如何安装gcc。 1.在线安装 yum -y install gcc 2.离线安装 2.1 获取安装包链接: https://pan.baidu.com/s/1oDvt64ByWs1w-evz5TXU7w?pwd9cfo mpfr-3.1.1-4.el7.x86_64.rpmlibmpc-1.0.1-3.el7.x86_64.rp…...
告别 Kafka,拥抱 Databend:构建高效低成本的用户行为分析体系
用户行为数据埋点指标是数据仓库中不可或缺的重要数据源之一,同时也是企业最宝贵的资产之一。通常情况下,用户行为数据分析包含两大数据源:用户行为分析日志和上游关系型数据库(如 MySQL)。基于这些数据,企…...
【python 迪杰斯特拉-最短路径算法】
- 算法实现 import heapq import networkx as nx import matplotlib.pyplot as pltdef dijkstra(graph, start, goal):distances {node: float("infinity") for node in graph}distances[start] 0parents {node: None for node in graph}priority_queue [(0, st…...
从〇开始深度学习(0)——背景知识与环境配置
从〇开始深度学习(0)——背景知识与环境配置 文章目录 从〇开始深度学习(0)——背景知识与环境配置写在前面1.背景知识1.1.Pytorch1.2.Anaconda1.3.Pycharm1.4.CPU与GPU1.5.整体关系 2.环境配置2.1.准备工作2.1.1.判断有无英伟达显卡2.1.2.清理电脑里的旧环境 2.1.安装Anaconda…...
【NLP 2、机器学习简介】
人生的苦难不过伏尔加河上的纤夫 —— 24.11.27 一、机器学习起源 机器学习的本质 —— 找规律 通过一定量的训练样本找到这些数据样本中所蕴含的规律 规律愈发复杂,机器学习就是在其中找到这些的规律,挖掘规律建立一个公式,导致对陌生的数…...
多目标优化算法——多目标粒子群优化算法(MOPSO)
Handling Multiple Objectives With Particle Swarm Optimization(多目标粒子群优化算法) 一、摘要: 本文提出了一种将帕累托优势引入粒子群优化算法的方法,使该算法能够处理具有多个目标函数的问题。与目前其他将粒子群算法扩展…...
Edify 3D: Scalable High-Quality 3D Asset Generation
Deep Imagination Research | NVIDIA 目录 一、Abstract 二、核心内容 1、多视图扩散模型 3、重建模型: 4、数据处理模块: 三、结果 1、文本到 3D 生成结果 2、图像到 3D 生成结果 3、四边形网格拓扑结构 一、Abstract NVIDIA 开发的用于高质量…...
探索校企合作新模式:职业院校大数据专业实验(实训)室建设指南
一、引言 作为一种强大的信息处理与分析工具,大数据技术在企业管理、科研探索、社会治理等多个领域均产生了广泛而深远的影响。在此背景下,大数据实验室的建设显得尤为重要,而校企合作则为这一建设提供了坚实的支撑。学校借助企业资源&#…...
YOLO的框架及版本迭代
YOLO(You Only Look Once)是一种非常流行的实时目标检测算法,其特点是将目标检测任务转换为一个回归问题,通过一次前向传播就可以同时完成目标的分类和定位。以下是YOLO框架的整体架构和工作原理: 一、YOLO的基本框架…...
第四十篇 DDP模型并行
摘要 分布式数据并行(DDP)技术是深度学习领域中的一项重要技术,它通过将数据和计算任务分布在多个计算节点上,实现了大规模模型的并行训练。 DDP技术的基本原理是将数据和模型参数分割成多个部分,每个部分由一个计算节点负责处理。在训练过程中,每个节点独立计算梯度,…...
鸿蒙进阶篇-状态管理之@Provide与@Consume
大家好,这里是鸿蒙开天组,今天我们来学习一下状态管理中的Provide与Consume。 一、概述 嘿!大家还记得这张图吗?不记得也要记得哦,因为这张图里的东西,既是高频必考面试题,也是实际开发中&…...
鸿蒙本地模拟器 模拟TCP服务端的过程
鸿蒙模拟器模拟TCP服务端的过程涉及几个关键步骤,主要包括创建TCPSocketServer实例、绑定IP地址和端口、监听连接请求、接收和发送数据以及处理连接事件。以下是详细的模拟过程: **1.创建TCPSocketServer实例:**首先,需要导入鸿蒙…...
Qt程序发布及打包成exe安装包
参考:Qt之程序发布以及打包成exe安装包 目录 一、简述 Qt 项目开发完成之后,需要打包发布程序,而因为用户电脑上没有 Qt 配置环境,所以需要将 release 生成的 exe 文件和所依赖的 dll 文件复制到一个文件夹中,然后再用 Inno Setup 打包工具打包成一个 exe 安装包,就可以…...
Spring Boot + ActiveMQ Artemis:快速实现高效消息队列处理功能
在现代微服务架构中,消息队列是实现异步通信、解耦系统的重要手段。而通过 Spring Boot 和 ActiveMQ Artemis,您可以快速搭建一个高效、可靠的消息队列处理系统,轻松应对订单处理、日志分析等场景。本文将带您从零开始,逐步实现一…...
【FPGA-MicroBlaze】串口收发以及相关函数讲解
前言 工具:Vivado2018.3及其所对应的SDK版本 目前网上有许多MicroBlaze 的入门教程,比如下面的这个参考文章,用串口打印一个hello world。 【FPGA】Xilinx MicroBlaze软核使用第一节:Hello World!_fpga软核microblaze-CSDN博客 个…...
CGAL CGAL::Polygon_mesh_processing::self_intersections解析
CGAL::Polygon_mesh_processing::self_intersections 是用于检测多边形网格(Polygon Mesh)中的自相交的函数。自相交是指网格中的某些面(例如三角形)与同一网格中的其他面交叉的情况。这种情况通常是不期望的,因为它会…...
猎户星空发布MoE大模型,推出AI数据宝AirDS
发布 | 大力财经 11月27日,猎户星空联合聚云科技举办了题为《Data Ready for Al,MoE大模型发布暨商业闭环分享》媒体见面会。猎户星空正式发布了自主研发的Orion-MoE 87B大模型,并携手聚云科技推出了基于该大模型的数据服务—AI数据宝AirDS&a…...
什么是JSON,有什么特点
什么是 JSON? JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,易于人阅读和编写,同时也易于机器解析和生成。它基于 JavaScript 的子集,但独立于语言,被广泛用于服务器与 Web 应…...
SQL注入SQL盲注
SQL注入(SQL Injection)和 SQL盲注(Blind SQL Injection)是两种常见的Web安全攻击技术,用于攻击应用程序并操纵其与数据库的交互。以下是两者的概念和区别: 1. SQL注入 定义: SQL注入是通过将…...
汽车轮毂结构分析有哪些?国产3D仿真分析实现静力学+模态分析
本文为CAD芯智库原创,未经允许请勿复制、转载! 之前分享了如何通过国产三维CAD软件如何实现「汽车/汽配行业产品设计」,兼容NX(UG)、Creo(Proe),轻松降低企业上下游图纸交互成本等。…...
C++设计模式之组合模式在解决层次性问题中的好处
采用组合模式在处理层次型问题时,会带来以下重要好处: 简化客户端操作: 客户端代码可以统一地处理单个对象和组合对象,而无需区分它们。这意味着客户端可以使用相同的操作来对待所有对象,无论它们是简单的叶子节点还是…...
基于大数据爬虫+SpringBoot+Hive的网络电视剧收视率分析与可视化平台系统(源码+论文+PPT+部署文档教程等)
博主介绍:CSDN毕设辅导第一人、全网粉丝50W,csdn特邀作者、博客专家、CSDN新星计划导师、Java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和学生毕业项目实战,高校老师/讲师/同行前辈交流✌ 技术范围:SpringB…...
【ESP32CAM+Android+C#上位机】ESP32-CAM在STA或AP模式下基于UDP与手机APP或C#上位机进行视频流/图像传输
前言: 本项目实现ESP32-CAM在STA或AP模式下基于UDP与手机APP或C#上位机进行视频流/图像传输。本项目包含有ESP32源码(arduino)、Android手机APP源码以及C#上位机源码,本文对其工程项目的配置使用进行讲解。实战开发,亲测无误。 AP模式,就是ESP32发出一个WIFI/热点提供给电…...
️ 如何优化爬虫程序以提高抓取效率?
在开发爬虫程序时,提高抓取效率是至关重要的。以下是一些常见的性能优化策略,可以帮助你优化Java爬虫程序: 多线程与分布式抓取: 利用多线程技术可以显著提高爬虫的抓取速度。例如,在WebMagic中,可以通过配…...
深入理解 MySQL 锁机制:分类、实现与优化
在高并发的数据库应用中,锁机制是保障事务在操作数据库时数据一致性和完整性的重要工具。MySQL 提供了多种类型的锁,不同的存储引擎和场景下的实现各具特点。本篇文章将详细介绍 MySQL 锁的分类、实现(主动与被动)以及优化策略。 …...
python-docx -- 读取word页眉、页脚
文章目录 sections介绍访问section添加section页眉、页脚综合案例:sections介绍 word支持section的概念,即一个文档的划分部分,不同的部分均包含相同的页面布局设置,如相同的边距、页面方向等;在每个section中可以定义页眉、页脚来应用于该section下的所有页面;大部分wor…...
DRM(数字权限管理技术)防截屏录屏----ffmpeg安装
提示:ffmpeg安装 文章目录 [TOC](文章目录) 前言一、下载二、配置环境变量三、运行ffmpeg四、文档总结 前言 FFmpeg是一套可以用来记录、转换数字音频、视频,并能将其转化为流的开源计算机程序。采用LGPL或GPL许可证。它提供了录制、转换以及流化音视频的…...
【Linux 篇】Docker 启动和停止的精准掌舵:操控指南
文章目录 【Linux 篇】Docker 启动和停止的精准掌舵:操控指南前言docker基本命令1. 帮助手册 2. 指令介绍 常用命令1. 查看镜像2. 搜索镜像3. 拉取镜像4. 删除镜像5. 从Docker Hub拉取 容器的相关命令1. 查看容器2. 创建与启动容器3. 查看镜像4. 启动容器5. 查看容…...
【电路设计】基于CD4511的八路抢答器电路解析
文章目录 0 前言1 CD45112 电路解析3 锁存分析4 电路优化思考5 总结 0 前言 最近收拾东西的时候找到了本科阶段学电路焊接时焊的一个八路抢答器的电路板,如下图所示。 一共有9个按键,左侧8个为抢答按键,依次对应1-8,按下之后会有…...
Python 爬虫入门教程:从零构建你的第一个网络爬虫
网络爬虫是一种自动化程序,用于从网站抓取数据。Python 凭借其丰富的库和简单的语法,是构建网络爬虫的理想语言。本文将带你从零开始学习 Python 爬虫的基本知识,并实现一个简单的爬虫项目。 1. 什么是网络爬虫? 网络爬虫&#x…...
2024年11月27日Github流行趋势
项目名称:screenshot-to-code 项目维护者:abi clean99 sweep-ai kachbit vagusX项目介绍:通过上传截图将其转换为整洁的代码(支持HTML/Tailwind/React/Vue)。项目star数:62,429项目fork数:7,614…...
深入浅出摸透AIGC文生图产品SD(Stable Diffusion)
hihi,朋友们,时隔半年(24年11月),终于能腾出时间唠一唠SD了🤣,真怕再不唠一唠,就轮不到SD了,技术更新换代是在是太快! 朋友们,最近(24年2月)是真的没时间整理笔记,每天都在疯狂的学习Stable Diffusion和WebUI & ComfyUI,工作实在有点忙,实践期间在飞书上…...
thinkphp日志记录到文件
日志 //控制器中 //这种方法调用的话,在general_technology下按照日期写入日志 LogService::requestLog(general_technology,$this->baseUrl .$url,$params,$res); LogService::responseLog(general_technology/hebei_product_add_error, $syncData,$msg); LogSe…...
WPF ItemsControl控件
ItemsControl 是 WPF 中一个非常灵活的控件,用于显示一组数据项。它是一个基类,许多其他控件(如 ListBox, ListView, ComboBox 等)都是从 ItemsControl 继承而来。ItemsControl 的主要特点是它可以自定义数据项的显示方式…...
【Android+多线程】IntentService 知识总结:应用场景 / 使用步骤 / 源码分析
定义 IntentService 是 Android中的一个封装类,继承自四大组件之一的Service 功能 处理异步请求 & 实现多线程 应用场景 线程任务 需 按顺序、在后台执行 最常见的场景:离线下载不符合多个数据同时请求的场景:所有的任务都在同一个T…...
编译 LLVM 源码,使用 Clion 调试 clang
版权归作者所有,如有转发,请注明文章出处:https://cyrus-studio.github.io/blog/ 1. LLVM 简介 LLVM 是一个开源的编译器基础架构,最初由 Chris Lattner 于 2000 年在伊利诺伊大学开发,后来成为一个广泛应用于编译器和…...
ssm199旅游景点管理系统设计+jsp(论文+源码)_kaic
毕 业 设 计(论 文) 题目:旅游景点管理系统设计与实现 摘 要 现代经济快节奏发展以及不断完善升级的信息化技术,让传统数据信息的管理升级为软件存储,归纳,集中处理数据信息的管理方式。本旅游景点管理系统…...
在英文科技论文中分号后面的单词首字母需不需要大写
英文科技论文中分号后面的单词首字母需不需要大写 分号后完整句子的首字母规则:1. **首字母不大写**:2. **专有名词大写**:3. **特殊上下文**: 在分号后,即使后面是一个完整的句子(包含主语和谓语ÿ…...
<项目代码>YOLOv8 停车场空位识别<目标检测>
YOLOv8是一种单阶段(one-stage)检测算法,它将目标检测问题转化为一个回归问题,能够在一次前向传播过程中同时完成目标的分类和定位任务。相较于两阶段检测算法(如Faster R-CNN),YOLOv8具有更高的…...
微知-lspci访问到指定的PCIe设备的几种方式?(lspci -s bus;lspci -d devices)
通过bdf号查看 -s (bus) lspci -s 03:00.0通过vendor id或者device id等设备查看 -d (device) lspci -d 15b3: #这里是vendor号,所以在前面 lspci -d :1021 #这里是设备号,所以要:在前vendorid和deviceid…...
《Opencv》基础操作<1>
目录 一、Opencv简介 主要特点: 应用领域: 二、基础操作 1、模块导入 2、图片的读取和显示 (1)、读取 (2)、显示 3、 图片的保存 4、获取图像的基本属性 5、图像转灰度图 6、图像的截取 7、图…...
数据湖的概念(包含数据中台、数据湖、数据仓库、数据集市的区别)--了解数据湖,这一篇就够了
文章目录 一、数据湖概念1、企业对数据的困扰2、什么是数据湖3、数据中台、数据湖、数据仓库、数据集市的区别 网上看了好多有关数据湖的帖子,还有数据中台、数据湖、数据仓库、数据集市的区别的帖子,发现帖子写的都很多,而且专业名词很多&am…...
mysql-分析MVCC原理
一、MVCC简介 MVCC是一种用来解决读写冲读的无锁并发控制,也就是为事务分配单增长的时间戳,为每个修改保存一个版本,版本与事务时间戳关联,读操作只读该事务开始前的数据库的快照,所以MVCC可以为数据库解决一些问题。…...
【拥抱AI】一文讲述如何配置Milvus?
配置Milvus是一个重要的步骤,它可以帮助你更好地管理和优化向量数据库的性能。以下是一些常见的配置选项和步骤,帮助你设置和优化Milvus。 1. 安装Milvus 首先,确保你已经安装了Milvus。你可以使用Docker来快速部署Milvus。以下是一个基本的…...
Python学习35天
# 定义父类 class Computer: CPUNone MemoryNone diskNone def __init__(self,CPU,Memory,disk): self.disk disk self.Memory Memory self.CPU CPU def get_details(self): return f"CPU:{self.CPU}\tdisk:{self.disk}\t…...
Windows环境下搭建Qwen开发环境
1 参考文献 【官方指引】https://qwen.readthedocs.io/en/latest/ 【ModelScope训练】https://modelscope.cn/docs/%E4%BD%BF%E7%94%A8Tuners 【CUDA下载安装教程】https://blog.csdn.net/changyana/article/details/135876568 【安装cuDNN】https://developer.nvidia.com/…...
jenkins 2.346.1最后一个支持java8的版本搭建
1.jenkins下载 下载地址:Index of /war-stable/2.346.1 2.部署 创建目标文件夹,移动到指定位置 创建一个启动脚本,deploy.sh #!/bin/bash set -eDATE$(date %Y%m%d%H%M) # 基础路径 BASE_PATH/opt/projects/jenkins # 服务名称。同时约定部…...
黑马程序员Java项目实战《苍穹外卖》Day01
苍穹外卖-day01 课程内容 软件开发整体介绍苍穹外卖项目介绍开发环境搭建导入接口文档Swagger 项目整体效果展示: 管理端-外卖商家使用 用户端-点餐用户使用 当我们完成该项目的学习,可以培养以下能力: 1. 软件开发整体介绍 作为一…...
二叉树:堆的建立和应用
在建立堆之前,我们要知道什么是树和二叉树 树 树是一种非线性的数据结构,它是由n(n>0)个结点组成的一个具有层次关系的集合,之所以把它叫做树,是因为它长得像一棵倒挂的树,也就是根在上面&…...