【C++ Qt】认识Qt、Qt 项目搭建流程(图文并茂、通俗易懂)
每日激励:“不设限和自我肯定的心态:I can do all things。 — Stephen Curry”
绪论:
本章将开启Qt的学习,Qt是一个较为古老但仍然在GUI图形化界面设计中有着举足轻重的地位,因为它适合嵌入式和多种平台而被广泛使用,本章将先从认识Qt,再到理解Qt的作用和地位,再到Qt的安装下载,以及创建好一个Qt项目,再到最后的理解Qt项目中提前配备好的文件,带你入门Qt项目。
————————
早关注不迷路,话不多说安全带系好,发车啦(建议电脑观看)。
1. 认识Qt
首先QT是用来桌面应用开发(电脑上写的程序),其中Qt无法开发网页前端和移动开发(虽然目前qt支持了移动开发,但暂时还没啥厂商使用qt开发的)
QT客户端开发的重要任务:编写和用户交互的界面
在用户交互的界面:由两种典型风格构成:
- 命令行界面/终端界面(黑框框)TUI,常给程序员使用的专业软件
- 图形化界面 GUI 给普通用户使用(也就类似我们常用的windows环境)
而Qt就是用来编写 GUI程序的一套框架~~
在Windows编写GUI程序,有很多种方法,其中QT只是其中之一,windows下还有那些方案可以开发GUI:
- Windows API 系统原生提供的API,开发起来非常原始和繁琐(最简单古老的方式)
- MFC:使用了面向对象的方式,将Windows API接口进行封装使用(它的影响非常深远)
- QT:(1991年左右诞生)其中它和MFC类似同样的都是通过封装的方式写成
- 但MFC早就不更新了,而QT仍然在不断推陈出新
- GTK、WxWidget
- Windows Forms:一个给C#给量身定做的一套GUI技术体系(微软的编程语言 C#(C sharp))
- WPF、UWP(Windows Forms的升级版)
- Electron:本质上是吧HTML这样的网页,打包成一个Windows 上运行的客户端程序(最初用来开发atom文本编辑器的,后来atom没了,被微软的VsCode干趴了),但缺点是运行效率在上面的技术体系中是比较低的
2. Qt 是什么
Qt 是⼀个 跨平台的 C++ 图形⽤⼾界⾯应⽤程序框架 。
- 框架:本质就是一群大佬发明出来的,让我们可能更加方便靠谱的写出我们自己的代码(通过框架约束程序员)
- 其中库和框架都属于大佬把代码写好了,让我们使用
- 而库被程序员调用(程序员是主题)、框架则是占主题,程序员配合框架,完善填充框架中留出的一些细节
编写c++代码,框架当然也很重要。C++的生态是割裂的离散的,并不想Java存在巨无霸社群,统一天下
C++不同的开源社区、大厂,各自有各自的框架,各自为政
诺基亚的塞班系统:主推Qt来做作为开发
相比之下,像Qt这种,能被大家共识认可的框架,在整个c++生态中并不多见
1991年,计算机中,诞生了许多神奇的东西:Qt、vim、python、OpenGL、Linux、汤老湿…
QT支持的平台:
- Windows ‒ XP、Vista、Win7、Win8、Win2008、Win10(windows各个版本)
- Linux(各种发行版)尤其是Linux中的KDE桌面基于Qt 构建
- TUI 基于命令操作,门槛高但效率也高
- GUI 基于图形化操作,门槛低,效率也低
- 也有少数用户使用Linux 桌面,存在几套环境:GNOME(基于GTK 构建)、KDE(基于Qt 构建的),其中Linux桌面使用过程中有很多问题(容易崩溃)
- Mac系统
- 嵌入式系统
- 也是 Qt 主要的战场
- 日常使用的,冰箱、洗衣机、路由器。。。这些设备也需要计算机,但这些设备的计算机配置硬件就不用很高了,低配置、低成本,其中的图形化界面就是通过Qt 来写,这个领域中也受到了安卓的挑战
Qt 版本
⽬前最新的版本是 Qt 6. 但是相对来说 Qt 6 和 Qt 5 之间的核⼼功能区别不⼤. 并且企业中也仍然有⼤量的项⽬在使⽤ Qt 5.
另外 Qt 在发布的时候还提供了两种许可证:
- 商业许可: 开发者以商业⽬的使⽤Qt框架进⾏开发和发布软件的许可,开发者需要购买商业许可并按照相关规定使⽤Qt框架。商业许可提供了更多的功能和服务,适合于商业软件开发(需要花钱购买,其中购买它主要提供的是技术支持,买到就是一份服务)
- 开源许可: 开发者以⾮商业⽬的使⽤Qt框架进⾏开发和发布软件的许可,开发者可以免费使⽤Qt框架,但需要遵守开源许可协议的要求,如在软件中包含Qt许可协议的声明等(白嫖)
Qt 的优点
- 跨平台,⼏乎⽀持所有的平台;
- 接⼝简单,容易上⼿,学习 QT 框架对学习其他框架有参考意义。
- ⼀定程度上简化了内存回收机制(半自动的垃圾回收,简化内存释放,尽可能小的影响程序的效率)
- 开发效率⾼,能够快速的构建应⽤程序。
- 有很好的社区氛围,市场份额在缓慢上升。
- 可以进⾏嵌⼊式开发
Qt 的应⽤场景
- 桌⾯应⽤程序
Qt 能够创建各种类型的桌⾯应⽤程序,包括⽂件管理器、媒体播放器、绘图程序等。Qt 应⽤程序⽀持多种操作系统,可以运⾏在 Windows、Linux、macOS 等桌⾯操作系统上 - 移动应⽤程序
Qt ⽀持 Android 和 IOS 移动操作系统,为应⽤程序提供了强⼤的跨平台能⼒。可以使⽤ Qt 构建各种移动应⽤程序,例如社交应⽤、游戏、娱乐等 - 嵌⼊式系统
Qt 在嵌⼊式领域应⽤⾮常⼴泛,它可以构建⾯向各种设备的图形应⽤程序,在机顶盒、⻋载娱乐系统、安防监控设备等领域具有⼴泛的应⽤
开发的知名软件:
剪映、WPS Office 办公软件、Google Earth ⾕歌地图 、VirtualBox 虚拟机软件…
3. Qt 开发环境的搭建
需要安装3个部分:
- C++编译器(gcc/cl.exe,并不是Visual Studio不是IDE,编译器只是IDE调用的一个程序)
- Qt SDK(SDK 软件开发包)windows版本 Qt SDK里已经内置了 C++ 编译器(内置编译器是mingw,windows版本的gcc/g++)
- 需要有个 Qt 的集成开发环境(IDE)
- Qt Creator(Qt官方提供的,最容易入门,上手的方式,开箱即用不用怎么配置)虽然过程中存在许多bug 但整体来说挺方便
- Visual Studio(功能更强,但需要配置容易出错)
- Eclipse(并非只是Java IDE,本身是一个IDE平台可以搭配不同插件构成不同的IDE,但目前市场份额冲击很大 JetBrain、VSCode)
- 本质只用安装一个 Qt SDK,另外两个就有了
下载Qt SDK:
去官方网站(下载一个安装程序,首选官方网站)
Qt 的官方网站(下载5.14的一个版本相对于不算很新也不老):(国外网站可能速度较慢,想办法fq)
4. Qt Creator安装过程
- 关闭网络跳过注册
- 选择路径(安装软件所在目录常识:不要代中文、特殊符号以及空格)
- Qt SDK中内置的 c++ 编译器(windows 版本的gcc/g++)
给我们装好的Qt 配置一下环境变量(不是必须的,但经量配置上防止莫名的错误)
- 打开环境变量(windows搜索)
- windows 也是支持多用户的操作系统(分为用户变量、系统变量)
- 选择Path:也就和Linux中的环境变量是一样的(输入的一个命令从path路径中查找!)
- 此处就需要把Qt SDK中的某个目录假如到Path环境变量中(bin目录D:\Qt\Qt5.14.2\5.14.2\mingw73_64\bin,内部有许多动态库、exe的目录)
- 将系统变量中的Path中进行添加该目录:
配置环境变量是为了:
- 让操作系统 Qt Creator 工具 ,能够找到Qt SDK 中提供的exe
- 运行 Qt 程序的时候,能够找到 .dll 动态库(Windows环境中)
- 环境变量简单的理解成:“进程间通信” 机制(让一个进程借助环境变量找到另外一个进程)
对于安装成功后会有5个程序他们分别是:
- Assistant:离线官方文档,也就是存储许多的函数的使用方法(英文文档要有耐心)
- Designer:Qt 设计师,图形化的设计界面的工具,拖拽式的快速生成界面(后面经常使用,但是是搭配 Qt Creator来使用)
- Linguist:Qt 语言家,作用是对国际化进行支持,有点时候写的程序,要和国际接轨(允许单独创建一个 语言配置文件,把界面需要用到的各种文字,都配置到文件中,并且在文件中提前把各种一样的翻译配置进去)就可以通过简单的 api 切换这里的语言配置
- Qt 5.14.2:Qt 的命令行
- Qt Creator:Qt 的集成开发根据(学习Qt 过程中最主要的工具)
5. 初始创建Qt项目
- 打开QT Creator
- 打开右上角的文件选择新建(应用程序)
- 在选择Application
- Qt Widgets App…
- Qt 不仅支持C++、也支持 Python 和 Java
- 我们本处只涉及第一个 Qt Widgets 选择后继续
- 填写名称
- 路径
- 下一步
- 构建系统,通过Qt写的程序,涉及到一系列的 元编程技术(通过代码来生成代码)
- Qt 框架会在编译的时候,自动先调用一系列根据,基于你自己的代码,生成一系列的其他的 C++ 代码,最终编译的代码
- 其中 qmake 是老牌的Qt构建工具(默认选择qmake使用即可)
- CMake 并非Qt专属,很多的开源项目都会使用CMake
- 其中关注:Base Class:使用Qt Creator 创建项目,会自动的生成一些代码
- 生成的代码就包含一个类
- 此处就是要选择这个自动生成的类的父类
- 此处先选择QWidget进行学习
- 其中 Class name 就是自己生成的类,Base class 就是父类
- Qt 中内置的类都是以Q开头
- 而下面的就是文件名,他和上面的类是关联的(其中可以不一样,但经量保持一致)
- Form file 非常关键: Qt中创建图形化界面的程序,有两种方式
- 直接通过c++代码的方式创建界面
- 通过form file文件,以图形化的方式来生成界面(此时就可以使用Qt Designer 或直接使用Qt Creator 来编辑这个 ui 文件,从而以图形化的方式,快速方便的生成图形化界面)
- 这里是选择 翻译文件(对应的语言)暂时不关注,它是和国际化相关的
- 选择一下基于那个编译器的Qt SDK 来构建后续代码
- 就默认勾选 WinGW 就可以了
- 就默认勾选 WinGW 就可以了
- 可以选择版本控制工具(如git…)
- 最终完成就创建好了
- 当创建好后,在左下角有运行按钮(绿色三角):
- 其中注意我们创建项目过程中的存储路径,不要有中文路径!!
- 最终就会构建出一个图形化界面:
6. 认识界面及细节
在构建成功后,会自动生成main函数:
-
其中main函数中有:
- 必备的 QApplication对象
- Widget对象,根据对象就是我们创建项目时选择的QWidget
-
构建后会生成,Widget.h类
- 其中Q_OBJECT 是一个Qt内置的宏(宏的本质上就是文本替换)
- Q_OBJECT展开之后,就会生成一大堆代码
- Qt中有一个非常核心的机制,“信号” 和 “槽”
- 如果这个类想使用 信号和槽 就需要引入这个宏!
- 其中构造函数中的 parent 参数:
- 是一个引入的“对象树”机制(后续细讲)
- 创建的Qt对象给挂到对象树(N叉数)上
- 往树上挂的时候就需要指定 “父节点”
- UI::Widget* ui
- 它和 Form file 密切相关
- 其中Q_OBJECT 是一个Qt内置的宏(宏的本质上就是文本替换)
-
widget.cpp
-
form file
- 当我们双击 ui 文件,此时 Qt Creator 就会调用Qt Designer,打开UI文件,图形化的界面编辑器
- 此时在点击左侧的编辑按钮,就会 显示 ui 文件的本题
- 这个格式 也就是 xml 格式(和html类似,都是使用成对的标签来表示数据)
- xml 这里的标签,有那些标签有什么含义,都是程序员自己定义的(也就是qt开发的大佬们定义的),只用知道 ui 文件本质就是一个xml即可
- 类似的就是自定义应用层协议
- Qt 中使用 xml文件就是描述程序的界面是啥样的,进一步的qmake会调用相关的工具,依据这个xml文件生成一些c++代码,从而把完整的界面构造出来
- 当我们双击 ui 文件,此时 Qt Creator 就会调用Qt Designer,打开UI文件,图形化的界面编辑器
-
.pro:Qt 项目的工程文件,也是 qmake 工具 构建时候的重要依据
- 类似于 Linux 中学习的 makefile 文件
- qmake 搭配 .pro 起到的作用 和 makefile 类似的
- 而其中 我们这里并不用去学习 qmake 和 .pro 因为Qt Creator把这个过程都封装好了,所以我们并不用过多关注,仅需要点击运行即可
-
上面看到的 .h .cpp .pro .ui 都是源代码
-
如果编译运行 Qt 项目,构建过程中还会生成一些中间文件
-
打开文件管理器,查看项目对应的目录
-
其中我们在运行一次 程序后就会生成一个: build-xxxx
-
这个目录里面就是项目运行过程中,生成的一些临时文件:
- 其中就会有makefile文件(qmake + pro生成)、ui_widget.h(内部就是根据xml生成的代码),他们都是自动生成的
- ui_widget.h本质就是根据xml生成,也就是最终界面的效果展示的具体代码(具体逻辑如下图)
-
在Debug中还会有一个 .exe(他本质就是我们生成可执行程序也是生成的界面!)
-
本章完。预知后事如何,暂听下回分解。
如果有任何问题欢迎讨论哈!
如果觉得这篇文章对你有所帮助的话点点赞吧!
持续更新大量QT细致内容,早关注不迷路。
相关文章:
【C++ Qt】认识Qt、Qt 项目搭建流程(图文并茂、通俗易懂)
每日激励:“不设限和自我肯定的心态:I can do all things。 — Stephen Curry” 绪论: 本章将开启Qt的学习,Qt是一个较为古老但仍然在GUI图形化界面设计中有着举足轻重的地位,因为它适合嵌入式和多种平台而被广泛使用…...
用Python打造去中心化知识产权保护系统:科技驱动创作者权益新方案
用Python打造去中心化知识产权保护系统:科技驱动创作者权益新方案 近年来,区块链技术和去中心化系统的兴起为知识产权保护提供了新的可能性。在传统模式下,知识产权保护通常依赖于集中化管理机构,这种方式不仅成本高,还可能因不透明导致权益争议。于是,我们萌生了一个设…...
CVE重要漏洞复现-Fastjson1.2.24-RCE漏洞
本文仅供网络学习,不得用于非法目的,否则后果自负 1、漏洞简介 fastjson是阿里巴巴的开源JSON解析库,它可以解析JSON格式的字符串,也可以从JSON字符串反序列化到JavaBean。即fastjson的主要功能就是将Java Bean序列化成JSON字符…...
Windows 图形显示驱动开发-WDDM 1.2功能—显示设备硬件软件认证要求
一、容器技术id技术的硬件级实现要求 1.1 EDID规范深度适配 1.物理层要求: 必须使用EDID 2.0及以上版本数据结构 容器ID需写入VSDB区块的0x50-0x6F区域,采用Little-Endian格式存储 允许的最大传输延迟:I2C总线时钟频率≤100KHz时…...
Coze流搭建--写入飞书多维表格
目标 使用coze搭建一个业务流,将业务流生产出的数据写入飞书保存 测试业务流 使用图片生成插件,配置prompt生产图片,将生产的结果写入飞书文档 coze流 运行后最终效果 搭建流程 第一步:飞书创建多维表格 注册飞书创建多维表…...
4.14:计组第三章
一、数据的强制类型转换与存储 1、边界对齐与大端小端方式 2、真-强制类型转换 二、存储器的基本知识(不包含磁盘存储器) 1、主存储器 (1)...
Vue3+Vite前端项目部署后部分图片资源无法获取、动态路径图片资源报404错误的原因及解决方案
目录 Vue3vite前端项目部署后部分图片资源无法获取、动态路径图片资源报404错误的原因及解决方案 一、情景介绍 1、问题出现的场景 2、无法加载的图片写法 二、反向代理原理简介 三、造成该现象的原因 四、解决方案 1、放弃动态渲染 2、在页面挂载的时候引入图片资源 …...
Nacos操作指南
第一章:Nacos 概述 1.1 什么是 Nacos? 定义与定位 Nacos(Naming and Configuration Service)是阿里巴巴于2018年开源的动态服务发现、配置管理和服务管理平台,现已成为微服务生态中的重要基础设施。其核心价值在于帮…...
2025年常见渗透测试面试题-红队面试宝典下(题目+回答)
网络安全领域各种资源,学习文档,以及工具分享、前沿信息分享、POC、EXP分享。不定期分享各种好玩的项目及好用的工具,欢迎关注。 目录 一、Java反序列化过程及利用链示例 二、大型网络渗透经验 三、Cobalt Strike的两种Dump Hash区别 四…...
扩增子分析|基于R语言microeco包进行微生物群落网络分析(network网络、Zi-Pi关键物种和subnet子网络图)
一、引言 microeco包是福建农林大学姚敏杰教授团队开发的扩增子测序集成分析。该包综合了扩增子测序下游分析的多种功能包括群落组成、多样性、网络分析、零模型等等。通过简单的几行代码可实现复杂的分析。因此,microeco包发表以来被学界广泛关注,截止2…...
flutter-Text等组件出现双层黄色下划线的问题
文章目录 1. 现象2. 原因3. 解决方法 1. 现象 这天我正在写Flutter项目的页面功能,突然发现我的 Text 文字出现了奇怪的样式,具体如下: 文字下面出现了双层黄色下划线文字的空格变得很大,文字的间距也变得很大 我百思不得其解&a…...
优化运营、降低成本、提高服务质量的智慧物流开源了
智慧物流视频监控平台是一款功能强大且简单易用的实时算法视频监控系统。它的愿景是最底层打通各大芯片厂商相互间的壁垒,省去繁琐重复的适配流程,实现芯片、算法、应用的全流程组合,从而大大减少企业级应用约95%的开发成本可通过边缘计算技术…...
leetcode第二题
功能函数 typedef struct ListNode {int val;struct ListNode *next; } ListNode;struct ListNode* addTwoNumbers(struct ListNode* l1, struct ListNode* l2) {ListNode *dummy (ListNode *)malloc(sizeof(ListNode));ListNode *cur dummy;int carry 0; //carry是进位值…...
QT实现带快捷键的自定义 QComboBox 控件
在现代GUI应用程序中,用户界面的设计不仅要美观,还要提供高效的交互方式。本文将介绍一个自定义的QCComboBox类,它是一个基于Qt的组合框(QComboBox),支持为每个下拉项添加快捷键。通过这些快捷键࿰…...
聊聊类模板
我们来聊聊类模板,从基础到实际例子,让你更容易理解。 什么是类模板? 类模板是一种模板,允许我们定义一个可以处理任意数据类型的类。简单来说,就是我们可以编写一个类的“蓝图”,然后在需要的时候使用不…...
使用Python进行AI图像生成:从GAN到风格迁移的完整指南
AI图像生成是一个非常有趣且前沿的领域,结合了深度学习和计算机视觉技术。以下是一些使用Python和相关库进行AI图像生成的创意和实现思路: 1. 使用GAN(生成对抗网络) 基本概念:GAN由两个神经网络组成:生成…...
Java 设计模式:外观模式详解
Java 设计模式:外观模式详解 外观模式(Facade Pattern)是一种结构型设计模式,它为复杂的子系统提供一个简化的统一接口,隐藏子系统的复杂性,使客户端更方便地使用系统。外观模式就像一个“门面”ÿ…...
微信小程序中实现某个样式值setData改变时从350rpx到200rpx的平滑过渡效果
方案一:使用 CSS Transition(推荐简单场景) WXSS /* 在对应组件的WXSS中添加 */ .transition-effect {transition: all 0.4s ease-in-out;will-change: bottom; /* 启用GPU加速 */ }WXML <!-- 修改后的WXML --> <view class"…...
LINUX基础 [四] - Linux工具
目录 软件包管理器yum Linux开发工具vim vim的基本概念 vim的三种常用模式 vim的简单配置 vim常用模式的基本操作 命令模式 底行模式 处理vim打开文件报错的问题 Linux编译器-gcc/g使用 为什么我们可以用C/C做开发呢? 预处理(进行宏替换&#x…...
Spring Cloud之远程调用OpenFeign最佳实践
目录 OpenFeign最佳实践 问题引入 Feign 继承方式 创建Module 引入依赖 编写接口 打Jar包 服务提供方 服务消费方 启动服务并访问 Feign 抽取方式 创建Module 引入依赖 编写接口 打Jar包 服务消费方 启动服务并访问 服务部署 修改pom.xml文件 观察Nacos控制…...
【QT】 常用控件【输入类】
🌈 个人主页:Zfox_ 🔥 系列专栏:Qt 目录 一:🔥 输入类控件 🦋 Line Edit -- 单行输入框🎀 录入个人信息🎀 正则表达式验证输入框数据🎀 验证两次输入密码一致…...
【Python】读取xyz坐标文件输出csv文件
Python读取xyz坐标文件输出csv文件 import sys import numpy as np import pandas as pd from tqdm import tqdm import cv2 import argparsedef read_xyz(file_path):with open(file_path, "r") as f: # 打开文件data f.readlines() # 读取文件datas []for …...
深度解析Redis过期字段清理机制:从源码到集群化实践 (一)
深度解析Redis过期字段清理机制:从源码到集群化实践 一、问题本质与架构设计 1.1 过期数据管理的核心挑战 Redis连接池时序图技术方案 设计规范: #mermaid-svg-Yr9fBwszePgHNnEQ {font-family:"trebuchet ms",verdana,arial,sans-se…...
MapReduce实验:分析和编写WordCount程序(对文本进行查重)
实验环境:已经部署好的Hadoop环境 Hadoop安装、配置与管理_centos hadoop安装-CSDN博客 实验目的:对输入文件统计单词频率 实验过程: 1、准备文件 test.txt文件,它是你需要准备的原始数据文件,存放在你的 Linux 系…...
【中大厂面试题】腾讯云 java 后端 最新面试题
腾讯云(一面) 1. spring 和 springboot的区别是什么? 配置方式的区别:Spring 应用的配置较为繁琐,通常需要编写大量的 XML 配置文件或者使用 Java 注解进行配置。例如,配置数据源、事务管理器等都需要手动…...
Redis存储“大数据对象”的常用策略及StackOverflowError错误解决方案
Hi,大家好,我是灰小猿! 在一些功能的开发中,我们一般会有一些场景需要将得到的数据先暂时的存储起来,以便后面的接口或业务使用,这种场景我们一般常用的场景就是将数据暂时存储在缓存中,之后再…...
【Vue】v-if和v-show的区别
个人博客:haichenyi.com。感谢关注 一. 目录 一–目录二–核心区别三–使用场景四–性能对比五–总结 二. 核心区别 之前将css的显示隐藏的方式的时候,就已经提到过v-show和v-if了。忘记了的可以再回头去复习复习。 (2.1)…...
南瓜颜色预测:逻辑回归在农业分类问题中的实战应用
南瓜颜色预测:逻辑回归在农业分类问题中的实战应用 摘要 本案例通过预测南瓜颜色的分类问题,全面展示了逻辑回归在农业领域的实战应用。从数据预处理到模型评估,详细介绍了Seaborn可视化、模型构建、性能优化和结果解释等关键环节。案例不仅…...
【物联网-RS-485】
物联网-RS-485 ■ RS-485 连接方式■ RS-485 半双工通讯■ RS-485 的特点■ ModBus■ ModBus-ASCII■ ModBus-RTU ■ RS-485 连接方式 ■ RS-485 半双工通讯 一线定义为A 一线定义为B RS-485传输方式:半双工通信、(逻辑1:2V ~ 6V 逻辑0&…...
TDengine 语言连接器(Node.js)
简介 tdengine/websocket 是 TDengine 的官方 Node.js 语言连接器。Node.js 开发人员可以通过它开发存取 TDengine 数据库的应用软件。 Node.js 连接器源码托管在 GitHub。 Node.js 版本兼容性 支持 Node.js 14 及以上版本。 支持的平台 支持所有能运行 Node.js 的平台。 …...
Git分布式版本控制工具
一、工作流程 二、常用指令 1、配置git 配置环境变量 cmd打开命令行,输入git查看是否配置成功。 设置用户名和邮箱 git config --global user.name "用户名" git config --global user.email "邮箱" 查看用户名和邮箱 git config --glob…...
The first day of vue
关于小白直接接触vue3的第1天 首先我们需要一个脚手架node.js (这个可以从官网下载,免费的,安装也比较简单,后续我也会出一个相关的安装教程,方便大家和我一起讨论,互相学习) (不知道有没有人对…...
C语言超详细指针知识(三)
在经过前面两篇指针知识博客学习之后,我相信你已经对指针有了一定的理解,今天将更新C语言指针最后一篇,一起来学习吧。 1.字符指针变量 在指针类型的学习中,我们知道有一种指针类型为字符指针char*,之前我们是这样使用…...
无人机气动-结构耦合技术要点与难点
一、技术要点 1. 多学科耦合建模 气动载荷与结构响应的双向耦合:气动力(如升力、阻力、力矩)导致结构变形,而变形改变气动外形,进一步影响气流分布,形成闭环反馈。 建模方法: 高精度C…...
打造现代数据基础架构:MinIO对象存储完全指南
目录 打造现代数据基础架构:MinIO对象存储完全指南1. MinIO介绍1.1 什么是对象存储?1.2 MinIO核心特点1.3 MinIO使用场景 2. MinIO部署方案对比2.1 单节点单驱动器(SNSD/Standalone)2.2 单节点多驱动器(SNMD/Standalone Multi-Drive)2.3 多节点多驱动器(…...
SpringBoot条件注解全解析:核心作用与使用场景详解
目录 引言一、条件注解的核心机制二、SpringBoot内置条件注解详解1、ConditionalOnClass和ConditionalOnMissingClass2、ConditionalOnBean和ConditionalOnMissingBean3、ConditionalOnProperty4、ConditionalOnWebApplication和ConditionalOnNotWebApplication5、ConditionalO…...
智慧酒店企业站官网-前端静态网站模板【前端练习项目】
最近又写了一个静态网站,智慧酒店宣传官网。 使用的技术 html css js 。 特别适合编程学习者进行网页制作和前端开发的实践。 项目包含七个核心模块:首页、整体解决方案、优势、全国案例、行业观点、合作加盟、关于我们。 通过该项目,小伙伴们…...
#2 物联网组成要素
从下至上,则包括了5个要素,包括 设备 / 传感器 / 网络 / 物联网服务 / 数据分析 这五个要素。为了便于理解,我们用思维导图展示 物联网构成架构 设备 能够感测和反馈并连到网络进行物联网服务的装置 传感器 传感器和网关的融合实现了物…...
UE5 物理模拟 与 触发检测
文章目录 碰撞条件开启模拟关闭模拟 多层级的MeshUE的BUG 触发触发条件 碰撞 条件 1必须有网格体组件 2网格体组件必须有网格,没有网格虽然可以开启物理模拟,但是不会有任何效果 注意开启的模拟的网格体组件会计算自己和所有子网格的mesh范围 3只有网格…...
C++23 新特性静态operator[]、operator()与Lambda
文章目录 静态操作符 operator[] 和 operator()示例:静态 operator[]示例:静态 operator() 静态 Lambda 表达式(P1169R4)示例:静态 Lambda 表达式 编译器支持和总结深入静态操作符 operator[] 和 operator()性能优化代…...
C# 13新特性 - .NET 9
转载: C# 13 中的新增功能 | Microsoft Learn C# 13 包括以下新增功能。 可以使用最新的 Visual Studio 2022 版本或 .NET 9 SDK 尝试这些功能:Introduced in Visual Studio 2022 Version 17.12 and newer when using C# 13 C# 13 中的新增功能 | Micr…...
MyBatis SQL会话管理详解
目录 一、SQL会话的基本概念(一)创建SQL会话 二、SQL会话的生命周期(一)打开会话(二)执行SQL操作(三)提交事务(四)回滚事务(五)关闭会…...
Uniapp: 下拉选择框 ba-tree-picker
目录 1、效果展示2、如何使用2.1 插件市场2.2 引入插件 3、参数配置3.1 属性3.2 方法 4、遇见的问题4.1、设置下拉树的样式 1、效果展示 2、如何使用 2.1 插件市场 首先从插件市场中将插件导入到项目中 2.2 引入插件 在使用的页面引入插件 <view click"showPicke…...
【高性能缓存Redis_中间件】三、redis 精通:性能优化与生产实践
一、引言 在前两篇 Redis 消息队列的文章中,我们掌握了基础使用和高级特性。本文作为系列终篇,将聚焦生产环境的性能优化与全流程实践,请各位跟随小编的步伐一起构建高可靠、高性能的消息处理系统(文章中的演示均为Centos7的背…...
自然语言处理Hugging Face Transformers
Hugging Face Transformers 是一个基于 PyTorch 和 TensorFlow 的开源库,专注于 最先进的自然语言处理(NLP)模型,如 BERT、GPT、RoBERTa、T5 等。它提供了 预训练模型、微调工具和推理 API,广泛应用于文本分类、机器翻…...
uniapp自定义tabbar,根据角色动态显示不同tabbar,无闪动问题
🤵 作者:coderYYY 🧑 个人简介:前端程序媛,目前主攻web前端,后端辅助,其他技术知识也会偶尔分享🍀欢迎和我一起交流!🚀(评论和私信一般会回!!) 👉 个人专栏推荐:《前端项目教程以及代码》 ✨一、前言 这个需求在开发中还是很常见的,搜索了网络其他教程,…...
狂神SQL学习笔记一:初识MySQL、关系型数据库和非关系型数据库
菜鸟教程学习一半了,但是已经疲倦了,所以换一个课程学习,来提升学习质量,可能会有很多已经学习到的地方,就当是复习巩固了。 按照SQL学习课程来划分,分为45集,所以可能也会写45篇文章ÿ…...
面向MoE和推理模型时代:阿里云大数据AI产品升级发布
阿里云 2025 AI 势能大会上,阿里云智能集团副总裁、阿里云智能计算平台事业部负责人汪军华带来主题演讲《范式演进:MoE&推理模型时代的挑战与应对》,并发布大数据 AI 平台一系列重磅产品能力升级。 汪军华认为,从 Generative …...
网络安全·第三天·ICMP协议安全分析
一、ICMP功能介绍 ICMP(Internet Control Message Protocal)是一种差错和控制报文协议,不仅用于传输差错报文, 还传输控制报文,但是ICMP只是尽可能交付,提供的服务是无连接、不可靠的,并不能保…...
Hadoop大数据平台部署(Hadoop3.2.4+Hive4.0.1)
这里写自定义目录标题 1、前置要求与规划2、基础环境配置3、Hadoop 3.2.4 集群部署4、MariaDB 10.6.x 安装(仅 master 节点)5、Hive 4.0.1 部署(仅 master 节点)6、Hive 离线数据预处理7、Sqoop导出预处理结果到MySQL 1、前置要求…...