当前位置: 首页 > news >正文

【Qt】Qt 构建系统详解:qmake 入门到项目实战

Qt 构建系统详解:qmake 入门到项目实战

本文将系统介绍 Qt 构建工具 qmake 的用法,并通过一个完整的项目结构示例,帮助你掌握 .pro 文件编写、子项目管理、模块依赖等核心技能。


🧭 一、什么是 qmake?

qmake 是 Qt 提供的跨平台构建系统工具,它能将 .pro 文件(项目描述)转换为对应平台的构建脚本,如 Makefile 或 Visual Studio 工程文件。

✅ 主要作用:

  • 自动生成构建脚本,简化项目编译流程
  • 跨平台(支持 Windows / Linux / macOS)
  • 适用于中小型 Qt 项目,快速上手

🔁 常见使用流程:

qmake myapp.pro      # 生成 Makefile
make                 # 或 mingw32-make / nmake

📘 二、.pro 文件基础语法

1. 基本结构

在这里插入图片描述

TEMPLATE = app            # 类型:app 或 lib
TARGET = myapp            # 输出文件名
QT += core gui            # 使用的 Qt 模块
CONFIG += c++11           # 编译配置
SOURCES += main.cpp       # 源码文件
HEADERS += mainwindow.h
FORMS += mainwindow.ui    # UI 文件
RESOURCES += resources.qrc

2. 常用变量

