十、Qt三维图表

一、Data Visualization模块概述

Data Visualization的三维显示功能主要有三种三维图形来实现,三各类的父类都是QAbstract3DGraph,从QWindow继承而来。这三类分别是:
  • 三维柱状图Q3DBar
  • 三维空间散点Q3DScatter
  • 三维曲面Q3DSurface

1、相关类的继承关系

(1)图形类

QWindow
	QAbstract3DGraph
		Q3DBar
		Q3DScatter
		Q3DSurface

(2)数据序列类

QAbstract3DSeries
	QBar3DSeries
	QScatter3DSeries
	QSurface3DSeries

(3)轴类

QAbstract3DAxis
	QCategory3DAxis
	QValue3DAxis

(4)数据代理类

数据代理类与序列对应,用于存储序列的数据的类。
QAbstractDataProxy
	QBarDataProxy
		QItemModelBarDataProxy
	QScatterDataProxy
		QItemModelScatterDataProxy
	QSurfaceDataProxy
		QHeightMapSurfaceDataProxy
		QItemModelSurfaceDataProxy

2、使用方法

(1)工程添加

QT += datavisualization

(2)代码中添加头文件与命名空间

#include <QtDataVisualization>
using namespace QtDataVisualization;

二、三维柱状图

1、实现程序

在这里插入图片描述

(1)创建项目,基于QMainWindow

(2)添加组件

在这里插入图片描述

(3)初始化

MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);

    QSplitter *splitter = new QSplitter(Qt::Horizontal);
    splitter->addWidget(ui->groupBox);


    initGraph3D();
    splitter->addWidget(createWindowContainer(graph3D));
    setCentralWidget(splitter);
}

MainWindow::~MainWindow()
{
    delete ui;
}

void MainWindow::initGraph3D()
{
    graph3D = new Q3DBars;

    // 创建坐标系统
    QStringList rowLabs, colLabs;
    rowLabs << "row1" << "row2" << "row3";
    colLabs << "col1" << "col2" << "col3" << "col4" << "col5";

    QValue3DAxis *axisV = new QValue3DAxis;
    axisV->setTitle("Value");
    axisV->setTitleVisible(true);

    QCategory3DAxis * axisCol = new QCategory3DAxis;
    axisCol->setTitle("Column");
    axisCol->setTitleVisible(true);
    axisCol->setLabels(colLabs);

    QCategory3DAxis * axisRow = new QCategory3DAxis;
    axisRow->setTitle("Row");
    axisRow->setTitleVisible(true);
    axisRow->setLabels(rowLabs);

    graph3D->setValueAxis(axisV);
    graph3D->setColumnAxis(axisCol);
    graph3D->setRowAxis(axisRow);

    // 创建数据序列
    QBar3DSeries *series = new QBar3DSeries;
    series->setMesh(QAbstract3DSeries::MeshCylinder); // 形状
    series->setItemLabelFormat("(@rowLabel,@colLabel):%.1f");

    // 添加数据
    QBarDataArray *dataArray = new QBarDataArray;
    dataArray->reserve(rowLabs.count()); // 三行数据

    qsrand(QTime::currentTime().second());

    for (int i = 0; i < rowLabs.count(); ++i)
    {
        QBarDataRow *dataRow = new QBarDataRow;

        for (int j = 0; j < 5; ++j)
        {
            (*dataRow) << (qrand() % 10);
        }

        dataArray->append(dataRow);
    }

    series->dataProxy()->resetArray(dataArray);
    graph3D->addSeries(series);
}

在这里插入图片描述

(4)实现功能

void MainWindow::on_cboxCarmera_currentIndexChanged(int index)
{
    graph3D->scene()->activeCamera()->setCameraPreset(Q3DCamera::CameraPreset(index));
}

void MainWindow::on_hSliderLevel_valueChanged(int value)
{
    Q_UNUSED(value);
    int xRot = ui->hSliderLevel->value();
    int yRot = ui->hSliderVertical->value();
    int zoom = ui->hSliderScale->value();
    graph3D->scene()->activeCamera()->setCameraPosition(xRot, yRot, zoom);
}

void MainWindow::on_hSliderVertical_valueChanged(int value)
{
    Q_UNUSED(value);
    int xRot = ui->hSliderLevel->value();
    int yRot = ui->hSliderVertical->value();
    int zoom = ui->hSliderScale->value();
    graph3D->scene()->activeCamera()->setCameraPosition(xRot, yRot, zoom);
}

