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

Qt Widgets模块功能详细说明,基本控件:QLabel(一)

一、基本控件(Widgets)

Qt 提供了丰富的基本控件,如按钮、标签、文本框、复选框、单选按钮、列表框、组合框、菜单、工具栏等。

1、QLabel

1.1、概述 (用途、继承关系)

QLabel 是 Qt 框架中用于显示文本、图像或动画的控件,属于轻量级界面元素,通常用于展示不可编辑的内容。它是用户界面中常见的组件,适用于显示提示信息、标题、图片或超链接等。

  • 显示静态文本(如标题、说明、提示信息)。

  • 显示图像(支持多种格式,如 PNG、JPG、GIF 等)。

  • 作为超链接容器(支持 HTML 格式的超链接)。

  • 用作其他控件的标签(如与输入框搭配的提示标签)。

  • 显示动态内容(如状态提示或动画)。

继承关系:

  • QLabel 继承自 QFrame,因此具备 QFrame 的边框、背景等属性。

  • QFrame 继承自 QWidget,因此 QLabel 也具备 QWidget 的通用属性和方法(如大小、位置、样式等)。

1.2、常用属性 (文本、图像、对齐方式、伙伴控件等)

  • 文本 (text):

    • 属性:text

    • 描述:设置或获取标签显示的文本内容,支持普通文本和富文本(HTML 格式)。

    • 示例:label->setText("Hello, Qt!");

  • 图像 (pixmap):

    • 属性:pixmap

    • 描述:设置标签显示的图像(QPixmap 对象),常用于显示静态图片。

    • 示例:label->setPixmap(QPixmap("image.png"));

  • 对齐方式 (alignment):

    • 属性:alignment

    • 描述:控制文本或图像在标签中的对齐方式,支持 Qt::Alignment 枚举值(如 Qt::AlignLeft、Qt::AlignCenter、Qt::AlignRight、Qt::AlignTop 等)。

    • 示例:label->setAlignment(Qt::AlignCenter);

  • 伙伴控件 (buddy):

    • 属性:buddy

    • 描述:将标签与另一个控件关联,通常用于表单界面中,通过快捷键(如 Alt+字母)激活伙伴控件(如 QLineEdit)。

    • 示例:label->setBuddy(lineEdit);(通常配合 & 符号,如 setText("&Name"))。

  • 自动换行 (wordWrap):

    • 属性:wordWrap

    • 描述:启用后,文本内容会根据标签宽度自动换行。

    • 示例:label->setWordWrap(true);

  • 缩放内容 (scaledContents):

    • 属性:scaledContents

    • 描述:启用后,图像会自动缩放以适应标签大小,可能会导致图像失真。

    • 示例:label->setScaledContents(true);

  • 文本格式 (textFormat):

    • 属性:textFormat

    • 描述:设置文本的格式,支持 Qt::PlainText(纯文本)、Qt::RichText(HTML 格式)或 Qt::AutoText(自动检测)。

    • 示例:label->setTextFormat(Qt::RichText);

  • 边距和缩进 (margin, indent):

    • 属性:margin、indent

    • 描述:控制标签内容与边框的间距(margin)或文本的缩进(indent)。

    • 示例:label->setMargin(10); 或 label->setIndent(5);

#include <QApplication>
#include <QWidget>
#include <QVBoxLayout>
#include <QLabel>
#include <QPixmap>
#include <QLineEdit>int main(int argc, char *argv[]) {QApplication app(argc, argv);QWidget window;QVBoxLayout *layout = new QVBoxLayout(&window);//============================// 1. 文本 (text)//==============================QLabel *textLabel = new QLabel("<b>Hello, Qt!</b> This is a demonstration of QLabel properties.");layout->addWidget(textLabel);//================================// 2. 图像 (pixmap)//================================// 确保你的项目目录下有名为 "image.png" 的图片文件QLabel *pixmapLabel = new QLabel();QPixmap pixmap(":/images/save.png");if (!pixmap.isNull()) {pixmapLabel->setPixmap(pixmap);pixmapLabel->setScaledContents(true); // 配合 scaledContentspixmapLabel->setFixedSize(200, 150); // 设置固定大小以便缩放效果更明显layout->addWidget(pixmapLabel);} else {QLabel *errorLabel = new QLabel("Image file 'image.png' not found!");layout->addWidget(errorLabel);}//================================// 3. 对齐方式 (alignment)//================================QLabel *alignedLabel = new QLabel("This text is centered.");alignedLabel->setAlignment(Qt::AlignCenter);alignedLabel->setStyleSheet("border: 1px solid black;"); // 添加边框以便观察对齐效果layout->addWidget(alignedLabel);//===============================// 4. 伙伴控件 (buddy)//===============================QLabel *buddyLabel = new QLabel("Name(&N):");QLineEdit *lineEdit = new QLineEdit();buddyLabel->setBuddy(lineEdit);QHBoxLayout *buddyLayout = new QHBoxLayout();buddyLayout->addWidget(buddyLabel);buddyLayout->addWidget(lineEdit);layout->addLayout(buddyLayout);//==============================// 5. 自动换行 (wordWrap)//===============================QLabel *wordWrapLabel = new QLabel("This is a long sentence that will wrap automatically if the label is not wide enough.");wordWrapLabel->setWordWrap(true);wordWrapLabel->setStyleSheet("border: 1px solid blue;"); // 添加边框以便观察换行效果layout->addWidget(wordWrapLabel);// 6. 缩放内容 (scaledContents) - 已在 pixmap 示例中包含//====================================// 7. 文本格式 (textFormat)//====================================QLabel *htmlLabel = new QLabel();htmlLabel->setTextFormat(Qt::RichText); // 明确设置为富文本格式htmlLabel->setText("<h1>Rich Text Example</h1><p style='color:red;'>This is <span style='text-decoration: underline;'>HTML</span> formatted text.</p>");layout->addWidget(htmlLabel);QLabel *plainTextLabel = new QLabel();plainTextLabel->setTextFormat(Qt::PlainText); // 设置为纯文本格式,HTML标签会被直接显示plainTextLabel->setText("<h1>Plain Text Example</h1><p>This is <b>not</b> interpreted as HTML.</p>");layout->addWidget(plainTextLabel);//=============================================// 8. 边距和缩进 (margin, indent)//=============================================QLabel *marginIndentLabel = new QLabel("Text with margin and indent.");marginIndentLabel->setMargin(10); // 设置边距marginIndentLabel->setIndent(20); // 设置缩进marginIndentLabel->setStyleSheet("border: 1px solid green; background-color: lightgray;"); // 添加边框和背景以便观察效果layout->addWidget(marginIndentLabel);window.setWindowTitle("QLabel Properties Example");window.show();return app.exec();
}

