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

Qt界面卡住变慢的解决方法

本质原因: 当Qt界面出现卡顿或无响应时,通常是因为主线程(GUI线程)被耗时操作阻塞。
完全忘了。。。


Qt Creater解决方法

1. 定位耗时操作

目标:找到阻塞主线程的代码段。

  • 方法
    • 使用QElapsedTimer测量代码执行时间。
    • 在可能耗时的操作前后添加日志输出。
#include <QElapsedTimer>QElapsedTimer timer;
timer.start();
// 怀疑耗时的代码段
qDebug() << "Time taken:" << timer.elapsed() << "ms";
  • 工具
    • Qt Creator的性能分析器(Debug模式运行,点击 Analyze > QML Profiler)。
    • 第三方工具(如Valgrind、Intel VTune)。

2. 将耗时操作移至子线程

目标:释放主线程,确保GUI响应。

  • 方案选择
    • QThread + 信号槽:适合长期运行的后台任务。
    • QtConcurrent:适合并行处理批量数据。
    • QThreadPool + QRunnable:适合短生命周期任务。
示例:使用QtConcurrent处理数据
#include <QtConcurrent/QtConcurrent>void processData(const QVector<int>& data) {// 耗时操作(如排序、计算)
}// 主线程中启动任务
QFuture<void> future = QtConcurrent::run([=]() {processData(largeData);
});// 可选:监控任务完成
QFutureWatcher<void> watcher;
connect(&watcher, &QFutureWatcher<void>::finished, []() {qDebug() << "Processing done!";
});
watcher.setFuture(future);
示例:使用QThread子类
class WorkerThread : public QThread {Q_OBJECTvoid run() override {// 执行耗时操作(此处不能直接操作UI)emit resultReady(result);}
signals:void resultReady(const QString& result);
};// 主线程中启动线程
WorkerThread *thread = new WorkerThread;
connect(thread, &WorkerThread::resultReady, this, &MainWindow::updateUI);
connect(thread, &WorkerThread::finished, thread, &QObject::deleteLater);
thread->start();

3. 正确使用线程间通信

规则:子线程不能直接操作UI组件,必须通过信号槽传递数据。

  • 错误示例
// 子线程中直接修改UI(导致崩溃或卡顿)
void WorkerThread::run() {label->setText("Done"); // ❌ 危险操作!
}
  • 正确做法
// 子线程发送信号通知主线程
void WorkerThread::run() {QString result = doWork();emit resultReady(result); // ✅ 通过信号传递结果
}// 主线程连接信号更新UI
connect(workerThread, &WorkerThread::resultReady, this, [this](const QString& text) {ui->label->setText(text); // ✅ 主线程安全更新
});

4. 优化主线程事件循环

目标:避免主线程处理过多任务。