void MainWindow::on_hSliderScale_valueChanged(int value)
{
    Q_UNUSED(value);
    int xRot = ui->hSliderLevel->value();
    int yRot = ui->hSliderVertical->value();
    int zoom = ui->hSliderScale->value();
    graph3D->scene()->activeCamera()->setCameraPosition(xRot, yRot, zoom);
}

void MainWindow::on_cboxTheme_currentIndexChanged(int index)
{
    graph3D->activeTheme()->setType(Q3DTheme::Theme(index));
}

void MainWindow::on_cboxStyle_currentIndexChanged(int index)
{
    QBar3DSeries *series = graph3D->seriesList().at(0);
    series->setMesh(QAbstract3DSeries::Mesh(index));
}

void MainWindow::on_cboxMode_currentIndexChanged(int index)
{
    graph3D->setSelectionMode(QAbstract3DGraph::SelectionFlags(index));
}

void MainWindow::on_spinBoxFontSize_valueChanged(int arg1)
{
    QFont font = graph3D->activeTheme()->font();
    font.setPointSize(arg1);
    graph3D->activeTheme()->setFont(font);
}

#include <QColorDialog>
void MainWindow::on_btnItemColor_clicked()
{
    QBar3DSeries *series = graph3D->seriesList().at(0);
    QColor color = series->baseColor();
    color = QColorDialog::getColor(color);
    if(color.isValid())
    {
        series->setBaseColor(color);
    }
}

void MainWindow::on_checkBoxBack_clicked(bool checked)
{
    graph3D->activeTheme()->setBackgroundEnabled(checked);
}

void MainWindow::on_checkBoxBackNetwork_clicked(bool checked)
{
    graph3D->activeTheme()->setGridEnabled(checked);
}

void MainWindow::on_checkBoxSmooth_clicked(bool checked)
{
    QBar3DSeries *series = graph3D->seriesList().at(0);
    series->setMeshSmooth(checked);
}

void MainWindow::on_checkBoxReflection_clicked(bool checked)
{
    graph3D->setReflection(checked);
}

void MainWindow::on_checkBoxValueAxis_clicked(bool checked)
{
    graph3D->valueAxis()->setReversed(checked);
}

void MainWindow::on_checkBoxItemLabel_clicked(bool checked)
{
    QBar3DSeries *series = graph3D->seriesList().at(0);
    series->setItemLabelVisible(checked);
}

void MainWindow::on_checkBoxAxisBack_clicked(bool checked)
{
    graph3D->valueAxis()->setTitleVisible(checked);
    graph3D->rowAxis()->setTitleVisible(checked);
    graph3D->columnAxis()->setTitleVisible(checked);
}

void MainWindow::on_checkBoxAxisLabelBack_clicked(bool checked)
{
    graph3D->activeTheme()->setLabelBackgroundEnabled(checked);
}

三、三维散点图

1、实现程序

在这里插入图片描述

(1)创建项目,基于QMainWindow

(2)实现功能

#include "mainwindow.h"
#include "ui_mainwindow.h"

#include <QSplitter>

MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);

    QSplitter *splitter = new QSplitter(Qt::Horizontal);
    splitter->addWidget(ui->groupBox);


    initGraph3D();
    splitter->addWidget(createWindowContainer(graph3D));
    setCentralWidget(splitter);
}

MainWindow::~MainWindow()
{
    delete ui;
}

void MainWindow::initGraph3D()
{
    graph3D = new Q3DScatter;

    // 创建坐标系统
    graph3D->axisX()->setTitle("X轴");
    graph3D->axisX()->setTitleVisible(true);
    graph3D->axisY()->setTitle("Y轴");
    graph3D->axisY()->setTitleVisible(true);
    graph3D->axisZ()->setTitle("Z轴");
    graph3D->axisZ()->setTitleVisible(true);

    // 创建数据序列
    QScatterDataProxy *porxy = new QScatterDataProxy;
    QScatter3DSeries *series = new QScatter3DSeries(porxy);
    //    series->setMesh(QAbstract3DSeries::MeshCylinder); // 形状
    series->setItemLabelFormat("(@rowLabel,@colLabel):%.1f");
    series->setItemSize(0.2);
    graph3D->addSeries(series);

    // 添加数据
    int N = 41;
    QScatterDataArray *dataArray = new QScatterDataArray;
    dataArray->resize(N * N);
    QScatterDataItem *item = &dataArray->first();


    // 摩西跟草帽算法
    float x, y, z;
    x = -10;
    for (int i = 0; i < N; ++i)
    {
        y = -10;
        for (int j = 1; j <= N; ++j)
        {
            z = qSqrt(x * x + y * y);
            if(z != 0)
            {
                z = 10 * qSin(z) / z;
            }
            else
            {
                z = 10;
            }
            // 图形库的坐标系
            item->setPosition(QVector3D(x, z, y));
            item++;
            y += 0.5;
        }
        x += 0.5;
    }

    series->dataProxy()->resetArray(dataArray);
}