效果:

1.3、常用方法 (设置文本、图像、清空等)

  • 设置文本:

    • 方法:setText(const QString &)

    • 描述:设置标签的文本内容,支持普通文本或 HTML。

    • 示例:label->setText("<b>Bold Text</b>");

  • 设置图像:

    • 方法:setPixmap(const QPixmap &)

    • 描述:设置标签显示的图像。

    • 示例:label->setPixmap(QPixmap(":/resources/image.png"));

  • 清空内容:

    • 方法:clear()

    • 描述:清除标签的文本或图像内容。

    • 示例:label->clear();

  • 设置对齐方式:

    • 方法:setAlignment(Qt::Alignment)

    • 描述:设置文本或图像的对齐方式。

    • 示例:label->setAlignment(Qt::AlignHCenter | Qt::AlignVCenter);

  • 设置伙伴控件:

    • 方法:setBuddy(QWidget *)

    • 描述:将标签与指定控件关联,用于快捷键导航。

    • 示例:label->setBuddy(lineEdit);

  • 设置超链接:

    • 方法:setOpenExternalLinks(bool)

    • 描述:启用后,点击 HTML 格式的超链接会自动打开外部浏览器。

    • 示例:label->setOpenExternalLinks(true);

  • 设置文本交互标志:

    • 方法:setTextInteractionFlags(Qt::TextInteractionFlags)

    • 描述:控制文本的交互行为,如是否可选择、可编辑等。

    • 示例:label->setTextInteractionFlags(Qt::TextSelectableByMouse);

#include <QApplication>
#include <QWidget>
#include <QVBoxLayout>
#include <QHBoxLayout>
#include <QLabel>
#include <QPixmap>
#include <QLineEdit>
#include <QPushButton>
#include <QUrl>
#include <QDesktopServices>int main(int argc, char *argv[]) {QApplication app(argc, argv);QWidget window;QVBoxLayout *mainLayout = new QVBoxLayout(&window);//=====================================// --- 1. 设置文本 (setText) ---//=====================================QLabel *textLabel = new QLabel();textLabel->setText("Initial Text"); // 初始文本mainLayout->addWidget(textLabel);QPushButton *setTextButton = new QPushButton("Set Bold Text");// 连接按钮的 clicked 信号到 lambda 函数,设置标签文本为粗体 HTMLQObject::connect(setTextButton, &QPushButton::clicked, [=]() {textLabel->setText("<b>Bold Text Set by Button</b>");});mainLayout->addWidget(setTextButton);//====================================// --- 2. 设置图像 (setPixmap) ---//=====================================QLabel *pixmapLabel = new QLabel();// 注意:这里使用资源文件路径 ":/resources/image.png"// 你需要在项目中设置资源文件 (.qrc) 并包含 image.png// 如果没有资源文件,请替换为实际图片文件路径,如 "image.png"QPixmap initialPixmap(":/resources/qt-logo.png"); // 假设你有一个名为 qt-logo.png 的资源if (!initialPixmap.isNull()) {pixmapLabel->setPixmap(initialPixmap.scaledToHeight(50, Qt::SmoothTransformation)); // 设置初始图像并缩放mainLayout->addWidget(pixmapLabel);} else {QLabel *pixmapErrorLabel = new QLabel("Pixmap resource ':/resources/qt-logo.png' not found or invalid!");mainLayout->addWidget(pixmapErrorLabel);}QPushButton *setNewPixmapButton = new QPushButton("Set Another Image");// 你可以准备另一张图片资源或文件QObject::connect(setNewPixmapButton, &QPushButton::clicked, [=]() {QPixmap newPixmap(":/resources/qt-project-logo.png"); // 另一张图片资源if (!newPixmap.isNull()) {pixmapLabel->setPixmap(newPixmap.scaledToHeight(50, Qt::SmoothTransformation));} else {// 处理图片未找到的情况}});mainLayout->addWidget(setNewPixmapButton);//===============================// --- 3. 清空内容 (clear) ---//===============================QLabel *clearableLabel = new QLabel("This text can be cleared.");mainLayout->addWidget(clearableLabel);QPushButton *clearButton = new QPushButton("Clear Label");QObject::connect(clearButton, &QPushButton::clicked, [=]() {clearableLabel->clear(); // 清空标签内容});mainLayout->addWidget(clearButton);//=============================================// --- 4. 设置对齐方式 (setAlignment) ---//=============================================QLabel *alignLabel = new QLabel("Align Me");alignLabel->setStyleSheet("border: 1px solid red;"); // 添加边框方便观察mainLayout->addWidget(alignLabel);QPushButton *alignButton = new QPushButton("Align Center");QObject::connect(alignButton, &QPushButton::clicked, [=]() {alignLabel->setAlignment(Qt::AlignHCenter | Qt::AlignVCenter); // 水平垂直居中});mainLayout->addWidget(alignButton);//============================================// --- 5. 设置伙伴控件 (setBuddy) ---//============================================QLabel *buddyLabel = new QLabel("Address(&A):");QLineEdit *addressLineEdit = new QLineEdit();buddyLabel->setBuddy(addressLineEdit); // 将标签与 LineEdit 关联QHBoxLayout *buddyLayout = new QHBoxLayout();buddyLayout->addWidget(buddyLabel);buddyLayout->addWidget(addressLineEdit);mainLayout->addLayout(buddyLayout);//=====================================================// --- 6. 设置超链接 (setOpenExternalLinks) ---//=====================================================QLabel *linkLabel = new QLabel("<a href=\"https://www.qt.io\">Visit Qt Website</a>");linkLabel->setOpenExternalLinks(true); // 启用外部链接打开mainLayout->addWidget(linkLabel);//=====================================================================// --- 7. 设置文本交互标志 (setTextInteractionFlags) ---//=====================================================================QLabel *interactiveLabel = new QLabel("Selectable Text. You can copy this.");interactiveLabel->setTextInteractionFlags(Qt::TextSelectableByMouse | Qt::TextBrowserInteraction); // 允许鼠标选择和浏览器式交互mainLayout->addWidget(interactiveLabel);window.setWindowTitle("QLabel Methods Example");window.show();return app.exec();
}

