【Qt】:概述(下载安装、认识 QT Creator)

ops/2025/2/15 11:19:37/

🌈 个人主页:Zfox_
🔥 系列专栏:Qt

目录

  • 一:🔥 介绍
    • 🦋 什么是 QT
    • 🦋 QT 发展史
    • 🦋 Qt版本
    • 🦋 QT 优点
  • 一:🔥 搭建Qt开发环境
    • 🦋 QT 开发工具
    • 🦋 QtSDK的下载
    • 🦋 QtSDK的安装
    • 🦋 环境变量配置
    • 🦋 认识 SDK 的重要工具
  • 三:🔥 认识QtCreator
    • 🦋 QtCreator概览
    • 🦋 使用 QT Creator 创建项目
      • 新建项目
      • 选择项⽬模板
      • 选择项目路径
      • 选择构建工具
      • 填写类信息设置界面
      • 选择语言和翻译软件
      • 选择 Qt 套件
      • 选择版本控制系统
      • 最终效果演示
    • 🦋 认识QtCreator界⾯
      • 左边栏
      • 代码编辑区
      • UI 设计页面
    • 🦋 3.4 项目代码解析
      • widget.h
      • main.cpp
      • widget.cpp
      • widget.ui
      • .pro 工程文件
      • Qt 可选模块如下
    • 🦋 中间文件
  • 四:🔥 共勉

一:🔥 介绍

🦋 什么是 QT

🔥 QT 是一个 跨平台的 C++ 图形用户界面应用程序框架。它为应用程序开发者提供了建立艺术级图形界面所需的所有功能。它是完全面向对象的,很容易扩展。QT 为开发者提供了一种基于组件的开发模式,开发者可以通过简单的拖拽和组合来实现复杂的应用程序,同时也可以使用 C++ 语言进行高级开发。

🧑‍💻 所谓 框架 其实是一个 “半成品”,帮助项目搭建 “骨架”,并提供丰富的组件库,开发人员只需增加一些内容或调用一些提供好的组件就可以完成系统。

🧑‍💻 框架 其实优点相似的,都是由大佬提前写好的,让我们去使用的,但是本质上还是有区别的。库是被程序员调用的,主体是程序员,但是框架的主体是框架本身,是程序员配合框架完善,填充框架留下的一些细节。

🦋 QT 发展史

  • 1991 年 QT 最早由芬兰奇趣科技开发
  • 1996 年 进入商业领域,它也是目前流行的Linux桌面环境KDE的基础
  • 2008 年 奇趣科技被诺基亚公司收购,Qt称为诺基亚旗下的编程基础
  • 2012年 QT 又被Digia公司(芬兰一家软件公司)收购
  • 2014 年 4 月 跨平台的集成开发环境 Qt Creator3.1.0 发布,同年 5月20日配发了 Qt5.3 正式版,至此 Qt 实现了对 iOS、Android、WP 等各平台的全面支持。

🦋 Qt版本

🧑‍💻 ⽬前最新的版本是Qt6.但是相对来说Qt6和Qt5之间的核⼼功能区别不⼤.并且企业中也仍然有⼤量的项⽬在使⽤Qt5.(Qt6目前的bug相当多 Qt 5.15和 Qt5.14 基本就是最稳定的版本了)

🦋 QT 优点

  • 跨平台,几乎支持所有的平台
  • 接口简单,容易上手,学习QT框架对学习其他框架有参考意义一定程度上简化了内存回收机制;开发效率高,能够快速的构建应用程序。
  • 有很好的社区氛围,市场份额在缓慢上升。
  • 可以进行嵌入式开发。

一:🔥 搭建Qt开发环境

🦋 QT 开发工具

💻 Qt 支持多种开发工具,其中比较常用的开发工具有:QtCreator、VisualStudio、Eclipse.

  1. QtCreator

🔥 Qt Creator 是⼀个轻量级的跨平台集成开发环境(IDE),专为使用 QT 框架进行应用程序开发而设计。它是⼀个功能强大、易于使用、快速且高效的工具,被广泛使用于编写各种类型的应用程序,如桌面应用程序、移动应用程序和嵌入式系统等。