void MainWindow::on_cboxCarmera_currentIndexChanged(int index)
{
    graph3D->scene()->activeCamera()->setCameraPreset(Q3DCamera::CameraPreset(index));
}

void MainWindow::on_hSliderLevel_valueChanged(int value)
{
    Q_UNUSED(value);
    int xRot = ui->hSliderLevel->value();
    int yRot = ui->hSliderVertical->value();
    int zoom = ui->hSliderScale->value();
    graph3D->scene()->activeCamera()->setCameraPosition(xRot, yRot, zoom);
}

void MainWindow::on_hSliderVertical_valueChanged(int value)
{
    Q_UNUSED(value);
    int xRot = ui->hSliderLevel->value();
    int yRot = ui->hSliderVertical->value();
    int zoom = ui->hSliderScale->value();
    graph3D->scene()->activeCamera()->setCameraPosition(xRot, yRot, zoom);
}

void MainWindow::on_hSliderScale_valueChanged(int value)
{
    Q_UNUSED(value);
    int xRot = ui->hSliderLevel->value();
    int yRot = ui->hSliderVertical->value();
    int zoom = ui->hSliderScale->value();
    graph3D->scene()->activeCamera()->setCameraPosition(xRot, yRot, zoom);
}

void MainWindow::on_cboxTheme_currentIndexChanged(int index)
{
    graph3D->activeTheme()->setType(Q3DTheme::Theme(index));
}

void MainWindow::on_cboxStyle_currentIndexChanged(int index)
{
    QScatter3DSeries *series = graph3D->seriesList().at(0);
    series->setMesh(QAbstract3DSeries::Mesh(index));
}

void MainWindow::on_cboxMode_currentIndexChanged(int index)
{
    graph3D->setSelectionMode(QAbstract3DGraph::SelectionFlags(index));
}

void MainWindow::on_spinBoxFontSize_valueChanged(int arg1)
{
    QFont font = graph3D->activeTheme()->font();
    font.setPointSize(arg1);
    graph3D->activeTheme()->setFont(font);
}

#include <QColorDialog>
void MainWindow::on_btnItemColor_clicked()
{
    QScatter3DSeries *series = graph3D->seriesList().at(0);
    QColor color = series->baseColor();
    color = QColorDialog::getColor(color);
    if(color.isValid())
    {
        series->setBaseColor(color);
    }
}

void MainWindow::on_checkBoxBack_clicked(bool checked)
{
    graph3D->activeTheme()->setBackgroundEnabled(checked);
}

void MainWindow::on_checkBoxBackNetwork_clicked(bool checked)
{
    graph3D->activeTheme()->setGridEnabled(checked);
}

void MainWindow::on_checkBoxSmooth_clicked(bool checked)
{
    QScatter3DSeries *series = graph3D->seriesList().at(0);
    series->setMeshSmooth(checked);
}

void MainWindow::on_checkBoxReflection_clicked(bool checked)
{
    graph3D->setReflection(checked);
}

void MainWindow::on_checkBoxValueAxis_clicked(bool checked)
{
    graph3D->axisY()->setReversed(checked);
}

void MainWindow::on_checkBoxItemLabel_clicked(bool checked)
{
    QScatter3DSeries *series = graph3D->seriesList().at(0);
    series->setItemLabelVisible(checked);
}

void MainWindow::on_checkBoxAxisBack_clicked(bool checked)
{
    graph3D->axisY()->setTitleVisible(checked);
    graph3D->axisX()->setTitleVisible(checked);
    graph3D->axisZ()->setTitleVisible(checked);
}

void MainWindow::on_checkBoxAxisLabelBack_clicked(bool checked)
{
    graph3D->activeTheme()->setLabelBackgroundEnabled(checked);
}

