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

【C++QT】Layout 布局管理控件详解

文章目录

  • 一、QVBoxLayout 垂直布局
    • 1.1 特点
    • 1.2 常用方法
    • 1.3 应用场景
    • 1.4 示例代码
  • 二、QHBoxLayout 水平布局
    • 2.1 特点
    • 2.2 常用方法
    • 2.3 应用场景
    • 2.4 示例代码
  • 三、QGridLayout 网格布局
    • 3.1 特点
    • 3.2 常用方法
    • 3.3 应用场景
    • 3.4 示例代码
  • 四、QFormLayout 表单布局
    • 4.1 特点
    • 4.2 常用方法
    • 4.3 应用场景
    • 4.4 示例代码
  • 五、总结
    • 5.1 各布局管理器特点
    • 5.2 常用方法总结
    • 如果这篇文章对你有所帮助,渴望获得你的一个点赞!

在 C++ Qt 中,布局管理器(Layout)是用于自动管理窗口中控件的大小和位置的重要工具。Layout 组中常见的布局类型有 QVBoxLayout(垂直布局)、QHBoxLayout(水平布局)、QGridLayout(网格布局)和 QFormLayout(表单布局)。本文将详细解析这些布局管理器的使用方法和应用场景。


在这里插入图片描述

一、QVBoxLayout 垂直布局

1.1 特点

  • 按照垂直方向,从上到下依次排列添加的控件。
  • 会根据控件的大小策略和布局的设置自动调整每个控件的大小和位置。
  • 可以添加间距和伸缩因子,用于控制控件之间的间距和空间分配。

1.2 常用方法

  • addWidget(QWidget *widget, int stretch = 0, Qt::Alignment alignment = Qt::Alignment()):添加一个控件到布局中,stretch 为伸缩因子,alignment 为对齐方式。
  • addSpacing(int size):添加一个固定大小的间距。
  • addStretch(int stretch = 0):添加一个可伸缩的空间,stretch 为伸缩因子。

1.3 应用场景

常用于菜单、按钮列表、堆叠式的界面元素等。

1.4 示例代码

#include <QApplication>
#include <QWidget>
#include <QVBoxLayout>
#include <QPushButton>
#include <QLabel>int main(int argc, char *argv[])
{QApplication a(argc, argv);QWidget window;QVBoxLayout *layout = new QVBoxLayout;QLabel *titleLabel = new QLabel("Title");titleLabel->setAlignment(Qt::AlignCenter);layout->addWidget(titleLabel);layout->addStretch(1);QPushButton *button1 = new QPushButton("Button 1");QPushButton *button2 = new QPushButton("Button 2");QPushButton *button3 = new QPushButton("Button 3");layout->addWidget(button1);layout->addWidget(button2);layout->addWidget(button3);layout->addStretch(2);window.setLayout(layout);window.show();return a.exec();
}

上述示例中,标题标签位于顶部,三个按钮位于中间,顶部和底部都有伸缩空间,底部的伸缩空间是顶部的两倍。


二、QHBoxLayout 水平布局

2.1 特点

  • 按照水平方向,从左到右依次排列添加的控件。
  • 同样会根据控件的大小策略和布局的设置自动调整每个控件的大小和位置。
  • 也可以添加间距和伸缩因子。

2.2 常用方法

  • addWidget(QWidget *widget, int stretch = 0, Qt::Alignment alignment = Qt::Alignment()):添加一个控件到布局中。
  • addSpacing(int size):添加一个固定大小的间距。
  • addStretch(int stretch = 0):添加一个可伸缩的空间。

2.3 应用场景

常用于工具栏、导航栏、并排显示的控件等。

2.4 示例代码

#include <QApplication>
#include <QWidget>
#include <QHBoxLayout>
#include <QPushButton>
#include <QLabel>int main(int argc, char *argv[])
{QApplication a(argc, argv);QWidget window;QHBoxLayout *layout = new QHBoxLayout;QPushButton *backButton = new QPushButton("Back");QLabel *titleLabel = new QLabel("Page Title");titleLabel->setAlignment(Qt::AlignCenter);QPushButton *forwardButton = new QPushButton("Forward");layout->addWidget(backButton);layout->addStretch(1);layout->addWidget(titleLabel);layout->addStretch(1);layout->addWidget(forwardButton);window.setLayout(layout);window.show();return a.exec();
}