效果:

1.4、常用信号 (链接激活、自定义上下文菜单等)

  • 链接激活 (linkActivated):

    • 信号:void linkActivated(const QString &link)

    • 描述:当用户点击标签中的超链接(HTML 格式)时触发,传递链接的 URL。

  • 链接悬停 (linkHovered):

    • 信号:void linkHovered(const QString &link)

    • 描述:当鼠标悬停在超链接上时触发,传递悬停的 URL。

  • 自定义上下文菜单 (customContextMenuRequested):

    • 信号:void customContextMenuRequested(const QPoint &pos)

    • 描述:当用户右键点击标签时触发,可用于弹出自定义上下文菜单。

#include <QApplication>
#include <QWidget>
#include <QVBoxLayout>
#include <QLabel>
#include <QUrl>
#include <QDesktopServices>
#include <QDebug>
#include <QPoint>
#include <QMenu>
#include <QAction>// 为了演示 customContextMenuRequested 信号,我们创建一个简单的 Widget 类
class MyLabelWidget : public QWidget {Q_OBJECTpublic:MyLabelWidget(QWidget *parent = nullptr) : QWidget(parent) {QVBoxLayout *layout = new QVBoxLayout(this);QLabel *interactiveLabel = new QLabel();// 设置支持富文本和超链接interactiveLabel->setTextFormat(Qt::RichText);interactiveLabel->setText("<a href=\"https://www.qt.io\">Visit Qt Website</a> | <a href=\"https://www.example.com\">Example Link</a>");interactiveLabel->setOpenExternalLinks(false); // 我们自己处理 linkActivated// 启用自定义上下文菜单interactiveLabel->setContextMenuPolicy(Qt::CustomContextMenu);// --- 连接信号 ---// 1. 链接激活 (linkActivated)connect(interactiveLabel, &QLabel::linkActivated, this, &MyLabelWidget::handleLinkActivated);// 2. 链接悬停 (linkHovered)connect(interactiveLabel, &QLabel::linkHovered, this, &MyLabelWidget::handleLinkHovered);// 3. 自定义上下文菜单 (customContextMenuRequested)connect(interactiveLabel, &QLabel::customContextMenuRequested, this, &MyLabelWidget::showCustomMenu);layout->addWidget(interactiveLabel);this->setWindowTitle("QLabel Signals Example");}private slots:// 处理链接激活信号的槽void handleLinkActivated(const QString &link) {qDebug() << "Link Activated:" << link;// 使用 QDesktopServices 打开外部链接QDesktopServices::openUrl(QUrl(link));}// 处理链接悬停信号的槽void handleLinkHovered(const QString &link) {qDebug() << "Link Hovered:" << link;// 你可以在这里更新状态栏或执行其他操作}// 处理自定义上下文菜单请求的槽void showCustomMenu(const QPoint &pos) {qDebug() << "Custom Context Menu Requested at:" << pos;// 创建上下文菜单QMenu contextMenu(tr("Context Menu"), this);QAction *action1 = new QAction(tr("Action 1"), this);QAction *action2 = new QAction(tr("Action 2"), this);// 连接菜单项的 triggered 信号到槽connect(action1, &QAction::triggered, [](){ qDebug() << "Action 1 triggered!"; });connect(action2, &QAction::triggered, [](){ qDebug() << "Action 2 triggered!"; });// 将动作添加到菜单contextMenu.addAction(action1);contextMenu.addAction(action2);// 在全局位置显示菜单// pos 是相对于控件左上角的位置,mapToGlobal() 转换为屏幕全局位置contextMenu.exec(mapToGlobal(pos));}
};#include "main.moc" // moc 文件通常在编译时生成int main(int argc, char *argv[]) {QApplication app(argc, argv);MyLabelWidget window;window.show();return app.exec();
}