四、三维曲面图

1、实现程序

在这里插入图片描述

(1)创建项目,基于QMainWindow

(2)添加组件

在这里插入图片描述

(3)初始化

MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);

    QSplitter *splitter = new QSplitter;
    splitter->addWidget(ui->groupBox);
    init3DGraph();
    splitter->addWidget(createWindowContainer(graph3D));
    setCentralWidget(splitter);

    // 设置按钮的渐变色
    QLinearGradient lgColor1(0, 0, 100, 0);
    lgColor1.setColorAt(1.0, Qt::black);
    lgColor1.setColorAt(0.67, Qt::blue);
    lgColor1.setColorAt(0.33, Qt::red);
    lgColor1.setColorAt(0, Qt::yellow);
    QPixmap mp(160, 20);
    QPainter painter(&mp);
    painter.setBrush(lgColor1);
    painter.drawRect(0, 0, 160, 20);
    ui->btnColors1->setIcon(QIcon(mp));
    ui->btnColors1->setIconSize(QSize(160, 20));

    lgColor1.setColorAt(1.0, Qt::darkBlue);
    lgColor1.setColorAt(0.5, Qt::yellow);
    lgColor1.setColorAt(0.2, Qt::red);
    lgColor1.setColorAt(0, Qt::darkRed);
    painter.setBrush(lgColor1);
    painter.drawRect(0, 0, 160, 20);
    ui->btnColors2->setIcon(QIcon(mp));
    ui->btnColors2->setIconSize(QSize(160, 20));
}

MainWindow::~MainWindow()
{
    delete ui;
}

void MainWindow::init3DGraph()
{
    graph3D = new Q3DSurface;

    graph3D->axisX()->setTitle("X轴");
    graph3D->axisX()->setTitleVisible(true);
    graph3D->axisX()->setRange(-11, 11);
    graph3D->axisY()->setTitle("Y轴");
    graph3D->axisY()->setTitleVisible(true);
    graph3D->axisZ()->setTitle("Z轴");
    graph3D->axisZ()->setTitleVisible(true);
    graph3D->axisZ()->setRange(-11, 11);


    QSurfaceDataProxy *proxy = new QSurfaceDataProxy;
    series = new QSurface3DSeries(proxy);
    series->setDrawMode(QSurface3DSeries::DrawSurface);
    series->setMeshSmooth(true); // 光滑曲面
    graph3D->addSeries(series);

    QSurfaceDataArray *dataArray = new QSurfaceDataArray;

    // 摩西跟草帽算法
    int N = 41;
    dataArray->reserve(N);
    float x, y, z;
    x = -10;
    for (int i = 0; i < N; ++i)
    {
        QSurfaceDataRow *newRow = new QSurfaceDataRow(N);

        y = -10;
        int index = 0;
        for (int j = 1; j <= N; ++j)
        {
            z = qSqrt(x * x + y * y);
            if(z != 0)
            {
                z = 10 * qSin(z) / z;
            }
            else
            {
                z = 10;
            }
            // 图形库的坐标系
            (*newRow)[index++].setPosition(QVector3D(x, z, y));
            y += 0.5;
        }
        x += 0.5;
        *dataArray << newRow;
    }

    series->dataProxy()->resetArray(dataArray);

}

(4)设置颜色

#include <QColorDialog>
void MainWindow::on_btnOneColor_clicked()
{
    QColor color = series->baseColor();
    color = QColorDialog::getColor(color);
    if(color.isValid())
    {
        series->setBaseColor(color);
        series->setColorStyle(Q3DTheme::ColorStyleUniform);
    }
}

void MainWindow::on_btnColors1_clicked()
{
    QLinearGradient lgColor1(0, 0, 100, 0);
    lgColor1.setColorAt(1.0, Qt::black);
    lgColor1.setColorAt(0.67, Qt::blue);
    lgColor1.setColorAt(0.33, Qt::red);
    lgColor1.setColorAt(0, Qt::yellow);
    series->setBaseGradient(lgColor1);
    series->setColorStyle(Q3DTheme::ColorStyleRangeGradient); //设置渐变色
}

void MainWindow::on_btnColors2_clicked()
{
    QLinearGradient lgColor1(0, 0, 100, 0);
    lgColor1.setColorAt(1.0, Qt::darkBlue);
    lgColor1.setColorAt(0.5, Qt::yellow);
    lgColor1.setColorAt(0.2, Qt::red);
    lgColor1.setColorAt(0, Qt::darkRed);
    series->setBaseGradient(lgColor1);
    series->setColorStyle(Q3DTheme::ColorStyleRangeGradient);
}