🧑‍💻 Qt Creator 提供了⼀个可视化的界⾯设计器和代码编辑器,可以帮助开发者更快捷地创建复杂的用户界面和处理各种事件。它还包含了调试工具、版本控制工具、自动完成和智能提示等功能,以及支持多语言和跨平台的开发环境

Qt Creator 的主要特点包括:

  • 紧密集成的 Qt 框架:Qt Creator 专门为 Qt 开发而设计,因此它与 Qt 框架集成得非常紧密,使开发者可以更容易地管理和部署他们的应用程序。
  • 强大的编辑器:Qt Creator 具有一些先进的编辑器功能,如语法高亮、代码折叠、智能提示、自动完成和代码重构。
  • 集成的调试器:Qt Creator 内置了调试器,允许开发人员在代码中设置断点以及检查变量、堆栈和调用树等信息。
  • 高效的构建系统:Qt Creator 提供了⼀个高效的构建系统,可以自动构建和部署应用程序,同时支持使用不同的编译器和平台。
  • 可视化界面设计器:Qt Creatorr 具有⼀个可视化界面设计器,它允许开发⼈员在没有编写代码的情况下创建复杂的用户界面
  • 多语言支持:Qt Creator 支持多种编程语言,包括C++、QML、Javascript 等。总而言之,Creator 是一个功能齐全、易于使用且高效的跨平台 IDE,适用于各种类型的应用程序开发,特别是那些使用 Qt 框架的开发者

总而言之,Qt Creator 是⼀个功能齐全、易于使用且高效的跨平台 IDE,适用于各种类型的应用程序开发,特别是那些使用 QT 框架的开发者

  1. Visual Studio

🔥 Visual Studio 是由微软公司开发的集成开发环境(IDE)。它可以用来开发多种类型的应用程序。包括 windows 桌面应用程序、web 应用程序、移动应用程序、游戏等。 Visual studio 提供了丰富的开发工具和功能,包括代码编辑器、调试器、自动完成、代码重构、版本控制只等等。它支持多种编程语言,如:C++、C#、Visual Basic、F#、Python 等。

Visual Studio 具有以下一些主要特点:

  • 多语言支持:Visual Studio 支持多种编程语言,包括 C++、C#、Visual Basic、F#、Python、JavaScript 等
  • 丰富的工具集:vs 提供了各种开发工具,包括代码编辑器、调试器、代码分析工具等,以提高开发人员的效率
  • 可视化设计:vs 提供了可视化的设计工具,如窗体设计器、 WPF 设计器等,使开发人员可以直观地设计用户界面
  • 跨平台开发:vs 支持跨平台开发,可以开发适用于 Windows、Linux 和 macOs 等多个平台的应用程序
  • 集成的调试器:vs 集成了强大的调试器,可以进行代码的单步调试、断点调试等操作来帮助开发人员查找和修复错误
  • 丰富的扩展性:vs 可以通过安装扩展来扩展其功能,开发人员可以根据自己的需求选择并安装适合的护展。
  1. Eclipse

🔥 Eclipse 是著名的跨平台的自由集成开发环境(IDE)。最初主要用来 Java 语言开发,但是目前亦有人通过插件使其作为其他计算机语言比如 C++ 和 Python 的开发工具。Eclipse 的本身只是一个框架平台,但是众多插件的支持使得 Eclipse 拥有其他功能相对固定的 IDE 软件很难具有的灵活性。许多软件开发商以 Eclipse 为框架开发自己的 IDE。QT框架可以与 Eclipse 集成,使开发者可以使用 Eclipse 的强大功能来开发 QT 应用程序

🦋 QtSDK的下载

Qt下载官⽹http://download.qt.io/archive/qt/

⏬ 进⼊官⽹,按如下图⽰进⾏相应的系统版本下载即可。

  1. 打开官⽹链接,进⼊如下图⽰界⾯;
    在这里插入图片描述
  2. 选择需要下载的版本;(本文以 5.14版本为例,所选具体版本为:5.14.2)
    在这里插入图片描述
  3. 选择需要下载的版本;
    在这里插入图片描述
  4. 选择Windows桌⾯应⽤程序;

