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

Qt炫酷仪表盘

        Qt学习优化的一款汽车仪表控件,根据github上面开源的进行优化,主要使用QPainter实现的一款炫酷仪表盘,其中的渐变效果比较有感觉

        实现结果

        

仪表盘

        实现源码 

        h文件

#ifndef WIDGET_H
#define WIDGET_H#include <QWidget>
#include <QPixmap>
#include <QTimer>QT_BEGIN_NAMESPACE
namespace Ui { class Widget; }
QT_END_NAMESPACEclass Widget : public QWidget
{Q_OBJECTpublic:Widget(QWidget *parent = nullptr);~Widget();protected:void paintEvent(QPaintEvent *event) override;void resizeEvent(QResizeEvent *event) override;private:Ui::Widget *ui;QTimer *timer;QPixmap cachedBackground;bool backgroundDirty;// 仪表盘参数const int MAX_SPEED = 240;       // 最大速度const int START_ANGLE = 150;     // 起始角度const int ANGLE_SPAN = 240;      // 角度跨度const int WARNING_THRESHOLD = 40; // 警告阈值(刻度值)int currentValue;    // 当前值(0-60)int mark;           // 标记递增或递减double angle;       // 每个刻度角度void startSpeed();void initCanvas(QPainter& painter);void drawMiddleCircle(QPainter &painter, int radius);void drawCurrentSpeed(QPainter &painter);void drawScale(QPainter &painter, int radius);void drawScaleText(QPainter &painter, int radius);void drawPointLine(QPainter &painter, int length);void drawSpeedArc(QPainter &painter, int radius);void drawEllipseInnerBlack(QPainter &painter, int radius);void drawEllipseInnerGlow(QPainter &painter, int radius);void drawOuterRing(QPainter &painter, int radius);void drawLogo(QPainter &painter, int radius);void drawTechCircles(QPainter &painter, int radius);void drawWarningEffect(QPainter &painter, int radius);
};
#endif // WIDGET_H

        c文件