五、三维地形图

1、实现程序

在这里插入图片描述

(1)拷贝上一个项目

(2)添加图片资源文件

(3)实现功能

#include "mainwindow.h"
#include "ui_mainwindow.h"

#include <QSplitter>

MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);

    QSplitter *splitter = new QSplitter;
    splitter->addWidget(ui->groupBox);
    init3DGraph();
    splitter->addWidget(createWindowContainer(graph3D));
    setCentralWidget(splitter);

    // 设置按钮的渐变色
    QLinearGradient lgColor1(0, 0, 100, 0);
    lgColor1.setColorAt(1.0, Qt::black);
    lgColor1.setColorAt(0.67, Qt::blue);
    lgColor1.setColorAt(0.33, Qt::red);
    lgColor1.setColorAt(0, Qt::yellow);
    QPixmap mp(160, 20);
    QPainter painter(&mp);
    painter.setBrush(lgColor1);
    painter.drawRect(0, 0, 160, 20);
    ui->btnColors1->setIcon(QIcon(mp));
    ui->btnColors1->setIconSize(QSize(160, 20));

    lgColor1.setColorAt(1.0, Qt::darkBlue);
    lgColor1.setColorAt(0.5, Qt::yellow);
    lgColor1.setColorAt(0.2, Qt::red);
    lgColor1.setColorAt(0, Qt::darkRed);
    painter.setBrush(lgColor1);
    painter.drawRect(0, 0, 160, 20);
    ui->btnColors2->setIcon(QIcon(mp));
    ui->btnColors2->setIconSize(QSize(160, 20));
}

MainWindow::~MainWindow()
{
    delete ui;
}

void MainWindow::init3DGraph()
{
    graph3D = new Q3DSurface;

    graph3D->axisX()->setTitle("东--西");
    graph3D->axisX()->setTitleVisible(true);
    graph3D->axisX()->setLabelFormat("%.2f米");
    graph3D->axisZ()->setTitle("南--北");
    graph3D->axisZ()->setTitleVisible(true);
    graph3D->axisY()->setTitle("海拔");
    graph3D->axisY()->setTitleVisible(true);

    QImage mapImage(":/images/images/map.png");
    QHeightMapSurfaceDataProxy *proxy = new QHeightMapSurfaceDataProxy(mapImage);
    proxy->setValueRanges(-5000, 5000, -5000, 5000);
    series = new QSurface3DSeries(proxy);
    series->setDrawMode(QSurface3DSeries::DrawSurface);
    graph3D->addSeries(series);
}

void MainWindow::on_cboxSurfaceStyle_currentIndexChanged(int index)
{
    series->setDrawMode(QSurface3DSeries::DrawFlags(index + 1));
}

#include <QColorDialog>
void MainWindow::on_btnOneColor_clicked()
{
    QColor color = series->baseColor();
    color = QColorDialog::getColor(color);
    if(color.isValid())
    {
        series->setBaseColor(color);
        series->setColorStyle(Q3DTheme::ColorStyleUniform);
    }
}

void MainWindow::on_btnColors1_clicked()
{
    QLinearGradient lgColor1(0, 0, 100, 0);
    lgColor1.setColorAt(1.0, Qt::black);
    lgColor1.setColorAt(0.67, Qt::blue);
    lgColor1.setColorAt(0.33, Qt::red);
    lgColor1.setColorAt(0, Qt::yellow);
    series->setBaseGradient(lgColor1);
    series->setColorStyle(Q3DTheme::ColorStyleRangeGradient); //设置渐变色
}

void MainWindow::on_btnColors2_clicked()
{
    QLinearGradient lgColor1(0, 0, 100, 0);
    lgColor1.setColorAt(1.0, Qt::darkBlue);
    lgColor1.setColorAt(0.5, Qt::yellow);
    lgColor1.setColorAt(0.2, Qt::red);
    lgColor1.setColorAt(0, Qt::darkRed);
    series->setBaseGradient(lgColor1);
    series->setColorStyle(Q3DTheme::ColorStyleRangeGradient);
}