效果:右击弹出选项按钮

1.6、样式表应用

QLabel 支持 Qt 样式表(QSS),可以自定义外观,如字体、颜色、背景、边框等。

  • 自定义文本样式:

    label->setStyleSheet("QLabel { color: blue; font-size: 16px; font-weight: bold; }");
    • 效果:文本变为蓝色,16像素大小,加粗。

  • 设置背景和边框:

    label->setStyleSheet("QLabel { background-color: #f0f0f0; border: 1px solid black; padding: 5px; }");
    • 效果:标签具有灰色背景、黑色边框和 5 像素内边距。

  • 超链接样式:

    label->setStyleSheet("QLabel { color: #0000FF; }""QLabel:hover { color: #FF0000; text-decoration: underline; }");
    • 效果:超链接默认蓝色,鼠标悬停时变红并加下划线。

  • 圆角图片标签:

    label->setStyleSheet("QLabel { border: 2px solid gray; border-radius: 10px; }");
    label->setPixmap(QPixmap("image.png"));
    • 效果:图片标签具有圆角边框。


待补充...

  • QPushButton:标准按钮,支持点击触发事件。

  • QToolButton:工具栏按钮,支持图标和菜单。

  • QCheckBox:复选框,支持选中/未选中状态。

  • QRadioButton:单选按钮,用于互斥选择。

  • QComboBox:下拉列表框,支持选择或编辑。

  • QLineEdit:单行文本输入框,支持验证和掩码。

  • QTextEdit:多行文本编辑器,支持富文本。

  • QPlainTextEdit:轻量级纯文本编辑器。

  • QSpinBox:整数输入框,带上下箭头。

  • QDoubleSpinBox:浮点数输入框。

  • QSlider:滑动条,用于选择数值范围。

  • QProgressBar:进度条,显示任务进度。

  • QDial:旋钮控件,用于调整数值。

  • QDateEdit、QTimeEdit、QDateTimeEdit:日期、时间或日期时间输入控件。

  • QCalendarWidget:日历控件,用于选择日期。

  • QGroupBox:分组框,用于组织控件。

  • QFrame:框架控件,支持边框和样式。

  • QTabWidget:选项卡控件,支持多页面切换。

  • QStackedWidget:堆叠控件,用于切换显示单个页面。

  • QToolBox:工具箱控件,类似折叠的选项卡。

二、高级控件(Advanced Widgets)

提供更复杂的功能,适合特定场景。

  • QListWidget:列表控件,支持多选和图标。

  • QTreeWidget:树形控件,显示分层数据。

  • QTableWidget:表格控件,支持单元格编辑。

  • QColumnView:列视图,适合分层数据浏览。

  • QDockWidget:可停靠窗口,支持浮动和拖动。

  • QMdiArea、QMdiSubWindow:多文档界面(MDI)区域和子窗口。

  • QTextBrowser:只读富文本浏览器,支持超链接。

  • QGraphicsView、QGraphicsScene:图形视图框架,用于2D图形和自定义场景(与Widgets结合使用)。

  • QOpenGLWidget:OpenGL渲染窗口,支持3D图形。

三、容器类(Containers)

用于组织和布局其他控件。

  • QWidget:所有控件的基类,提供基本窗口功能。

  • QMainWindow:主窗口类,提供菜单栏、工具栏和状态栏。

  • QDialog:对话框基类,支持模态和非模态。

  • QScrollArea:滚动区域,支持大型内容显示。

  • QSplitter:分割器,允许用户调整子控件大小。

  • QTabBar:选项卡栏,与QTabWidget配合使用。

四、布局管理(Layouts)

用于自动排列控件,适应窗口大小变化。

  • QHBoxLayout:水平布局。

  • QVBoxLayout:垂直布局。

  • QGridLayout:网格布局。

  • QFormLayout:表单布局,适合标签-输入对。

  • QStackedLayout:堆叠布局,显示单一控件。

  • QLayout:布局基类,提供通用布局功能。

五、菜单和工具栏(Menus and Toolbars)

用于创建应用程序的导航和交互功能。

  • QMenu:弹出菜单,支持子菜单和动作。

  • QMenuBar:菜单栏,位于主窗口顶部。

  • QToolBar:工具栏,支持可拖动和浮动。

  • QAction:动作抽象,表示菜单项、工具栏按钮等。

六、对话框(Dialogs)

预定义的对话框,用于常见任务。

  • QMessageBox:消息框,显示提示、警告或错误。

  • QInputDialog:输入对话框,获取用户输入。

  • QFileDialog:文件选择对话框。

  • QColorDialog:颜色选择对话框。

  • QFontDialog:字体选择对话框。

  • QProgressDialog:进度对话框,显示任务进度。

  • QErrorMessage:错误消息对话框,支持重复消息过滤。

七、事件和交互