#include "widget.h"
#include "ui_widget.h"#include <QPainter>
#include <QTimer>
#include <QtMath>
#include <QEasingCurve>
#include <QResizeEvent>Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget), backgroundDirty(true)
{ui->setupUi(this);setFixedSize(800, 600);mark = 0;currentValue = 0;angle = ANGLE_SPAN * 1.0 / (MAX_SPEED / 4); // 计算每个刻度角度startSpeed();
}Widget::~Widget()
{delete ui;
}void Widget::startSpeed()
{timer = new QTimer(this);connect(timer, &QTimer::timeout, this, [=](){if (mark == 0) {currentValue = qMin(currentValue + 1, MAX_SPEED/4);mark = (currentValue >= MAX_SPEED/4) ? 1 : 0;} else {currentValue = qMax(currentValue - 1, 0);mark = (currentValue == 0) ? 0 : 1;}// 当接近警告阈值时刷新效果if (currentValue >= WARNING_THRESHOLD - 5 && currentValue <= WARNING_THRESHOLD + 5) {backgroundDirty = true;}update();});timer->start(50);
}void Widget::paintEvent(QPaintEvent *event)
{QPainter painter(this);// 只在需要时重绘背景if (backgroundDirty) {cachedBackground = QPixmap(size());cachedBackground.fill(Qt::transparent);QPainter bgPainter(&cachedBackground);int radius = height()/2;initCanvas(bgPainter);drawOuterRing(bgPainter, radius+25);drawScale(bgPainter, radius);drawScaleText(bgPainter, radius);drawTechCircles(bgPainter, radius);drawLogo(bgPainter, radius);backgroundDirty = false;}painter.drawPixmap(0, 0, cachedBackground);// 只绘制动态部分int radius = height()/2;painter.translate(rect().width()/2, rect().height()*0.6);drawSpeedArc(painter, radius+25);drawEllipseInnerGlow(painter, 110);drawEllipseInnerBlack(painter, 80);drawMiddleCircle(painter, 60);drawCurrentSpeed(painter);drawPointLine(painter, radius-58);// 警告效果if (currentValue >= WARNING_THRESHOLD) {drawWarningEffect(painter, radius+25);}
}void Widget::resizeEvent(QResizeEvent *event)
{backgroundDirty = true;QWidget::resizeEvent(event);
}void Widget::initCanvas(QPainter& painter)
{painter.setRenderHints(QPainter::Antialiasing | QPainter::SmoothPixmapTransform | QPainter::TextAntialiasing);// 科技感深色背景QLinearGradient gradient(0, 0, width(), height());gradient.setColorAt(0, QColor(10, 15, 30));gradient.setColorAt(1, QColor(5, 10, 20));painter.setBrush(gradient);painter.drawRect(rect());// 坐标系平移到坐标中心QPoint cent(rect().width()/2, rect().height()*0.6);painter.translate(cent);
}void Widget::drawMiddleCircle(QPainter &painter, int radius)
{painter.setPen(QPen(QColor(100, 180, 255), 3));painter.setBrush(QColor(20, 30, 50));painter.drawEllipse(QPoint(0, 0), radius, radius);// 中心小圆点painter.setPen(Qt::NoPen);painter.setBrush(QColor(100, 180, 255));painter.drawEllipse(QPoint(0, 0), 5, 5);
}void Widget::drawCurrentSpeed(QPainter &painter)
{// 主速度值QFont font("Arial", 30);font.setBold(true);painter.setFont(font);// 文字发光效果QLinearGradient textGradient(0, -60, 0, -20);textGradient.setColorAt(0, QColor(150, 220, 255));textGradient.setColorAt(1, QColor(50, 150, 255));painter.setPen(QPen(textGradient, 1));painter.drawText(QRect(-60, -60, 120, 70), Qt::AlignCenter, QString::number(currentValue*4));// 单位QFont font2("Arial", 13);font2.setBold(true);painter.setFont(font2);painter.setPen(QColor(150, 200, 255));painter.drawText(QRect(-60, -60, 120, 160), Qt::AlignCenter, "Km/h");
}void Widget::drawScale(QPainter &painter, int radius)
{painter.save();painter.rotate(START_ANGLE);for (int i = 0; i <= MAX_SPEED/4; i++) {// 设置不同颜色if (i >= WARNING_THRESHOLD) {painter.setPen(QPen(QColor(255, 80, 80), 5));} else {painter.setPen(QPen(QColor(100, 180, 255), 5));}if (i % 5 == 0) {// 长刻度线painter.drawLine(radius - 20, 0, radius - 3, 0);} else {// 短刻度线painter.drawLine(radius - 8, 0, radius - 3, 0);}painter.rotate(angle);}painter.restore();
}void Widget::drawScaleText(QPainter &painter, int radius)
{QFont font("Arial", 15);font.setBold(true);painter.setFont(font);int r = radius - 49;for (int i = 0; i <= MAX_SPEED/4; i++) {if (i % 5 == 0) {painter.save();// 计算文本位置double textAngle = 210 - angle * i;int delX = qCos(qDegreesToRadians(textAngle)) * r;int delY = qSin(qDegreesToRadians(textAngle)) * r;painter.translate(QPoint(delX, -delY));painter.rotate(-120 + angle * i);// 设置文本颜色if (i >= WARNING_THRESHOLD) {painter.setPen(QColor(255, 100, 100));} else {QLinearGradient grad(0, 0, 0, 20);grad.setColorAt(0, QColor(150, 220, 255));grad.setColorAt(1, QColor(50, 150, 255));painter.setPen(QPen(grad, 1));}painter.drawText(-25, -25, 50, 30, Qt::AlignCenter, QString::number(i*4));painter.restore();}}
}void Widget::drawPointLine(QPainter &painter, int length)
{painter.save();// 指针渐变QLinearGradient gradient(0, 0, length, 0);if (currentValue >= WARNING_THRESHOLD) {gradient.setColorAt(0, QColor(255, 150, 150));gradient.setColorAt(0.5, QColor(255, 100, 100));gradient.setColorAt(1, QColor(200, 50, 50));} else {gradient.setColorAt(0, QColor(200, 230, 255));gradient.setColorAt(0.5, QColor(100, 180, 255));gradient.setColorAt(1, QColor(50, 120, 220));}painter.setBrush(gradient);painter.setPen(Qt::NoPen);// 指针形状QPainterPath path;path.moveTo(0, 0);path.lineTo(length * 0.9, -length * 0.02);path.lineTo(length, 0);path.lineTo(length * 0.9, length * 0.02);path.closeSubpath();// 旋转并绘制指针painter.rotate(START_ANGLE + angle * currentValue);painter.drawPath(path);// 指针中心圆painter.setBrush(QColor(30, 50, 80));painter.drawEllipse(QPoint(0, 0), 10, 10);// 中心圆发光效果QRadialGradient centerGrad(0, 0, 10);centerGrad.setColorAt(0, QColor(100, 180, 255, 150));centerGrad.setColorAt(1, Qt::transparent);painter.setBrush(centerGrad);painter.drawEllipse(QPoint(0, 0), 15, 15);painter.restore();
}void Widget::drawSpeedArc(QPainter &painter, int radius)
{QRect rectangle(-radius, -radius, radius*2, radius*2);painter.setPen(Qt::NoPen);// 速度弧渐变QConicalGradient gradient(0, 0, -START_ANGLE);gradient.setColorAt(0.0, QColor(100, 200, 255, 200));gradient.setColorAt(0.5, QColor(50, 150, 255, 150));gradient.setColorAt(1.0, QColor(0, 100, 200, 100));painter.setBrush(gradient);painter.drawPie(rectangle, (360-START_ANGLE)*16, -angle*currentValue*16);// 添加发光效果QRadialGradient glow(0, 0, radius);glow.setColorAt(0, QColor(100, 180, 255, 50));glow.setColorAt(1, Qt::transparent);painter.setBrush(glow);painter.drawPie(rectangle, (360-START_ANGLE)*16, -angle*currentValue*16);
}void Widget::drawEllipseInnerBlack(QPainter &painter, int radius)
{painter.setBrush(QColor(20, 30, 50));painter.setPen(Qt::NoPen);painter.drawEllipse(QPoint(0, 0), radius, radius);
}void Widget::drawEllipseInnerGlow(QPainter &painter, int radius)
{QRadialGradient gradient(0, 0, radius);gradient.setColorAt(0.0, QColor(100, 180, 255, 150));gradient.setColorAt(0.5, QColor(50, 120, 220, 100));gradient.setColorAt(1.0, QColor(0, 50, 100, 50));painter.setBrush(gradient);painter.setPen(Qt::NoPen);painter.drawEllipse(QPoint(0, 0), radius, radius);
}void Widget::drawOuterRing(QPainter &painter, int radius)
{QRect rectangle(-radius, -radius, radius*2, radius*2);painter.setPen(Qt::NoPen);// 外环渐变QRadialGradient gradient(0, 0, radius);gradient.setColorAt(1.0, QColor(50, 150, 255, 150));gradient.setColorAt(0.97, QColor(50, 150, 255, 50));gradient.setColorAt(0.9, Qt::transparent);gradient.setColorAt(0, Qt::transparent);painter.setBrush(gradient);painter.drawPie(rectangle, (360-START_ANGLE)*16, -angle*(MAX_SPEED/4)*16);// 外环边缘painter.setPen(QPen(QColor(100, 180, 255, 100), 2));painter.setBrush(Qt::NoBrush);painter.drawArc(rectangle, (360-START_ANGLE)*16, -angle*(MAX_SPEED/4)*16);
}void Widget::drawLogo(QPainter &painter, int radius)
{QRect rectangle(-65, radius*0.38, 130, 50);// 绘制logo背景painter.setPen(QPen(QColor(100, 180, 255, 100), 1));painter.setBrush(QColor(0, 0, 0, 100));painter.drawRoundedRect(rectangle, 5, 5);// 绘制logo图片painter.drawPixmap(rectangle, QPixmap(":/icon.png"));
}void Widget::drawTechCircles(QPainter &painter, int radius)
{// 绘制科技感同心圆painter.setPen(QPen(QColor(50, 150, 255, 30), 1));painter.setBrush(Qt::NoBrush);for (int i = 1; i <= 5; i++) {int r = radius * 0.2 * i;painter.drawEllipse(QPoint(0, 0), r, r);}// 绘制径向线for (int i = 0; i < 360; i += 15) {painter.save();painter.rotate(i);painter.drawLine(QPoint(0, 0), QPoint(radius, 0));painter.restore();}
}void Widget::drawWarningEffect(QPainter &painter, int radius)
{static int alpha = 0;static bool increasing = true;// 更新alpha值if (increasing) {alpha += 10;if (alpha >= 80) increasing = false;} else {alpha -= 10;if (alpha <= 20) increasing = true;}// 绘制蓝色闪烁效果painter.setPen(Qt::NoPen);painter.setBrush(QColor(100, 150, 255, alpha));painter.drawEllipse(QPoint(0, 0), radius, radius);
}

        希望对大家有所帮助

相关文章:

Qt炫酷仪表盘

Qt学习优化的一款汽车仪表控件,根据github上面开源的进行优化,主要使用QPainter实现的一款炫酷仪表盘,其中的渐变效果比较有感觉 实现结果 仪表盘 实现源码 h文件 #ifndef WIDGET_H #define WIDGET_H#include <QWidget> #include <QPixmap> #include <QTimer&…...

云渗透一(云租户渗透⼊⻔)

云平台介绍 阿⾥云 阿⾥云创⽴于 2009 年,服务着制造、⾦融、政务、交通、医疗、电信、能源等众多领域的领军企业,包 括中国联通、12306 、中⽯化、中⽯油、⻜利浦、华⼤基因等⼤型企业客户,以及微博、知乎、锤⼦科技 等明星互联⽹公司。 应⽤程序访问令牌 - T1527 云实例…...

R绘图|6种NMDS(非度量多维分析)绘图保姆级模板——NMDS从原理到绘图,看师兄这篇教程就够了

感谢西农听雨同学对本文提供的大力支持&#xff01; 一、引言 非度量多维尺度分析&#xff08;NMDS&#xff09;是一种用来简化复杂数据的工具&#xff0c;特别适合处理那些难以直接理解的高维数据&#xff08;微生物群落数据&#xff09;。它的主要目的是把数据“压缩”到更低…...

spark-SQL核心编程

1. Spark-SQL简介 起源与发展&#xff1a;Spark-SQL前身为Shark&#xff0c;因对Hive依赖制约Spark发展而被弃用。它汲取Shark优点重新开发&#xff0c;在数据兼容、性能优化和组件扩展方面表现出色。 特点&#xff1a;易整合&#xff0c;统一数据访问&#xff0c;兼容Hive&…...

使用MCP服务通过自然语言操作数据库(vscode+cline版本)

使用MCP服务操纵数据库(vscodecline版本) 本文主要介绍&#xff0c;在vscode中使用cline插件调用deepseek模型&#xff0c;通过MCP服务器 使用自然语言去操作指定数据库。本文使用的是以己经创建号的珠海航展数据库。 理解MCP服务&#xff1a; MCP&#xff08;Model Context…...

.NET Core DI(依赖注入)的生命周期及应用场景

在.NET中&#xff0c;依赖注入&#xff08;DI&#xff0c;Dependency Injection&#xff09;是一种设计模式&#xff0c;它通过将依赖关系注入到类中&#xff0c;而不是让类自己创建依赖项&#xff0c;来降低类之间的耦合度。这使得代码更加模块化、灵活和易于测试。在.NET中&a…...

VSCode写java时常用的快捷键

首先得先安好java插件 1、获取返回值 这里是和idea一样的快捷键的&#xff0c;都是xxxx.var 比如现在我new一个对象 就输入 new MbDo().var // 点击回车即可变成下面的// MbDo mbDo new MbDo()//以此类推get方法也可获取 mbDo.getMc().var // 点击回车即可变成下面的 // St…...

Java微服务流量控制与保护技术全解析:负载均衡、线程隔离与三大限流算法

在微服务架构中&#xff0c;流量控制与系统保护是保障服务高可用的核心要素。本文将深入剖析负载均衡原理、线程隔离机制&#xff0c;并通过Java代码实例详解滑动窗口、漏桶、令牌桶三大限流算法&#xff0c;帮助开发者构建健壮的分布式系统。 一、负载均衡核心原理与实践 1.1 …...

Java 企业级应用:SOA 与微服务的对比与选择

企业级应用开发中&#xff0c;架构设计是决定系统可扩展性、可维护性和性能的关键因素。SOA&#xff08;面向服务的架构&#xff09;和微服务架构是两种主流的架构模式&#xff0c;它们各自有着独特的和设计理念适用场景。本文将深入探讨 SOA 和微服务架构的对比&#xff0c;并…...

Nacos深度剖析与实践应用 -1

&#x1f4f9; Nacos背景 在现在数字化快速发展的时代&#x1f684;&#xff0c;微服务架构已成为构建大型分布式系统的主流架构模式。随着微服务数量的不断增加&#xff0c;服务之间的通信、配置管理以及服务的高可用性等问题变得愈发复杂。Nacos 作为阿里巴巴开源的一个动态服…...

WinForm真入门(16)——LinkLabel 控件详解

以下是 WinForm 中 LinkLabel 控件的基本概念、核心属性、事件及典型应用案例的总结&#xff1a; 一、基本概念‌ LinkLabel 是 WinForm 中用于显示超链接文本的控件&#xff0c;继承自 Label&#xff0c;支持单链接或多链接区域。用户点击链接时可触发自定义行为&#xff0…...

功能丰富的PDF处理免费软件推荐

软件介绍 今天给大家介绍一款超棒的PDF工具箱&#xff0c;它处理PDF文档的能力超强&#xff0c;而且是完全免费使用的&#xff0c;没有任何限制。 TinyTools&#xff08;PC&#xff09;这款软件&#xff0c;下载完成后即可直接打开使用。在使用过程中&#xff0c;操作完毕后&a…...

【MySQL高级】事务,存储引擎,索引(一)

Mysql高级 DQL查询语句 反引号 模糊查询避免%出现在开头,会造成索引失效 order by排序先后 表名列名都需要用${}&#xff0c;他们不能带’’ 去重统计数量 null的运算 分组函数会自动忽略null&#xff0c;不用对null进行处理 截取子串substr&#xff08;字段&#xff0c;下标…...

React 之 Redux 第三十二节 Redux 常用API及HOOKS,以及Redux Toolkit核心API使用详解

一、4.X版本中核心 API 和用途 1. createStore(reducer, [preloadedState], [enhancer]) 用途: 创建 Redux Store&#xff08;数据仓库&#xff09; 参数: reducer: 状态更新函数 preloadedState: 初始状态&#xff08;可选&#xff09; enhancer: 中间件增强器&#xff08;如…...

react tailwindcss最简单的开始

参考教程&#xff1a; Install Tailwind CSS with Vite - TailwindCSS中文文档 | TailwindCSS中文网https://www.tailwindcss.cn/docs/guides/vite操作过程&#xff1a; Microsoft Windows [版本 10.0.26100.3476] (c) Microsoft Corporation。保留所有权利。D:\gitee\tailwi…...

波束形成(BF)从算法仿真到工程源码实现-第九节-延迟相减波束形成(delay sub)

一、概述 本节对delay sub算法进行仿真。更多资料和代码可以进入https://t.zsxq.com/qgmoN &#xff0c;同时欢迎大家提出宝贵的建议&#xff0c;以共同探讨学习。 二、代码仿真 import numpy as np import soundfile as sf import scipy import matplotlib.pyplot as pltfft…...

系统假死问题排查

系统假死定义 应用进程存在&#xff0c;但是无法正常提供服务&#xff08;请求没有响应&#xff0c;或者响应超时&#xff09;。 系统假死原因 主要分为两大类&#xff1a;连接无法建立、请求无法处理&#xff0c;如下图所示&#xff1a; 系统假死的原因还是比较多的&…...

图像处理有哪些核心技术?技术发展现状如何?

在数字化信息爆炸的时代&#xff0c;文档图像预处理技术正悄然改变着我们处理文字信息的方式。无论是手持拍摄的收据、扫描仪中的身份证&#xff0c;还是工业机器人采集的复杂文档&#xff0c;预处理技术都在背后默默提升着OCR&#xff08;光学字符识别&#xff09;系统的性能。…...

解决在linux下运行rust/tauri项目出现窗口有内容,但是渲染出来成纯黑问题

起因 最近折腾了一下rust/tauri程序开发&#xff0c;据说这玩意性能非常牛皮就玩了一下&#xff0c;但是我运行打包一直出现一个奇怪问题&#xff0c;窗口能正常打开&#xff0c;但是是纯黑的什么内容都没有&#xff0c;鼠标移上去又发现指针会变换&#xff08;看起来是内容又…...

计算机网络:流量控制与可靠传输机制

目录 基本概念 流量控制&#xff1a;别噎着啦&#xff01; 可靠传输&#xff1a;快递必达服务 传输差错&#xff1a;现实中的意外 滑动窗口 基本概念 换句话说&#xff1a;批量发货排队验收 停止-等待协议 SW&#xff08;发1份等1份&#xff09; 超时重传&#xff1a;…...

vue2改变el-message字体、图标尺寸样式(vue2,element-ui)

前言 最近接手一个项目&#xff0c;vue2elementui的,产品觉得message的字体太小了&#xff0c;展示起来看不清&#xff0c;所以需求就是把message的字体和图标变大&#xff0c;实现路径如下&#xff1a; 找到自己的main.scss文件&#xff0c;并且加上对应内容&#xff1a; .e…...

【笔记ing】AI大模型-05单层感知机与多层感知机

单层感知机&#xff0c;是一种最简单的人工神经网络 输入层input layer&#xff0c;输入的样本特征 输出层output layer&#xff0c;输出的预测结果 权值W(w0,w1,w2,...,wn)^T&#xff0c;感知机的权值参数&#xff0c;其中的w0叫做偏置&#xff0c;也称截距&#xff0c;类似…...

分布式热点网络

核心设计理念&#xff1a; 在自然灾害&#xff08;地震、洪水、台风&#xff09;、极端环境&#xff08;无人区&#xff09;及网络管制&#xff08;欠费停机&#xff09;等场景下&#xff0c;传统中心化网络易因核心节点失效导致全局瘫痪。本方案提出构建去中心化设备网络&…...

为 docker 拉取镜像配置代理

为 Docker 配置代理&#xff0c;有 两个层面 的操作&#xff1a;(1) Docker 守护进程&#xff08;用于拉取镜像等操作&#xff09;&#xff0c;(2) Docker 容器内部&#xff08;容器内应用的网络流量&#xff09;。 我们这篇文章着重于前者&#xff0c;以下是详细步骤&#xff…...

人工智能与云计算:技术融合与实践

1. 引言 人工智能(AI)和云计算是当今科技领域最具变革性的两项技术。AI通过模拟人类智能解决问题,而云计算则提供了弹性可扩展的计算资源。两者的结合创造了前所未有的可能性,使企业能够以更低的成本部署复杂的AI解决方案。 本文将探讨AI与云计算的技术融合,包括核心概念、…...

GIT的一些操作

git仓库迁移&#xff0c;包括所有分支和标签 git clone --mirror http://git./test-frontend.git test-frontend 克隆项目到 test-frontend文件夹下&#xff0c;--mirror 表示所有分支和标签 cd test-frontend 切到目录下 git remote add bd http://git./new-frontend.git …...

大模型——Crawl4AI入门指南

大模型——Crawl4AI入门指南 本快速入门指南介绍了Crawl4AI,涵盖了基本用法、先进功能(例如分块和提取策略)以及异步编程。用户将学习如何实现各种爬虫技术,包括截图、JSON提取和动态内容爬取。 1. 什么是Crawl4AI? Crawl4AI 是一个强大的异步网络爬虫库,旨在简化信息…...

48、Spring Boot 详细讲义(五)

3、集成MyBatis 3.1 MyBatis 概述 3.1.1 核心功能和优势 MyBatis 是一个 Java 持久层框架,它通过 XML 或注解配置 SQL 语句,将 Java 方法与 SQL 语句映射起来,消除了大量的 JDBC 代码,简化了数据库操作。MyBatis 的核心功能和优势包括: ORM(对象关系映射):通过 XML …...

设计模式-桥接模式

例如形状和颜色&#xff0c;如果这么设计&#xff1f; 将两个具有紧耦合的设计&#xff0c;使用组合&#xff0c;为桥接模式 客户端的代码&#xff1a; 抽象&#xff1a;形状是抽象&#xff1b; 实现&#xff1a;实现颜色的代码...

3.vtkProp 和vtkProp3D

文章目录 vtkProp 和vtkProp3D使用vtkProp3D使用vtkPro vtkProp 和vtkProp3D vtkProp 和 vtkProp3D 都是VTK&#xff08;Visualization Toolkit&#xff09;库中的类&#xff0c;它们用于在渲染场景中表示可视化元素。理解这两个类的区别和用途对于有效地使用VTK进行三维数据可…...

大模型之Transformers , PyTorch和Keras

Transformers、PyTorch 和 Keras 的对比 特性TransformersPyTorchKeras主要应用自然语言处理(NLP)任务计算机视觉、NLP、强化学习等快速原型设计和深度学习模型构建架构基于 Transformer 模型,强大的自注意力机制动态计算图,灵活的模型构建和调试高层次 API,简化模型开发,…...

云原生(Cloud Native)的详解、开发流程及同类软件对比

以下是云原生&#xff08;Cloud Native&#xff09;的详解、开发流程及同类软件对比&#xff1a; 一、云原生核心概念 定义&#xff1a; 云原生&#xff08;Cloud Native&#xff09;是基于云环境设计和运行应用程序的方法论&#xff0c;强调利用云平台的弹性、分布式和自动化…...

从文本到视频:基于扩散模型的AI生成系统全解析(附PyTorch实现)

当语言遇见动态视觉 "用文字生成电影场景"曾是科幻作品中的幻想&#xff0c;如今借助扩散模型&#xff08;Diffusion Models&#xff09;正逐步成为现实。本文将手把手带你实现一个创新的文本到视频生成系统&#xff0c;通过深度解析扩散模型原理&#xff0c;结合独…...

ES6学习04-数组扩展:扩展运算符、新增方法

一、扩展运算符 1. 2. eg: 3. 二、新增方法 1. arguments 元素组合 类似数组对象 2....

TiDB 部署指南(单机模式) CentOS 7 安装 MariaDB 教程

文章目录 TiDB 部署指南&#xff08;单机模式&#xff09;& CentOS 7 安装 MariaDB 教程简介TiDB 关键特性TiDB 单机部署步骤下载 TiDB 安装包校验文件完整性解压并进入目录启动 PD 服务启动 TiKV 服务启动 TiDB 服务使用 MySQL 客户端连接 TiDB CentOS 7 安装 MariaDB&…...

C++23 新特性:auto(x) 和 auto{x} 的衰变复制

文章目录 一、什么是衰变复制二、为什么引入衰变复制三、auto(x) 和 auto{x} 的区别四、使用场景1. 模板编程中的副本创建2. 避免引用失效3. 并发编程中的线程构造 五、性能考虑六、总结 在 C23 中&#xff0c; auto(x) 和 auto{x} 的引入为语言带来了新的便利性和灵活性。这…...

人工智能驱动的科研新范式及学科应用研究

人工智能&#xff08;AI&#xff09;驱动的科研新范式通过数据、算力、算法的深度耦合深度嵌入科学研究的全过程&#xff0c;引发科研流程、思考逻辑和组织模式的深刻变革。文章系统总结了AI驱动科研新范式的主要特征与形式&#xff0c;提出AI驱动科研新范式的演化方向由“科研…...

2025.04.14【Animation】| 动画式生信数据可视化

Cheatsheet base R A cheatsheet to remember a few chart parameters. 文章目录 Cheatsheet base R 动画式生信数据可视化&#xff1a;R语言中的动态图表详解1. R语言和数据可视化基础2. R中的ggplot2包3. R中的dplyr包4. R中的颜色和形状5. R中的动画包gganimate6. 生物信息…...

Kotlin作用域函数

在 Kotlin 中&#xff0c;.apply 是一个 作用域函数&#xff08;Scope Function&#xff09;&#xff0c;它允许你在一个对象的上下文中执行代码块&#xff0c;并返回该对象本身。它的设计目的是为了 对象初始化 或 链式调用 时保持代码的简洁性和可读性。 // 不使用 apply va…...

SCP-Firmware安全通告:CVE-2024-11863和CVE-2024-11864

安全之安全(security)博客目录导读 目录 一、概述 二、CVE详情 三、受影响产品 四、修复建议 五、致谢 六、版本历史 一、概述 在SCP固件(SCP-Firmware)中发现两处安全漏洞&#xff0c;可能允许普通世界特权软件&#xff08;normal world privileged software&#xff…...

报错:Nlopt

报错&#xff1a;Nlopt CMake Error at TGH-Planner/fast_planner/bspline_opt/CMakeLists.txt:20 (find_package):By not providing "FindNLopt.cmake" in CMAKE_MODULE_PATH this project hasasked CMake to find a package configuration file provided by "…...

软考高级系统架构设计师-第12章 系统质量属性与架构评估

【本章学习建议】 根据考试大纲&#xff0c;本章不仅考查系统架构设计师单选题&#xff0c;预计考11分左右&#xff0c;而且案例分析和论文写作也是必考&#xff0c;对应第二版教材第8章&#xff0c;属于重点学习的章节。 12.1 软件系统质量属性 12.1.1 质量属性概念 软件系…...

RockyLinux9 部署 Zabbix7 完整步骤

一、Zabbix介绍 Zabbix 是企业级开源监控解决方案&#xff0c;支持实时监控数台服务器&#xff0c;虚拟机和网络设备&#xff0c;开源免费&#xff0c;官方手册 https://www.zabbix.com/documentation/7.0/zh/manual 二、RockyLinux9部署Zabbix 1、进入到相对的系统下&#…...

「小推桌面官方下载」小推桌面TV版-安卓电视版官方免费下载新版

下面小编将给大家详细介绍小推桌面免费下载新版 1. 查找官网&#xff1a;通过搜索引擎查找小推桌面的官方网站。注意要确保进入的是官方正规网站&#xff0c;避免从不可信的来源下载应用&#xff0c;以防安全风险。 2. 下载安装包&#xff1a;在官网中找到适合安卓电视版的小…...

Java多线程学习指南

&#x1f91f;致敬读者 &#x1f7e9;感谢阅读&#x1f7e6;笑口常开&#x1f7ea;生日快乐⬛早点睡觉 &#x1f4d8;博主相关 &#x1f7e7;博主信息&#x1f7e8;博客首页&#x1f7eb;专栏推荐&#x1f7e5;活动信息 文章目录 Java多线程学习指南**一、入门基础**1. **线…...

HTTPS实现安全的关键方法及技术细节

HTTPS&#xff08;HyperText Transfer Protocol Secure&#xff09;通过多种技术手段实现数据传输的安全性&#xff0c;其核心机制基于SSL/TLS协议&#xff0c;并结合数字证书、加密算法等技术。 SSL&#xff1a;Secure Sockets Layer&#xff0c;安全套接字层 TLS&#xff1a;…...

记录:安装 Docker Desktop 时直接设置安装路径及容器存储路径

近期学用 deepseek 本地知识库的构建&#xff0c;准备尝试几个不同的 RAG 工具&#xff0c;结果基本都需要 Docker 支持&#xff0c;故又重新拾起 Docker 来安装&#xff0c;刚好看到个不用目录链接就可以直接设置安装路径的方法&#xff0c;就记录一下&#xff0c;以免以后忘…...

日志分析-mysql应急响应

日志分析-mysql应急响应 任务&#xff1a; 1.黑客第一次写入的shell flag{关键字符串} 2.黑客反弹shell的ip flag{ip} 3.黑客提权文件的完整路径 md5 flag{md5} 注 /xxx/xxx/xxx/xxx/xxx.xx 4.黑客获取的权限 flag{whoami后的值} 黑客第一次写入的shell flag{关键字符串} …...

【C++ 】智能指针:内存管理的 “自动导航仪”

目录 一、引入 二、智能指针的两大特性&#xff1a; 1、RAII 特点&#xff1a; 好处&#xff1a; 2、行为像指针 三、智能指针起初的缺陷&#xff1a;拷贝问题 四、几种智能指针的介绍。 1、C98出现的智能指针——auto_ptr auto_ptr解决上述拷贝构造的问题&#xff1a…...

macOS 上使用 Homebrew 安装和配置 frp 客户端

macOS 上使用 Homebrew 安装和配置 frp 客户端 (frpc) 指南 frp (Fast Reverse Proxy) 是一款高性能的反向代理应用&#xff0c;常用于内网穿透。本文将介绍在 macOS 上使用 Homebrew 安装 frpc&#xff0c;并进行配置和管理。 一、安装 frpc 使用 Homebrew 安装&#xff08;…...