  • 禁用非必要UI控件:长时间操作前禁用按钮,防止用户重复点击。
ui->startButton->setEnabled(false);
QCoreApplication::processEvents(); // 立即更新UI状态
// 执行快速操作(如保存状态)
ui->startButton->setEnabled(true);
  • 分块处理任务:将大任务拆分为小片段,交替处理事件。
for (int i = 0; i < totalItems; ++i) {processItem(i);if (i % 100 == 0) {在·QCoreApplication::processEvents(); // 允许处理点击事件}
}

5. 减少界面渲染负担

目标:降低UI组件更新频率。

  • 合并更新:批量处理数据后再刷新界面。
// 错误:每次循环都更新UI
for (const auto& item : items) {ui->listWidget->addItem(item); // ❌ 频繁触发重绘
}// 正确:先缓存数据,最后一次性添加
QList<QListWidgetItem*> itemList;
for (const auto& item : items) {itemList.append(new QListWidgetItem(item));
}
ui->listWidget->addItems(itemList); // ✅ 仅触发一次重绘
  • 使用QAbstractItemModel延迟刷新
// 自定义模型,通过beginResetModel/endResetModel批量更新
model->beginResetModel();
// 修改数据...
model->endResetModel();

6. 检查资源竞争和死锁

目标:避免多线程访问共享资源导致阻塞。

  • 使用互斥锁(QMutex)
QMutex mutex;
void ThreadA::run() {mutex.lock();// 访问共享资源mutex.unlock();
}void ThreadB::run() {QMutexLocker locker(&mutex); // 自动解锁// 访问共享资源
}
  • 避免锁嵌套:确保锁的获取顺序一致,防止死锁。

7. 启用Qt的绘图优化

目标:加速控件渲染。

  • 启用属性
// 在窗口构造函数中设置
setAttribute(Qt::WA_StaticContents); // 静态内容优化
setAttribute(Qt::WA_OpaquePaintEvent); // 不透明控件避免重绘
  • 使用QOpenGLWidget替代QWidget
// 对需要高性能绘制的控件(如图表)使用OpenGL加速
QOpenGLWidget *glWidget = new QOpenGLWidget(parent);

8. 配置Qt事件循环参数

目标:调整事件处理粒度。

  • 设置事件循环超时
// 在长时间任务中定期处理事件
while (isRunning) {doChunkOfWork();QCoreApplication::processEvents(QEventLoop::AllEvents, 100); // 最多阻塞100ms
}

总结:排查流程

  1. 定位阻塞点:通过日志或分析工具找到耗时操作。
  2. 移出主线程:使用QThread、QtConcurrent或线程池。
  3. 安全更新UI:通过信号槽传递结果,禁止子线程直接操作控件。
  4. 优化渲染:合并更新、启用绘图加速。
  5. 检查线程安全:使用锁保护共享资源,避免死锁。

若问题依旧存在,可使用Valgrind检测内存泄漏(Linux系统下)。

Visual Studio + Qt插件下

在Visual Studio中使用Qt开发时,若界面出现卡顿或响应缓慢,可以通过以下步骤结合Visual Studio的性能分析工具和Qt插件进行诊断与优化:


1. 启用调试符号和优化配置

目标:确保项目配置正确,便于分析性能问题。

  • 步骤
    1. 在Visual Studio中打开项目,检查右上角的解决方案配置是否为Debug(调试)或RelWithDebInfo(带调试信息的发布模式)。
    2. 右键项目 → 属性Qt Project Settings → 确认Qt模块和版本正确。
    3. C/C++优化中,调试模式设为/Od(禁用优化),发布模式设为/O2(最大化速度)。

2. 使用Visual Studio性能探查器(Performance Profiler)

目标:定位CPU和内存瓶颈。

  • 操作步骤

    1. 点击菜单栏 调试性能探查器(或按Alt+F2)。
    2. 选择 CPU使用率内存使用量,点击开始运行程序。
    3. 复现界面卡顿操作后停止分析,查看热点函数和内存分配。
  • 关键指标

    • CPU占用率:找到占用率高的函数(如主线程中的耗时循环)。
    • 内存泄漏:检查new/delete不匹配或未释放的Qt对象。

3. 检查主线程阻塞

目标:识别主线程中的耗时操作。

  • 方法
    1. 在代码中插入断点,运行程序至卡顿时暂停(暂停按钮或Ctrl+Alt+Break)。
    2. 打开 调试窗口并行堆栈,查看主线程调用栈。
    3. 若主线程停留在某个函数(如文件读写、密集计算),需将其移至子线程。

示例
主线程中直接执行文件读取导致卡顿:

// ❌ 错误代码(阻塞主线程)
void MainWindow::onButtonClick() {QFile file("large_data.bin");file.open(QIODevice::ReadOnly);QByteArray data = file.readAll(); // 卡顿点// ...
}

修复
使用QtConcurrent异步读取:

// ✅ 正确做法(子线程处理)
void MainWindow::onButtonClick() {QFuture<QByteArray> future = QtConcurrent::run([]() {QFile file("large_data.bin");file.open(QIODevice::ReadOnly);return file.readAll();});// 通过QFutureWatcher接收结果QFutureWatcher<QByteArray> *watcher = new QFutureWatcher<QByteArray>(this);connect(watcher, &QFutureWatcher<QByteArray>::finished, [this, watcher]() {QByteArray data = watcher->result();// 更新UIwatcher->deleteLater();});watcher->setFuture(future);
}

4. 使用Qt VS Tools的UI调试功能

目标:检查界面元素的事件处理效率。

  • 步骤
    1. 安装并启用 Qt VS Tools 插件(确保最新版本)。
    2. 右键项目 → QtLaunch Qt Designer,检查UI文件是否存在复杂布局或嵌套控件。
    3. 在代码中使用qDebug()输出界面事件耗时:
// 在事件处理函数中添加计时
void MainWindow::paintEvent(QPaintEvent *event) {QElapsedTimer timer;timer.start();QMainWindow::paintEvent(event);qDebug() << "Paint time:" << timer.elapsed() << "ms";
}

5. 检测内存泄漏

目标:通过Visual Studio诊断工具查找未释放资源。

  • 操作
    1. 运行程序并复现卡顿。
    2. 点击 调试全部中断暂停程序。
    3. 打开 诊断工具 窗口,选择 内存使用量,点击拍摄快照
    4. 比较多次快照,查看内存增长点(如重复创建的QWidget或未释放的QObject)。

示例修复
避免重复创建控件:

// ❌ 错误:每次点击都创建新控件
void MainWindow::onButtonClick() {QLabel *label = new QLabel("New Label", this);label->show();
}// ✅ 正确:复用已有控件
void MainWindow::onButtonClick() {if (!m_label) {m_label = new QLabel("Reusable Label", this);}m_label->show();
}

6. 优化信号槽连接

目标:减少不必要的跨线程通信或高频信号。

  • 常见问题
    • 高频信号阻塞主线程:如进度条频繁更新。
    • 跨线程信号使用默认队列连接:导致序列化开销。

修复示例
限制进度更新频率:

// 使用定时器合并进度更新
QTimer m_throttleTimer;
void WorkerThread::run() {for (int i = 0; i <= 100; ++i) {doWork();if (i % 10 == 0) { // 每10%更新一次emit progressUpdated(i);}}
}

7. 配置多线程编译

目标:减少生成时间,间接优化运行时性能。

  • 步骤
    1. 右键项目 → 属性C/C++常规多处理器编译 → 选择是 (/MP)
    2. 链接器常规启用增量链接 → 选择否 (/INCREMENTAL:NO)(发布模式)。

8. 检查第三方库冲突

目标:排除插件或库的兼容性问题。

  • 操作
    1. 暂时禁用所有非必要插件(如Qt VS Tools外的其他扩展)。
    2. 解决方案管理器 中移除第三方库依赖,逐步添加以定位问题。

总结:关键流程

  1. 性能分析:使用VS性能探查器定位CPU/内存瓶颈。
  2. 主线程优化:将耗时操作移至QtConcurrentQThreadPool
  3. 内存管理:通过诊断工具检测泄漏,复用对象。
  4. 信号槽优化:减少高频信号,使用合并更新。
  5. UI调试:检查复杂布局和渲染耗时。

若仍无法解决,可尝试:

  • 更新Qt和Visual Studio至最新版本。
  • 在纯净环境中测试(新建项目,逐步移植代码)。
  • 使用QCoreApplication::processEvents()强制处理事件循环(谨慎使用)。

相关文章:

Qt界面卡住变慢的解决方法

本质原因: 当Qt界面出现卡顿或无响应时&#xff0c;通常是因为主线程&#xff08;GUI线程&#xff09;被耗时操作阻塞。 完全忘了。。。 Qt Creater解决方法 1. 定位耗时操作 目标&#xff1a;找到阻塞主线程的代码段。 方法&#xff1a; 使用QElapsedTimer测量代码执行时间…...

Flutter的原理及美团的实践(下)

Flutter的原理及性能实践 Flutter和原生性能对比 虽然使用原生实现&#xff08;左&#xff09;和Flutter实现&#xff08;右&#xff09;的全品类页面在实际使用过程中几乎分辨不出来&#xff1a; 但是我们还需要在性能方面有一个比较明确的数据对比。 我们最关心的两个页面…...

时序预测 | Matlab实现基于VMD-WOA-ELM和VMD-ELM变分模态分解结合鲸鱼算法优化极限学习机时间序列预测

时序预测 | Matlab实现基于VMD-WOA-ELM和VMD-ELM变分模态分解结合鲸鱼算法优化极限学习机时间序列预测 目录 时序预测 | Matlab实现基于VMD-WOA-ELM和VMD-ELM变分模态分解结合鲸鱼算法优化极限学习机时间序列预测预测效果基本介绍程序设计参考资料 预测效果 基本介绍 1.Matlab…...

【云安全】云原生- K8S IngressNightmare CVE-2025-1974(漏洞复现完整教程)

漏洞原理 CVE-2025-1974: The IngressNightmare in Kubernetes | Wiz Blog 分两方面&#xff1a; a、配置注入过程 构造一个恶意的Ingress资源&#xff0c;其中注入ssl_engine指令指向恶意共享库向准入控制器验证端点&#xff08;AdmissionWebhook&#xff09;发送Admissio…...

Tomcat与Servlet(2)

上篇文章&#xff1a; Tomcat与Servlethttps://blog.csdn.net/sniper_fandc/article/details/147278469?fromshareblogdetail&sharetypeblogdetail&sharerId147278469&sharereferPC&sharesourcesniper_fandc&sharefromfrom_link 上篇文章介绍了To…...

在高数据速度下确保信号完整性的 10 个关键策略

随着越来越多的传感器连接到系统&#xff0c;需要快速、可靠和安全地传输更多数据&#xff0c;对带宽和设计复杂性的需求也在增加。优先考虑的是确保从 A 发送到 B 的信号不会失真。 确保信号完整性 对于设计依赖于持续准确数据流的数据密集型应用程序的工程师来说&#xff0c…...

2025华中杯数学建模B题完整分析论文(共42页)(含模型、数据、可运行代码)

2025华中杯大学生数学建模B题完整分析论文 目录 一、问题重述 二、问题分析 三、模型假设 四、 模型建立与求解 4.1问题1 4.1.1问题1解析 4.1.2问题1模型建立 4.1.3问题1样例代码&#xff08;仅供参考&#xff09; 4.1.4问题1求解结果&#xff08;仅供参考&am…...

UE5 自带的视频播放器

文章目录 文件夹准备添加一个文件媒体源方法1方法2 添加一个视频播放器播放视频直接播放使用网格体播放使用UI播放 播放视频的音乐媒体播放器常用的节点设置循环是用绝对路径播放视频&#xff0c;视频无需导入注册播放完成事件 文件夹准备 视频必须被放在Content/Moveis文件下…...

是德科技E5080B网络分析仪深度评测:5G/车载雷达测试实战指南

是德科技E5080B网络分析仪&#xff08;ENA系列&#xff09;是一款高性能射频测试仪器&#xff0c;广泛应用于通信、航空航天、半导体等领域&#xff0c;以下是其核心功能详解&#xff1a; 一、核心测试功能 多参数网络分析 S参数测量&#xff1a;支持全双端口S参数测试&#xf…...

javaSE————网络编程套接字

网络编程套接字~~~~~ 好久没更新啦&#xff0c;蓝桥杯爆掉了&#xff0c;从今天开始爆更嗷&#xff1b; 1&#xff0c;网络编程基础 为啥要有网络编程呢&#xff0c;我们进行网络通信就是为了获取丰富的网络资源&#xff0c;说实话真的很神奇&#xff0c;想想我们躺在床上&a…...

力扣349 == 两个数组交集的两种解法

目录 解法一&#xff1a;利用 Set 特性高效去重 解法二&#xff1a;双重遍历与 Set 去重 方法对比与总结 关键点总结 题目描述 给定两个整数数组 nums1 和 nums2&#xff0c;要求返回它们的交集。输出结果中的每个元素必须是唯一的&#xff0c;且顺序不限。 示例 输入&…...

笔试专题(十)

文章目录 对称之美&#xff08;双指针&#xff09;题解代码 连续子数组最大和&#xff08;线性dp&#xff09;题解代码 最长回文子序列&#xff08;区间dp&#xff09;题解代码 对称之美&#xff08;双指针&#xff09; 题目链接 题解 1. 双指针 2. 用left标记左边的字符串…...

YOLOv12即插即用---RFAConv

1.模块介绍 接受域注意卷积(RFAConv):更聪明地感知空间特征 在传统卷积神经网络中,卷积核参数的共享机制虽有效提升了模型的泛化能力与计算效率,但却忽略了不同空间位置特征在感知范围(即接受域)内的重要性差异。为此,我们提出了一种更具感知能力的模块 —— 接受域注…...

使用datax通过HbaseShell封装writer和reader同步hbase数据到hbase_踩坑_细节总结---大数据之DataX工作笔记008

最近在做大数据相关功能,有个需求,使用datax同步hbase到hbase中,其中还是有很多细节值得记录: 首先来看一下datax的源码中,如果你使用phoenix创建的表,那么 你就需要使用对应的hbase带有sql字样的,reader和writer. 然后如果你使用datax-web来进行测试的,那么,他默认使用的是h…...

Python解决“小D的abc字符变换”问题

小D的“abc”变换问题 问题描述测试样例解题思路代码 问题描述 小D拿到了一个仅由 “abc” 三种字母组成的字符串。她每次操作会对所有字符同时进行以下变换&#xff1a; 将 ‘a’ 变成 ‘bc’ 将 ‘b’ 变成 ‘ca’ 将 ‘c’ 变成 ‘ab’ 小D将重复该操作 k 次。你的任务是输…...

C++学习:六个月从基础到就业——面向对象编程:重载运算符(下)

C学习&#xff1a;六个月从基础到就业——面向对象编程&#xff1a;重载运算符&#xff08;下&#xff09; 本文是我C学习之旅系列的第十三篇技术文章&#xff0c;是面向对象编程中运算符重载主题的下篇。本篇文章将继续深入探讨高级运算符重载技术、特殊运算符、常见应用场景和…...

电压模式控制学习

电压模式控制 在开关电源中&#xff0c;大的可分为三大控制模式&#xff0c;分别是电压模式控制&#xff0c;电流模式控制&#xff0c;迟滞模式控制。今天简要介绍下电压模式控制的优缺点。 原理 架构图如下 如图所示&#xff0c;电压模式控制可以分为三部分&#xff1a;误…...

vue3 Ts axios 封装

vue3 Ts axios 封装 axios的封装 import axios, { AxiosError, AxiosInstance, InternalAxiosRequestConfig, AxiosResponse, AxiosRequestConfig, AxiosHeaders } from axios import qs from qs import { config } from ./config import { ElMessage } from element-plus// …...

GPT,Bert类模型对比

以下是对 BERT-base、RoBERTa-base、DeBERTa-base 和 DistilBERT-base 四个模型在参数量、训练数据、GPU 内存占用、性能表现以及优缺点方面的对比&#xff1a; 模型参数量与训练数据 模型参数量训练数据量BERT-base110MBookCorpus&#xff08;8亿词&#xff09; 英文维基百科…...

3.Rust + Axum 提取器模式深度剖析

摘要 深入解读 Rust Axum 提取器模式&#xff0c;涵盖内置提取器及自定义实现。 一、引言 在 Rust 的 Web 开发领域&#xff0c;Axum 作为一款轻量级且高效的 Web 框架&#xff0c;为开发者提供了强大的功能。其中&#xff0c;提取器&#xff08;Extractor&#xff09;模式…...

Dify vs n8n vs RAGFlow:2025年AI应用与自动化工作流平台的终极对决

我将为大家整理一份关于 Dify、n8n 和 Ragflow 的最新研究分析,涵盖以下六个方面:功能对比、应用场景、架构设计、集成能力、和使用门槛。我会尽可能引用其官方文档、GitHub 仓库以及社区讨论等权威信息来源。 我整理好后会第一时间通知你查看。 1.Dify、n8n 和 RAGFlow 最新…...

ffmpeg无损转格式的命令行

将ffmpeg.exe拖入命令行窗口 c:\users\zhangsan>D:\ffmpeg-2025-03-11\bin\ffmpeg.exe -i happy.mp4 -c:v copy -c:a copy 格式转换后.mkv -c:v copy 仅做拷贝视频,不重新编码 -c:a copy 仅做拷贝音频 ,不重新编码...

Flutter 常用命令

1、创建项目 flutter create <项目名称> 示例&#xff1a; flutter create my_app 1.1 参数说明 --org&#xff1a;设置包名&#xff08;默认 com.example&#xff09; flutter create --org com.yourcompany my_app -a/-i&#xff1a;指定语言&#xff08;Kotlin…...

【零基础】基于DeepSeek-R1与Qwen2.5Max的行业洞察自动化平台

自动生成行业报告,通过调用两个不同的大模型(DeepSeek 和 Qwen),完成从行业趋势分析到结构化报告生成的全过程。 完整代码:https://mp.weixin.qq.com/s/6pHi_aIDBcJKw1U61n1uUg 🧠 1. 整体目的与功能 该脚本实现了一个名为 ReportGenerator 的类,用于: 调用 DeepSe…...

UE5 关卡序列

文章目录 介绍创建一个关卡序列编辑动画添加一个物体编辑动画时间轴显示秒而不是帧时间轴跳转到一个确定的时间时间轴的显示范围更改关键帧的动画插值方式操作多个关键帧 播放动画 介绍 类似于Unity的Animation动画&#xff0c;可以用来录制场景中物体的动画 创建一个关卡序列…...

1.凸包、极点、极边基础概念

目录 1.凸包 2.调色问题 3.极性(Extrem) 4.凸组合(Convex Combination) 5.问题转化(Strategy)​编辑 6.In-Triangle test 7.To-Left-test 8.极边&#xff08;Extream Edges&#xff09; 1.凸包 凸包就是上面蓝色皮筋围出来的范围 这些钉子可以转换到坐标轴中&#xff0…...

MahApps.Metro:专为 WPF 应用程序设计的 UI 框架

推荐一个WPF 应用程序设计的 UI 框架&#xff0c;方便我们快速构建美观、流畅的应用程序。 01 项目简介 MahApps.Metro 是一个开源的 UI 框架&#xff0c;它可以让开发者快速构建现代化、美观的 WPF 应用程序。 提供了一套完整的 UI 组件和主题&#xff0c;支持流畅的动画效…...

【LangChain4j快速入门】5分钟用Java玩转GPT-4o-mini,Spring Boot整合实战!| 附源码

【LangChain4j快速入门】5分钟用Java玩转GPT-4o-mini&#xff0c;Spring Boot整合实战&#xff01; 前言&#xff1a;当Java遇上大模型 在AI浪潮席卷全球的今天&#xff0c;Java开发者如何快速拥抱大语言模型&#xff1f;LangChain4j作为专为Java打造的AI开发框架&#xff0c…...

乐言科技:云原生加速电商行业赋能,云消息队列助力降本 37%

深耕 AI SaaS&#xff0c;助力数万电商客户数智化转型 上海乐言科技股份有限公司&#xff08;以下简称“乐言科技”&#xff0c;官网&#xff1a;https://www.leyantech.com/&#xff09;自 2016 年成立以来&#xff0c;专注于利用自然语言处理和深度学习等核心 AI 技术&#…...

vscode构建简单编译和调试环境

一、设置环境变量‌ 将bin目录路径&#xff08;如D:\DevTools\mingw64\bin&#xff09;加入系统环境变量PATH‌34 ‌二、VS Code插件配置‌ ‌核心插件安装‌ ‌C/C‌&#xff08;微软官方扩展&#xff0c;提供语法高亮、智能提示&#xff09;‌‌Code Runner‌&#xff0…...

STM32控制DRV8825驱动42BYGH34步进电机

最近想玩一下人工智能&#xff0c;然后买了个步进电机想玩一下&#xff0c;刚到了一脸懵逼&#xff0c;发现驱动器20多块&#xff0c;有点超预算&#xff0c;然后整了个驱动板&#xff0c;方便自己画线路板&#xff0c;经过各种搜索&#xff0c;终于转起来了&#xff0c;记录一…...

系统清理专家,一键释放磁盘空间!

打工人们你们好&#xff01;这里是摸鱼 特供版~ 今天给大家带来一款超实用的系统清理工具——Glary Disk Cleaner&#xff0c;帮助你快速清理系统中的垃圾文件&#xff0c;释放磁盘空间&#xff0c;提升系统运行速度&#xff01; 推荐指数&#xff1a;★★★★★ 软件简介 G…...

识别法院PDF文件特定字段并插入数据库【正则表达式+本地化部署】

pdf解析法院协助单特定字段&#xff0c;开源项目&#xff0c;结合若依项目进行开发&#xff0c;不连互联网&#xff0c;本地开发部署&#xff0c;前端使用vue3技术,后端用若依分离版spring botot技术&#xff0c;实现将pdf法院协助执行通知书中的特定字段如&#xff1a;时间、文…...

探索智能体开发新范式:Cangjie Magic深度解析与实践指南

引言&#xff1a;智能体开发的新纪元 2025年3月&#xff0c;仓颉社区开源了基于仓颉编程语言原生构建的LLM Agent开发平台——Cangjie Magic&#xff0c;为智能体开发领域带来了革命性的变革。作为一名长期关注AI技术发展的开发者&#xff0c;我有幸在第一时间体验了这一创新平…...

计算机网络 - UDP协议

通过一些问题来讨论 UDP 协议 什么是 UDP&#xff1f;举几个应用了 UDP 协议的例子UDP 与 TCP 有啥区别&#xff1f;&#xff08;PS&#xff1a;介绍三四个就可以了&#xff0c;不用说太多&#xff09;具体 UDP 是不可靠的&#xff0c;那你觉得如何实现一个可靠的 UDP &#x…...

阿里云ECS访问不了

使用xshell连接阿里云ECS&#xff0c;下载nginx&#xff0c;然后启动 sudo systemctl start nginx 查看状态是 sudo systemctl status nginx 输入公网ip访问实例访问不到&#xff0c;出现 可以查看阿里云实例中的安全组&#xff0c;是否对外开放了80端口和443端口 添加入方向…...

Starrocks添删改查数据(二)

先安装好Starrocks&#xff0c;参考&#xff1a;Starrocks入门&#xff08;二&#xff09;_backend node not found. check if any backend node -CSDN博客 1、建立库 建库成功。 2、建立表 参考&#xff1a;表概览 | StarRocks 执行如下SQL&#xff1a; CREATE TABLE user_…...

RT-Thread学习笔记(一)

RT-Thread学习笔记 AIotMMUCPU架构RT-Thread版本工程创建时钟配置FinSH内核RT-Thread内核启动流程 RT-Thread是一个组件完整丰富、高度可伸缩、简易开发、超低功耗、高安全性的物联网操作系统 全称Real Time Thread AIot AIot&#xff1a; Artificial Intelligence of Things…...

【源码】30个Python小游戏

下载链接&#xff1a;https://github.com/pyGuru123/Python-Games 本站下载链接&#xff1a;【免费】源码30个Python小游戏资源-CSDN文库 包含&#xff1a;飞机大战、愤怒的墙、圆弧冲刺、行星游戏、弹跳的球、汽车避障、洞穴物语、愤怒的小鸟、丛林探险、扫雷、俄罗斯方块、…...

【Web前端技术】第二节—HTML标签(上)

hello&#xff01;好久不见—— 做出一个属于自己的网站&#xff01; 云边有个稻草人-个人主页 Web前端技术—本篇文章所属专栏 目录 一、HTML 语法规范 1.1 基本语法概述 1.2 标签关系 二、HTML 基本结构标签 2.1 第一个 HTML 网页 2.2 基本结构标签总结 三、网页开发…...

Android开发协调布局滑动悬停

Android开发协调布局滑动悬停 直接给个xml&#xff0c;防止下次忘了怎么写。 <?xml version"1.0" encoding"utf-8"?> <androidx.coordinatorlayout.widget.CoordinatorLayout xmlns:android"http://schemas.android.com/apk/res/android…...

R语言简介与下载安装

1.R语言简介与下载安装 R语言其诞生于新西兰奥克兰大学&#xff0c;由Ross Ihaka 和Robert Gentleman开发&#xff0c;属于商业软件S语言的替代品&#xff1b;R语言是一款开源的编程类工具&#xff0c;专门用于数据清洗、整理、统计分析、可视化以及数据挖掘等方面&#xff0c…...

CGAL边折叠edge_collapse的问题

使用edge_collapse对一个模型简化&#xff0c;之后回收垃圾&#xff0c;collect_garbage 处理之前的顶点和三角形数量&#xff1a; number_of_vertices: 955730 number_of_faces: 1903410 num_vertices: 955730 num_faces: 1903410 处理之后的顶点和三角形数量&#xff1a;…...

2025 全球分布式云大会演讲实录 | 沈建发:智启边缘,畅想未来:边缘计算新场景落地与 Al 趋势新畅想

4 月 9 日&#xff0c;2025 全球分布式云大会暨 AI 基础设施大会在深圳成功举办&#xff0c;火山引擎边缘云产品解决方案高级总监沈建发出席并以《智启边缘&#xff0c;畅想未来&#xff1a;边缘计算新场景落地与 Al 趋势新畅想》为主题&#xff0c;分享了边缘计算在 AI 技术趋…...

【ELF2学习板】OpenCL程序测试

目录 引言 OpenCL简介 主要特点 编程模型 应用场景 测试程序 代码说明 构建编译环境 头文件 库文件 程序编译 测试结果 结语 引言 ELF2开发板采用的是RK3588处理器&#xff0c;它是瑞芯微推出的一款高性能 SoC。RK3588 集成了 ARM Mali-G610 MP4 GPU&#xff0c;…...

EtherCAT转ProfiNet边缘计算网关配置优化:汽车制造场景下PLC与机器人协同作业案例

1.行业背景与需求分析 智能汽车焊装车间是汽车制造的核心工艺环节&#xff0c;某德国豪华品牌在其上海MEB工厂新建的焊装车间中&#xff0c;采用西门子S7-1500PLC作为ProfiNet主站&#xff0c;负责整线协调与质量追溯&#xff1b;同时部署KUKAKR1500Titan机器人&#xff08;Eth…...

AI 推理与训练优化的核心理论体系建构及关键技术分析框架

AI 推理与训练优化的核心理论体系建构及关键技术分析框架 一、推理加速的动态系统理论建模与算法设计 &#xff08;一&#xff09;基于MDP的动态计算图理论 生物启发的决策框架&#xff1a;模拟灵长类视觉系统的注意力分配机制&#xff0c;构建马尔可夫决策过程&#xff08;M…...

Jupyter 中 Markdown 邂逅 LaTeX:一场知识的绮梦

引言&#xff1a; 在日常编程和数据分析工作中&#xff0c;我们经常需要记录和分享信息。传统的注释方式功能有限&#xff0c;而富文本编辑器又过于臃肿。Markdown作为一种轻量级标记语言&#xff0c;完美解决了这个问题。 为什么选择Markdown&#xff1f; Markdown具有两大优势…...

AI 对话高效输入指令攻略(二):关于豆包的指令

免责声明&#xff1a;该文章的所有样例只是测试&#xff0c;没有唆使大家利用AI抄袭作业&#xff01;更没有宣传豆包。 前言 没有听不懂话的AI&#xff0c;只有不会调教AI的人。&#xff08;自己瞎说的&#xff09;当你把AI当人看之后&#xff0c;你就会发现&#xff0c;他是多…...

Apache Atlas构建安装(Linux)

一、环境准备 maven 3.6.3python 2.7nodejs 12java 1.8 注意环境一定要对&#xff0c;不然一堆问题 1. python2.7 安装 参考文章&#xff1a;https://blog.csdn.net/weixin_42081389/article/details/101276251 打开链接&#xff1a;https://www.python.org/downloads/sourc…...