支持用户交互和事件处理。

  • QEvent:事件基类,用于处理鼠标、键盘等事件。

  • QMouseEvent、QKeyEvent:鼠标和键盘事件。

  • QDrag、QDropEvent:拖放支持。

  • QGestureEvent:手势事件(如触摸设备)。

  • QActionEvent:动作触发事件。

八、样式和主题(Styles and Themes)

用于自定义控件外观。

  • QStyle:控件绘制基类,支持自定义样式。

  • QStyleFactory:创建平台特定样式(如Windows、Fusion)。

  • QStyleSheet:通过CSS-like语法自定义控件外观。

  • QPalette:颜色配置,用于控件主题。

九、其他功能

  • QApplication:应用程序类,管理全局设置和事件循环。

  • QClipboard:剪贴板操作,支持文本、图像等。

  • QDesktopWidget:访问屏幕信息(如分辨率)。

  • QSystemTrayIcon:系统托盘图标支持。

  • QStatusBar:状态栏,显示临时信息。

  • QWhatsThis:上下文帮助功能。

  • QToolTip:工具提示支持。

  • QAccessible:辅助功能支持,增强可访问性。

十、模型/视图支持

虽然主要由Qt Model/View模块处理,但Widgets中包含相关控件:

  • QListView、QTreeView、QTableView:基于模型的视图控件,与QAbstractItemModel配合使用。

十一、动画和效果

  • QPropertyAnimation:属性动画,用于控件动态效果。

  • QGraphicsEffect:图形效果,如阴影、模糊(与QGraphicsView结合)。

十二、国际化支持

  • QTranslator:支持界面多语言翻译。

  • QLocale:本地化支持,处理日期、数字格式等。

相关文章:

Qt Widgets模块功能详细说明,基本控件:QLabel(一)

一、基本控件&#xff08;Widgets&#xff09; Qt 提供了丰富的基本控件&#xff0c;如按钮、标签、文本框、复选框、单选按钮、列表框、组合框、菜单、工具栏等。 1、QLabel 1.1、概述 (用途、继承关系) QLabel 是 Qt 框架中用于显示文本、图像或动画的控件&#xff0c;属…...

Ubuntu 安装 squid

1. 安装Squid及工具 Debian/Ubuntu sudo apt update sudo apt install squid apache2-utils CentOS/RHEL sudo yum install squid httpd-tools 2. 创建用户名密码文件 创建密码文件&#xff08;首次使用 -c 参数&#xff0c;后续添加用户省略&#xff09; sudo htpasswd…...

中药药效成分群的合成生物学研究进展-文献精读130

Advances in synthetic biology for producing potent pharmaceutical ingredients of traditional Chinese medicine 中药药效成分群的合成生物学研究进展 摘要 中药是中华民族的文化瑰宝&#xff0c;也是我国在新药创制领域的重要驱动力。许多中药材来源于稀缺物种&#xf…...

芯片生态链深度解析(三):芯片设计篇——数字文明的造物主战争

【开篇&#xff1a;设计——数字文明的“造物主战场”】 当英伟达的H100芯片以576TB/s显存带宽重构AI算力边界&#xff0c;当阿里平头哥倚天710以RISC-V架构实现性能对标ARM的突破&#xff0c;这场围绕芯片设计的全球竞赛早已超越技术本身&#xff0c;成为算法、架构与生态标准…...

Echart地图数据源获取

DataV.GeoAtlas地理小工具系列 选择需要的区域地图,选中后输出即可: 地图钻取代码 <!DOCTYPE html> <html lang="en"> <head><meta charset="UTF-8"><title>map</title><style>html, body, #map{margin: 0;…...

【C++ - 仿mudou库one thread one loop式高并发服务器实现】

文章目录 项目介绍项目模块和服务器主要设计模式项目主要流程前置知识1.bind函数2.定时器任务TimerTask和时间轮思想TimerWheel3.正则表达式4.通用型容器Any类 服务器设计模式1&#xff09;单Reactor单线程模式2&#xff09;单Reactor多线程模式3&#xff09;多Reactor多线程模…...

本地缓存更新方案探索

文章目录 本地缓存更新方案探索1 背景2 方案探索2.1 初始化2.2 实时更新2.2.1 长轮询2.2.1.1 client2.2.2.2 server 本地缓存更新方案探索 1 背景 大家在工作中是否遇到过某些业务数据需要频繁使用&#xff0c;但是数据量不大的情况&#xff0c;一般就是几十条甚至几百条这种…...

Java—异常体系

Java的异常体系是Java语言中用于处理程序运行过程中可能出现的错误的机制。通过异常处理&#xff0c;程序可以在遇到问题时自动反馈&#xff0c;从而避免程序崩溃。Java异常体系中包含两大类&#xff1a;错误(Error)和异常(Exception)。 一、错误&#xff08;Error&#xff09…...

深度学习(第3章——亚像素卷积和可形变卷积)

前言&#xff1a; 本章介绍了计算机识别超分领域和目标检测领域中常常使用的两种卷积变体&#xff0c;亚像素卷积&#xff08;Subpixel Convolution&#xff09;和可形变卷积&#xff08;Deformable Convolution&#xff09;&#xff0c;并给出对应pytorch的使用。 亚像素卷积…...

5.15 学习日志