🦋 QtSDK的安装

  1. 找到下载的⽂件并双击;注意:在双击之前先断⽹,否则需要我们注册Qt账号登录后才能进⼊下⼀步安装;(也可以选择注册账号)

在这里插入图片描述

  1. 直接下一步,然后再下一步选择安装文件夹(注意:不能路径不能带中文)
    在这里插入图片描述
  2. 选择安装组件;这⾥我们安装的是QtCreator。如果电脑磁盘空间允许,建议全选以便后续使 ⽤,如果空间不允许, 选择部分组件;说明:其他未安装的组件在使⽤时可以另⾏添加; 在这里插入图片描述

在这里插入图片描述

4. 同意安装协议, 之后直接无脑next就行了;

在这里插入图片描述

🦋 环境变量配置

  1. 找到我们之前安装的 QT文件,然后点击箭头指向的地方,复制粘贴即可
    在这里插入图片描述
  2. "此电脑"------>⿏标右键,"属性"------>"⾼级系统设置"------>"环境变量"

请添加图片描述

  1. "新建"------>填⼊"bin"路径------>"确定";

请添加图片描述

🦋 认识 SDK 的重要工具

📚 我们下载完成后就可以看到以下几个部分:

在这里插入图片描述
📚 第一个 Assistant 是一个 QT 的离线文档,用来查找 QT 的一些 API 的使用方法

在这里插入图片描述
第二个 designer 是一个图形化设计工具,可以通过拖拽的方式进行速成界面

第三个 linguist 是 QT 语言家,作用就是对国际化进行支持。允许你进行单独的创建一个语言文件配置,把界面上出现到的各种文字都配置到文件中,并且在文件中提前做好翻译工作,这样就可以做到一键切换语言。

第四个就是一个终端界面,可以通过执行命令的方式进行编译代码

第五个就是 QT 的一个集成开发工具,也是我们主要使用的工具.

三:🔥 认识QtCreator

🦋 QtCreator概览

📚 从开始菜单或者快捷⽅式打开QtCreator集成开发环境,启动之后看到类似下⾯的界⾯:请添加图片描述

  1. 菜单栏:菜单栏⼀共有8个菜单选项,包含了常⽤的功能菜单:
    在这里插入图片描述
  2. 模式选择
    在这里插入图片描述
  3. 构建套件选择器:构建套件选择器包含了 目标选择器 (Targetselector)、运行按钮 (Run)、调试按钮 (Debug) 和 构建按钮 (Building) 四个图标

在这里插入图片描述
4. 窗口模式下的工作模式

在这里插入图片描述

  1. 定位器 :使用定位器来快速定位项目、文件、类、方法、帮助文档以及文件系统。可以使用过滤器来更加准确地定位要查找的结果。

  2. 输出窗格 :输出窗格包含了问题、搜索结果 (Search Results)、应用程序输出、编译输出、Debugger Console、概要信息、测试结果 (Test Results) 7个选项,它们分别对应一个输出窗口,响应的快捷键依次是 Alt+ 数字 1~7。
    在这里插入图片描述

  3. 会话记录 :可以对会话进行管理,包括 Clone。如果没打开工程,则显示的是最后一次打开的(会话)工程,否则,显示当前的会话(工程)

  4. 新建项目

  5. 打开已有项目

🦋 使用 QT Creator 创建项目

新建项目

请添加图片描述

选择项⽬模板

📚 弹出如下对话框:

请添加图片描述

📚 新建项目对话框里有五类项目模板模板:

在这里插入图片描述

常用的只有第⼀类 Application,选择它,在右侧会看到 Qt 应用程序的五个子模板:

  • Qt Widgets Application普通窗体模板,传统基于部件的窗体界面程序。
  • Qt Console ApplicationQt 控制台应用程序。因为 Qt 主要用于图形界面设计,这个控制台项目模板基本不用。
  • Qt for Python在Python下用 LGPL 的许可来开发闭源 Qt 软件。
  • Qt Quick ApplicationQt 提供的⼀种高级用户界面技术,使用它可以方便快速的为移动以及嵌入式设备开发流畅美观的用户界面。Qt Quick 模块是开发 QML 应用的标准库,提供了使用 QML 创建用户界⾯所需的⼀切,包括可视化、交互、动画、模型、视图、粒子效果以及着色效果等。

