介绍10个比较优秀好用的Qt相关的开源库

记录下比较好用的一些开源库

1. Qt中的日志库“log4qt”

log4qt 是一个基于 Apache Log4j 设计理念的 Qt 日志记录库,它为 Qt 应用程序提供了强大而灵活的日志记录功能。Log4j 是 Java 领域广泛使用的日志框架,log4qt 借鉴了其优秀的设计思想,让 Qt 开发者可以方便地在 C++ 代码中实现类似的日志记录机制;log4qt”开源库基本可以满足中小型项目的各种日志需求,特别优点是能很好的嵌入到Qt开发的项目中,自动打印出Qt本身的一些警告或错误,这块其实很有用,往往是一些问题的本源;
可以从 log4qt 的官方 GitHub 仓库(https://github.com/MEONMedical/log4qt)下载最新的源码。解压源码包后,进入源码目录,使用 Qt 的 qmake 和 make 工具进行编译和安装。在项目的 .pro 文件中添加对 log4qt 库的引用。
在应用程序的 main 函数中,需要对 log4qt 进行初始化。以下是一个简单的初始化示例

#include <QCoreApplication>
#include <Log4Qt/Logger>
#include <Log4Qt/BasicConfigurator>

int main(int argc, char *argv[])
{
    QCoreApplication a(argc, argv);

    // 基本配置,将日志输出到控制台
    Log4Qt::BasicConfigurator::configure();

    // 获取根日志记录器
    Log4Qt::Logger* logger = Log4Qt::Logger::root();

    // 记录日志
    logger->debug("Debug message");
    logger->info("Info message");
    logger->warn("Warning message");
    logger->error("Error message");
    logger->fatal("Fatal message");

    return a.exec();
}
2. 图表开源库“QCustomPlot”

QCustomPlot是一个基于Qt画图和数据可视化的C++控件。在Qt下的绘图工具有Qwt、QChart和QCustomPlot,在绘制大量数据(10万个点以上)时选择QCustomPlot优势比较明显,可以将XY轴对调,然后形成横向的效果,无论是曲线图还是柱状图,分组图、堆积图等,都支持这个特性。
功能特点:一个用于绘制各种 2D 图表的 Qt 库,支持折线图、柱状图、散点图、饼图等多种图表类型。它具有高度的可定制性,能够自定义图表的外观、坐标轴、标签等。可以方便地添加数据、更新图表,并且支持交互操作,如缩放、平移等。
如下:在 Qt 项目中,使用QCustomPlot可以轻松创建一个简单的折线图

#include "qcustomplot.h"
#include <QApplication>

int main(int argc, char *argv[]) {
    QApplication a(argc, argv);
    QCustomPlot *customPlot = new QCustomPlot();
    // 创建一个折线图
    customPlot->addGraph();
    QVector<double> x(101), y(101);
    for (int i = 0; i < 101; ++i) {
        x[i] = i / 50.0 - 1;
        y[i] = x[i] * x[i];
    }
    customPlot->graph(0)->setData(x, y);
    customPlot->rescaleAxes();
    customPlot->replot();
    customPlot->show();
    return a.exec();
}
3. SQLite数据库

功能特点:SQLite 是一个轻量级的嵌入式数据库,它将整个数据库存储在一个单一的文件中,无需单独的服务器进程。Qt 提供了对 SQLite 的原生支持,通过 QSqlDatabase 和 QSqlQuery 等类可以方便地进行数据库操作,如创建表、插入数据、查询数据等。
适用场景:适合开发小型应用程序、嵌入式系统等,对数据库性能要求不是特别高的场景。

#include <QCoreApplication>
#include <QSqlDatabase>
#include <QSqlQuery>
#include <QDebug>

int main(int argc, char *argv[]) {
    QCoreApplication a(argc, argv);
    QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE");
    db.setDatabaseName("test.db");
    if (db.open()) {
        QSqlQuery query;
        query.exec("CREATE TABLE IF NOT EXISTS test (id INTEGER PRIMARY KEY, name TEXT)");
        query.exec("INSERT INTO test (name) VALUES ('John')");
        query.exec("SELECT * FROM test");
        while (query.next()) {
            qDebug() << query.value(0).toInt() << query.value(1).toString();
        }
        db.close();
    }
    return a.exec();
}
4. QtWebSockets网络库

功能特点:Qt 提供的用于实现 WebSocket 通信的模块,支持客户端和服务器端的开发。WebSocket 是一种在单个 TCP 连接上进行全双工通信的协议,适合实时数据传输的场景。
适用场景:常用于开发实时聊天应用、实时监控系统、在线游戏等。
以下是一个简单的 WebSocket 客户端示例

#include <QCoreApplication>
#include <QWebSocket>
#include <QDebug>

class WebSocketClient : public QObject {
    Q_OBJECT
public:
    WebSocketClient(const QUrl &url, QObject *parent = nullptr) : QObject(parent), m_url(url) {
        connect(&m_webSocket, &QWebSocket::connected, this, &WebSocketClient::onConnected);
        connect(&m_webSocket, &QWebSocket::disconnected, this, &WebSocketClient::closed);
        m_webSocket.open(QUrl(m_url));
    }

private slots:
    void onConnected() {
        qDebug() << "Connected to server";
        m_webSocket.sendTextMessage("Hello, server!");
    }

    void closed() {
        qDebug() << "Disconnected from server";
    }

private:
    QWebSocket m_webSocket;
    QUrl m_url;
};

#include "main.moc"

int main(int argc, char *argv[]) {
    QCoreApplication a(argc, argv);
    WebSocketClient client(QUrl("ws://localhost:1234"));
    return a.exec();
}
5. QML Material 库

QML Material 是一个基于 Qt Quick(QML)实现的 UI 组件库,它遵循 Google 的 Material Design 设计语言。Material Design 是一种由 Google 推出的设计规范,强调使用简洁、直观的界面元素和富有层次感的视觉效果,以提供统一且美观的用户体验。QML Material 库将这些设计理念融入到 Qt 应用程序开发中,使得开发者可以轻松创建出具有现代感和时尚感的用户界面。
在 QML 文件中,导入 QML Material 库,使项目可以使用该库提供的组件,这样QML文件中就可以直接使用 QML Material 提供的组件。
这是QML Material 库源码自带的demo,可以先欣赏一下
在这里插入图片描述
源码在github上的QML Material库 源码
编译src的时候要注意,在src的.pro文件中去掉这两行(自己生成不了目标目录,得手动做)
在这里插入图片描述
然后将src文件夹中的qmldir文件中的“# plugin material”前面的#号去掉,将src文件夹中修改的的qmldir文件在临时构建目录中添加一个out文件夹,将src文件夹中修改的的qmldir文件拷贝一份到out文件夹,在项目->构建设置->make arguments中加上“install”,表示编译完安装到Qt的安装目录(比如我是MSVC编译,我的就安装在“C:\Qt\Qt5.14.2\5.14.2\msvc2017_64\qml\Material”中),安装完记得删除make arguments中加上的“install”再编译其他工程(比如编译他的demo)。
在这里插入图片描述

以下是一个简单的示例,展示了如何使用 Material.Button 组件

import QtQuick 2.15
import QtQuick.Window 2.15
import Material 1.0

Window {
    visible: true
    width: 640
    height: 480
    title: "QML Material Example"

    Material.Button {
        text: "Click me"
        anchors.centerIn: parent
        onClicked: {
            console.log("Button clicked!")
        }
    }
}
6. QSingleApplication 库

QSingleApplication 是一个用于确保应用程序在系统中只能有一个实例运行的 Qt 库。在很多实际应用场景中,我们不希望同一个应用程序同时打开多个实例,例如某些配置工具、系统监控程序等,多次打开可能会导致资源冲突、数据不一致等问题。QSingleApplication 库通过使用系统级的锁机制(如共享内存、命名管道等)来检测应用程序是否已经有实例在运行,如果有则将新启动的实例的操作(如命令行参数传递、激活已有实例窗口等)转发给已有实例,从而保证应用程序的单实例运行。
QSingleApplication 使用简单,包含了头文件后,在 main 函数中,使用 QSingleApplication 替代 QApplication 来创建应用程序实例

#include <QDebug>
#include "qsingleapplication.h"

int main(int argc, char *argv[])
{
    QSingleApplication app(argc, argv, true);

    // 检查是否已经有实例在运行
    if (app.isRunning()) {
        // 如果已有实例运行,将新实例的消息(如命令行参数)发送给已有实例
        app.sendMessage("New instance started with args: " + QStringList(app.arguments()).join(" "));
        return 0; // 退出新实例
    }

    // 这里开始编写你的应用程序主逻辑
    // 例如创建主窗口等
    // ...

    return app.exec();
}
7. QtAdvancedStylesheets工具

QtAdvancedStylesheets 是一个用于增强 Qt 应用程序样式表功能的工具。在 Qt 开发中,样式表(QSS)是一种强大的机制,用于自定义应用程序的外观,而 QtAdvancedStylesheets 在此基础上进行了扩展,提供了更多高级的样式特性和功能,帮助开发者更轻松地创建出美观、独特且富有交互性的用户界面。
丰富的样式特性:支持更多复杂的样式效果,如渐变、阴影、圆角等,能够让界面元素呈现出更加立体和现代的外观。
动态样式更新:允许在运行时动态修改样式,实现一些动画效果或根据用户操作改变界面外观,增强用户交互体验。
自定义选择器:提供了自定义选择器的功能,使得样式规则的应用更加灵活,可以根据特定的条件或属性来选择界面元素进行样式设置。
跨平台兼容性:基于 Qt 框架,继承了 Qt 的跨平台特性,可以在 Windows、Linux、macOS 等多种操作系统上使用。

#include <QApplication>
#include <QWidget>
#include <QPushButton>
#include "QtAdvancedStylesheets.h"

int main(int argc, char *argv[])
{
    QApplication app(argc, argv);

    // 创建一个主窗口和一个按钮
    QWidget window;
    QPushButton button("Click me", &window);
    button.move(50, 50);

    // 加载样式表文件
    QString styleSheet = QtAdvancedStylesheets::parseStyleSheetFromFile("styles.qss");

    // 应用样式表到应用程序
    app.setStyleSheet(styleSheet);

    window.show();
    return app.exec();
}

QtAdvancedStylesheets::parseStyleSheetFromFile(“styles.qss”) 函数用于从指定的文件中解析样式表内容。这里的 “styles.qss” 是你自定义的样式表文件,你可以在其中编写 QtAdvancedStylesheets 支持的样式规则。
他还有个巨牛的接口QtAdvancedStylesheets::mergeStyleSheets 函数,用于合并当前样式表和新的样式表,然后将合并后的样式表应用到应用程序,实现样式的动态更新

8. QtWebApp库

QtWebApp 是一个基于 Qt 框架开发的轻量级 Web 应用程序框架,用于快速构建 Web 服务器和 Web 应用。它提供了简单易用的 API,使得开发者能够方便地处理 HTTP 请求、响应,管理会话,以及实现动态网页等功能。该库适用于开发各种类型的 Web 应用,如 Web 服务接口、小型 Web 网站等。

可以从 QtWebApp 的开源仓库(GitHub)下载其源码,将下载的源码文件添加到你的 Qt 项目中。一般需要包含头文件和源文件,并在项目配置文件(如 .pro 文件)中添加相应的源文件路径。
例如使用 QtWebApp 搭建一个简单的 Web 服务器:

#include <QtCore/QCoreApplication>
#include "httplistener.h"
#include "requestmapper.h"

// 配置文件
QSettings* settings = new QSettings("config.ini", QSettings::IniFormat, 0);

// 主函数
int main(int argc, char *argv[])
{
    QCoreApplication a(argc, argv);

    // 创建 HTTP 监听器
    new HttpListener(settings, new RequestMapper(&a), &a);

    return a.exec();
}
//请求映射器 RequestMapper
#include "requestmapper.h"
#include "staticfilecontroller.h"
#include "templatecontroller.h"

extern QSettings* settings;

// 静态文件控制器
StaticFileController* staticFileController = new StaticFileController(settings, &requestMapper);

// 模板控制器
TemplateController* templateController = new TemplateController(&requestMapper);

RequestMapper::RequestMapper(QObject* parent) : HttpRequestHandler(parent) {
    // 初始化代码
}

void RequestMapper::service(HttpRequest& request, HttpResponse& response) {
    QByteArray path = request.getPath();
    // 处理静态文件请求
    if (path.startsWith("/static")) {
        staticFileController->service(request, response);
    } 
    // 处理模板请求
    else if (path.startsWith("/template")) {
        templateController->service(request, response);
    } 
    // 其他请求
    else {
        response.setStatus(404, "Not found");
        response.write("The URL is wrong, no such document.", true);
    }
}
//模板控制器
#include "templatecontroller.h"
#include "template.h"

TemplateController::TemplateController(QObject* parent)
    : HttpRequestHandler(parent) {
    // 初始化代码
}

void TemplateController::service(HttpRequest& request, HttpResponse& response) {
    // 加载模板文件
    Template t=templateCache->getTemplate("index",request.getHeader("Accept-Language"));
    // 设置模板变量
    t.setVariable("message", "Hello, World!");
    // 生成 HTML 内容
    QByteArray html = t.toUtf8();
    // 设置响应头
    response.setHeader("Content-Type", "text/html; charset=UTF-8");
    // 发送响应内容
    response.write(html, true);
}

再加一个ini配置文件

[listener]
port=8080
minThreads=1
maxThreads=10
cleanupInterval=1000
readTimeout=60000
maxRequestSize=16000
maxMultiPartSize=1000000
9. Qwt库

Qwt库(Qt Widgets for Technical Applications)是一个基于 Qt 框架开发的开源 C++ 类库,专门用于开发技术应用程序中的图表和绘图功能。它提供了一系列丰富的组件和工具,能够帮助开发者快速、高效地创建各种专业级的 2D 图表和绘图界面,广泛应用于科学研究、工程计算、数据监测等领域。
丰富的图表类型:支持多种常见的图表类型,如折线图、柱状图、饼图、散点图、极坐标图等,满足不同场景下的数据可视化需求。
高度可定制性:Qwt 中的每个组件都具有高度的可定制性,开发者可以对图表的外观(如颜色、线条样式、字体等)、坐标轴、刻度、标签等进行细致的设置,以实现个性化的视觉效果。
交互功能:提供了一些交互功能,如鼠标缩放、平移、数据点提示等,增强了用户与图表的交互体验,方便用户对数据进行深入分析。
跨平台兼容性:由于基于 Qt 框架,Qwt 继承了 Qt 的跨平台特性,可以在 Windows、Linux、macOS 等多种操作系统上运行。
可以从 Qwt 的官方网站(http://qwt.sourceforge.net/)下载最新的源码包,解压源码包后,进入源码目录,使用 Qt 的 qmake 和 make 工具进行编译和安装。在需要引入的项目的 .pro 文件中添加对 Qwt 库的引用。
以下简单展示如何使用 Qwt 库创建一个折线图

#include <QApplication>
#include <qwt_plot.h>
#include <qwt_plot_curve.h>
#include <qwt_legend.h>
#include <qwt_point_data.h>
#include <vector>

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);

    // 创建一个 QwtPlot 对象
    QwtPlot plot;
    plot.setWindowTitle("Simple Qwt Plot");
    plot.insertLegend(new QwtLegend());

    // 准备数据
    std::vector<double> x = {1, 2, 3, 4, 5};
    std::vector<double> y = {2, 4, 6, 8, 10};
    QwtPointArrayData data(x.data(), y.data(), static_cast<int>(x.size()));

    // 创建一个 QwtPlotCurve 对象
    QwtPlotCurve *curve = new QwtPlotCurve("Line Curve");
    curve->setData(data);
    curve->setPen(Qt::blue, 2);  // 设置曲线的颜色和宽度
    curve->attach(&plot);  // 将曲线附加到 QwtPlot 上

    // 显示图表
    plot.show();

    return a.exec();
}
10.精美控件库qskinny库