1.SST&#xff08;总平方和&#xff09;、SSR&#xff08;回归平方和&#xff09;、SSE&#xff08;残差平方和&#xff09;之间的关系。 在使用线性回归模型时&#xff0c;经常提到的统计量MSE&#xff08;Mean Squared Error、均方误差&#xff09;&#xff1a;是 SSE 的平均…...

重排序模型解读:gte-multilingual-reranker-base 首个GTE系列重排模型诞生

模型介绍 gte-multilingual-reranker-base 模型是 GTE 模型系列中的第一个 reranker 模型&#xff0c;由阿里巴巴团队开发。 模型特征&#xff1a; Model Size: 306MMax Input Tokens: 8192 benchmark 关键属性&#xff1a; 高性能&#xff1a;与类似大小的 reranker 模型…...

计算机发展的历程

计算机系统的概述 一, 计算机系统的定义 计算机系统的概念 计算机系统 硬件 软件 硬件的概念 计算机的实体, 如主机, 外设等 计算机系统的物理基础 决定了计算机系统的天花板瓶颈 软件的概念 由具有各类特殊功能的程序组成 决定了把硬件的性能发挥到什么程度 软件的分类…...

【通用智能体】Search Tools:Open Deep Research 项目实战指南

Open Deep Research 项目实战指南 一、项目运行方式&#xff08;一&#xff09;运行环境要求&#xff08;二&#xff09;运行方式&#xff08;三&#xff09;传统本地运行&#xff08;四&#xff09;Docker 容器运行 二、操作步骤&#xff08;一&#xff09;使用搜索功能&#…...

nodejs 文件的复制

在 Node.js 中&#xff0c;文件复制操作可以通过多种方式实现&#xff0c;具体取决于文件大小、性能需求以及是否需要保留文件元数据&#xff08;如权限、时间戳等&#xff09;。以下是几种常见的文件复制方法及其示例代码&#xff1a; 1. 使用 fs.copyFile&#xff08;简单高…...

GO语言学习(三)

GO语言学习&#xff08;三&#xff09; GO语言的独特接口可以实现内容和面向对象组织的更加方便&#xff0c;我们从这里来详细的讲解接口&#xff0c;让大家感受一下interface的魅力 interface定义 首先接口是一组方法签名的组合&#xff0c;我们通过接口来实现定义对象的一…...

高频面试题(含笔试高频算法整理)基本总结回顾61

干货分享&#xff0c;感谢您的阅读&#xff01; &#xff08;暂存篇---后续会删除&#xff0c;完整版和持续更新见高频面试题基本总结回顾&#xff08;含笔试高频算法整理&#xff09;&#xff09; 备注&#xff1a;引用请标注出处&#xff0c;同时存在的问题请在相关博客留言…...

C++:C++内存管理

C 内存分区 C 内存分为 5 个主要区域&#xff1a; 栈 (Stack)&#xff1a;存储局部变量、函数参数和返回地址。由编译器自动分配和释放&#xff0c;效率高但空间有限。 堆 (Heap)&#xff1a;动态分配的内存区域&#xff0c;需手动管理&#xff08;new/delete 或 malloc/free…...

目标跟踪相关综述文章

文章年份会议/引用量IFObject tracking:A survery20067618Object Tracking Methods:A Review2019554Multiple object tracking: A literature review20201294Deep learning for multiple object tracking: a survey2019145Deep Learning for Visual Tracking:A Comprehensive S…...

JavaScript【6】事件

1.概述&#xff1a; 在 JavaScript 中&#xff0c;事件&#xff08;Event&#xff09;是浏览器或 DOM&#xff08;文档对象模型&#xff09;与 JavaScript 代码之间交互的一种机制。它代表了在浏览器环境中发生的特定行为或者动作&#xff0c;比如用户点击鼠标、敲击键盘、页面…...

Python训练打卡Day26

函数专题1&#xff1a;函数定义与参数 知识点回顾&#xff1a; 函数的定义变量作用域&#xff1a;局部变量和全局变量函数的参数类型&#xff1a;位置参数、默认参数、不定参数传递参数的手段&#xff1a;关键词参数传递参数的顺序&#xff1a;同时出现三种参数类型时 到目前为…...

通俗版解释CPU、核心、进程、线程、协程的定义及关系

通俗版解释&#xff08;比喻法&#xff09; 1. CPU 和核心 CPU 一个工厂&#xff08;负责干活的总部&#xff09;。核心 工厂里的车间&#xff08;比如工厂有4个车间&#xff0c;就能同时处理4个任务&#xff09;。 2. 进程 进程 一家独立运营的公司&#xff08;比如一家…...

微积分基本规则及示例解析

微积分中的基本规则是构成微积分理论和应用的基石。以下是一些微积分中的基本规则&#xff0c;我将用简单的例子来解释它们&#xff0c;以便小学生也能理解。 1. **极限规则**&#xff1a; - 常数的极限&#xff1a;\(\lim_{x \to a} c c\) - 例如&#xff0c;\(\lim…...

Baklib知识中台构建企业智能服务新引擎

知识中台构建智能服务新范式 随着企业数字化转型进入深水区&#xff0c;传统知识管理模式的局限性日益显现——分散的文档系统、低效的信息检索以及割裂的业务场景&#xff0c;严重制约着组织效能的释放。在此背景下&#xff0c;Baklib提出的知识中台解决方案&#xff0c;通过…...

Python实例题:Python百行制作登陆系统