选择项目路径

📚 这里需要注意的是我们选择路径的时候一定不要带中文路径,不然在运行程序的时候会出现报错。

请添加图片描述

选择构建工具

在这里插入图片描述

🧑‍💻 这个是构建系统,通过 Qt 写的程序,涉及到一些 “元编程” 技术,是通过代码来生成代码。也就是说 Qt 框架 会在编译的时候,会自动调用一些列的生成工具,基于写的代码,生成一系列的其他 C++代码,最终编译的代码,也是最后生成的代码。

这里我们使用的是 qmake 构建工具 Qt 中的构建工具有三种可供选择,分别是:qmake、CMake、Qbs,下面依次介绍。

  • qmake:qmake 是一个构建工具 (build tool),用于自动生成 Makefile 文件。qmake 支持跨平台构建。qmake 编辑的是一个后缀名为 .pro 的文件 是 Qt 独有的代码构建工具
  • CMake:CMake 是一个跨平台的构建工具。CMake 本身不是一个编译器,其实就是生成一个让编译器能读懂编译流程的文件工具。让 CMake 自动生成构建系统,例如 Makefile 和 Visual Studio 项目文件。CMake 是一个第第三方工具,有自己的文案 C++ 通用的代码构建工具,绝大部分 C++ 开源项目都使用 cmake 管理代码
  • Qbs:Qbs(Qt Build Suite: Qt构建套件) 同 qmake、CMake 一样都是构建工具。Qbs 号称是新一代的构建工具,比gmake 编译速度更快。Qbs 没有绑定 Qt 版本,它从项目文件的高级项目描述中生成一个正确的依赖表。而传统的MakeFile 生成工具如 qmake 和 CMake ,其在生成 MakeFile 文件后将实际的名利交给 Make 工具去执行。
    由每个进程都 Qt官方声明,因市场原因,弃用Qbs。对于 Qt 用户来说,qmake是当前使用最广泛的构建工具,CMake其次。

填写类信息设置界面

在这里插入图片描述

📊 我们使用 Qt Creator 创建项目,会自动的生成一些代码出来,生成出来的代码就包含一个类。此处就是用来选择自动生成的类的父类是谁,有如下三种基类:
在这里插入图片描述
上述三个类之间的关系如下图:
在这里插入图片描述

选择语言和翻译软件

📚 点击 “下⼀步” 进入如下界面:
此处选择的语言是 “汉语”,“英语” 这样的语言,而不是 “编程语言”.

在这里插入图片描述

由于我们不考虑国际化,直接下一步就行

选择 Qt 套件

在这里插入图片描述

📕 默认只有第一个 " Desktop Qt 5.14.2 MinGW 64-bit ",如果安装配置了多个 Qt 套件,就可以都选上。Qt 套件是指 Qt 程序从编译链接到运行环境的全部工具和 Qt 类库的集合,对于 MinGW 版本 Qt 程序生成和调试,至少需要 MinGW 中的编译器 g++(自动调用链接器)、g++ 配套的基础库、调试器 gdb 还有使用 MinGW 环境编译而成的 Qt 类库自身。默认情况下,在上面 Kit Selection 里选中全部套件。

因为当时我们只是选择以其中的一个下载,如果勾选了其他的选项的话,这里就需要进行选择

在这里插入图片描述

选择版本控制系统

点击"下一步"进入项目管理界面; 在项目管理界面可以设置作为子项目,以及加入版本控制系统管理。这两个功能暂时用不到,都用默认的,然后点击“完成"。

💡 ⼤家千万不要觉得⿇烦.事实上在⼤家熟练了之后,创建⼀个项⽬花的时间不会超过10秒钟.

最终效果演示