变量名含义
QT指定使用的 Qt 模块(如 core, gui
CONFIG构建配置,如 debug, release, c++11
SOURCES源文件列表
HEADERS头文件列表
FORMSQt Designer 设计的 .ui 文件
RESOURCESQt 资源文件 .qrc
INCLUDEPATH额外的头文件搜索路径
LIBS链接外部库,如 -L-l
DEFINES添加宏定义

3. 条件语句(平台判断)

unix {LIBS += -lm
}
win32 {CONFIG += console
}

🧩 三、子项目管理(SUBDIRS)

大型项目通常包含多个模块,比如主程序和自定义库。我们可以使用 subdirs 模板组织它们。


🛠️ 四、完整项目结构实战

📁 项目结构

MyProject/
├── MyProject.pro        # 顶层项目文件
├── mylib/               # 自定义库
│   ├── mylib.pro
│   ├── mylib.h
│   └── mylib.cpp
└── mainapp/             # 主程序├── mainapp.pro├── main.cpp├── mainwindow.h├── mainwindow.cpp└── mainwindow.ui

🧷 1. 顶层文件 MyProject.pro

TEMPLATE = subdirs
SUBDIRS += mylib mainappmainapp.depends = mylib   # 指定构建顺序

🧷 2. mylib/mylib.pro(静态库)

TEMPLATE = lib
CONFIG += staticlib
TARGET = mylibHEADERS += mylib.h
SOURCES += mylib.cpp

mylib.h

#ifndef MYLIB_H
#define MYLIB_H#include <QString>class MyLib
{
public:static QString getMessage();
};#endif // MYLIB_H

mylib.cpp

#include "mylib.h"QString MyLib::getMessage()
{return "Hello from MyLib!";
}

🧷 3. mainapp/mainapp.pro(主程序)

TEMPLATE = app
QT += core gui widgets
CONFIG += c++11
TARGET = mainappSOURCES += main.cpp \mainwindow.cpp
HEADERS += mainwindow.h
FORMS += mainwindow.uiINCLUDEPATH += ../mylib
LIBS += -L../mylib -lmylib

main.cpp

#include "mainwindow.h"
#include <QApplication>int main(int argc, char *argv[])
{QApplication app(argc, argv);MainWindow w;w.show();return app.exec();
}

mainwindow.h

#ifndef MAINWINDOW_H
#define MAINWINDOW_H#include <QMainWindow>class QLabel;class MainWindow : public QMainWindow
{Q_OBJECT
public:MainWindow(QWidget *parent = nullptr);~MainWindow();
private:QLabel *label;
};#endif // MAINWINDOW_H

mainwindow.cpp

#include "mainwindow.h"
#include <QLabel>
#include "mylib.h"MainWindow::MainWindow(QWidget *parent): QMainWindow(parent)
{label = new QLabel(MyLib::getMessage(), this);setCentralWidget(label);
}MainWindow::~MainWindow() {}

mainwindow.ui

你可以使用 Qt Designer 可视化编辑此文件,也可以先跳过(不影响构建)。


🔨 五、构建步骤(命令行)

在项目根目录执行:

qmake MyProject.pro
make                 # Windows 可用 mingw32-make 或 nmake

🎯 六、qmake 与 CMake 对比

特性qmakeCMake(Qt 6 推荐)
学习曲线简单较复杂
项目规模适合中小型项目更适合大型项目
官方支持Qt 5 推荐使用Qt 6 起默认使用 CMake
功能扩展性限制多一些更强(模块化、测试集成等)

✅ 总结

  • qmake 是 Qt 提供的构建系统,简洁、易上手,是管理 Qt 项目的传统利器。
  • 熟练使用 .pro 文件可以大大提升项目维护效率。
  • 对于大型项目,建议使用 subdirs 管理模块。
  • Qt 6 官方已推荐使用 CMake,新项目可考虑迁移。

📎 附加建议

  • 可以借助 Qt Creator 编辑 .pro 文件并一键构建,开发体验更佳。
  • 如果你正在使用 CMake,也可以对照迁移这套结构,后续我也可以提供 CMake 版本的实现。

📘提问环节

❓TEMPLATE = subdirs 什么意思?

TEMPLATE = subdirs 是 Qt 的构建工具 qmake 中的一种特殊模板,表示:

这个 .pro 文件不是一个可执行程序或库,而是一个“项目集合”,用于组织和管理多个子项目(子模块)的构建。


🧩 它的用途是什么?

当你要管理多个 .pro 项目(比如主程序 + 自定义库),就可以用一个 subdirs 类型的 .pro 文件统一管理它们的构建顺序和依赖关系。


📁 举个例子

项目结构:

MyProject/
├── MyProject.pro        ← 这是 subdirs 项目
├── mylib/
│   └── mylib.pro
└── mainapp/└── mainapp.pro

MyProject.pro 内容:

TEMPLATE = subdirs       # 告诉 qmake:这是一个子项目集合
SUBDIRS += mylib mainapp # 包含两个子项目mainapp.depends = mylib  # 设置依赖顺序(先构建 mylib,再构建 mainapp)

🧠 工作机制

  • qmake MyProject.pro 会读取所有列出的子项目并为它们分别生成 Makefile。
  • 构建时会 自动递归编译每一个子项目
  • 通过 xxx.depends = yyy 设置依赖顺序(例如主程序依赖库)。

✅ 常见 TEMPLATE 类型对比

TEMPLATE 类型用途
app构建一个可执行程序
lib构建一个静态或动态库(.a/.so/.lib/.dll)
subdirs管理多个 .pro 项目的集合

📌 总结

  • TEMPLATE = subdirs 通常出现在项目的顶层,用于组织多个子项目。
  • 它本身不包含代码,只是构建配置的集合。
  • 与 CMake 中的 add_subdirectory() 有相似之处。

❓为什么顶层 .pro 文件中 没有 TARGET

这是一个非常关键且容易混淆的问题,下面我来系统解释,因为:

当你使用 TEMPLATE = subdirs 时,顶层 .pro 文件本身不是一个编译目标,不会生成可执行文件或库文件,因此不需要也不能设置 TARGET


✅ 解释:

  • TEMPLATE = subdirs 表示:这个 .pro 文件只是一个项目容器,用来组织和管理子项目的构建流程。
  • 它的职责是告诉 qmake:我要构建哪些子项目,它们的依赖关系是什么。
  • 子项目才是真正参与构建(生成目标文件)的单元。

🧱 对比不同 TEMPLATE

TEMPLATE 类型是否需要 TARGET说明
app✅ 是表示要生成一个可执行文件,需要指定名称
lib✅ 是表示要生成一个静态库或动态库
subdirs❌ 否不生成实际构建产物,仅组织子项目

📁 示例补充

# MyProject.pro
TEMPLATE = subdirs
SUBDIRS += mylib mainapp
mainapp.depends = mylib

你看到这里没有:

TARGET = ...

原因是:MyProject.pro 不是一个“要编译的项目”,而是“告诉 qmake 去编译哪些项目”


✅ 小结

  • subdirs 类型的 .pro 文件不需要 TARGET
  • 它只是一个组织者,控制构建顺序和包含的模块。
  • 只有真正的可执行程序或库项目,才需要指定 TARGET

❓子项目中为啥TARGET的名称要和文件夹同名?

这是一个非常好的问题,涉及到 qmake 中的 TARGET 变量含义模块组织逻辑,我们来仔细说明:


TARGET 的本质含义

.pro 文件中:

TARGET = something

表示 生成的可执行文件名或库文件名,不直接等于目录名。


🔎 示例对比说明

设想我们有如下结构:

MyProject/
├── mylib/
│   ├── mylib.pro   ← 这里 TARGET = mylib
├── mainapp/
│   ├── mainapp.pro ← 这里 TARGET = mainapp

虽然子项目文件夹分别叫做 mylibmainapp,但你可以自由设置 TARGET 为任何你想要的名字,比如:

# mylib.pro
TARGET = my_custom_library_name# mainapp.pro
TARGET = awesome_gui_app

构建完成后:

  • 在 Linux:会生成 libmy_custom_library_name.a(静态库)和 awesome_gui_app(可执行文件)
  • 在 Windows:生成 my_custom_library_name.libawesome_gui_app.exe

🤔 那为什么很多人让 TARGET = 文件夹名

这是因为:

  • 文件夹名和 TARGET 保持一致可以 减少认知负担
  • 例如 mylib/TARGET = mylib,容易管理产物、日志和代码
  • 并非语法规定,而是 一种约定俗成的习惯

📌 总结

含义
TARGET表示“构建产物的名称”(可执行文件或库名)
子目录名TARGET 可以相同,也可以不同
建议做法建议保持一致,利于组织与维护

相关文章:

【Qt】Qt 构建系统详解:qmake 入门到项目实战

Qt 构建系统详解&#xff1a;qmake 入门到项目实战 本文将系统介绍 Qt 构建工具 qmake 的用法&#xff0c;并通过一个完整的项目结构示例&#xff0c;帮助你掌握 .pro 文件编写、子项目管理、模块依赖等核心技能。 &#x1f9ed; 一、什么是 qmake&#xff1f; qmake 是 Qt 提…...

Laravel 12 实现验证码功能

Laravel 12 实现验证码功能 在 Laravel 12 中实现验证码功能可以通过多种方式&#xff0c;以下是几种常见的方法&#xff1a; 方法一&#xff1a;使用 Captcha 包&#xff08;推荐&#xff09; 首先安装 mews/captcha 包&#xff1a; composer require mews/captcha发布配置…...

深入解析Http11AprProtocol:Tomcat高性能通信的底层原理

HTTP/1.1 协议作为 Web 通信的基础标准&#xff0c;其实现效率直接影响服务器性能。Apache Tomcat 作为 Java 生态中最流行的 Servlet 容器&#xff0c;提供了多种 HTTP 协议实现方案&#xff0c;其中基于 Apache Portable Runtime&#xff08;APR&#xff09;的 Http11AprProt…...

HTTP请求与缓存、页面渲染全流程

文章目录 前言**1. HTTP请求与缓存处理****缓存机制**• 强缓存&#xff08;Cache-Control / Expires&#xff09;• 协商缓存&#xff08;Last-Modified / ETag&#xff09; **2. 服务器响应与数据解析****3. HTML DOM 构建****4. CSSOM 构建****5. 渲染树&#xff08;Render …...

HTB - Eureka记录

HTB - Eurekahttps://mp.weixin.qq.com/s/r1WmZXNR6YkvnwP40liciA...

CentOS 7 基础环境安装脚本

&#x1f31f; CentOS 7 基础环境安装脚本使用文档 &#x1f9f0; 一键部署&#xff01;助你在 CentOS 7 系统上快速构建高效开发环境。 开源地址&#xff1a;https://github.com/hahaha-zsq/Shortcut-Script CentOS 7 基础环境安装脚本使用 &#x1f4e6; 项目结构一览 ./ ├…...

【Python 模块】

Python 中的模块&#xff08;Module&#xff09;是组织代码的核心方式&#xff0c;通过将相关函数、类和变量封装到独立文件中&#xff0c;实现代码复用和结构化管理。以下是模块的核心知识点&#xff1a; 一、基础概念 1. 模块定义 任何 .py 文件都是一个模块模块名即文件名…...

极狐Gitlab 如何创建并使用子群组?

极狐GitLab 是 GitLab 在中国的发行版&#xff0c;关于中文参考文档和资料有&#xff1a; 极狐GitLab 中文文档极狐GitLab 中文论坛极狐GitLab 官网 子群组 (BASIC ALL) 您可以将极狐GitLab 群组组织成子群组。您可以使用子群组&#xff1a; 内部和外部组织分开。因为每个子…...

【MCP】服务端搭建(python和uv环境搭建、nodejs安装、pycharma安装)

【MCP】服务端搭建&#xff08;python和uv环境搭建、nodejs安装、pycharma安装&#xff09; 服务端搭建&#xff08;1&#xff09;python和uv环境搭建&#xff08;2&#xff09;nodejs安装&#xff08;3&#xff09;pycharm安装 服务端搭建 &#xff08;1&#xff09;python和…...

【疑难杂症2025-003】Java-mvn项目在gitlab-ci构建镜像时遇到的问题和解决方案

本文由Markdown语法编辑器编辑完成&#xff0e; 1.背景: 之前从同事手里接手了一个java的项目&#xff0c;是用maven构建项目的&#xff0e;由于我们的服务都是基于docker来部署的&#xff0c;因此这个java项目也是要编译成docker image然后发布&#xff0e;但是之前一直都是…...

AI与Web3.0:去中心化智能合约的未来

AI与Web3.0&#xff1a;去中心化智能合约的未来 系统化学习人工智能网站&#xff08;收藏&#xff09;&#xff1a;https://www.captainbed.cn/flu 文章目录 AI与Web3.0&#xff1a;去中心化智能合约的未来摘要引言1.1 技术演进背景1.2 行业格局分化 技术架构对比2.1 智能合约…...

记录学习的第三十五天

今天主攻单源最短路Dijkstra算法。不过&#xff0c;还是没有完全掌握。 首先是书本的例题我理解了一遍。 然后其实在力扣上做了三道题的&#xff0c;但是我看题解的情况就不太会。然后试着用上面的方法敲了一下↓的题&#xff0c;但是不对啊&#xff0c;我也不知道为什么呀。...

虚拟现实(VR)与增强现实(AR)在教育领域的应用:开启沉浸式学习新时代

前言 随着科技的飞速发展&#xff0c;虚拟现实&#xff08;VR&#xff09;和增强现实&#xff08;AR&#xff09;技术逐渐从游戏和娱乐领域走向教育领域。传统的教育模式主要依赖于书本、黑板和课堂讲解&#xff0c;这种模式虽然有效&#xff0c;但往往难以激发学生的学习兴趣和…...

线性代数之矩阵运算:驱动深度学习模型进化的数学引擎

目录 一、矩阵运算的基本概念与类型 二、矩阵运算在深度学习中的核心作用 三、典型深度学习模型中的矩阵运算实现 四、矩阵运算的优化与加速 五、未来发展趋势与挑战 矩阵运算是线性代数的核心组成部分,也是深度学习模型构建和优化的数学基础。从基本的前向传播到复杂的注…...

Spring AI(1)—— 基本使用

Spring AI 是一个用于 AI 工程的应用程序框架。 其目标是将 Spring 生态系统设计原则应用于 AI 领域。 Spring AI 提供以下功能&#xff1a; 支持所有主要的 AI 模型提供商&#xff0c;例如 Anthropic、OpenAI、Microsoft、Amazon、Google 和 Ollama等。支持跨 AI 提供商对同…...

深入浅出HTML:构建现代网页的基石

深入浅出HTML&#xff1a;构建现代网页的基石 引言 在数字世界的基石中&#xff0c;HTML&#xff08;HyperText Markup Language&#xff09;始终扮演着不可替代的角色。作为万维网的核心语言&#xff0c;HTML经历了30年的演变&#xff0c;从简单的文档标记发展到支持复杂Web…...

ai说什么是注解,并以angular ts为例

在编程中&#xff0c;注解&#xff08;Annotation&#xff09; 是一种特殊的语法结构&#xff0c;用于为代码添加元数据&#xff08;metadata&#xff09;&#xff0c;从而在不修改代码逻辑的情况下&#xff0c;提供额外的信息或指示编译器、框架、工具如何处理这些代码。注解通…...

【存储管理—动态不等长存储资源分配算法】

文章目录 一、实验目的二、实验内容与设计思想实验内容设计思路 三、实验代码实现四、总结 一、实验目的 理解动态异长存储分区资源管理&#xff0c;掌握所需数据结构和管理程序&#xff0c;了解各种存储分配算法的优点和缺点。 二、实验内容与设计思想 实验内容 1.分析uni…...

【25软考网工】第五章(8)路由协议RIP、OSPF

目录 一、路由协议--RIP 1. RIP协议 1&#xff09;RIPv1与RIPv2对比 2. 距离矢量路由协议 1&#xff09;距离矢量路由协议特点 2&#xff09;RIP路由的度量值 3&#xff09;路由优先级 4&#xff09;RIP防环机制 3. 应用案例 1&#xff09;例题:RIPv1与RIPv2区别 2&…...

日常开发中,iOS 性能调优我们怎么做?

日常开发中&#xff0c;iOS 性能调优我们怎么做&#xff1f;聊聊我用过的几款工具 最近在给一个 iOS 视频类 App 做性能优化&#xff0c;过程中踩了不少坑&#xff0c;也用了一些不错的工具&#xff0c;今天就以一个开发者视角随便聊聊我在调试过程中的一些经验。 一、性能问…...

JNDI 注入原理解析

文章目录 JNDI基础概述JNDI SPI命名服务目录服务 JNDI演示查询 DNS 服务查询 LDAP 服务条目动态协议切换 JNDI 注入漏洞 JNDI基础 概述 JNDI&#xff08;Java Naming and Directory Interface&#xff09;是Java提供的标准命名和目录接口&#xff0c;通过统一的API使应用程序…...

Android开发-视图基础

在Android应用开发中&#xff0c;视图&#xff08;View&#xff09;是构建用户界面的基本元素。无论是按钮、文本框还是复杂的自定义控件&#xff0c;它们都是基于View类或其子类实现的。掌握视图的基础知识对于创建功能强大且美观的应用至关重要。本文将深入探讨Android中的视…...

Prometheus实战教程:k8s平台-Redis监控案例

以下是 Prometheus 自动发现 Redis 实例的完整 YAML 文件示例&#xff0c;适用于生产环境。该配置包括&#xff1a; Redis 部署&#xff1a;运行 Redis 实例。Redis Exporter&#xff1a;用于暴露 Redis 指标。Prometheus 自动发现&#xff1a;通过 Kubernetes 服务发现自动抓…...

Prompt Engineering 提示词工程学习

一、Prompt Engineering 简介 Prompt Engineering 是设计和优化输入提示(Prompt)以获得预期输出的过程。在与大型语言模型(如 GPT-4)交互时,如何构造提示会显著影响模型的回答质量。 二、Prompt 的重要性 提高生成准确性:通过正确的 Prompt 引导,模型能够更好地理解用…...

数造科技携 DataBuilder 亮相安徽科交会,展现“DataOps +AI”双引擎魅力

近日&#xff0c;数造科技受邀参加第三届中国&#xff08;安徽&#xff09;科技创新成果转化交易。 作为国内领先的数据开发与治理平台提供商&#xff0c;数造科技携带其核心产品 DataBuilder 精彩亮相 “新一代信息技术展区”&#xff0c;吸引了众多参会者的目光。 关于 DataB…...

Linux/AndroidOS中进程间的通信线程间的同步 - 共享内存

在之前的文章中介绍了允许无关进程共享内存区域以便执行 IPC 的技术&#xff1a;共享文件映射。但他存在一些不足。 使用一个共享文件映射来进行 IPC 要求创建一个磁盘文件&#xff0c;即使无需对共享区域进行持久存储也需要这样做。除此之外&#xff0c;这种技术还会带来一些…...

ES6入门---第三单元 模块七: Proxy的使用+Reflect的使用

proxy: 代理 扩展(增强)对象、方法(函数)一些功能 比如: Vue Vue.config.keyCodes.enter65 Proxy作用: 比如vue中拦截 预警、上报、扩展功能、统计、增强对象等等 proxy是设计模式一种&#xff0c; 代理模式 语法: new Proxy(target, handler); …...

【JAVA】BigDecimal判断是否为0, / by zero的问题修复

bug场景 我要处理一个任务完成率的计算&#xff0c;任务完成率pct 实际值 real / 任务值 task 进入计算前&#xff0c;我需要判断task是否为空&#xff0c;或者为0&#xff0c;防止除法出错。 之前使用了equal方法 if(!task.equals(BigDecimal.ZERO))//开始计算因为刚开始测…...

从 “机器人 +“ 到 “+ 机器人“:算力政策撬动的产业生态革命

在深圳光明科学城的云端算力平台上&#xff0c;数据以每秒千万次的速度流动&#xff0c;这里每年发放的 600 万元算力补贴&#xff0c;正如同催化剂般激活着人形机器人产业的深层变革。当广东将 "算力券" 政策精准嵌入珠三角制造体系&#xff0c;一场从 "单机智…...

如何在24G显存机器上搭建一个超过gpt效果的DeepSeek-R1?

DeepSeek-R1蒸馏模型概述与应用指南 ![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/5af5a8b13de14bd1a95837bbf1ccaf2a.png#pic_center) 引言 DeepSeek-R1作为一款先进的AI推理模型&#xff0c;在性能上已超越GPT-4o和Claude-3.5等主流开源模型。为满足更广泛应用…...

seamless_communication,facebook推出的开源语音翻译项目

Seamless Communication‌是由Facebook Research开发的一个开源项目&#xff0c;旨在提供先进的语音和文本翻译功能&#xff0c;支持多国语音。 今天试着来复现下。 1、首先下载代码。 git clone https://github.com/facebookresearch/seamless_communication 2、按照步骤执…...

C++从入门到实战(十二)详细讲解C++如何实现内存管理

C从入门到实战&#xff08;十二&#xff09;详细讲解C如何实现内存管理 前言一、C内存管理方式1. new/delete操作内置类型2. 异常与内存管理的联系&#xff08;简单了解&#xff09;3. new和delete操作自定义类型 二、 operator new与operator delete函数&#xff08;重点&…...

console-chat-gpt开源程序是用于 AI Chat API 的 Python CLI

​一、软件介绍 文末提供程序和源码下载 console-chat-gpt开源程序是用于 AI Chat API 的 Python CLI&#xff0c;与 AI 模型聊天的终极 CLI 伴侣&#xff0c;直接从命令行享受与 OpenAI、MistralAI、Anthropic、xAI、Google AI、DeepSeek、阿里巴巴、Inception 或 Ollama 托管…...

影刀RPA开发-程序备注说明的必要性

1. 备注指令的调用 1.1 指令搜索 搜索出备注指令后&#xff0c;添加到代码框中 1.2 快捷输入 在代码框中&#xff0c;输入指令关键字&#xff0c;可以快速展示出相关指令 2.备注指令内容设置 备注信息要依据代码执行的功能书写 尽量写明该语句或该段落代码的功能作用 单行…...

第十节:图像处理基础-图像算术运算 (加法、减法、混合)

引言 在计算机视觉领域&#xff0c;图像算术运算是最基础却至关重要的核心技术。无论是实现简单的图片合成、开发智能监控系统&#xff0c;还是构建复杂的医学影像分析工具&#xff0c;加减运算和混合操作都扮演着关键角色。OpenCV作为最流行的计算机视觉库&#xff0c;提供了…...

如何使用UGUI的EventTrigger

前言 在 Unity 的 UGUI 系统中,EventTrigger 是一个强大的组件,允许开发者监听和处理多种 UI 交互事件。以下是详细的使用方法、示例代码、优缺点分析以及注意事项。 一、EventTrigger 基本用法 1. 添加 EventTrigger 组件 在 Unity 编辑器中选中 UI 对象(如 But…...

5G赋能农业物联网:智能化种植的新纪元

5G赋能农业物联网&#xff1a;智能化种植的新纪元 在农业领域&#xff0c;精准化、智能化已成为现代农业发展的方向。而5G的出现&#xff0c;让农业物联网&#xff08;Agri-IoT&#xff09;突破了传统的瓶颈&#xff0c;真正实现了实时监测、高效数据传输、智能化决策&#xf…...

LeetCode 热题 100 64. 最小路径和

LeetCode 热题 100 | 64. 最小路径和 大家好&#xff0c;今天我们来解决一道经典的动态规划问题——最小路径和。这道题在 LeetCode 上被标记为中等难度&#xff0c;要求找到从网格的左上角到右下角的路径&#xff0c;使得路径上的数字总和为最小。 问题描述 给定一个包含非负…...

精益数据分析(45/126):媒体网站商业模式的深度剖析与挑战应对

精益数据分析&#xff08;45/126&#xff09;&#xff1a;媒体网站商业模式的深度剖析与挑战应对 在创业和数据分析的领域中&#xff0c;探索不同商业模式的运作机制和关键要点是提升业务能力的重要途径。今天&#xff0c;我们依旧带着共同进步的目标&#xff0c;深入研读《精…...

学习Linux的第四天

今天我们来学习Linux的网络配置&#xff0c;以及链表的知识开个小头 三种网络配置模式 桥接模式&#xff08;用的最多&#xff09; 2.Nat模式 3. 仅主机模式&#xff08;Nat模式的功能外&#xff0c;只能在局域网通信&#xff0c;不能访问外网&#xff09; 桥接模式&#xf…...

AGV导航控制器技术方案——基于EFISH-SBC-RK3576/SAIL-RK3576的国产化革新‌(新一代工业级自主可控解决方案)‌

一、方案核心架构 ‌1. 硬件拓扑设计‌ ‌主控单元‌&#xff1a;SAIL-RK3576核心板&#xff08;八核A72A53M0异构架构&#xff09;‌传感器层‌&#xff1a; 双激光雷达&#xff08;RS-LiDAR-16线 SICK TIM240&#xff09;9轴IMU&#xff08;BMI088&#xff09; 轮式编码器&…...

ISCC 2025练武题 WP部分

总结 垃圾比赛&#xff0c;垃圾题目&#xff0c;纯脑洞题&#xff0c;技术好不好没得关系&#xff0c;就看你脑洞大不大。 web里塞misc&#xff0c;re里塞misc真是牛逼他妈给牛逼开门牛逼到家。 逆天平台&#xff0c;卡的一批&#xff0c;靶机还是公用的&#xff0c;把flag删…...

mysql:什么是一致性视图(Read View)

一致性视图&#xff08;Read View&#xff09;是 MVCC&#xff08;多版本并发控制&#xff09;中的核心概念&#xff0c;用于实现事务隔离性。 它是一个逻辑概念&#xff0c;让事务在读取数据时看到特定时间点的数据库快照&#xff0c;而不受其他事务并发修改的影响。 一致性…...

android中背压问题面试题及高质量回答范例

&#x1f3af; 回答的目标是&#xff1a; 表现出你理解背压的本质&#xff08;不是框架知识&#xff0c;而是系统层面的问题&#xff09;。 能清晰讲出几种处理背压的方案&#xff08;理论 实战&#xff09;。 能结合 Android 场景讲具体例子&#xff08;比如 UI 线程、网络…...

【C++】C++11(上)

&#x1f680;write in front&#x1f680; &#x1f4dc;所属专栏&#xff1a; C学习 &#x1f6f0;️博客主页&#xff1a;睿睿的博客主页 &#x1f6f0;️代码仓库&#xff1a;&#x1f389;VS2022_C语言仓库 &#x1f3a1;您的点赞、关注、收藏、评论&#xff0c;是对我最大…...

工具分享:通过滑块拉取CAN报文信号数值自动发送报文

0. 概述 CAN报文发送工具使用wxpython进行开发,配套Excel模板可以通过修改Excel自定义界面展示的信号名称和信号的属性;同时,工具支持导入现场采集的报文数据自动按照配套Excel模板定义的报文发送周期进行模拟发送。 由于是我好几年前开发的作品,一些开发细节也记得不是很…...

android 折叠屏开发适配全解析:多窗口、铰链处理与响应式布局

安卓适配折叠屏指南 折叠屏设备为安卓开发带来了新的机遇和挑战。以下是适配折叠屏的关键要点&#xff1a; 1. 屏幕连续性检测 // 检查设备是否支持折叠屏特性 private fun isFoldableDevice(context: Context): Boolean {return context.packageManager.hasSystemFeature(&…...

Cloudera CDP 7.1.3 主机异常关机导致元数据丢失,node不能与CM通信

问题描述 plaintext ERROR Could not load post-deployment data from /var/run/cloudera-scm-agent/process/ccdeploy_hadoop-conf_etchadoopconf.cloudera.yarn_-8903374259073700469 IOError: [Errno 2] No such file or directory: /var/run/cloudera-scm-agent/proce…...

超越 DeepSeek-R1,英伟达新模型登顶

近日&#xff0c;英伟达发布全新开源模型系列 Llama-Nemotron&#xff0c;凭借卓越性能引发业界关注&#xff0c;有望重塑开源 AI 格局。 该系列在推理能力上超越 DeepSeek-R1&#xff0c;内存效率与吞吐量显著提升。其创新采用合成数据监督微调与强化学习训练&#xff0c;全方…...

centos8.5.2111 更换阿里云源

使用前提是服务器可以连接互联网 1、备份现有软件配置文件 cd /etc/yum.repos.d/ mkdir backup mv CentOS-* backup/ 2、下载阿里云的软件配置文件 wget -O /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-vault-8.5.2111.repo 3、清理并重建…...