目录 Python实例题 题目 python-login-systemPython 百行登录系统脚本 代码解释 用户数据库&#xff1a; 注册功能&#xff1a; 登录功能&#xff1a; 主程序&#xff1a; 运行思路 注意事项 Python实例题 题目 Python百行制作登陆系统 python-login-systemPython…...

Java求职面试:从核心技术到大数据与AI的场景应用

面试场景&#xff1a; 在某互联网大厂的面试间&#xff0c;一位严肃的面试官正准备对面前的求职者谢飞机进行技术面试。谢飞机虽然有些紧张&#xff0c;但他相信凭借自己的机智和幽默能够顺利通过。 第一轮提问&#xff1a;核心语言与平台的基础问题 面试官&#xff1a;“谢…...

系统架构设计(六):面向对象设计

核心概念 概念含义说明对象&#xff08;Object&#xff09;现实世界事物的抽象表示&#xff0c;包含属性&#xff08;状态&#xff09;和方法&#xff08;行为&#xff09;类&#xff08;Class&#xff09;一类对象的抽象模板继承&#xff08;Inheritance&#xff09;子类继承…...

国内AWS CloudFront与S3私有桶集成指南:安全访问静态内容

在现代web应用架构中,将静态内容存储在Amazon S3中并通过CloudFront分发是一种常见且高效的做法。本指南将详细介绍如何创建私有S3桶,配置CloudFront分配,并使用Origin Access Identity (OAI)来确保安全访问。 步骤1:创建S3桶 首先,我们需要创建一个名为"b-static&…...

MATLAB进行深度学习网络训练

文章目录 前言环境配置一、环境部署二、数据准备三、训练配置与执行四、模型评估与优化五、高级技巧六、实战案例&#xff1a;COVID-19 肺部 CT 图像分类 前言 在 MATLAB 中进行深度学习网络训练主要分为数据准备、网络构建、训练配置和模型评估四个核心步骤。以下是详细教程&…...

jvm安全点(三)openjdk17 c++源码垃圾回收之安全点结束,唤醒线程