🔥 通过上述步骤完成了项目的创建,创建完成之后,Qt Creator 会直接进入代码编辑模式,可以看到类似下图界面:
在这里插入图片描述

🦋 认识QtCreator界⾯

左边栏

在这里插入图片描述

在编辑模式下,左边竖排的两个窗口叫做"边栏"。① 是项目文件管理窗口,② 是打开文件列表窗口。

在 QtCreator 菜单"控件" ………->“Show Left Sidebar”,或者使用快捷键:Alt+0 可以控制边栏的显示和隐藏。

  • 边栏里的窗口数目可以增加,边栏子窗口标题栏有一排小按钮,最右边的是关闭按钮,倒数第二个是增加分栏按钮,可以添加多个边栏子窗口。
  • 边栏窗口标题栏第一个控件是组合框,可以选择该子窗口的功能视图类型,目前可以选择8个视图类型:

在这里插入图片描述

在这里插入图片描述

代码编辑区

在这里插入图片描述

  • ①和②:导航按钮"返回"和"前进",这与网页浏览器的前进和后退按钮类似,可以在之前浏览的多个代码文件或一个代码文件里多个位置之间快速切换。

  • ③:标识当前显示的文件是只读还是可写,一般都是可写的。

  • ④:文件类型图标,当前显示文件的类型,这个控件其实是一个菜单按钮,点击可以弹出丰富的文件处理功能菜单。

  • ⑤:打开的文件名,可以在多个打开的文件之间选择切换,与边栏的"打开文档"视图是对应的。

  • 6:关闭当前显示的文档。

  • ⑦:为当前显示的文件添加额外的C++预处理指令,一般用不着。

  • ⑧:选择符号,可以在当前显示的文件里多个函数、类、成员变量等之前快速切换,与边栏"大纲"视图是对应的。

  • ⑨:编辑区光标的行号和列号。

  • ⑩:代码编辑区分栏,可以增加多个编辑器窗口,显示多个打开的文档或显示较大源码文件的多个位置。

  • 行首区:主要用来显示代码行号,以及调试断点标志和代码书签标志。右击行首区可以弹出右键菜单,菜单里可以切换书签、编辑书签以及设置或取消断点

  • 同一行是既可以打断点也可以设置书签的,二者不冲突,其实它们根本就没关系。单击行号前面的浅灰色空白区可以直接打断点,再次单击可以取消断点,另外也可以用快捷键 F9 设置或取消断点。代码书签一般用右键菜单来设置,也可以用快捷键 Ctrl+M 设置或取消书签

  • 编辑区:写代码的区域

UI 设计页面

📚 双击 widget.ui 文件,QtCreator 会自动进入设计模式,可以对图形界面进行可视化编辑

在这里插入图片描述

  1. 组件选择窗口:组件选择窗口分为多个组,如 Layouts、Buttons、DisplayWidgets 等,界面设计的常见组件都可以在组件选择窗口中找到。
  2. UI 设计窗口:如果要将某个组件放置到该窗口上时,从组件选择窗口上拖放一个组件到窗体上即可。
  3. 动作编辑窗口:动作编辑窗口包括 Action Editor 以及 Signals 和 Slots 编辑器。 Action Editor 主要是用来新建 Action,并且通过拖拽的动作,将新建好的Action 添加到菜单栏和工具上,Signals和 Slots 编辑器用于可视化地进行信号与槽的关联。
  4. 对象浏览窗口:用树状视图显示窗体上各组件之间的布局包含关系,视图有两列,显示每个组件的对象名称(ObjectName)和类名称。
  5. 属性设置窗口:显示某个选中的组件或窗体的各种属性及其取值,可以在属性设置窗口里修改这些属性的值。
    在这里插入图片描述
    左下角一共有四个按钮,下面分别介绍一下:
  • 第一个按钮是选择构建项目使用的 Qt 套件和构建目标程序的类型(Debug或 Release)
    对于第一个按钮,默认的是Debug,构建的是 Debug 类型的目标程序。如果需要构建 Release 版目标程序,点开左下角第一个按钮:
    在这里插入图片描述
    这里有三种构建模式