qskinny 是一个轻量级、跨平台的 Qt Quick 控件库,它专为创建具有高性能和自定义外观的用户界面而设计。它基于 Qt Quick 技术,提供了一系列丰富的控件,可用于开发各种类型的应用程序,包括嵌入式系统、桌面应用和移动应用等。
qskinny 的设计注重资源的高效利用,它的代码量相对较小,运行时占用的内存和 CPU 资源也较少,非常适合在资源受限的设备上运行。
可以从 qskinny 的官方 GitHub 仓库(https://github.com/uwerat/qskinny)下载最新的源码,解压源码包后,进入源码目录,使用 Qt 的 qmake 和 make 工具进行编译和安装。然后在你要引入的项目的 .pro 文件中添加对 qskinny 库的引用。
简单展示如何在 QML 中使用 qskinny 控件创建一个包含按钮和文本框的界面:

import QtQuick 2.15
import Skinny 1.0

ApplicationWindow {
    visible: true
    width: 640
    height: 480
    title: "qskinny Example"

    SkinnyItem {
        anchors.fill: parent

        // 创建一个按钮
        SkinnyPushButton {
            text: "Click me"
            anchors.centerIn: parent
            onClicked: {
                textField.text = "Button clicked!"
            }
        }

        // 创建一个文本框
        SkinnyLineEdit {
            id: textField
            anchors.top: parent.top
            anchors.left: parent.left
            anchors.margins: 20
            width: 200
        }
    }
}

以上10个Qt相关的开关库,都是比较优秀的开源库。可以与 Qt 结合使用,以扩展其功能。

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

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

相关文章

如何打造一个更友好的网站结构?

在SEO优化中&#xff0c;网站的结构往往被忽略&#xff0c;但它其实是决定谷歌爬虫抓取效率的关键因素之一。一个清晰、逻辑合理的网站结构&#xff0c;不仅能让用户更方便地找到他们需要的信息&#xff0c;还能提升搜索引擎的抓取效率 理想的网站结构应该像一棵树&#xff0c;…

态、势、感、知中的信息

“态、势中的信息”与“感、知中的信息”分别对应客观系统状态与主观认知过程的信息类型&#xff0c;其差异体现在信息的来源、性质、处理方式及作用目标上。以下通过对比框架和具体案例解析两者的区别&#xff1a; 态势中的信息中的态信息指系统在某一时刻的客观存在状态&…

文本生图的提示词prompt和参数如何设置(基于Animagine XL V3.1)

昨天搞了半天 Animagine XL V3.1&#xff0c;发现市面上很多教程只是授之以鱼&#xff0c;并没有授之以渔的。也是&#xff0c;拿来赚钱不好吗&#xff0c;闲鱼上部署一个 Deepseek 都能要两百块。这里我还是想写篇文章介绍一下&#xff0c;虽不全面&#xff0c;但是尽量告诉你…

基于docker搭建Kafka集群,使用内部自带的Zookeeper方式搭建

前提条件 按照【kafka3.8.0升级文档成功搭建kafka服务】 环境&#xff1a;192.168.2.91 192.168.2.93 并以192.168.2.91环境kafka自带的zookeeper作为协调器。 使用基于KRaft方式进行kafka集群搭建教程 搭建kafka-ui可视化工具 1、创建kafka集群节点192.168.2.91 &#xff…

GitPuk快速安装配置教程(入门级)

GitPuk是一款国产开源免费的代码管理工具&#xff0c;工具简洁易用&#xff0c;开源免费&#xff0c;本文将讲解如何快速安装和配置GitPuk&#xff0c;以快速入门上手。 1、安装 支持 Windows、Mac、Linux、docker 等操作系统。 1.1 Linux安装&#xfeff; 以下以Centos7安装…

奖励模型中的尺度扩展定律和奖励劫持

奖励模型中的尺度扩展定律和奖励劫持 FesianXu 20250131 at Wechat Search Team 前言 最近在考古一些LLM的经典老论文&#xff0c;其中有一篇是OpenAI于ICML 2023年发表的文章&#xff0c;讨论了在奖励模型&#xff08;Reward Model&#xff09;中的尺度扩展规律&#xff08;S…

ASP.NET Core中Filter与Middleware的区别

中间件是ASP.NET Core这个基础提供的功能&#xff0c;而Filter是ASP.NET Core MVC中提供的功能。ASP.NET Core MVC是由MVC中间件提供的框架&#xff0c;而Filter属于MVC中间件提供的功能。 区别 中间件可以处理所有的请求&#xff0c;而Filter只能处理对控制器的请求&#x…

力扣240 搜索二维矩阵 ll

编写一个高效的算法来搜索 m x n 矩阵 matrix 中的一个目标值 target 。该矩阵具有以下特性&#xff1a; 每行的元素从左到右升序排列。每列的元素从上到下升序排列。 示例 1&#xff1a; 输入&#xff1a;matrix [[1,4,7,11,15],[2,5,8,12,19],[3,6,9,16,22],[10,13,14,17,…

Redis03 - 高可用

Redis高可用 文章目录 Redis高可用一&#xff1a;主从复制 & 读写分离1&#xff1a;主从复制的作用2&#xff1a;主从复制原理2.1&#xff1a;全量复制2.2&#xff1a;增量复制&#xff08;环形缓冲区&#xff09; 3&#xff1a;主从复制实际演示3.1&#xff1a;基本流程准…

JAVA安全—FastJson反序列化利用链跟踪autoType绕过

前言 FastJson这个漏洞我们之前讲过了,今天主要是对它的链条进行分析一下,明白链条的构造原理。 Java安全—log4j日志&FastJson序列化&JNDI注入_log4j漏洞-CSDN博客 漏洞版本 1.2.24及以下没有对序列化的类做校验,导致漏洞产生 1.2.25-1.2.41增加了黑名单限制,…

vmware ubuntu 扩展硬盘系统文件大小

首先&#xff0c;在VMware中添加扩展硬盘大小&#xff1a; 通过lsblk指令&#xff0c;可以看到添加的未分配硬盘大小情况&#xff1a; NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS fd0 2:0 1 4K 0 disk loop0 7:0 0 4K 1 loop /snap/bare/5 loop1…

DeepSeek R1 Distill Llama 70B(免费版)API使用详解

DeepSeek R1 Distill Llama 70B&#xff08;免费版&#xff09;API使用详解 在人工智能领域&#xff0c;随着技术的不断进步&#xff0c;各种新的模型和应用如雨后春笋般涌现。今天&#xff0c;我们要为大家介绍的是OpenRouter平台上提供的DeepSeek R1 Distill Llama 70B&…

阿里云 | DeepSeek人工智能大模型安装部署

ModelScope是阿里云人工智能大模型开源社区 ModelScope网络链接地址 https://www.modelscope.cn DeepSeek模型库网络链接地址 https://www.modelscope.cn/organization/deepseek-ai 如上所示&#xff0c;在阿里云人工智能大模型开源社区ModelScope中&#xff0c;使用阿里云…

kafka服务端之控制器

文章目录 概述控制器的选举与故障恢复控制器的选举故障恢复 优雅关闭分区leader的选举 概述 在Kafka集群中会有一个或多个broker&#xff0c;其中有一个broker会被选举为控制器&#xff08;Kafka Controler&#xff09;&#xff0c;它负责管理整个集群中所有分区和副本的状态。…

03/29 使用 海康SDK 对接时使用的 MysqlUtils

前言 最近朋友的需求, 是需要使用 海康sdk 连接海康设备, 进行数据的获取, 比如 进出车辆, 进出人员 这一部分是 资源比较贫瘠时的一个 Mysql 工具类 测试用例 public class MysqlUtils {public static String MYSQL_HOST "192.168.31.9";public static int MY…

【蓝桥杯—单片机】第十一届省赛真题代码题解题笔记 | 省赛 | 真题 | 代码题 | 刷题 | 笔记

第十一届省赛真题代码部分 前言赛题代码思路笔记竞赛板配置内部振荡器频率设定键盘工作模式跳线扩展方式跳线 建立模板明确设计要求和初始状态显示功能部分数据界面第一部分第二部分第三部分调试时发现的问题 参数设置界面第一部分第二部分和第四部分第三部分和第五部分 按键功…

【C语言】数 组与指针:深度剖析与等价表达

博客主页&#xff1a; [小ᶻ☡꙳ᵃⁱᵍᶜ꙳] 本文专栏: C语言 文章目录 &#x1f4af;前言&#x1f4af;数组与指针的基本关系&#x1f4af;数组与指针的互换使用数组下标与指针的等价性 &#x1f4af;六个表达式的等价性&#x1f4af;指针运算的注意事项&#x1f4af;数组…

Explain 是 SQL 查询优化中非常重要的工具,它用于分析 SQL 查询的执行计划

Explain 是 SQL 查询优化中非常重要的工具&#xff0c;它用于分析 SQL 查询的执行计划https://mp.weixin.qq.com/s/QKra-Sp5JoaEPSCqfffOtA

Leetcode—487. 最大连续1的个数 II【中等】Plus

2025每日刷题&#xff08;210&#xff09; Leetcode—487. 最大连续1的个数 II 实现代码 class Solution { public:int findMaxConsecutiveOnes(vector<int>& nums) {int zeros 0;int ans 0;for(int l 0, r 0; r < nums.size(); r) {if(nums[r] 0) {zeros;…

C32.【C++ Cont】静态实现双向链表及STL库的list

目录 1.知识回顾 2.静态实现演示图 3.静态实现代码 1.初始双向链表 2.头插 3.遍历链表 4.查找某个值 4.任意位置之后插入元素 5.任意位置之前插入元素 6.删除任意位置的元素 4.STL库的list 1.知识回顾 96.【C语言】数据结构之双向链表的初始化,尾插,打印和尾删 97.【C…