上述示例中,“Back” 按钮在左边,“Forward” 按钮在右边,标题标签在中间,两边都有伸缩空间。


三、QGridLayout 网格布局

3.1 特点

  • 将控件放置在一个二维网格中,可以精确控制每个控件的行和列位置。
  • 可以设置控件跨越多个行或列。
  • 会自动调整网格的大小以适应控件。

3.2 常用方法

  • addWidget(QWidget *widget, int row, int column, Qt::Alignment alignment = Qt::Alignment()):将控件添加到指定的行和列。
  • addWidget(QWidget *widget, int fromRow, int fromColumn, int rowSpan, int columnSpan, Qt::Alignment alignment = Qt::Alignment()):将控件添加到指定的行和列,并指定跨越的行数和列数。
  • setRowStretch(int row, int stretch):设置某一行的伸缩因子。
  • setColumnStretch(int column, int stretch):设置某一列的伸缩因子。

3.3 应用场景

常用于表格、矩阵、棋盘等需要二维布局的场景。

3.4 示例代码

#include <QApplication>
#include <QWidget>
#include <QGridLayout>
#include <QPushButton>int main(int argc, char *argv[])
{QApplication a(argc, argv);QWidget window;QGridLayout *layout = new QGridLayout;QPushButton *button1 = new QPushButton("1");QPushButton *button2 = new QPushButton("2");QPushButton *button3 = new QPushButton("3");QPushButton *button4 = new QPushButton("4");QPushButton *button5 = new QPushButton("5");QPushButton *button6 = new QPushButton("6");layout->addWidget(button1, 0, 0);layout->addWidget(button2, 0, 1);layout->addWidget(button3, 0, 2);layout->addWidget(button4, 1, 0);layout->addWidget(button5, 1, 1, 1, 2); // 跨越两列window.setLayout(layout);window.show();return a.exec();
}

上述示例中,创建了一个简单的 2x3 网格布局,其中按钮 5 跨越了两列。


四、QFormLayout 表单布局

4.1 特点

  • 专门用于创建表单,将控件以标签 - 字段的形式排列。
  • 可以方便地添加行,每行包含一个标签和一个对应的输入控件。
  • 会自动调整标签和控件的对齐方式。

4.2 常用方法

  • addRow(const QString &labelText, QWidget *field):添加一行,包含一个标签和一个控件。
  • addRow(QWidget *label, QWidget *field):添加一行,标签和控件都是 QWidget 类型。
  • setRowWrapPolicy(RowWrapPolicy policy):设置行的换行策略。

4.3 应用场景

常用于用户输入表单,如登录表单、注册表单等。

4.4 示例代码

#include <QApplication>
#include <QWidget>
#include <QFormLayout>
#include <QLineEdit>
#include <QPushButton>
#include <QCheckBox>int main(int argc, char *argv[])
{QApplication a(argc, argv);QWidget window;QFormLayout *layout = new QFormLayout;QLineEdit *nameEdit = new QLineEdit;QLineEdit *emailEdit = new QLineEdit;QCheckBox *subscribeCheckBox = new QCheckBox("Subscribe to newsletter");QPushButton *submitButton = new QPushButton("Submit");layout->addRow("Name:", nameEdit);layout->addRow("Email:", emailEdit);layout->addRow(subscribeCheckBox);layout->addRow(submitButton);window.setLayout(layout);window.show();return a.exec();
}

上述示例中,创建了一个简单的表单,包含姓名、邮箱输入框,一个复选框和一个提交按钮。


五、总结