1. VMThread::inner_execute() - 触发安全点​​ cpp 复制 void VMThread::inner_execute(VM_Operation* op) { if (op->evaluate_at_safepoint()) { SafepointSynchronize::begin(); // 进入安全点&#xff0c;阻塞所有线程 // ...执行GC等操作... SafepointSynchronize::…...

局部放大maya的视图HUD文字大小的方法

一、问题描述&#xff1a; 有网友问&#xff1a;有办法局部放大maya的字体吗比如hud中currenttime打开之后画面右下角有个frame 想放大一下能做到吗&#xff1f; 在 Maya 中&#xff0c;可以通过自定义 HUD&#xff08;Heads-Up Display&#xff09;元素的字体大小来局部放大特…...

Vue.js 教学第三章:模板语法精讲,插值与 v-bind 指令

Vue.js 模板语法精讲:插值与 v-bind 指令 在 Vue.js 开发中,模板语法是构建动态用户界面的核心。本文将深入讲解两大基础模板语法:插值({{ }})和 v-bind 指令,通过大量实例帮助你掌握这些关键概念。 一、插值语法:双花括号的魔法 1.1 基础文本插值 双花括号是最简单的…...

系统架构设计师案例分析题——软件架构设计篇

重中之重&#xff0c;本题争取拿下25满分~ 目录 一.核心知识 1.什么是架构风格 2.RUP的9个核心工作流 3.企业应用集成方式 4.软件质量属性 5.SySML系统建模语言9种图 6.云计算架构 7.中间件 8.构件、连接件、软件重用 9.层次型架构的缺点 10.架构开发方法ADM 11.微…...

系统架构设计(十一):架构风格总结2

架构风格汇总 架构风格核心特点应用场景分层架构&#xff08;Layered&#xff09;将系统划分为多个层次&#xff0c;每层只依赖于下一层企业应用、MIS 系统、三层架构客户端-服务器&#xff08;C/S&#xff09;分为服务端与客户端&#xff0c;服务集中&#xff0c;客户端请求数…...

泛微对接金蝶云星空实战案例技术分享

前言 在企业信息化建设中&#xff0c;OA系统与ERP系统对接往往是一个复杂而关键的环节。OA系统通常具有高度的自定义性&#xff0c;其基础资料和单据可能与ERP系统存在字段不一致等问题。同时&#xff0c;OA系统涉及审批流程及流程发起方定义&#xff0c;增加了对接的复杂性。…...

Predict Podcast Listening Time-(回归+特征工程+xgb)

Predict Podcast Listening Time 题意&#xff1a; 给你没个播客的信息&#xff0c;让你预测观众的聆听时间。 数据处理&#xff1a; 1.构造新特征收听效率进行分组 2.对数据异常处理 3.对时间情绪等进行数值编码 4.求某特征值求多项式特征 5.生成特征组合 6.交叉验证并enc…...

Java并发编程的挑战:从理论到实战

在现代软件开发中,随着多核处理器的普及和系统性能要求的提高,并发编程已经成为Java开发者必须掌握的核心技能之一。然而,Java并发编程不仅仅是“创建多个线程”那么简单,它涉及到线程安全、资源竞争、死锁、通信机制、性能优化等多个复杂问题。 本文将围绕Java并发编程中…...

大麦(Hordeum vulgare)中 BAHD 超家族酰基转移酶-文献精读129

Systematic identification and expression profiles of the BAHD superfamily acyltransferases in barley (Hordeum vulgare) 系统鉴定与大麦&#xff08;Hordeum vulgare&#xff09;中 BAHD 超家族酰基转移酶的表达谱分析 摘要 BAHD 超家族酰基转移酶在植物中催化和调控次…...

信任的进阶:LEI与vLEI协同推进跨境支付体系变革

在全球经济版图加速重构的背景下&#xff0c;跨境支付体系正经历着前所未有的变革。2022年全球跨境支付规模突破150万亿美元&#xff0c;但平均交易成本仍高达6.04%&#xff0c;支付延迟超过2.7天。 这种低效率背后&#xff0c;隐藏着复杂的身份识别困境&#xff1a;超过40%的…...

当语言模型学会犯错和改正:搜索流(SoS)方法解析

引言 语言模型的能力日新月异&#xff0c;但它们在执行复杂规划任务时仍面临着明显的局限。这是因为大多数训练数据只展示了最终的"正确答案"&#xff0c;而非解决问题的完整过程。想象一下&#xff0c;如果我们只能看到数学题的最终答案&#xff0c;而从不知道解题…...

Centos7.9同步外网yum源至内网

curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo curl -o /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo yum makecache yum repolist安装软件 yum install -y yum-utils createrepo # yum-utils包含re…...

OTA与boot loader

OTA指的是无线升级&#xff0c;通常用于更新设备的固件或软件&#xff0c;用户不用手动操作&#xff0c;非常方便。而bootloader是启动时加载操作系统的程序&#xff0c;负责硬件初始化和启动流程。 首先&#xff0c;OTA是如何通过bootloader工作的。OTA下载更新包后&#xff0…...

【目标检测】【Transformer】Swin Transformer

Swin Transformer&#xff1a; Hierarchical Vision Transformer using Shifted Windows Swin Transformer&#xff1a;基于移位窗口的分层视觉Transformer CVPR 2021 0.论文摘要 本文提出了一种新型视觉Transformer——Swin Transformer&#xff0c;其可作为计算机视觉领域的…...

Class类的详细说明

Class类的详细说明 Class 类是Java反射机制的核心&#xff0c;每个Java类或接口在JVM中都有一个对应的 Class 对象&#xff0c;用于表示该类的元数据&#xff08;如类名、方法、字段、构造器等&#xff09;。以下是其核心知识点&#xff1a; 1. 获取Class对象的三种方式 方式…...

电商项目-品牌管理微服务开发

一、功能分析 品牌管理微服务包括&#xff1a; &#xff08;1&#xff09;查询全部列表数据 &#xff08;2&#xff09;根据ID查询实体数据 &#xff08;3&#xff09;增加 &#xff08;4&#xff09;修改 &#xff08;5&#xff09;删除 &#xff08;6&#xff09;分页…...

【Linux网络编程】Socket编程:协议理论入门

前言 首先&#xff0c;在学习Socket编程之前&#xff0c;我们应该了解关于网络的一些基本概念&#xff0c;虽然说没有这些理论概念并不影响编程&#xff0c;但是以后工作时扯扯皮还是有用的。而且&#xff0c;一个开发网络程序的人不知道网络领域的一些基本概念&#xff0c;这说…...

Redis——缓存雪崩、击穿、穿透

缓存雪崩 大量缓存数据在同一时间过期或者Redis故障宕机时&#xff0c;若此时有大量请求&#xff0c;都会直接访问到数据库&#xff0c;导致数据库压力倍增甚至宕机。 大量数据同时过期解决方案&#xff1a; 1、均匀设置过期时间&#xff1a; 设置过期时间的时候可以追加一…...

基于QT和FFmpeg实现自己的视频播放器FFMediaPlayer(一)——项目总览

在音视频开发的学习过程中&#xff0c;开发一款视频播放器是FFmpeg进阶的最好实战方法。本文将基于 QT 和 FFmpeg 着手实现自定义视频播放器 FFMediaPlayer&#xff0c;作为系列文章的开篇&#xff0c;我们先来整体了解项目的设计思路、架构与配置。 一、软件设计五大原则​ …...

panda机械臂的正逆运动学分析与仿真

文章目录 前言Panda机械臂的DH参数法建模正运动学逆运动学误差函数雅可比矩阵高斯-牛顿法&#xff08;Gauss-Newton&#xff09; 参考代码获取 前言 机械臂的位置运动学分析是机器人控制与轨迹规划的核心基础&#xff0c;其研究内容主要分为正运动学&#xff08;Forward Kinem…...

网络切片:给用户体验做“私人定制”的秘密武器

网络切片:给用户体验做“私人定制”的秘密武器 咱们平时用手机上网、看视频、玩游戏,网络体验好不好,一半都靠运营商给的网络质量。可你有没有想过,为什么同一张网络,有的人能流畅刷视频,有的人却卡得要命?这其实就是网络资源分配的问题——不同应用、不同用户的需求差异…...

HarmonyOS NEXT~鸿蒙应用上架指南:HarmonyOS应用发布全流程解析

HarmonyOS NEXT&#xff5e;鸿蒙应用上架指南&#xff1a;HarmonyOS应用发布全流程解析 引言 随着华为鸿蒙操作系统(HarmonyOS)生态的快速发展&#xff0c;越来越多的开发者希望将自己的应用上架到鸿蒙应用市场。本文将详细介绍鸿蒙应用上架的全流程&#xff0c;帮助开发者顺…...