Windows 快速搭建C++开发环境,安装C++、CMake、QT、Visual Studio、Setup Factory
安装C++
简介
Windows 版的 GCC 有三个选择:
- Cygwin
- MinGW
- mingw-w64
Cygwin、MinGW 和 mingw-w64 都是在 Windows 操作系统上运行的工具集,用于在 Windows 环境下进行开发和编译。
Cygwin 是一个在 Windows 上运行的开源项目,旨在提供类Unix环境的兼容性。它提供了一套 GNU 和开源工具,包括编译器(如 gcc)、Shell、库等。通过 Cygwin,开发者可以在 Windows 上编译和运行许多 Unix 或 Linux 上的应用程序。Cygwin 提供了对 POSIX 系统调用和 Shell 环境的支持,并提供了一套基于 Cygwin 的 DLL(动态链接库)来实现与 Windows 系统的交互。
MinGW(Minimalist GNU for Windows)是一个轻量级的开发环境,旨在提供 GNU 工具链(如 gcc、g++ 等)在Windows上的运行。MinGW 提供了一组 Windows 本地 API 的头文件和库,使开发者能够使用标准的 GCC 编译器在 Windows 上编译和运行 C 和 C++ 代码。与 Cygwin 不同,MinGW 的目标是直接使用 Windows 本地 API,而不是提供类 Unix 环境的兼容性。
mingw-w64 是 MinGW 的一个分支,它专注于支持 64 位 Windows 系统。与传统的 MinGW 只支持 32 位编译器不同,mingw-w64 提供了 64 位的 Windows 编译器和开发工具。它支持使用 GCC 编译器生成 64 位 Windows 应用程序,并提供了对 Windows API 的头文件和库的支持。mingw-w64 项目也是开源的,旨在提供免费、开放的开发环境。
总之,Cygwin 提供了类 Unix 环境的兼容性,MinGW 和 mingw-w64 则提供了在 Windows 上使用 GCC 编译器进行 C 和 C++ 开发的工具集。其中,mingw-w64 专注于 64 位 Windows 系统的支持。开发者可以根据自己的需求选择适合的工具集来进行 Windows 平台上的开发。
目前,最常用的是 mingw-w64,本文将以 mingw-w64 为例来安装 GCC。
下载
安装软件,最好的下载地方是官网。
我们在 GCC 官网可以找到不同平台版本的官网入口。
GCC, the GNU Compiler Collection- GNU Projecthttps://www.gnu.org/software/gcc/
进入到二进制下载页面可以看到 Windows 平台的三个版本。
点击 mingw-w64 进入 mingw-w64官网下面
mingw-w64 项目提供了很多 Windows 平台的工具包,这里以 w64devkit 为例,安装 C 和 C++ 编译器。大家可以根据自己的需要选择对应的工具。
按照指引,去 Github 下载即可。
安装
将下载的 w64devkit 压缩包解压后,放到任意目录即可。我这里是:D:\C++Develop\w64devkit-1.23.0\w64devkit。
解压后 w64devkit,其目录如下:
配置环境变量
要想在 Windows 命令行能够使用上述工具,需要将 w64devkit 的 bin 目录加入到环境变量 Path 中。
设置入口:开始 > 设置 > 系统 > 系统信息 > 高级系统设置 > 环境变量
。
将 w64devkit 的 bin 目录添加到用户变量或系统变量 Path,我这里加入到用系统变量 Path 中。如果想只对当前用户生效,需要加入到用户变量。
验证
打开命令行 Windows cmd 或 PowerShell,执行如下命令:
gcc -v
成功输出 gcc 版本信息,表示 gcc 安装成功。
安装CMake
简介
CMake 是一个跨平台的构建系统生成工具,用于辅助软件项目的构建过程,以下是关于它的简介:
功能特点
- 跨平台性:CMake 可以在多种操作系统上使用,如 Windows、Linux、macOS 等。它能够根据不同平台的特点生成相应的构建文件,使得项目可以在不同平台上以统一的方式进行构建。
- 简洁高效:使用简单的语法来描述项目的构建规则和依赖关系。通过编写 CMake 脚本,能够清晰地定义源文件、头文件、库文件以及编译选项等项目构建相关的信息。
- 可扩展性:支持自定义构建规则和模块,方便用户根据项目的特殊需求进行扩展。还可以与其他构建系统或工具集成,如 Ninja、Make 等,以满足不同的构建需求。
工作原理
- CMake 通过读取项目中的 CMake 脚本(通常命名为 CMakeLists.txt)来了解项目的结构和构建要求。然后,根据目标平台和用户指定的生成器(Generator),生成相应的构建文件,如 Unix 系统上的 Makefile 或 Windows 上的 Visual Studio 项目文件。最后,用户可以使用相应的构建工具根据生成的构建文件来编译和链接项目,生成可执行文件或库文件。
应用场景
- C/C++ 项目:在 C/C++ 开发中广泛应用,用于管理项目的构建过程,包括源文件的编译、库的链接、头文件的包含路径设置等。例如,OpenCV、Qt 等开源项目都使用 CMake 来管理其跨平台的构建。
- 其他语言和项目类型:除了 C/C++,CMake 也可以用于其他语言和项目类型,如 Python 项目中用于管理扩展模块的构建,以及一些混合语言项目的构建管理。
基本使用步骤
- 编写 CMakeLists.txt:在项目目录下创建 CMakeLists.txt 文件,在其中定义项目名称、版本号、源文件列表、头文件目录、链接库等信息。以下是一个简单的示例:
# 指定CMake最低版本要求
cmake_minimum_required(VERSION 3.10)# 项目名称
project(MyProject)# 添加可执行文件
add_executable(MyExecutable main.cpp)
- 配置项目:在项目目录下创建一个构建目录(通常命名为 build),进入该目录后执行
cmake
命令,指定项目的源代码目录。例如:cmake..
,这一步会根据 CMakeLists.txt 文件生成构建文件。 - 构建项目:根据生成的构建文件,使用相应的构建工具进行构建。如果生成的是 Makefile,则可以使用
make
命令进行构建;如果是 Visual Studio 项目文件,则可以在 Visual Studio 中打开项目并进行构建。
下载
去官网下载
Download CMakehttps://cmake.org/download/
使用版本不用太新,也不要太旧,这里我下载了3.26.0版本将作为教程演示。
下载地址:
https://github.com/Kitware/CMake/releases/download/v3.26.0/cmake-3.26.0-windows-x86_64.msihttps://github.com/Kitware/CMake/releases/download/v3.26.0/cmake-3.26.0-windows-x86_64.ziphttps://github.com/Kitware/CMake/releases/download/v3.26.0/cmake-3.26.0-windows-x86_64.msi
安装
将下载的 cmake-3.26.0-windows-x86_64.zip 压缩包解压后,放到任意目录即可。我这里是:D:\C++Develop\cmake-3.26.0-windows-x86_64
解压后 cmake-3.26.0-windows-x86_64,其目录如下:
配置环境变量
要想在 Windows 命令行能够使用上述工具,需要将 cmake-3.26.0-windows-x86_64的 bin 目录加入到环境变量 Path 中。
设置入口:开始 > 设置 > 系统 > 系统信息 > 高级系统设置 > 环境变量
。
将 cmake 的 bin 目录添加到用户变量或系统变量 Path,我这里加入到用系统变量 Path 中。如果想只对当前用户生效,需要加入到用户变量。
验证
打开命令行 Windows cmd 或 PowerShell,执行如下命令:
cmake --version
成功输出 cmake 版本信息,表示 cmake安装成功。
安装QT
简介
Qt 是一个跨平台的 C++ 应用程序开发框架,由挪威 Trolltech 公司开发,后被 Digia 公司收购,如今 The Qt Company 负责其维护和进一步开发。它提供了丰富的类库和工具,可帮助开发者快速创建具有图形用户界面(GUI)的应用程序,也可用于开发非 GUI 的程序,如控制台工具和服务器应用。以下为你详细介绍:
主要特点
1. 跨平台性
- Qt 支持多种操作系统,包括 Windows、Linux、macOS、iOS、Android 等。开发者只需编写一次代码,就可以在不同平台上进行编译和运行,大大提高了开发效率。
- 例如,一款使用 Qt 开发的办公软件,可以在 Windows 系统上流畅运行,也能无缝移植到 Linux 和 macOS 系统,满足不同用户群体的需求。
2. 丰富的类库
- 提供了大量的类和函数,涵盖了图形绘制、网络通信、数据库操作、文件处理等各个方面。
- 以网络通信为例,Qt 的网络模块提供了诸如 QTcpSocket、QTcpServer、QUdpSocket 等类,方便开发者实现 TCP 和 UDP 通信,开发者可以轻松使用这些类搭建一个简单的网络聊天程序。
3. 强大的 GUI 设计能力
- Qt 拥有可视化的 GUI 设计工具 Qt Designer,通过拖放控件的方式就能快速设计出美观、易用的用户界面。
- 同时,Qt 支持样式表(QSS),类似于 CSS,开发者可以使用 QSS 对界面的外观进行定制,实现个性化的界面风格。
4. 信号与槽机制
- 这是 Qt 的核心机制之一,用于对象间的通信。信号是对象发出的事件通知,槽是用于接收信号并执行相应操作的函数。
- 信号与槽机制使得对象间的耦合度降低,提高了代码的可维护性和可扩展性。比如,当用户点击一个按钮时,按钮会发出 clicked () 信号,开发者可以将这个信号连接到一个自定义的槽函数上,在槽函数中实现点击按钮后的操作,如打开一个新窗口。
5. 良好的文档和社区支持
- Qt 提供了详细的官方文档,包含了类库的使用说明、示例代码和开发教程等,方便开发者学习和使用。
- 此外,Qt 拥有庞大的开发者社区,开发者可以在社区中交流经验、分享代码、解决遇到的问题。
应用领域
1. 桌面应用开发
- 许多知名的桌面应用程序都是使用 Qt 开发的,如 WPS Office、Skype 等。这些应用程序利用 Qt 的跨平台特性和强大的 GUI 设计能力,为用户提供了一致的使用体验。
2. 嵌入式开发
- Qt 在嵌入式系统开发中也有广泛的应用,如汽车信息娱乐系统、工业控制界面、智能家居设备等。Qt 的轻量级和高效性使其能够在资源有限的嵌入式设备上稳定运行。
3. 移动应用开发
- 借助 Qt 的跨平台特性,开发者可以使用同一套代码开发 iOS 和 Android 平台的移动应用。例如,一些地图导航应用、社交应用等都可以使用 Qt 进行开发。
4. 游戏开发
- Qt 提供了基本的图形绘制和动画功能,可用于开发一些小型游戏。同时,Qt 也可以与其他游戏开发引擎结合使用,为游戏开发提供更多的可能性。
基本使用流程
- 安装 Qt 开发环境:从 Qt 官方网站下载适合自己操作系统的 Qt 安装包,安装过程中可以选择需要的 Qt 版本和开发工具。
- 创建项目:使用 Qt Creator(Qt 集成开发环境)创建一个新的 Qt 项目,选择项目类型,如 Qt Widgets Application(用于创建桌面 GUI 应用)。
- 设计界面:使用 Qt Designer 设计应用程序的用户界面,添加各种控件并设置其属性。
- 编写代码:在 Qt Creator 中编写业务逻辑代码,处理信号与槽的连接和各种事件。
- 编译和运行:使用 Qt Creator 的编译和运行功能,将代码编译成可执行文件并在目标平台上运行。
下载
Qt 官方下载链接 里面有各个版本的安装包、源码、插件等。
Index of /archive/qthttps://download.qt.io/archive/qt/
我这里以 Qt 的 5.12.10 为例,下载Winodow 版本的安装包
https://download.qt.io/archive/qt/5.12/5.12.10/qt-opensource-windows-x86-5.12.10.exe
安装
首先需要先断开网络,再打开安装包,不断开网络的话会跳转到Qt 的登录界面,如果没有申请账号或者国外网站连接慢,这一步很重要!
断网后双击打开 qt-opensource-windows-x86-5.12.10.exe 安装包,详细步骤如下:
点取消按钮
然后Next
点击下一步
选择一个安装目录,点击下一步
选择对应的组件,如果用 Qt 进行电脑桌面软件开发选择 MinGW,和 MSVC 组件,以及一些组件,除了安卓的组件。如果想用Qt 做一些安卓方面的开发,可以把安卓组件也勾选上。
在这里,我这里选择安装全部。点击下一步
点击下一步
点击安装
之后就是一段漫长的等待。。。。。。。。。。。。。。。。。。。。
安装完成,点击下一步
点击完成,之后打开软件
验证
新建一个项目试一下
点击 文件 》新建文件或项目,之后按照默认配置,创建一个桌面版程序,点击 Chose
使用默认的 qmake ,点击下一步
界面类的配置,在这里我使用默认的配置,可以根据需要自定义,点击下一步。
这里可以选 翻译语言,如果软件需要支持多国语言,可以在这里配置,不过一般先选择 none ,如果需要,之后再项目中配置,点击下一步
这一步,选择编译的环境,我这里选择 MinGW 32 编译器 ,点击 下一步
点击完成
之后就会打开软件了
双击左栏的.ui 文件就可以进入到UI 的编辑页面,可以在这个界面编辑UI
左下角这里是 Debug 和 Release 模式的切换,以及运行的按钮
点击 运行的按钮,就会显示出来一个软件界面
之后回到 项目所在的文件夹中,可以看到生成了一个带有 build…的文件夹
Debug模式对应Debug,也就是开发人员调试的模式
Release 模式对应 Release ,也就是软件的发行模式,别人要使用你开发的软件,就在这个模式下生成就可以了。
这个就是我们刚才编译好的软件
如果双击打开这个软件,是打不开的,因为我们在Debug模式,而且会报错没有一些库的支持,但是我们可以回到这里去调试软件,至于这个软件怎么可以打开,后面再说。
到这里,Qt 的安装就完成了!
安装Visual Studio
下载
首先,访问Visual Studio官网:Visual Studio: 面向软件开发人员和 Teams 的 IDE 和代码编辑器
在官网页面中,根据您的需求选择适合的版本:社区版(免费)、专业版、企业版。对于个人用户,社区版通常已经足够使用。
选择好版本后,点击下载。下载完成后,您将获得一个安装包:VisualStudioSetup.exe。
安装
双击进入安装,点击继续
安装程序启动后,根据您的开发需求,选择合适的工作负载(例如:使用C++的桌面开发、通用Windows平台开发、Visual Studio扩展开发等)。这一步是可选的,您可以根据需要随时添加组件。
选择自己需要的组件,选择组件这一步是可选的,您可以根据需要后边随时添加组件。
为了不占用C盘空间,您可以修改安装位置,建议将Visual Studio安装在非系统盘。
选择好组件和路径后,点击“安装”按钮,接下来会进入下载和安装过程,这可能需要一些时间,请耐心等待。
验证
登录和个性化设置
安装完成后,系统可能会提示您重启电脑。重启后,您可以通过在桌面右键点击找到“使用Visual Studio打开”的选项,或者在搜索栏输入Visual Studio 2022的前几个字母快速启动Visual Studio。
启动Visual Studio后,您可能需要登录。如果没有账户,可以选择“以后再说”。接着,选择您喜欢的颜色主题。
创建新项目
准备工作结束后,您可以创建一个新的项目。选择适合您需求的项目类型,例如控制台应用,并设置项目名称和位置。
创建项目后,您可以编写代码并运行测试,以确保Visual Studio安装和配置正确。
通过以上步骤,您应该能够成功安装并开始使用Visual Studio。
安装Setup Factory
简介
Setup Factory 是一款功能强大的安装程序制作工具,以下是关于它的简介:
功能特点
- 可视化界面设计:提供直观的图形化操作界面,用户通过简单的拖拽和设置操作,就能轻松创建安装程序,无需编写复杂的代码,降低了制作安装程序的技术门槛。
- 支持多种安装类型:可以创建标准的安装程序、绿色免安装程序、Web 安装程序等,以满足不同软件发布场景的需求。例如,对于一些小型工具软件,可制作成绿色免安装程序,方便用户直接拷贝使用;对于大型软件系统,则可创建标准安装程序,进行全面的系统配置和文件安装。
- 丰富的安装选项配置:用户能够灵活设置安装过程中的各种选项,如选择安装路径、创建桌面快捷方式、添加开始菜单条目、设置文件关联等。还能自定义安装界面的语言、外观和布局,使安装程序与软件的整体风格相匹配,提升用户体验。
- 强大的脚本支持:虽然通过可视化界面能完成大部分设置,但对于一些复杂的安装需求,Setup Factory 提供了脚本编写功能。用户可以使用其内置的脚本语言,实现更高级的操作,如在安装前检查系统环境、在安装后执行特定的命令或程序等,增强了安装程序的灵活性和可定制性。
- 文件压缩与加密:能够对安装包中的文件进行压缩,减小安装包的体积,方便用户下载和传输。同时,还支持对安装包进行加密,保护软件的知识产权和用户数据安全,防止安装包被非法篡改或破解。
应用场景
- 软件开发者:用于将开发的软件项目打包成可安装的程序,以便分发给用户。无论是商业软件还是开源软件,都能通过 Setup Factory 制作出专业、可靠的安装程序,确保软件在用户计算机上正确安装和运行。
- 系统管理员:在企业或组织内部,系统管理员可以使用 Setup Factory 为各种应用程序制作统一的安装程序,方便进行软件的部署和管理。例如,将办公软件、杀毒软件等批量安装到多台计算机上,提高软件部署的效率。
优势
- 高效性:大大缩短了制作安装程序的时间,提高了软件发布的效率。用户无需花费大量时间学习复杂的安装程序制作技术,即可快速创建出满足需求的安装包。
- 稳定性:生成的安装程序具有较高的稳定性和兼容性,能够在多种 Windows 操作系统版本上稳定运行,确保软件安装过程的顺利进行,减少因安装问题导致的用户投诉和支持成本。
- 专业性:提供了丰富的定制选项,使安装程序具有专业的外观和用户体验。这有助于提升软件的品牌形象,让用户对软件产生更高的信任度。
下载
下载地址:Download Setup Factory - latest version
下载完成后,您将获得一个安装包:setup-factory-trial-9.7.0.0.exe。
安装
双击打开 setup-factory-trial-9.7.0.0.exe 安装包,修改安装位置,其他采用默认安装即可。
验证
1、打开Setup Factory进行打包程序。填写软件信息,包括:公司名,软件名,软件版本号,公司官网地址。
2、设置软件是x86的还是x64版本。
3、选择要打包的程序所在目录
4、窗口设置,为安装软件提供窗口设置信息,这里采用下面的方式
5、“主题”窗口中,提供了主题下拉列表,每选择一种即出现预览效果界面。根据自己的喜好,选择一种。
6、多语言设置,一般勾选简体中文 “Chinese(Simplified)*”与“繁体中文Chinese(Traditional)”。勾选后在下拉框中选择一种语言作为默认语言,选择简体中文作为默认语言。
7、“从属”窗口中选择的技术是安装软件需要依赖的组件,由于要打包的程序是使用.net 4.5开发,选择.net4 就可以了。
注意:如果安装该软件的电脑没有.net4.0改怎么办,这里就需要在打包的时候讲.net framework4.0也打包到你的软件中。具体做法可以采用下面的方式:
在SetUpFactory软件所在的目录中新建一下目录:Dependencies\dotnet4 。并且将 dotNetFx40_Full_x86_x64.exe放在其中。
8、安装环境配置,包括卸载功能、记录日志功能、权限限制、软件安装的操作系统等选择功能。默认全选上。
9、单击完成,如图,在窗口中列出要打包的软件所需的所有文件。
10、设置主程序文件。
通过筛选功能,找到exe可执行文件。
11、设置exe属性
双击exe文件或者右键属性。选择如果存在则询问用户是否进行覆盖安装。
12、程序“”快捷方式“”设置
因为测试项目比较简单,其它的设置不再赘述。
13、打包
设置安装文件大小:这个大小最好大于你的程序的大小+dotNetFx40_Full_x86_x64.exe(48.2M)的大小
设置程序发布后安装包路径以及安装程序名称
解决报错
报错信息:
Build failed.
--------- Errors ---------
Compressing files...
Error 2090: Dependency file not found: D:\C++Develop\Setup Factory 9 Trial\Dependencies\dotnet4\dotNetFx40_Full_x86_x64.exe
--------------------------
解决办法:
需要将.net framework放在Setup Factory 安装目录下。
下载 dotNetFx40_Full_x86_x64.exe,大小48.1M。将该文件放在以上的目录下,重新打包。
下载地址:https://download.microsoft.com/download/9/5/A/95A9616B-7A37-4AF6-BC36-D6EA96C8DAAE/dotNetFx40_Full_x86_x64.exe
编译
打包完成
通过以上步骤,您应该能够成功安装并开始使用Setup Factory。
相关文章:
Windows 快速搭建C++开发环境,安装C++、CMake、QT、Visual Studio、Setup Factory
安装C 简介 Windows 版的 GCC 有三个选择: CygwinMinGWmingw-w64 Cygwin、MinGW 和 mingw-w64 都是在 Windows 操作系统上运行的工具集,用于在 Windows 环境下进行开发和编译。 Cygwin 是一个在 Windows 上运行的开源项目,旨在提供类Uni…...
【分布式理论12】事务协调者高可用:分布式选举算法
文章目录 一、分布式系统中事务协调的问题二、分布式选举算法1. Bully算法2. Raft算法3. ZAB算法 三、小结与比较 一、分布式系统中事务协调的问题 在分布式系统中,常常有多个节点(应用)共同处理不同的事务和资源。前文 【分布式理论9】分布式…...
GPT2 模型训练
GPT2 预训练模型 基座 专门供给别人使用的。 对中文分词是一个字一个字分,是Bert的分类方法 好处:灵活。 词库可以适应任何文章。 坏处:训练的难度更大。需要增加数据量 中文分词如果按词组分词 好处:需要的数据量小&#…...
蓝桥杯备考:递归初阶
什么是递归? 相信我们已经不陌生了,函数自己调用自己就叫递归 为什么要有递归? 当处理主问题时,遇到子问题,子问题的解决方法和主问题是一样的,这时候我们就要用到递归 解决流程:问题—》相…...
[C语言]指针进阶压轴题
下面代码打印结果是什么? #include<stdio.h> int main() {char* c[] { "ENTER","NEW","POINT","FIRST" };char** cp[] { c 3,c 2,c 1,c };char*** cpp cp;printf("%s\n", **cpp);printf("%s\n…...
YOLOv11-ultralytics-8.3.67部分代码阅读笔记-build.py
build.py ultralytics\data\build.py 目录 build.py 1.所需的库和模块 2.class InfiniteDataLoader(dataloader.DataLoader): 3.class _RepeatSampler: 4.def seed_worker(worker_id): 5.def build_yolo_dataset(cfg, img_path, batch, data, mode"train"…...
智能体(AI Agent、Deepseek、硅基流动)落地实践Demo——借助大模型生成报表,推动AI赋能企业决策
文章目录 一、 引言二、 系统设计与技术细节2.1 系统架构2.2 核心组件说明 三、 Demo 代码推荐博客: 四、输出年度营销报告1. 总销售额 根据提供的数据,年度总销售额为:740.0。2. 各产品销售额3. 各地区销售额4. 各产品在各地区的销售情况 分…...
mac os设置jdk版本
打开环境变量配置文件 sudo vim ~/.bash_profile 设置不同的jdk版本路径 # 设置JAVA_HOME为jdk17路径 export JAVA_HOME$(/usr/libexec/java_home -v 17)# 设置JAVA_HOME为jdk8路径 export JAVA_HOME$(/usr/libexec/java_home -v 1.8) 设置环境变量 # 将jdk加入到环境变量…...
Llama 3.1 本地电脑部署 Linux系统 【轻松简易】
本文分享在自己的本地电脑部署 llama3.1,而且轻松简易,快速上手。 这里借助Ollama工具,在Linux系统中进行大模型部署~ Llama3.1,有三个版本:8B、70B、405B Llama 3.1 405B 是第一个公开可用的模型,在常识…...
计算机网络安全之一:网络安全概述
1.1 网络安全的内涵 随着计算机和网络技术的迅猛发展和广泛普及,越来越多的企业将经营的各种业务建立在Internet/Intranet环境中。于是,支持E-mail、文件共享、即时消息传送的消息和协作服务器成为当今商业社会中的极重要的IT基础设施。然而࿰…...
docker 部署JAR
docker pull openjdk:23 使用Docker运行生成的JAR包是一个将应用程序容器化的好方法,它确保了你的应用可以在任何安装了Docker的环境中以相同的方式运行。以下是创建一个Docker镜像并运行包含你Java应用程序的JAR包的基本步骤。1. 准备 Dockerfile首先,在…...
深研究:与Dify建立研究自动化应用
许多个人和团队面临筛选各种网页或内部文档的挑战,以全面概述一个主题。那么在这里我推荐大家使用Dify,它是一个用于LLM应用程序开发的低代码,开源平台,它通过自动化工作流程的多步搜索和有效汇总来解决此问题,仅需要最小的编码。 在本文中,我们将创建“ Deepresearch”…...
第1章:LangChain4j的聊天与语言模型
LangChain4J官方文档翻译与解析 目标文档路径: https://docs.langchain4j.dev/tutorials/chat-and-language-models/ 语言模型的两种API类型 LangChain4j支持两种语言模型(LLM)的API: LanguageModel:这种API非常简单,…...
IPv6报头40字节具体怎么分配的?
目录 IPv6报头结构 字段详解 示例代码:IPv6报头的Python实现 输出示例 IPv6协议是为了解决IPv4地址耗尽问题而设计的下一代互联网协议。与IPv4相比,IPv6不仅提供了更大的地址空间,还简化了报头结构,提高了网络设备的处理效率。…...
Ubuntu ARM / aarch64 CPU 镜像下载:如何在 ARM 设备上安装和使用 Ubuntu
随着 ARM 架构的逐渐普及,尤其是在移动设备和高效能计算设备中的应用,许多开发者和用户开始关注基于 ARM 架构的操作系统。Ubuntu 作为一款广泛使用的 Linux 发行版,自然也为 ARM 架构提供了优化的版本。本文将详细介绍如何下载适用于 ARM / …...
图论入门算法:拓扑排序(C++)
上文中我们了解了图的遍历(DFS/BFS), 本节我们来学习拓扑排序. 在图论中, 拓扑排序(Topological Sorting)是对一个有向无环图(Directed Acyclic Graph, DAG)的所有顶点进行排序的一种算法, 使得如果存在一条从顶点 u 到顶点 v 的有向边 (u, v) , 那么在排序后的序列中, u 一定…...
MySQL中count(1)和count(*) 的区别
MySQL中count(1)和count(*) 的区别 在 MySQL 中,COUNT(1) 和 COUNT(*) 均用于统计查询结果中的行数,但它们在语义及其背后的机制上有一些区别。 基本功能 COUNT(*):统计表中所有行的数量,无论列是否为 NULL。 COUNT(1)…...
Android 14输入系统架构分析:图解源码从驱动层到应用层的完整传递链路
一、资料快车 1、深入了解Android输入系统:https://blog.csdn.net/innost/article/details/47660387 2、书籍 - Android系统源代码情景分析 二、Perface 1、参考: 2、系统程序分析方法 1)加入log,并跟着log一步步分析 -logc…...
Web入侵实战分析-常见web攻击类应急处置实验2
场景说明 某天运维人员,发现运维的公司站点被黑页,首页标题被篡改,你获得的信息如下: 操作系统:windows server 2008 R2业务:公司官网网站架构:通过phpstudy运行apache mysqlphp开放端口&…...
Jenkins 配置 Credentials 凭证
Jenkins 配置 Credentials 凭证 一、创建凭证 Dashboard -> Manage Jenkins -> Manage Credentials 在 Domain 列随便点击一个 (global) 二、添加 凭证 点击左侧 Add Credentials 四、填写凭证 Kind:凭证类型 Username with password: 配置 用…...
Android Http-server 本地 web 服务
时间:2025年2月16日 地点:深圳.前海湾 需求 我们都知道 webview 可加载 URI,他有自己的协议 scheme: content:// 标识数据由 Content Provider 管理file:// 本地文件 http:// 网络资源 特别的,如果你想直接…...
selenium爬取苏宁易购平台某产品的评论
目录 selenium的介绍 1、 selenium是什么? 2、selenium的工作原理 3、如何使用selenium? webdriver浏览器驱动设置 关键步骤 代码 运行结果 注意事项 selenium的介绍 1、 selenium是什么? 用于Web应用程序测试的工具。可以驱动浏览…...
Linux中POSIX应用场景
Linux 提供了丰富的 POSIX(Portable Operating System Interface)标准接口,这些接口可以帮助开发者编写可移植、高效的应用程序。POSIX 标准定义了一系列系统调用和库函数,涵盖了文件操作、进程管理、线程管理、信号处理、同步机制…...
Boringssl介绍
BoringSSL 是 Google 从 OpenSSL 分支出来的一个开源 TLS/SSL 库,旨在为 Google 的产品和服务提供一个更加轻量、安全和现代化的加密库。它是 OpenSSL 的一个替代品,专注于简化代码、提高安全性和减少潜在的攻击面。 以下是对 BoringSSL 的详细介绍&…...
react实例与总结(二)
目录 一、脚手架基础语法(16~17) 1.1、hello react 1.2、组件样式隔离(样式模块化) 1.3、react插件 二、React Router v5 2.1、react-router-dom相关API 2.1.1、内置组件 2.1.1.1、BrowserRouter 2.1.1.2、HashRouter 2.1.1.3、Route 2.1.1.4、Redirect 2.1.1.5、L…...
僵尸进程、孤儿进程
一、僵尸进程、孤儿进程 僵尸进程、孤儿进程 1、僵尸进程: (1)定义:子进程死了(内存、打开的文件等都释放了),但没有完全死(数据结构<包含进程ID,进程状态、运行时…...
快速入门Springboot+vue——MybatisPlus多表查询及分页查询
学习自哔哩哔哩上的“刘老师教编程”,具体学习的网站为:7.MybatisPlus多表查询及分页查询_哔哩哔哩_bilibili,以下是看课后做的笔记,仅供参考。 多表查询 多表查询[Mybatis中的]:实现复杂关系映射,可以使…...
redis解决高并发看门狗策略
当一个业务执行时间超过自己设定的锁释放时间,那么会导致有其他线程进入,从而抢到同一个票,所有需要使用看门狗策略,其实就是开一个守护线程,让守护线程去监控key,如果到时间了还未结束,就会将这个key重新s…...
深入解析 MySQL 8 C++ 源码:二级索引回表操作
在数据库系统中,索引是优化查询性能的关键技术之一。MySQL 的 InnoDB 存储引擎支持多种索引类型,其中二级索引(非聚簇索引)和聚簇索引(主键索引)是最常见的两种。然而,由于二级索引的叶子节点只…...
MySQL如何解决幻读?
目录 一、什么是幻读? 1.1 幻读的定义 1.2 幻读的示例 1.3 幻读产生的原因? 1.4?读已提交(Read Committed) 1.4.1 确定事务等级 1.4.2 非锁定读取 准备 示例 结论 1.4.3 锁定读取 准备 示例 分析 结论 1.5?可重…...
RabbitMQ的脑裂(网络分区)问题
问题描述: Mnesia reports that this RabbitMQ cluster has experienced a network partition. There is a risk of losing data 一、什么是MQ脑裂? 网络分区 如果另一个节点在一段时间内(默认为 60 秒)无法与其联系࿰…...
【网络安全 | 漏洞挖掘】价值$40000:从路径遍历升级至RCE
未经许可,不得转载。 文章目录 路径遍历RCE路径遍历 在进行目标侦查和端口扫描时,我发现了一个使用 8443 端口的子域名:http://admin.target.com:8443。许多人可能会忽略返回 404 的子域名,但我并没有。 对 http://admin.target.com:8443/FUZZ 进行模糊测试时,我发现了一…...
程函方程的详细推导
以下是基于非均匀介质弹性波方程(无纵波假设)推导程函方程的详细过程,完整考虑纵波(P 波)和横波(S 波)的耦合效应:...
AD(Altium Designer)三种方法导入图片
目录 1、脚本方式导入图片 1.1 准备脚本文件和导入图片 1.2 运行脚本 1.3 导入文件 1.4 选中文件 2.5 运行 2.6 导入图片 2.7 选择图片 2.8 转换 2.9 退出 2.10 联合 2.11 确认 2.12 调整大小 2.13 复制 2.14 粘贴 2、图片直接导入图片 2.1点击放置 2.2 图片…...
fpga助教面试题
第一题 module sfp_pwm( input wire clk, //clk is 200M input wire rst_n, input wire clk_10M_i, input wire PPS_i, output reg pwm ) reg [6:0] cunt ;always (posedge clk ) beginif(!rst_n)cunt<0;else if(cunt19) //200M是10M的20倍cunt<0;elsecunt<cunt1;…...
问题记录汇总
记录一些问题 如何分析错误帧问题-CSDN博客...
安全问答—安全的基本架构
前言 将一些安全相关的问答进行整理汇总和陈述,形成一些以问答呈现的东西,加入一些自己的理解,欢迎路过的各位大佬进行讨论和论述。很多内容都会从甲方的安全认知去进行阐述。 1.安全存在的目的? 为了支持组织的目标、使命和宗…...
玩客云 IP查找
1.玩客云使用静态IP在不同网段路由器下不能使用,动态不好找IP地址 1.1使用python3 实现自动获取发送 import requests import os import socket# 从环境变量获取 PushPlus 的 token 和群组编码 PUSH_PLUS_TOKEN os.getenv("PUSH_PLUS_TOKEN") PUSH_PLU…...
鸿蒙与跨端迁移的重要性
鸿蒙操作系统(HarmonyOS)是由华为公司开发的一款面向未来的全场景分布式操作系统。它旨在提供一个统一的平台,支持各种设备之间的无缝协作和数据共享,从而为用户提供更加连贯和高效的体验。在鸿蒙的生态系统中,跨端迁移…...
MATLAB学习之旅:从入门到基础实践
在当今科技飞速发展的时代,MATLAB作为一款强大的数学软件,犹如一把神奇的钥匙,能够打开众多领域的大门。无论是工程计算、数据分析,还是算法开发、可视化呈现,MATLAB都展现出了无与伦比的魅力。今天,就让我们踏上这段奇妙的MATLAB学习之旅,从最基础的部分开始,逐步探索…...
【队列】循环队列(Circular Queue)详解
文章目录 一、循环队列简介二、循环队列的判空和判满三、循环队列的实现leetcode 622. 设计循环队列 一、循环队列简介 在实际开发中,队列是一种常用的数据结构,而循环队列(Circular Queue)则一般是一种基于数组实现的队列&#x…...
Spring-GPT智谱清言AI项目(附源码)
一、项目介绍 本项目是Spring AI第三方调用整合智谱请言(官网是:https://open.bigmodel.cn)的案例,回答响应流式输出显示,这里使用的是免费模型,需要其他模型可以去 https://www.bigmodel.cn/pricing 切换…...
【JavaEE进阶】MyBatis入门
目录 🌴前言 🌲什么是MyBatis? 🌳准备工作 🚩创建工程 🚩配置数据库连接字符串 🚩数据准备 🚩编写持久层代码 🍃单元测试 🌴前言 在应⽤分层学习时,我们了解到…...
网络安全:防范NetBIOS漏洞的攻击
稍微懂点电脑知识的朋友都知道,NetBIOS 是计算机局域网领域流行的一种传输方式,但你是否还知道,对于连接互联网的机器来讲,NetBIOS是一大隐患。 漏洞描述 NetBIOS(Network Basic Input Output System,网络基本输入输…...
【OS安装与使用】part3-ubuntu安装Nvidia显卡驱动+CUDA 12.4
文章目录 一、待解决问题1.1 问题描述1.2 解决方法 二、方法详述2.1 必要说明2.2 应用步骤2.2.1 更改镜像源2.2.2 安装NVIDIA显卡驱动:nvidia-550(1)查询显卡ID(2)PCI ID Repository查询显卡型号(3…...
如何在本地和服务器新建Redis用户和密码
文章目录 一. Redis安装二. 新建Redis用户,测试连接2.1 本地数据库2.2 线上数据库2.2.1 安装和配置2.2.2 测试连接 三. 配置四. 分布式 一. Redis安装 Redis安装 可以设置开机自动启动,也可以在去查看系统服务,按[win R],输入命…...
使用SHOW PROCESSLIST和SHOW ENGINE INNODB STATUS排查mysql锁等待问题
现象: mysql 查某表一直不能结束,查别的表没有问题。已知之前刚刚alter此表想把它的一个字段长度增长,但是这个操作一直没有结束。现在应该怎么办? 方案: 使用 SHOW PROCESSLIST; 查看当前所有活动的SQL线程,找出是否有长时间…...
探索HarmonyOS的UI开发新境界:从基础到进阶的深度解析
在科技日新月异的今天,操作系统作为连接硬件与软件的桥梁,其重要性不言而喻。HarmonyOS,作为华为自主研发的分布式全场景操作系统,正以其独特的分布式技术架构和一次开发多端部署的能力,引领着操作系统的新潮流。本文将…...
Android 动态加入Activity 时 manifest 注册报错解决。使用manifestPlaceholders 占位
需求如下: 项目 测试demo 有多个渠道,部分渠道包含支付功能,在主测试代码外,需要一个单独 Activity 调用测试代码。 MainActivityPayActivity渠道A包含不包含渠道B包含包含 因为支付功能需要引入对应的 moudule,因此…...
OpenCV(1):简介、安装、入门案例、基础模块
1 OpenCV 简介 OpenCV 是一个功能强大、应用广泛的计算机视觉库,它为开发人员提供了丰富的工具和算法,可以帮助他们快速构建各种视觉应用。随着计算机视觉技术的不断发展,OpenCV 也将会继续发挥重要的作用。OpenCV 提供了大量的计算机视觉算法…...