从零开始配置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,请设置MinGwbin之前那个路径,请根据自身环境实际情况进行配置

    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 创建的.vscodescripts 文件夹拷贝到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我们已经说明QtCreatorVsCode操作的基本原理,就不在进行说明了。

  • 同样我们拷贝VsCode+QMake+Msvc工程创建的.vscodescripts文件夹到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%"
)

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

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

相关文章

【前端】JavaScript中的字面量概念与应用详解

博客主页: [小ᶻ☡꙳ᵃⁱᵍᶜ꙳] 本文专栏: 前端 文章目录 💯前言💯字面量1. 数字字面量2. 字符串字面量3. 布尔字面量4. 空值字面量(null)5. 对象字面量6. 数组字面量7. 正则表达式字面量8. 特殊值字面量9. 函数字…

Python使用ffmpeg进行本地视频拉流,并使用训练模型识别人脸,并将识别后的模型推流源码

前言: Windows上搭建nginx-rtsp流媒体服务器,实现FFmpeg推流、录像转rtsp推流 - WayWayWayne - 博客园参考上述文章和一些webRTC前端拉流文章 主要是缕一缕思路和每个部分的代码功能,文件命名高度相似导致。 效果: 代码&#x…

【去毛刺】OpenCV图像处理基础:腐蚀与膨胀操作入门

在数字图像处理中,形态学操作是一种常用的技术,用于提取图像中的特定形状或特征。其中,腐蚀(Erosion)和膨胀(Dilation)是两种基本的形态学运算。本文将通过一个简单的例子来演示如何使用Python中…

2024年11月27日Github流行趋势

项目名称:screenshot-to-code 项目维护者:abi clean99 sweep-ai kachbit vagusX项目介绍:通过上传截图将其转换为整洁的代码(支持HTML/Tailwind/React/Vue)。项目star数:62,429项目fork数:7,614…

Linux八股积累与笔记

