在Windows环境下打包Qt C++项目为独立可执行文件的完整指南
目录
- 1. 配置Qt环境变量
- 步骤:
- 2. 使用Release模式编译项目
- 步骤:
- 3. 使用windeployqt工具收集依赖项
- 步骤:
- 4. 精简复制后的文件目录
- 方法一:使用windeployqt的选项
- 方法二:手动删除不必要的文件
- 方法三:使用静态链接(高级)
- 5. 打包为单个可执行文件
- 工具推荐:Enigma Virtual Box
- 步骤:
- 6. 生成安装包
- 工具推荐:Inno Setup
- 步骤:
- 7. 总结
在软件开发过程中,打包和部署应用程序是确保用户能够顺利运行软件的关键步骤。对于使用Qt框架开发的C++项目,特别是在Windows环境下,将项目打包为独立的可执行文件需要一系列精确的操作。本文将详细介绍如何在Windows系统中将Qt C++项目打包为独立的可执行文件,确保最终用户无需额外的Qt环境即可运行您的应用程序。
1. 配置Qt环境变量
在开始打包过程之前,确保系统的环境变量中包含Qt的路径。这一步骤至关重要,因为它允许您在命令行中直接调用Qt的工具,如windeployqt
。
步骤:
-
找到Qt安装路径:
通常,Qt安装在以下路径之一:C:\Qt\<version>\<compiler>\bin
- 例如,
C:\Qt\5.15.2\msvc2019_64\bin
-
配置环境变量:
- 右键点击“此电脑”或“我的电脑”,选择“属性”。
- 点击“高级系统设置”。
- 在“系统属性”窗口中,点击“环境变量”按钮。
- 在“系统变量”部分,找到并选择
Path
变量,点击“编辑”。 - 点击“新建”,添加Qt的
bin
目录路径。 - 确认所有窗口以保存更改。
-
验证配置:
打开命令提示符(CMD),输入以下命令以验证windeployqt
是否可用:windeployqt -version
如果配置正确,系统将显示
windeployqt
的版本信息。
2. 使用Release模式编译项目
在Qt Creator中,项目的构建配置决定了最终可执行文件的性能和体积。为了发布应用程序,建议使用Release模式进行编译。
步骤:
-
打开项目:
在Qt Creator中打开您的Qt C++项目。 -
切换到Release模式:
- 在左下角的“构建和运行”模式选择框中,选择“Release”。
- 确保选择正确的编译器和构建套件(例如,MSVC或MinGW)。
-
重新构建项目:
- 点击菜单栏的“构建” -> “重新构建项目”。
- 等待编译完成,确保没有错误。
-
验证输出:
构建完成后,导航到项目的Release
目录,确认生成的可执行文件(.exe
)存在。
注意:Release模式下生成的可执行文件经过优化,体积更小,性能更佳,适合发布给最终用户。
3. 使用windeployqt工具收集依赖项
Qt应用程序依赖于多个动态链接库(.dll
文件)和资源文件。windeployqt
工具能够自动收集并复制这些依赖项,确保应用程序在目标系统上能够正常运行。
步骤:
-
打开命令提示符:
按Win + R
,输入cmd
,然后按回车。 -
导航到Release目录:
使用cd
命令切换到包含可执行文件的Release
目录。或者直接将.exe
文件复制单独的文件夹下
例如:cd C:\Path\To\Your\Project\Release
- 运行windeployqt:
执行以下命令,将your_application.exe
替换为您的可执行文件名称:
例如:windeployqt 程序.exe --qmldir "项目qml文件所在目录"
windeployqt SerialHandler.exe --qmldir E:\project\SerialHandler
- 等待工具完成:
windeployqt
会自动扫描可执行文件,复制所有必要的Qt库文件、插件和资源到当前目录中。
提示:
- 如果您的应用程序使用了特定的Qt模块或插件,
windeployqt
会自动识别并处理。 - 可选参数可以优化部署过程,例如
--release
确保只部署Release版本的库,--libpath
指定附加的库路径。
4. 精简复制后的文件目录
使用windeployqt
后,Release
目录中可能会包含许多不必要的文件,这不仅增加了应用程序的体积,还可能带来管理上的不便。以下是一些方法,帮助您精简复制后的文件目录,确保仅保留必要的依赖项。
方法一:使用windeployqt的选项
windeployqt
提供了一些命令行选项,可以在一定程度上控制复制的文件。
-
排除不需要的模块:
如果您确定应用程序不使用某些Qt模块,可以通过--no-*
选项排除。例如:windeployqt --no-opengl --no-compiler-runtime MyApp.exe
这将排除OpenGL相关的库和编译器运行时库。
-
仅部署特定模块:
如果您的应用只使用Qt Core和Qt GUI模块,可以使用--no-plugins
和其他相关选项来限制部署的内容。 -
指定部署的插件:
通过--qmldir
或--plugins
选项,仅部署需要的插件。例如:windeployqt --qmldir path\to\qml MyApp.exe
方法二:手动删除不必要的文件
即使使用了windeployqt
的选项,仍可能存在一些不必要的文件。您可以手动检查并删除这些文件。
-
审查文件夹结构:
plugins
目录:仅保留应用程序实际使用的插件。例如,如果不使用图像格式插件,可以删除相关插件文件。platforms
目录:通常需要保留qwindows.dll
,其他不常用的可以删除。- 语言文件(
.qm
):如果应用程序不支持多语言,可以删除相关语言包。
-
删除未使用的库:
根据应用程序的实际依赖,删除未使用的Qt库文件。例如,如果不使用网络功能,可以删除Qt5Network.dll
。 -
使用工具辅助清理:
可以使用工具如Dependency Walker来分析可执行文件的实际依赖,确保只保留必要的库文件。
方法三:使用静态链接(高级)
如果希望彻底避免复制多个依赖文件,可以考虑使用Qt的静态链接。但这需要重新编译Qt库,并且需遵守Qt的商业许可协议。
步骤概述:
-
获取静态编译的Qt库:
从源代码编译Qt,启用静态编译选项。configure -static -release -platform win32-msvc
-
配置项目进行静态链接:
修改项目的.pro
文件,确保使用静态Qt库。 -
重新编译项目:
使用静态链接的Qt库重新编译您的项目。
注意:
- 静态链接会显著增加可执行文件的体积。
- 根据Qt的许可证,静态链接可能需要开源您的应用程序,具体取决于您使用的Qt版本和许可类型。
总结:静态链接适用于对部署复杂性和可执行文件体积有严格要求的项目,但需要仔细考虑许可证要求。
5. 打包为单个可执行文件
虽然使用windeployqt
已经将所有必要的文件复制到一个目录,但为了进一步简化用户体验,可以将所有文件打包为一个独立的可执行文件。这样,用户只需运行一个文件即可使用您的应用程序。
工具推荐:Enigma Virtual Box
Enigma Virtual Box 是一款免费的文件打包工具,能够将所有依赖项嵌入到主可执行文件中。
步骤:
-
下载并安装Enigma Virtual Box:
前往Enigma Virtual Box官网下载最新版本并安装。 -
打开Enigma Virtual Box:
启动Enigma Virtual Box应用程序。 -
选择主可执行文件:
- 在“Input File”字段中,选择您的主可执行文件(
your_application.exe
)。 - 在“Output File”字段中,指定打包后的输出文件路径,例如
MyApp_Packed.exe
。
- 在“Input File”字段中,选择您的主可执行文件(
-
添加依赖文件和文件夹:
- 点击“Files”选项卡,添加
windeployqt
复制到Release
目录中的所有依赖文件和文件夹。 - 可以使用“Add”按钮逐一添加,或者批量添加整个文件夹。
- 点击“Files”选项卡,添加
-
配置打包选项(可选):
- 可以设置密码保护、加密选项等,以增强应用程序的安全性。
- 查看Enigma Virtual Box的文档,了解更多高级配置选项。
-
生成打包文件:
- 点击“Process”按钮,开始打包过程。
- 等待工具完成,生成单一的打包可执行文件。
优点:
- 用户仅需下载和运行一个文件,无需管理多个依赖项。
- 简化部署过程,提升用户体验。
注意:虽然打包成单个可执行文件提高了便捷性,但请确保遵守所有第三方库的许可协议,特别是涉及动态链接库的重新分发。
6. 生成安装包
为了提供更专业和完善的用户体验,生成一个安装包是必要的。这不仅方便用户安装和卸载应用程序,还可以添加快捷方式、注册表项等功能。
工具推荐:Inno Setup
Inno Setup 是一款免费且功能强大的安装包制作工具,适用于Windows平台。
步骤:
-
下载并安装Inno Setup:
前往Inno Setup官网下载最新版本并安装。 -
启动Inno Setup向导:
- 打开Inno Setup,选择“Create a new script file using the Script Wizard”。
-
配置安装脚本:
- 应用程序信息:
- 输入应用程序名称、版本、发布者和应用程序网站(如果有)。
- 应用程序目录:
- 指定默认安装路径,例如
{pf}\YourApplication
,其中{pf}
代表“Program Files”目录。
- 指定默认安装路径,例如
- 添加应用程序文件:
- 点击“Add Files”按钮,选择您的打包可执行文件(例如
MyApp_Packed.exe
)以及所有必要的资源文件和子目录。
- 点击“Add Files”按钮,选择您的打包可执行文件(例如
- 创建快捷方式:
- 指定在“开始菜单”和桌面上创建快捷方式。
- 其他设置:
- 可以配置卸载选项、安装时的许可证协议、欢迎界面等。
- 应用程序信息:
-
编译安装脚本:
- 完成向导后,Inno Setup将生成一个安装脚本。
- 点击“Compile”按钮,开始编译过程。
- 编译完成后,生成的安装程序(
.exe
)将保存在指定的输出目录中。
-
测试安装程序:
- 双击生成的安装程序,按照提示完成安装,确保所有功能正常。
优点:
- 提供专业的安装界面和用户体验。
- 支持多种自定义选项,如注册表修改、环境变量设置等。
- 易于创建和维护,适合各种规模的项目。
7. 总结
将Qt C++项目打包为独立的可执行文件,确保最终用户能够在无需安装Qt环境的情况下顺利运行应用程序,是软件发布过程中至关重要的一步。通过以下步骤,您可以高效地完成这一过程:
- 配置Qt环境变量,确保工具可用。
- 使用Release模式编译项目,优化性能和体积。
- 利用windeployqt工具收集依赖项,简化部署。
- 精简复制后的文件目录,减少不必要的文件,优化应用体积。
- 使用第三方工具打包为单个可执行文件,提升用户体验。
- 生成专业的安装包,提供完善的安装和卸载功能。
额外建议:
- 测试:在不同的Windows系统版本上测试您的安装包,确保兼容性。
- 文档:为用户提供简明的安装和使用指南,帮助他们快速上手。
- 更新机制:考虑实现应用程序的自动更新功能,提升用户体验。
- 安全性:确保所有打包的库和资源来自可信来源,避免潜在的安全风险。
参考资料:
- Qt官方文档 - windeployqt
- Enigma Virtual Box官网
- Inno Setup官网
- Dependency Walker
相关文章:
在Windows环境下打包Qt C++项目为独立可执行文件的完整指南
目录 1. 配置Qt环境变量步骤: 2. 使用Release模式编译项目步骤: 3. 使用windeployqt工具收集依赖项步骤: 4. 精简复制后的文件目录方法一:使用windeployqt的选项方法二:手动删除不必要的文件方法三:使用静态…...
已存大量数据的mysql库实现主从各种报错----解决方案(看评论)
背景何谓“先死后生”本文使用技术1、实施流程图2、实施2.1、数据库备份2.2、搭建Mysql的Master-Slave2.2.1、准备工作2.2.2、开始部署2.2.3、账号配置2.2.4、slave 同步配置2.2.5、验证 2.3、Master做数据恢复 结语 背景 计划对已有大量数据的mysql库的主从搭建,使…...
Java爬虫:深入探索1688接口的奥秘
在数字化时代,数据成为了企业最宝贵的资产之一。对于电商企业来说,获取和分析数据的能力直接关系到其市场竞争力。阿里巴巴旗下的1688平台,作为中国领先的批发贸易平台,拥有海量的商家和商品信息,成为了众多企业获取数…...
Linux——基础命令(1)
目录 一、认识Linux 终端命令格式 查阅命令帮助信息 -help 辅助操作 自动补全 清屏和查看当前工作目录 二、基本命令 文件和目录常用命令 1.ls-查看文件与目录 2.cd切换目录 (1)touc创建文件或修改文件时间 (2)mkdir创…...
Java知识及热点面试题总结(一)
今天开始对Java进行总复习,主要针对热点面试题,我们再根据试题内容延申相关知识; 1.、Java中equals与“”的区别详解 讲二者区别之前,先大概讲解一下基本数据类型和引用类型的概念,当然,有一定基础的朋友…...
基于 AI 的软件工程: 超级程序员
徐昊 《AI时代的软件工程》-极客时间课程学习总结 帮助你更好地利用 LLM 提高效率,还可以站在一个更全面的立场上,讨论如何将 LLM 引入团队或是组织。 核心观点: AI 辅助业务建模:通过将模型转化为 Mermaid 格式,将我们的模型表达为大语言模型能够理解的形式。通过添加注…...
Spring Boot 2 和 Spring Boot 3 中使用 Spring Security 的区别
文章目录 Spring Boot 2 和 Spring Boot 3 中使用 Spring Security 的区别1. Jakarta EE 迁移2. Spring Security 配置方式的变化3. PasswordEncoder 加密方式的变化4. permitAll() 和 authenticated() 的变化5. 更强的默认安全设置6. Java 17 支持与语法提升7. PreAuthorize、…...
浦语提示词工程实践(LangGPT版,服务器上部署internlm2-chat-1_8b,踩坑很多才完成的详细教程,)
首先,在InternStudio平台上创建开发机。 创建成功后点击进入开发机打开WebIDE。进入后在WebIDE的左上角有三个logo,依次表示JupyterLab、Terminal和Code Server,我们使用Terminal就行。(JupyterLab可以直接看文件夹)…...
微信小程序+Vant-自定义选择器组件(多选
实现效果 无筛选,如有需要可参照单选组件中的方法.json文件配置"component": true,columns需要处理成含dictLabel和dictValue字段,我是这样处理的: let list arr.map(r > {return {...r,dictValue: r.xxxId,dictLabel: r.xxx…...
Vue.js 学习总结(15)—— 如何快速删除 node_modules 依赖文件
一、删除 node_modules 依赖为什么慢? 直接通过图形用户界面删除 node_modules 文件夹慢,原因主要有以下5点原因: (1)文件数量巨大:node_modules依赖可能会有上万个文件和文件夹,那么就使得操作…...
PyTorch基础05_模型的保存和加载
目录 一、模型定义组件——重构线性回归 二、模型的加载和保存 2、序列化保存对象和加载 3、保存模型参数 一、模型定义组件——重构线性回归 回顾之前的手动构建线性回归案例: 1.构建数据集;2.加载数据集(数据集转换为迭代器);3.参数初…...
Vue.js前端web练习范例:随鼠标移动的小球
技术选型:运用html、css、script、及vue组件 开发需求:编写在指定容器区域内随鼠标移动的小球,当鼠标超出容器,小球保持在边界位置不动 程序设计: 1、创建440px*440px的容器;创建30px半径的小球; 2、记录小球在面板中…...
计算机网络----基本概念
基本概念 在这一章从整体上介绍计算机网络的概况, 为后续的学习搭建起整体的框架; 介绍计算机网络中的基础术语和概念; 什么是因特网 『 因特网 』是一个世界范围内互联了数以亿计的计算设备的计算机网络; 因特网具体构成 因特网互联了数以亿计的计算设备, 这些设备被称为…...
创建可直接用 root 用户 ssh 登陆的 Docker 镜像
有时候我们在 Mac OS X 或 Windows 平台下需要开发以 Linux 为运行时的应用,IDE 或可直接使用 Docker 容器,或 SSH 远程连接。本地命令行下操作虽然可以用 docker exec 连接正在运行的容器,但 IDE 远程连接的话 SSH 总是一种较为通用的连接方…...
Linux 查看内核日志的方法
文章目录 1. dmesg 命令一. 介绍内核环形缓冲区的特点 二. 主要功能三. dmesg 使用 2. 查看kmsg文件/dev/kmsg 的用途使用 /dev/kmsg与 dmesg 的关系 3. 内核日志消息的打印行为 1. dmesg 命令 一. 介绍 dmesg(display message 或 display driver message 的缩写&…...
详解登录MySQL时出现SSL connection error: unknown error number错误
目录 登录MySQL时出错SSL connection error: unknown error number 出错原因 使用MySQL自带的工具登录MySQL 登陆之后,使用如下命令进行查看 解决方法 找到MySQL8安装目录下的my.ini配置文件 记事本打开my.ini文件,然后按下图所示添加配置 此时再…...
DRNN 神经网络的Jacobian 信息辨识
DRNN 神经网络的 Jacobian 信息辨识 1. 基本原理 Jacobian 矩阵用于描述多输入多输出系统中输入和输出之间的偏导关系,其形式为: 对于 DRNN(Dynamic Recurrent Neural Network),其动态特性使得 y(t)\mathbf{y}(t)y(t…...
麒麟系统x86安装达梦数据库
一、安装准备前工作 操作系统:银河麒麟V10,CPU: x86_64 架构 下载地址,麒麟官网:https://www.kylinos.cn/ 数据库:dm8_20220915_x86_kylin10_64 下载地址,达梦数据库官网:https://…...
uniapp定义new plus.nativeObj.View实现APP端全局弹窗
为什么要用new plus.nativeObj.View在APP端实现弹窗?因为uni.showModal在APP端太难看了。 AppPopupView弹窗函数参数定义 参数一:弹窗信息(所有属性可不填,会有默认值) 1.title:"", //标题 2.content:"", //内容 3.confirmBoxCo…...
git branch -d 删除分支
Git进行版本控制时,删除分支是常见的操作。特别是当特定的功能开发完成或者分支不再需要时,删除分支可以帮助保持仓库的整洁。删除本地分支和删除远端分支是两个独立的操作。如果需要同时删除本地和远端的分支,需要分别执行以下两个命令。 一…...
kafka生产者和消费者命令的使用
kafka-console-producer.sh 生产数据 # 发送信息 指定topic即可 kafka-console-producer.sh \ --bootstrap-server bigdata01:9092 \ --topic topicA # 主题# 进程 29124 ConsoleProducer kafka-console-consumer.sh 消费数据 # 消费数据 kafka-console-consumer.sh \ --boo…...
MyBatis框架介绍、部署及使用
一、MyBatis介绍 1.1 框架概念 **框架:**就是软件的半成品,完成了软件开发过程中的通用操作,开发者只需很少或者不用进行加工,就能 实现特定的功能。从而简化开发人员在开发过程中的步骤,提高开发效率。 1.2 常用框架…...
MySQL INSERT CRTATE DELETE DORP UPDATE WHERE 的用法
MySQL INSERT CRTATE DELETE DORP UPDATE WHERE 的用法 -- 创建数据库 CREATE DATABASE example_db;-- 使用数据库 USE example_db;-- 创建表 CREATE TABLE employees (id INT AUTO_INCREMENT PRIMARY KEY,name VARCHAR(100),position VARCHAR(50),salary DECIMAL(10, 2) );…...
《安富莱嵌入式周报》第346期:开源2GHz带宽,12bit分辨率,3.2Gsps采样率示波,开源固件安全分析器, 开源口袋电源,开源健康测量,FreeCAD
周报汇总地址:嵌入式周报 - uCOS & uCGUI & emWin & embOS & TouchGFX & ThreadX - 硬汉嵌入式论坛 - Powered by Discuz! 视频: https://www.bilibili.com/video/BV1TYBhYKECK/ 《安富莱嵌入式周报》第346期:开源2GHz带…...
Spring ApplicationListener监听
【JavaWeb】Spring ApplicationListener-CSDN博客 ApplicationEvent以及Listener是Spring为我们提供的一个事件监听、订阅的实现,内部实现原理是观察者设计模式,设计初衷也是为了系统业务逻辑之间的解耦,提高可扩展性以及可维护性。事件发布…...
蓝桥杯练习题
目录 1.劲舞团 2.数字诗意 3.封闭图形个数 4.回文数组 欢迎 1.劲舞团 0劲舞团 - 蓝桥云课 #include <iostream> using namespace std; int main() {int num1,M0;long long c[1000000];int cnt0;string a,b ;while(cin>>a>>b>>c[cnt])//系统自动输入…...
【JAVA】Java高级:Java中的常用设计模式——设计模式的基本思想与应用场景
在软件开发中,设计模式是一种被反复使用的解决特定问题的最佳实践。它们提供了一种标准化的方式来解决常见的设计问题,使得代码更具可读性、可维护性和可扩展性。特别是在Java开发中,设计模式的使用可以极大地提高代码的质量和开发效率。 设…...
QT 跨平台实现 SSDP通信 支持多网卡
一.多网卡场景 在做SSDP通信的时候,客户端发出M-search命令后, 主机没有捕捉到SSDP的消息,你可以查看下,是不是局域网下,既打开了wifi,又连接了本地网络,mac os下很容易出现这种场景。此时,我们发送消息时,需要遍历所有网卡并发送M-search命令。 二.QT相关接口介绍 1…...
疑难Tips:NextCloud域名访问登录时卡住,显示违反内容安全策略
[ 知识是人生的灯塔,只有不断学习,才能照亮前行的道路 ] 1使用域名访问Nextcloud用户登录时卡住,显示违反内容安全策略 我使用官方Docker镜像来部署NextCloud 28.0.5,并通过Openresty反向代理Nextcloud,但是在安装后无法稳定工作,每次登录后,页面会卡死在登录界面,无法…...
区块链:非对称加密
在区块链技术中,非对称加密是一项核心技术,用于保障数据的安全性和用户的隐私。它通过公钥和私钥的配合,实现了信息加密、解密、身份验证和数字签名等功能。 1. 非对称加密的基本原理 非对称加密使用两个密钥: 公钥:…...
量子安全与经典密码学:一些现实方面的讨论
量子安全与经典密码学 背景:量子安全与经典密码学量子计算对传统密码学的威胁 安全性分析经典密码学的数学复杂性假设**量子密码学的物理不可克隆性假设** **性能与实现难度**后量子算法在经典计算机上的运行效率**量子通信设备的技术要求与成本** **可扩展性与适用…...
WordCloud参数的用法:
-------------词云图集合------------- 用WordcloudPyQt5写个词云图生成器1.0 WordCloud去掉停用词(fit_wordsgenerate)的2种用法 通过词频来绘制词云图(jiebaWordCloud) Python教程95:去掉停用词词频统计jieba.toke…...
数据库(总结自小林coding)|索引失效的场景、慢查询、原因及如何优化?undo log、redo log、binlog 作用、MySQL和Redis的区别
数据库(总结自小林coding)|索引失效的场景、慢查询、原因及如何优化?undo log、redo log、binlog 作用、MySQL和Redis的区别 说一下索引失效的场景?什么是慢查询?原因是什么?可以怎么优化?undo …...
(计算机组成原理)期末复习
第一章 计算机的基本组成:硬件软件(程序)计算机系统 软件有系统软件(系统管理工具),应用软件 计算机硬件:包括主机和外设,主机包括CPU和内存,***CPU由运算器和控制器所组…...
Linux下一次性关闭多个同名进程
要一次性关闭多个同名的 Python 进程,例如: 你可以使用以下几种方法。在执行这些操作之前,请务必确认这些进程确实是你希望终止的,以避免意外关闭其他重要的进程。 方法一:使用 pkill 命令 pkill 是一个用于根据名称…...
Android显示系统(01)- 架构分析
一、前言: Android是基于Linux的,而显示设备的驱动也都是和Linux普通设备一样去管理,也就是说归根结底还是要按照Linux的方式组织数据送给LCD,因此,我们理解Android设计的这一套复杂的显示系统时候,一定要…...
Bean的生命周期详解保姆级教程,结合spring boot和spring.xml两种方式讲解,5/7/10大小阶段详细分析
文章目录 Spring Bean的生命周期一、为什么知道 Bean 的生命周期?二、生命周期大致了解三、详细分析生命周期3.1 ① 初步划分为 5 步:3.1.1 spring 框架中怎么理解3.1.2 spring boot 项目中怎么理解 3.2 ② 细分 5 步为 7 步:3.2.1 spring 框…...
2024年11月26日Github流行趋势
项目名称:v2rayN 项目维护者:2dust yfdyh000 CGQAQ ShiinaRinne Lemonawa 项目介绍:一个支持Xray核心及其他功能的Windows和Linux图形用户界面客户端。 项目star数:70,383 项目fork数:11,602 项目名称:fre…...
分页/列表分页
分页和单列表差不多,只是多加了点数据 一 : 实体类 1. 原生实体类 和 2.vo实体类 vo实体类包含原生实体类的所有字段 再新字段 原生(数据库里的字段) vo(多条件查询字段 ,分页字段) 分页字段 : private Integer pageNum1 //起始页 private Integer pageSize 4 //显示页数…...
微信小程序学习指南从入门到精通
🗽微信小程序学习指南从入门到精通🗽 🔝微信小程序学习指南从入门到精通🔝✍前言✍💻微信小程序学习指南前言💻一、🚀文章列表🚀二、🔯教程文章的好处🔯1. ✅…...
STM32外设应用
STM32系列单片机是由意法半导体(STMicroelectronics)推出的一款基于ARM Cortex-M内核的32位微控制器。STM32以其高性能、低功耗、丰富的外设接口以及灵活的应用场景,广泛应用于嵌入式系统中。STM32的外设功能非常强大,几乎涵盖了大多数常见嵌入式开发所需的硬件接口。本篇文…...
Vue进阶面试题目(一)
Vue 自定义事件中,父组件如何接收子组件传递的多个参数? 在 Vue 中,子组件可以通过 $emit 方法触发自定义事件,并传递参数。父组件可以通过监听这个事件来接收参数。如果子组件需要传递多个参数,可以将这些参数作为数组或对象传…...
人工智能——大语言模型
5. 大语言模型 5.1. 语言模型历史 20世纪90年代以前的语言模型都是基于语法分析这种方法,效果一直不佳。到了20世纪90年代,采用统计学方法分析语言,取得了重大进展。但是在庞大而复杂的语言信息上,基于传统统计的因为计算量巨大…...
每天五分钟机器学习:支持向量机数学基础之超平面分离定理
本文重点 超平面分离定理(Separating Hyperplane Theorem)是数学和机器学习领域中的一个重要概念,特别是在凸集理论和最优化理论中有着广泛的应用。该定理表明,在特定的条件下,两个不相交的凸集总可以用一个超平面进行分离。 定义与表述 超平面分离定理(Separating Hy…...
树链剖分(重链剖分)
树链剖分的核心思想就是将一棵树剖分成一条一条的链 因为树不好处理 但链比较好处理 为了学会它 我们先要学会树上dfs(深度优先搜索) 然后就没了(雾) Because 树链剖分需要用到两个dfs 哦对了 我们还要了解以下的知识点 1.子…...
Spring Boot 开发环境搭建及示例应用
文章目录 1. 准备开发工具安装 JDK安装 IDE安装 Maven 2. 创建 Spring Boot 项目使用 Spring Initializr 创建项目导入项目到 IDE 3. 编写代码主类创建控制器创建实体类创建仓库接口创建服务类创建控制器 4. 配置文件5. 运行应用程序6. 测试应用程序7. 调试与优化8. 部署应用 1…...
网站布局编辑器前端开发:设计要点与关键考量
一、设计说明 (一)功能模块 可视化操作区域 这是用户进行网站布局设计的主要画布。通过拖放各种页面元素(如文本框、图片、按钮、导航栏等)到该区域,用户能够直观地构建网站页面的布局结构。支持对元素的实时缩放、旋…...
网络编程第一课
0voice第一课 https://github.com/0voice 今日学习:网络通信IO 网络通信的核心是通过系统提供的socket套接字实现的。socket和c语言中文件操作的本质类似,在c语言中,通过fopen、fclose、fread、fwrite实现了对文件的操作,socket…...
关于网络安全攻防知识
DNS 劫持 什么是DNS劫持? DNS劫持又叫域名劫持,(劫持了路由器或域名服务器等),篡改了域名的解析结果,使得指向该域名的IP指向IP,你想访问正经网站结果给你跳到一个不正经的网站,实现…...
途普科技企业知识中台完成华为昇思MindSpore技术认证
近日,北京途普科技有限公司(以下简称“途普科技”)作为华为昇腾大模型方向的应用软件伙伴,核心产品企业知识中台已成功与华为AI框架昇思MindSpore完成相互兼容性认证。这一成就标志着途普科技在AI领域与华为的合作进一步加深&…...