在这里插入图片描述
上图是针对项目只用到单一 Qt 套件的,如果之前配置了多个 Qt套件,看到的类似下图:

在这里插入图片描述
🔥 如果项目配置了多个可用的 Qt 套件,点开左下角第一个按钮后,会看到各个套件以及构建类型,如果要切换 Qt 套件或构建类型,直接选中相应条目,然后点击运行按钮就行了。如果构建和运行时没出错,就会显示出构建好的目标程序界面。

  • 第二个是运行按钮,快捷键是 Ctrl + R,如果还没构建项目或刚修改了代码,直接点击运行的话,QtCreator 会自动构建生成新的目标程序并运行。
  • 第三个是调试按钮,快捷键是 F5。调试程序之前,QtCreator 会自动构建生成最新的目标程序,并进入调试模式。
  • 第四个是构建按钮,快捷键是 Ctrl + B,只构建最新的目标程序,但不运行。

🦋 3.4 项目代码解析

📚 我们创建好一个项目后,Qt会自动给我们生成一些代码。

在这里插入图片描述

widget.h

在 Qt 中,如果要使用 信号与槽 (signal和 slot) 的机制 就必须加入 O OBJECT 宏;

  • Ui::Widget *ui(process switch); 这个指针是用前面声明的 namespace Ui 里的 Widget 类定义的,所以指针 ui 是指向可视化设计的界面,后面要访问界面上的组件,都需要通过这个指针 ui 去访问。

在这里插入图片描述

main.cpp

📚 使用 QtCreator新建任意⼯程之后,main.cpp 文件中都会自动生成如下代码:
在这里插入图片描述

widget.cpp

在这里插入图片描述

widget.ui

🎈 widget.ui 是窗体界面定义文件,是一个 XML 文件,定义了窗口上的所有组件的属性设置、布局,及其信号与槽函数的关联等(和 HTML一样都是使用标签来表示数据)。用 UI 设计器可视化设计的界面都由 Qt 自动解析,并以 XML 文件的形式保存下来。在设计界面时,只需在 UI 设计器里进行可视化设计即可,而不用管 widget.ui文件是怎么生成的,进一步的 qmake 会调用相关工具,依据这个 xml 进一步生成 C++ 代码,从而把完整的的界面代码构造出来

在这里插入图片描述

.pro 工程文件

🔥 工程新建好之后,在工程目录列表中有一个后缀为".pro"的文件,".pro"文件就是工程文件(project),它是 qmake 自动生成的用于生产 Makefile 的配置文件。
在这里插入图片描述
./pro 的写法如下:

  1. 注释:从"#"开始,到这一行结束
  2. QT += core gui // Qt 包含的模块 Qt5 包含的模块如下图所示

在这里插入图片描述

  1. greaterThan(QT_MAJOR_VERSION,4); QT += widgets 这条语句的含义是,如果 QT MAJOR_VERSION 大于 4 也就是当前使用的 Qt5 及更高版本)需要增加 widgets 模块。如果项目仅需支持 Qt5 ,也可以直接添加 “QT += widgets” 一句。不过为了保持代码兼容 ,最好还是按照 QtCreator 生成的语句编写。
  2. 指定生成的应用程序名: TARGET=QtDemo4
  3. TEMPLATE = app:模板。告诉 qmake 为这个应用程序生成哪种 Makefile。下面是可供选择的模板:
  • app:建立一个应用程序的 Makefile。这是默认值,所以如果模板没有被指定,这个将被使用。
  • lib:建立一个库的 Makefile。
  • vcapp:建立一个应用程序的 VisualStudio 项目文件。
  • vclib:建立一个库的 VisualStudio 项目文件。
  • subdirs:这是一个特殊的模板,它可以创建一个能够进入特定目录的 Makefile 并且为它调用 make 的Makefile.
  1. 工程中包含的源文件:SOURCES+=main.cpp / widget.cpp6.
  2. 工程中包含的头文件:HEADERS += widget.h
  3. 工程中包含的资源文件:RESOURCES+=painter.qrc
  4. 工程中包含的 “ui” 设计文件:FORMS += widget.ui

Qt 可选模块如下