void MainWindow::on_cboxMode_currentIndexChanged(int index)
{
    switch (index)
    {
    case 0:
        graph3D->setSelectionMode(QAbstract3DGraph::SelectionNone);
        break;
    case 1:
        graph3D->setSelectionMode(QAbstract3DGraph::SelectionItem);
        break;
    case 2:
        graph3D->setSelectionMode(QAbstract3DGraph::SelectionRow |
                                  QAbstract3DGraph::SelectionSlice);
        break;
    case 3:
        graph3D->setSelectionMode(QAbstract3DGraph::SelectionColumn |
                                  QAbstract3DGraph::SelectionSlice);
        break;
    default:
        break;
    }
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/366301.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

混乱字母排序——欧拉路数论

题目描述 小明接到一个神秘的任务&#xff1a;对于给定的 n 个没有顺序的字母对&#xff08;无序代表这两个字母可以前后顺序颠倒&#xff0c;区分大小写&#xff09;。请构造一个有 (n1) 个字母的混乱字符串使得每个字母对都在这个字符串中出现。 输入输出格式 输入格式 第…

蓝桥杯备战——10.超声波模块

1.分析原理图 蓝桥杯单片机板子的原理图做的简直是依托答辩&#xff0c;乱糟糟的不说还弄成黑白的&#xff0c;明明很简单的东西&#xff0c;弄成一大堆。 可以看到&#xff0c;J2跳线帽如果P10接N_A1,P11接N_B1就是用作超声波功能。N_A1用作发生超声波功能&#xff0c;而N_B1…

【blender插件】(1)快速开始

特性 blender的python API有如下特性: 编辑用户界面可以编辑的任意数据(场景,网格,粒子等)。修改用户首选项、键映射和主题。运行自己的配置运行工具。创建用户界面元素,如菜单、标题和面板。创建新的工具。场景交互式工具。创建与Blender集成的新渲染引擎。修改模型的数据…

pinctrl/gpio子系统(2)-gpio子系统介绍及驱动源码简单分析

文章目录 1.gpio子系统api2.gpio相关of函数3.gpio子系统驱动分析3.1设备树信息分析3.2驱动程序分析 4.最后 1.gpio子系统api 这里的api都是基于gpio的编号去进行操作 1&#xff09;gpio_request&#xff0c;用于申请一个GPIO管脚 int gpio_request(unsigned gpio, const char …

前缀和 差分

差分和前缀和都是算法里边比较重要的知识点&#xff0c;不过学习的难度并不高&#xff0c;这篇文章会讲解相关的内容。 1. 前缀和怎么玩 1&#xff09;一维前缀和 在该数之前&#xff0c;包括该数的所有数之和&#xff0c;有点类似高中学的数列的前n项和Sn。 2&#xff09;二维…

【sentinel流量卫兵搭建与微服务整合】

sentinel流量卫兵搭建与微服务整合 搭建sentinel dashboard控制台微服务整合 搭建sentinel dashboard控制台 1、下载 官网链接 由于官网github网络原因&#xff0c;导致长时间下载失败。 网盘链接 网盘提取码&#xff1a;dwgj 2、运行 将下载jar包放在任意非中文、不包含特殊…

专有云 ABC Stack 联合银联商务打造金融级云平台,入选《2024 央国企上云用云典型案例》

2024 年 1 月&#xff0c;在中国信通院《2024 央国企上云用云典型案例》征集中&#xff0c;百度智能云携手银联商务提交的《银联商务金融级云平台》成功入选「上云用云解决方案典型案例」。 在国家「1 朵央企云统领&#xff0c;N 朵行业云共载&#xff0c;M 朵私有云共生」的央…

jenkins 下载插件sentry-cli失败 证书过期

现状 npm set ENTRYCLI_CDNURLhttps://cdn.npm.taobao.org/dist/sentry-cli npm set sentrycli_cdnurlhttps://cdn.npm.taobao.org/dist/sentry-cli 原因是npm原域名停止解析&#xff0c;在访问上面sentry-cli的cdn资源的时候 证书过期无法下载。 解决&#xff1a; 替换证书过期…

BL808 Linux支持WIFI

BL808芯片介绍 BL808是高度集成的AIoT芯片组&#xff0c;具有Wi-Fi/BT/BLE/Zigbee等无线互联单元&#xff0c;包含多个 CPU 以及音频编码译码器、视频编码译码器和 AI 硬件加速器&#xff0c;适用于各种高性能和低功耗应用领域。 外围接口包括 USB2.0、 Ethernet、 SD/MMC、 …

【python3.8 pre-commit报错】记录pre-commit install报错

一、问题 在执行pre-commit install --allow-missing-config命令时&#xff0c;报错 Traceback (most recent call last):File "C:\ProgramData\Anaconda3\envs\py38\lib\runpy.py", line 192, in _run_module_as_mainreturn _run_code(code, main_globals, None,F…

【Linux】 Linux编译器-gcc/g++使用

&#x1f497;个人主页&#x1f497; ⭐个人专栏——Linux学习⭐ &#x1f4ab;点击关注&#x1f929;一起学习C语言&#x1f4af;&#x1f4ab; 目录 导读1. Linux编译器-gcc/g使用1.1 引入1.2 初识gcc/g1.3 程序运行的四个阶段1.3.1 预处理1.3.2 编译1.3.3 汇编1.3.4 链接 1.…

Git―基本操作

Git ⛅认识 Git⛅安装 GitCentos(7.6)Ubuntu ⛅Git―基本操作创建本地仓库&#x1f342;配置本地仓库&#x1f342;工作区, 暂存区, 版本库&#x1f342;版本库工作区 添加文件&#x1f342;查看文件&#x1f342;修改文件&#x1f342;版本回退&#x1f342;☃️案例 撤销修改…

【Java 数据结构】二叉树

二叉树 1. 树型结构&#xff08;了解&#xff09;1.1 概念1.2 概念&#xff08;重要&#xff09;1.3 树的表示形式&#xff08;了解&#xff09;1.4 树的应用 2. 二叉树&#xff08;重点&#xff09;2.1 概念2.2 两种特殊的二叉树2.3 二叉树的性质2.4 二叉树的存储2.5 二叉树的…

Error: Projects must list all files or use an ‘include‘ pattern.

博主介绍&#xff1a;✌全网粉丝5W&#xff0c;全栈开发工程师&#xff0c;从事多年软件开发&#xff0c;在大厂呆过。持有软件中级、六级等证书。可提供微服务项目搭建与毕业项目实战&#xff0c;博主也曾写过优秀论文&#xff0c;查重率极低&#xff0c;在这方面有丰富的经验…

汽车软件开发模式的5个特点

汽车软件开发属于较为复杂的系统工程&#xff0c;经常让来自不同知识背景的工程师在观点交锋时出现分歧。在解决复杂性和对齐讨论基准时&#xff0c;可以通过勾勒出讨论对象最关键的几个特征来树立典型概念。本文旨在通过5个典型特点的抽取&#xff0c;来勾勒出汽车软件开发模式…

023 for循环详解

什么是for循环 // 练习1 int odd 0; int even 0; for (int i 0; i < 100; i) {if (i % 2 0) {even i;} else {odd i;} } System.out.println("奇数和为:" odd ",偶数和为:" even);// 练习2 for (int i 1; i < 1000; i) {if (i % 5 0) {Sy…

使用STM32 DMA实现高效数据传输的设计与优化

使用STM32的DMA功能可以有效地实现高效的数据传输。在下面的解释中&#xff0c;我将介绍如何设计和优化使用STM32 DMA进行高效数据传输的方法。同时&#xff0c;我将提供一些示例代码来帮助您理解和实践。 ✅作者简介&#xff1a;热爱科研的嵌入式开发者&#xff0c;修心和技术…

决策树的相关知识点

&#x1f4d5;参考&#xff1a;ysu老师课件西瓜书 1.决策树的基本概念 【决策树】&#xff1a;决策树是一种描述对样本数据进行分类的树形结构模型&#xff0c;由节点和有向边组成。其中每个内部节点表示一个属性上的判断&#xff0c;每个分支代表一个判断结果的输出&#xff…

2017年苏州大学837复试机试C/C++

2017年苏州大学复试机试 要求 要求用C/C编程&#xff1b;对程序中必要的地方进行注释。上机规则 请在电脑桌面上新建一个文件夹文件夹名为考试姓名&#xff08;中文&#xff09;&#xff1b;考试完毕后&#xff0c;将所编写的文件放在上述文件中。 第一题&#xff08;20分&…

vue使用antv-x6 绘制流程图DAG图(二)

代码&#xff1a; <template><div class"graph-wrap" click.stop"hideFn"><Toobar :graph"graph"></Toobar><!-- 小地图 --><div id"minimap" class"mini-map-container"></div>…