1、iptables 是一个用于配置Linux内核防火墙规则的工具。四表五链:在iptables中,有四个表(tables)和五个链(chains),用于管理不同类型的数据包过滤规则。如下: 表(Tabl…

Qt5.14.2的安装与环境变量及一些依赖库的配置

目录 1.Qt5.14.2安装 2.Qt环境变量及一些依赖库的配置 1.Qt5.14.2安装 QT从入门到入土(一)——Qt5.14.2安装教程和VS2019环境配置 - 唯有自己强大 - 博客园 2.Qt环境变量及一些依赖库的配置 假设QT安装目录为: D:\Qt\Qt5.14.2 将目录: D:\Qt\Qt5.14.…

初识Linux(4):Linux基础环境工具(下)

1. Git Git是一种版本控制系统,是一种工具,用于代码的存储和版本控制。 而我们常见的Gitee和Gitehub都是基于Git(Git是开源的)实现的在线代码仓库,而前者服务器位于中国,后者服务器位于美国。 总的来说&…

12.Three.js纹理动画与动效墙案例

12.Three.js纹理动画与动效墙案例 在Three.js的数字孪生场景应用中,我们通常会使用到一些动画渲染效果,如动效墙,飞线、雷达等等,今天主要了解一下其中一种动画渲染效果:纹理动画。下面实现以下动效墙效果&#xff08…

《白帽子讲Web安全》13-14章

《白帽子讲Web安全》13-14章 《白帽子讲Web安全》13-14章13、应用层拒绝服务攻击13.1、DDOS简介13.2、应用层DDOS13.2.1、CC攻击13.2.2、限制请求频率13.2.3、道高一尺,魔高一丈 13.3、验证码的那些事儿13.4、防御应用层DDOS13.5、资源耗尽攻击13.5.1、Slowloris攻击…

【电子元器件】Nand Flash基础介绍

本文章是笔者理论结合实践进行整理的备忘笔记。希望在帮助自己温习避免遗忘的同时,也能帮助其他需要参考的朋友。如有谬误,欢迎大家进行指正。 一、什么是Nand Flash Flash主要分两种,Nand Flash和Nor flash。 Nor的成本相对高&#xff0c…

JVM_垃圾收集器详解

1、 前言 JVM就是Java虚拟机,说白了就是为了屏蔽底层操作系统的不一致而设计出来的一个虚拟机,让用户更加专注上层,而不用在乎下层的一个产品。这就是JVM的跨平台,一次编译,到处运行。 而JVM中的核心功能其实就是自动…

python除了熟悉的pandas,openpyxl库也很方便的支持编辑Excel表

excel表格是大家经常用到的文件格式,各行各业都会跟它打交道。之前文章我们介绍了使用openpyxl和xlrd库读取excel表数据,使用xlwt库创建和编辑excel表,在办公自动化方面可以方便我们快速处理数据,帮助我们提升效率。 python之open…

网络知识1-TCP/IP模型

从用户端到服务端,tcp/ip模型可分为应用层、传输层、网络层、网络接口层 以下使用寄快递为例进行解释 应用层职责: 只关注与为用户提供应用功能,如HTTP、FTP、telnet、DNS、SMTP等 ,应用层的职责就像我们寄快递时将快递给快递员…

机器学习(二十五):决策树算法以及决策树和神经网络的对比

一、决策树集合 单一决策树会对训练数据的变化很敏感。例子:输入十个数据,判断是否是猫。只替换其中一个数据,信息增益最高的分裂特征就发生了改变,决策树就发生了变化。 使用决策树集合可以使算法更加健壮。例子:使用…

通俗理解人工智能、机器学习和深度学习的关系

最近几年人工智能成为极其热门的概念和话题,可以说彻底出圈了。但人工智能的概念在1955年就提出来了,可以说非常古老。我在上小学的时候《科学》课本上就有人工智能的概念介绍,至今还有印象,但那些年AI正处于“寒冬”,…

CDAF / PDAF 原理 | PDAF、CDAF 和 LAAF 对比 | 图像清晰度评价指标

注:本文为 “CDAF / PDAF 原理 | PDAF、CDAF 和 LAAF 对比 | 图像清晰度评价指标” 几篇相关文章合辑。 文章中部分超链接、图片异常受引用之前的原文所限。 相机自动对焦原理 TriumphRay 于 2020-01-16 18:59:41 发布 凸透镜成像原理 这一部分大家中学应该就学过…

文件上传upload-labs-docker通关

(图片加载不出,说明被和谐了) 项目一: sqlsec/ggctf-upload - Docker Image | Docker Hub 学习过程中,可以对照源码进行白盒分析. 补充:环境搭建在Linux虚拟机上的同时,以另一台Windows虚拟机进行测试最…

Linux的介绍及虚拟机centOS系统的下载与应用

1、什么是Linux Linux 是一种类 Unix 操作系统,它的内核(Kernel)由 Linus Torvalds 于 1991 年首次发布。作为一个开源、免费的操作系统,Linux 被广泛用于服务器、桌面计算机、嵌入式设备、移动设备等各种场景。 1、操作系统 操…

如何在 Ubuntu 22.04 上安装 Metabase 数据可视化分析工具

简介 Metabase 提供了一个简单易用的界面,让你能够轻松地对数据进行探索和分析。通过本文的指导,你将能够在 Ubuntu 22.04 系统上安装并配置 Metabase,并通过 Nginx 进行反向代理以提高安全性。本教程假设你已经拥有了一个非 root 用户&…

spring +fastjson 的 rce

前言 众所周知&#xff0c;spring 下是不可以上传 jsp 的木马来 rce 的&#xff0c;一般都是控制加载 class 或者 jar 包来 rce 的&#xff0c;我们的 fastjson 的高版本正好可以完成这些&#xff0c;这里来简单分析一手 环境搭建 <dependency><groupId>org.spr…