在这里插入图片描述

🦋 中间文件

📚 以上的.h .cpp .ui .pro都是一些源文件,但是如果编译运行 Qt 项目后,构建构成中还会生成一些中间文件。

在这里插入图片描述

在这里插入图片描述
这里Qt还会创建一个目录,这个目录下生成的是一些临时文件。

🦁 编译 Qt 程序,还是会用到 Makefile 只不过这个 Makefile 不需要手动写, 而是 qmake自动生成的.
在这里插入图片描述
🦁 而这里的 ui_widget.h 就是我们编译运行成功后 Qt 给我我们生成的代码。而这个代码就会在 widget.cpp 中的 setupUi 中生成界面的具体细节

四:🔥 共勉

😋 以上就是我对 【Qt】新世界大门:概述 的理解, 觉得这篇博客对你有帮助的,可以点赞收藏关注支持一波~ 😉
在这里插入图片描述


http://www.ppmy.cn/ops/158576.html

相关文章

科普:数据仓库中的“指标”和“维度”

在数据仓库中,指标和维度是两个核心概念,它们对于数据分析和业务决策至关重要。以下是对这两个概念的分析及举例说明: 一、指标 定义: 指标是用于衡量业务绩效的关键数据点,通常用于监控、分析和优化企业的运营状况。…

D365(Dynamics 365 CE/PO)审计记录(Audit)一点点分析

D365(Dynamics 365 CE/PO)审计记录(Audit)一点点分析 D365 Audit D365(Dynamics 365 CE/PO)审计记录(Audit)一点点分析 1.删除objectid(被审计实体记录的唯一标识符)为:00000000-0000-0000-0000-000000000000(空GUID) …

信息收集-Web应用JS架构URL提取数据匹配Fuzz接口WebPack分析自动化

知识点: 1、信息收集-Web应用-JS提取分析-人工&插件&项目 2、信息收集-Web应用-JS提取分析-URL&配置&逻辑 FUZZ测试 ffuf https://github.com/ffuf/ffuf 匹配插件 Hae https://github.com/gh0stkey/HaE JS提取 JSFinder https://github.com/Threez…

蓝桥杯之KMP算法

算法思想 代码实现 int* getnext() {int* next new int[s2.size()];int j 0;//用来遍历子串int k -1;//子串中公共子串的长度next[0] -1;while (j < s2.size() - 1){if (k-1||s2[k] s2[j]){k;j;if (s2[k] s2[j]){next[j] next[k];}else{next[j] k;}}else{k next[k…

DrissionPage(实战)

官网: dDrissionPage官网✨️ 概述​编辑https://www.drissionpage.cn/https://www.drissionpage.cn/ 一.导包: 创建一个py文件: from DrissionPage import ChromiumPage 我们来访问我的上一篇文章: 链接url: 爬虫自动化(DrissionPage)-CS

MySQL版本选择与安装

MySQL版本选择与安装 MySQL 5.5 优点: 稳定性&#xff1a;5.5版本是长期支持&#xff08;LTS&#xff09;版本&#xff0c;因此它非常稳定&#xff0c;被广泛部署在生产环境中。 兼容性&#xff1a;与旧版本的MySQL和各种应用程序有很好的兼容性。 缺点: 过时&#xff1a;…

Linux驱动层学习:LED 驱动开发

前置知识&#xff1a; 1、地址映射 MMU 全称叫做 Memory Manage Unit&#xff0c;也就是内存管理单元。 MMU 主要完成的功能如下&#xff1a; ①、完成虚拟空间到物理空间的映射。 ②、内存保护&#xff0c;设置存储器的访问权限&#xff0c;设置虚拟存储空间的缓冲特性。 第…

【蓝桥】线性DP--最快洗车时间

题目描述​ 解题思路 完整代码 举例 总结 基于 0/1 背包思想 解决 洗车时间分配问题&#xff0c;本质上是子集和问题【给定一个 正整数数组 nums 和一个目标值 target&#xff0c;判断是否可以从 nums 选择 若干个数&#xff08;每个数最多选一次&#xff09;&#xff0c;使…