5.1 各布局管理器特点

  • 垂直布局(QVBoxLayout:按照垂直方向,自上而下排列控件。可添加间距与伸缩因子,适用于菜单、按钮列表这类需垂直排列元素的场景。
  • 水平布局(QHBoxLayout:按水平方向,从左到右排列控件。同样支持添加间距和伸缩因子,常用于工具栏、导航栏等需水平排列控件的场景。
  • 网格布局(QGridLayout:将控件置于二维网格中,可精确控制行和列位置,还能设置控件跨越行或列。适合表格、矩阵等需要二维布局的场景。
  • 表单布局(QFormLayout:专门用于创建表单,以标签 - 字段形式排列控件,能自动调整对齐方式,适用于登录表单、注册表单等用户输入表单。

5.2 常用方法总结

  • 添加控件:四种布局管理器都有添加控件的方法,如 addWidget ,可指定控件、伸缩因子和对齐方式。QGridLayout 还能指定行、列及跨越的行和列数;QFormLayout 则可按标签 - 字段的形式添加行。
  • 添加间距和伸缩空间QVBoxLayoutQHBoxLayout 可使用 addSpacing 添加固定间距,用 addStretch 添加可伸缩空间。
  • 设置伸缩因子QGridLayout 可通过 setRowStretchsetColumnStretch 分别设置行和列的伸缩因子。
  • 设置换行策略QFormLayout 能使用 setRowWrapPolicy 设置行的换行策略。

这些布局管理器不仅各自具备独特的布局功能,还能相互嵌套,从而实现更复杂、多样化的界面布局,满足各种不同的设计需求。开发者可根据具体的界面设计要求,灵活选择合适的布局管理器及其组合方式。


如果这篇文章对你有所帮助,渴望获得你的一个点赞!

在这里插入图片描述

相关文章:

【C++QT】Layout 布局管理控件详解

文章目录 一、QVBoxLayout 垂直布局1.1 特点1.2 常用方法1.3 应用场景1.4 示例代码 二、QHBoxLayout 水平布局2.1 特点2.2 常用方法2.3 应用场景2.4 示例代码 三、QGridLayout 网格布局3.1 特点3.2 常用方法3.3 应用场景3.4 示例代码 四、QFormLayout 表单布局4.1 特点4.2 常用…...

w~嵌入式C语言~合集6

我自己的原文哦~ https://blog.51cto.com/whaosoft/13870384 一、开源MCU简易数字示波器项目 这是一款采用STC8A8K MCU制造的简单示波器&#xff0c;只有零星组件&#xff0c;易于成型。这些功能可以涵盖简单的测量&#xff1a; 该作品主要的规格如下&#xff1a; 单片机…...

坐标转换:从WGS-84到国内坐标系(GCJ-02BD-09)

目录 &#x1f345;点击这里查看所有博文 随着自己工作的进行&#xff0c;接触到的技术栈也越来越多。给我一个很直观的感受就是&#xff0c;某一项技术/经验在刚开始接触的时候都记得很清楚。往往过了几个月都会忘记的差不多了&#xff0c;只有经常会用到的东西才有可能真正记…...

快速上手 MetaGPT

1. MetaGPT 简介 在当下的大模型应用开发领域&#xff0c;Agent 无疑是最炙手可热的方向&#xff0c;这也直接催生出了众多的 Agent 开发框架。在这之中&#xff0c; MetaGPT 是成熟度最高、使用最广泛的开发框架之一。 MetaGPT 是一款备受瞩目的多智能体开发框架&#xff0c…...

「Docker已死?」:基于Wasm容器的新型交付体系如何颠覆十二因素应用宣言

一、容器技术的量子跃迁 1. 传统容器体系的测不准原理 某金融平台容器集群真实数据&#xff1a; 指标Docker容器Wasm容器差异度冷启动时间1200ms8ms150倍内存占用256MB6MB42倍镜像体积780MB12MB65倍内核调用次数2100次/s23次/s91倍 二、Wasm容器的超流体特性 1. 字节码的量子…...

有源晶振输出匹配电阻选择与作用详解

一、输出匹配电阻的核心作用 阻抗匹配 减少信号反射&#xff1a;当信号传输线阻抗&#xff08;Z0&#xff09;与负载阻抗不匹配时&#xff0c;会发生反射&#xff0c;导致波形畸变&#xff08;如振铃、过冲&#xff09;。 公式&#xff1a;反射系数Γ (Z_L - Z0) / (Z_L Z0)…...

Shell脚本-while循环应用案例

在Shell脚本编程中&#xff0c;while循环是一种非常有用的控制结构&#xff0c;适用于需要基于条件进行重复操作的场景。与for循环不同&#xff0c;while循环通常用于处理不确定次数的迭代或持续监控某些状态直到满足特定条件为止的任务。本文将通过几个实际的应用案例来展示如…...

【JavaScript】二十七、用户注册、登陆、登出

文章目录 1、案例&#xff1a;用户注册页面1.1 发送验证码1.2 验证用户名密码合法性1.3 已阅读并同意用户协议1.4 表单提交 2、案例&#xff1a;用户登陆页面2.1 tab切换2.2 登陆跳转2.3 登陆成功与登出 1、案例&#xff1a;用户注册页面 1.1 发送验证码 需求&#xff1a;用户…...

Vue中Axios实战指南:高效网络请求的艺术

Axios作为Vue生态中最流行的HTTP客户端&#xff0c;以其简洁的API和强大的功能成为前后端交互的首选方案。本文将带你深入掌握Axios在Vue项目中的核心用法和高级技巧。 一、基础配置 1. 安装与引入 npm install axios 2. 全局挂载&#xff08;main.js&#xff09; import …...

SAP-pp 怎么通过底表的手段查找BOM的全部ECN变更历史

表&#xff1a;ABOMITEMS&#xff0c;查询条件是MAST的STLNR &#xff08;BOM清单&#xff09; 如果要得到一个物料的详细ECN历史&#xff0c;怎么办&#xff1f; 先在MAST表查找BOM清单&#xff0c;然后根据BOM清单在ABOMITEMS表里面查询组件&#xff0c;根据查询组件的结果…...

数据需求管理办法有哪些?具体应如何应用?

目录 一、数据需求管理的定义 二、数据需求管理面临的问题 1.需求理解偏差 2.需求变更频繁 3.需求优先级难以确定 4.数据质量与需求不匹配 三、数据需求管理办法的具体流程 1.建立有效的沟通机制 2.规范需求变更管理流程 3.制定需求优先级评估标准 4.加强数据质量管…...

单片机 + 图像处理芯片 + TFT彩屏 复选框控件

复选框控件使用说明 一、控件概述 本复选框控件是一个适用于单片机图形界面的UI组件&#xff0c;基于单片机 RA8889/RA6809 TFT显示屏 GT911触摸屏开发。控件提供了丰富的功能和自定义选项&#xff0c;使用简单方便&#xff0c;易于移植。 主要特点&#xff1a; 支持可…...

塔能合作模式:解锁工厂能耗精准节能新路径

在工厂寻求能耗精准节能的道路上&#xff0c;除了先进的技术&#xff0c;合适的合作模式同样至关重要。塔能科技提供的能源合同管理&#xff08;EMC&#xff09;和交钥匙方式&#xff08;EPC&#xff09;&#xff0c;为工厂节能项目的落地实施提供了有力支持&#xff0c;有效解…...

使用PHP对接印度股票市场数据

在本篇文章中&#xff0c;我们将介绍如何通过StockTV提供的API接口使用PHP语言来获取并处理印度股票市场的数据。我们将以查询公司信息、查看涨跌排行榜和实时接收数据为例&#xff0c;展示具体的操作流程。 准备工作 首先&#xff0c;请确保您已经从StockTV获得了API密钥&am…...

make学习三:书写规则

系列文章目录 Make学习一&#xff1a;make初探 Make学习二&#xff1a;makefile组成要素 文章目录 系列文章目录前言默认目标规则语法order-only prerequisites文件名中的通配符伪目标 Phony Targets没有 Prerequisites 和 recipe内建特殊目标名一个目标多条规则或多个目标共…...

Arduino 入门学习笔记(五):KEY实验

Arduino 入门学习笔记&#xff08;五&#xff09;&#xff1a;KEY实验 开发板&#xff1a;正点原子ESP32S3 例程源码在文章顶部可免费下载&#xff08;审核中…&#xff09; 1. GPIO 输入功能使用 1.1 GPIO 输入模式介绍 在上一文章中提及到 pinMode 函数&#xff0c; 要对…...

Grok发布了Grok Studio 和 Workspaces两个强大的功能。该如何使用?如何使用Grok3 API?

最近Grok又更新了几个功能&#xff1a;Grok Studio 和 Workspaces。 其中 Grok Studio 主要功能包括&#xff1a; 代码执行&#xff1a;在预览标签中运行 HTML 片段、Python、JavaScript 等。 Google Drive 集成&#xff1a;附加并处理 Docs、Sheets、Slides等文件。 协作工…...

学习spark总结

一、Spark Core • 核心功能&#xff1a;基于内存计算的分布式计算框架&#xff0c;提供RDD弹性分布式数据集&#xff0c;支持转换&#xff08;如map、filter&#xff09;和动作&#xff08;如collect、save&#xff09;操作。 • 关键特性&#xff1a;高容错性&#xff08;L…...

LeetCode 24 两两交换链表中的节点

​给你一个链表&#xff0c;两两交换其中相邻的节点&#xff0c;并返回交换后链表的头节点。你必须在不修改节点内部的值的情况下完成本题&#xff08;即&#xff0c;只能进行节点交换&#xff09;。 示例 1&#xff1a; 输入&#xff1a;head [1,2,3,4] 输出&#xff1a;[2,1…...

Qt中的全局函数讲解集合(全)

目录 1.qAbs 2.qAsConst 3.qBound 4.qConstOverload 5.qEnvironmentVariable 6.qExchange 7.qFloatDistance 8.qInstallMessageHandler 在头文件<QtGlobal>中包含了Qt的全局函数&#xff0c;现在就这些全局函数一一详解。 1.qAbs 原型&#xff1a; template &…...

《明解C语言入门篇》读书笔记四

目录 第四章&#xff1a;程序的循环控制 第一节&#xff1a;do语句 do语句 复合语句&#xff08;程序块&#xff09;中的声明 读取一定范围内的值 逻辑非运算符 德摩根定律 德摩根定律 求多个整数的和及平均值 复合赋值运算符 后置递增运算符和后置递减运算符 练习…...

【每日随笔】文化属性 ② ( 高维度信息处理 | 强者思维形成 | 认知重构 | 资源捕获 | 进化路径 )

文章目录 一、高维度信息处理1、" 道 " - 高维度信息2、上士对待 " 道 " 的态度3、中士对待 " 道 " 的态度4、下士对待 " 道 " 的态度 二、形成强者思维1、认知重构 : 质疑本能 -> 信任惯性2、资源捕获 : 远神崇拜 -> 近身模仿3…...

terraform查看资源建的关联关系

一、使用 terraform graph 命令生成依赖关系图 该命令会生成资源间的依赖关系图&#xff08;DOT 格式&#xff09;&#xff0c;需配合 Graphviz 工具可视化。 1. 安装 Graphviz # Ubuntu/Debian sudo apt-get install graphviz# MacOS brew install graphviz 2. 生成并查看…...

win11报错 ‘wmic‘ 不是内部或外部命令,也不是可运行的程序 或批处理文件 的解决方案

方法一&#xff1a;检查环境变量 右键点击“此电脑”或“计算机”: 选择“属性”&#xff0c;然后点击“高级系统设置”。 进入环境变量设置&#xff1a; 在“系统属性”窗口中&#xff0c;点击“环境变量”。 检查Path变量&#xff1a; 在“系统变量”部分&#xff0c;找到并…...

监控易一体化运维:巡检管理,守护企业系统稳定的坚固防线

在数字化浪潮奔涌的当下&#xff0c;企业业务高度依赖信息技术系统&#xff0c;数据流量呈爆发式增长。从日常办公到核心业务运作&#xff0c;每一个环节都离不开稳定可靠的系统支持。在这种背景下&#xff0c;确保系统时刻处于最佳状态的重要性。而监控易的巡检管理功能&#…...

技能点总结

技能点总结 1、多线程导致事物失效的原因1.1 线程间竞争条件1.2 可见性问题1.3 原子性破坏1.4 死锁与活锁1.5 事务隔离级别问题1.5.1 脏读、不可重复读、幻读 1、多线程导致事物失效的原因 多线程环境下事物失效是一个常见问题&#xff0c;主要原因包括以下几个方面&#xff1…...

23种设计模式-行为型模式之命令模式(Java版本)

Java 命令模式&#xff08;Command Pattern&#xff09;详解 &#x1f9e0; 什么是命令模式&#xff1f; 命令模式是一种行为型设计模式&#xff0c;它将请求封装成一个对象&#xff0c;从而使你可以使用不同的请求、队列、日志请求以及支持可撤销的操作。 命令模式将请求的…...

聊一聊接口测试的核心优势及价值

目录 一、核心优势 提前发现问题&#xff0c;降低修复成本 高稳定性与维护效率 全面覆盖复杂场景 性能与安全测试的基石 高度自动化与高效执行 支持微服务与分布式架构 二、核心价值 加速交付周期及降低维护成本 提升质量与用户体验 增强安全性及促进团队间的协作 …...

大学之大:索邦大学2025.4.27

索邦大学&#xff1a;千年学术传承与现代创新的交响 一、前身历史&#xff1a;从巴黎大学到现代索邦的千年脉络 1. 中世纪起源&#xff1a;欧洲学术之母的诞生 索邦大学的历史可追溯至9世纪&#xff0c;其前身巴黎大学被誉为“欧洲大学之母”。1257年&#xff0c;神学家罗伯特…...

python文本合并脚本

做数据集本地化时&#xff0c;用到了文本txt合并问题&#xff0c;用了trae -cn ai辅助测试一下效果&#xff0c;还可以吧&#xff0c;但还是不如人灵光&#xff0c;反复的小错&#xff0c;如果与对成手&#xff0c;应该很简单&#xff0c;这里只做了测试吧&#xff0c;南无阿弥…...

Coding Practice,48天强训(25)

Topic 1&#xff1a;笨小猴(质数判断的几种优化方式&#xff0c;容器使用的取舍&#xff09; 笨小猴__牛客网 #include <bits/stdc.h> using namespace std;bool isPrime(int n) {if(n < 1) return false;if(n < 3) return true; // 2和3是质数if(n % 2 0 …...

pytorch学习使用

1. 基础使用 1.1 基础信息 # 输出 torch 版本 print(torch.__version__)# 判断 cuda 是否可用 print(torch.cuda.is_available()) """ 2.7.0 False """1.2 创建tensor # 创建一个5*3的矩阵&#xff0c;初始值为0. print("-------- empty…...

《AI大模型应知应会100篇》第38篇:大模型与知识图谱结合的应用模式

第38篇&#xff1a;大模型与知识图谱结合的应用模式 摘要 随着大模型&#xff08;如GPT、BERT等&#xff09;和知识图谱技术的快速发展&#xff0c;两者的融合为构建更精准、可解释的智能系统提供了新的可能性。本文将深入探讨大模型与知识图谱的能力互补性、融合架构设计以及…...

TypeScript中的type

在 TypeScript 中&#xff0c;type 是一个非常重要的关键字&#xff0c;用于定义类型别名&#xff08;Type Alias&#xff09;。它允许你为一个类型创建一个新的名字&#xff0c;从而使代码更加简洁和可读。type 可以用来定义基本类型、联合类型、元组类型、对象类型等。以下是…...

数据库3,

describe dt drop table 删表 df delete from删行 usw update set where更新元素 iiv insert into values&#xff08;&#xff09;插入行 sf select from选行 select *选出所有行 &#xff08;ob order by 排序 由低到高 DESC由高到低 order by score&#…...

I-CON: A Unifying Framework for Representation Learning

1&#xff0c;本文关键词 I-Con框架、表征学习、KL散度、无监督分类、对比学习、聚类、降维、信息几何、监督学习、自监督学习、统一框架 2&#xff0c;术语表 术语解释I-Con本文提出的统一表征学习方法&#xff0c;全称Information Contrastive Learning&#xff0c;通过最…...

mybatis首个创建相关步骤

1。先关联数据库&#xff0c;用户&#xff0c;密码&#xff0c;数据库保持一致 2.添加包和类 1.User放和数据库属性一样的 package com.it.springbootmybatis01.pojo;lombok.Data lombok.AllArgsConstructor lombok.NoArgsConstructor public class User {private Integer i…...

vue3子传父——v-model辅助值传递

title: 子组件向父组件传值 date: 2025-04-27 19:11:09 tags: vue3 vue3子传父——v-model辅助值传递 一、子组件发出 1.步骤一创建emit对象 这个对象使用的是defineEmits进行的创建&#xff0c;emit的中文意思又叫发出&#xff0c;你就把他当成一个发出数据的函数方法来用…...

Golang | 向倒排索引上添加删除文档

syntax "proto3";package types;message Keyword {string Field 1; // 属性/类型/名称string Word 2; // 关键词 }message Document {string Id 1; //业务使用的唯一Id&#xff0c;索引上此Id不会重复uint64 IntId 2; //倒排索引上使用的文档id(业务侧不用管这…...

秒杀系统 Kafka 架构进阶优化

文章目录 前言1. Kafka Topic 分区&#xff08;Partition&#xff09;设计2. Kafka 消费者高可用部署&#xff08;Consumer Scaling&#xff09;3. Kafka Redis 多级限流降级设计4. 秒杀链路全链路追踪&#xff08;Tracing&#xff09;5. Kafka 死信队列&#xff08;DLQ&#…...

探索大语言模型(LLM):自监督学习——从数据内在规律中解锁AI的“自学”密码

文章目录 自监督学习&#xff1a;从数据内在规律中解锁AI的“自学”密码一、自监督学习的技术内核&#xff1a;用数据“自问自答”1. 语言建模&#xff1a;预测下一个单词2. 掩码语言模型&#xff08;MLM&#xff09;&#xff1a;填补文本空缺3. 句子顺序预测&#xff08;SOP&a…...

Java自定义注解详解

文章目录 一、注解基础注解的作用Java内置注解二、元注解@Retention@Target@Documented@Inherited@Repeatable(Java 8)三、创建自定义注解基本语法注解属性使用自定义注解四、注解的处理方式1. 编译时处理2. 运行时处理(反射)五、实际应用场景1. 依赖注入框架2. 单元测试框…...

在使用docker创建容器运行报错no main manifest attribute, in app.jar

原因就是在打包的时候pom配置有问题,重新配置再打包 我的dockerfile FROM openjdk:11 MAINTAINER yyf COPY *.jar /app.jar EXPOSE 8082 ENTRYPOINT ["java","-jar","app.jar"] 修改过后&#xff0c;经测试成功了 参考我的pom <?xml ver…...

C#中属性和字段的区别

在C# 中属性和字段的区别 在 C# 中&#xff0c;字段(field)和属性(property)都是用于存储数据的成员&#xff0c;但它们有重要的区别&#xff1a; 主要区别 1. 访问控制 - 字段&#xff1a;直接存储数据的变量 - 属性&#xff1a;通过访问器(get/set)控制对私有字段的…...

分析型数据库入门指南:如何选择适合你的实时分析工具?

一、什么是分析型数据库&#xff1f;为什么需要它&#xff1f; 据Gartner最新报告显示&#xff0c;超过75%的企业现已在关键业务部门部署了专门的分析型数据库&#xff0c;这一比例还在持续增长。 随着数据量呈指数级增长&#xff0c;传统数据库已无法满足复杂分析场景的需求…...

第三方软件检测报告:热门办公软件评估及功能表现如何?

第三方软件检测报告是重要文件。它用于对软件做专业评估。能反映软件各项性能。能反映软件安全性等指标。该报告为软件使用者提供客观参考。该报告为软件开发者提供客观参考。有助于发现问题。还能推动软件改进。 检测概述 本次检测针对一款热门办公软件。采用了多种先进技术…...

GPUStack昇腾Atlas300I duo部署模型DeepSeek-R1【GPUStack实战篇2】

2025年4月25日GPUStack发布了v0.6版本&#xff0c;为昇腾芯片910B&#xff08;1-4&#xff09;和310P3内置了MinIE推理&#xff0c;新增了310P芯片的支持&#xff0c;很感兴趣&#xff0c;所以我马上来捣鼓玩玩看哈 官方文档&#xff1a;https://docs.gpustack.ai/latest/insta…...

2025年邵阳市工程技术研究中心申报流程、条件、奖补

一、邵阳市工程技术研究中心申报条件 &#xff08;一&#xff09;工程技术研究中心主要依托科技型企业组建&#xff0c;依托单位应具有以下条件&#xff1a; 1. 具有较强技术创新意识的领导班子和技术水平高、工程化实践经验丰富的工程技术研发队伍&#xff0c;其中固定人员…...

【Python】Matplotlib:立体永生花绘制

本文代码部分实现参考自CSDN博客&#xff1a;https://blog.csdn.net/ak_bingbing/article/details/135852038 一、引言 Matplotlib作为Python生态中最著名的可视化库&#xff0c;其三维绘图功能可以创造出令人惊叹的数学艺术。本文将通过一个独特的参数方程&#xff0c;结合极…...

Spark Streaming核心编程总结(四)

一、有状态转化操作&#xff1a;UpdateStateByKey 概念与作用 UpdateStateByKey 用于在流式计算中跨批次维护状态&#xff08;如累加统计词频&#xff09;。它允许基于键值对形式的DStream&#xff0c;通过自定义状态更新函数&#xff0c;将历史状态与新数据结合&#xff0c;生…...