[QT编程系列-38]:数据存储 - SQLite数据库存储与操作

2023-11-11

目录

1. SQLite数据库概述

1.1 简介

1.2 SQLite不支持网络连接

1.3 SQLite不需要安装MySQL Server数据库

1.4. SQLite性能

1.5 SQLite支持的数据条目

2. SQLite操作示例

3. QSqlDatabase 

4. QSqlQuery 


1. SQLite数据库概述

1.1 简介

QT 提供了对 SQLite 数据库的支持,通过 QT 的相关类和方法,可以方便地进行 SQLite 数据库的连接、查询和操作。

1.2 SQLite不支持网络连接

SQLite 是一种嵌入式数据库引擎,通常用于本地应用程序中,它被设计为本地文件数据库不直接提供网络连接功能。因此,SQLite 本身不支持直接通过网络连接到数据库。

然而,可以通过其他方法实现通过网络连接到 SQLite 数据库的功能。以下是一些常用的方法:

  1. 使用服务器中间件:可以在服务器和 SQLite 数据库之间使用服务器中间件来建立网络连接。这些中间件会充当客户端和数据库之间的桥梁,接收客户端请求并将其传递给 SQLite 数据库。常用的服务器中间件包括 SQLiteClien、sqlite-remotedatabase 和 SQL Relay。

  2. 使用网络协议:你可以通过实现自己的网络协议来连接到远程 SQLite 数据库。这可能涉及编写用于建立与远程服务器的连接并发送 SQL 查询的自定义网络代码。但需要注意的是,这种方法需要自行处理网络通信的复杂性和安全性。

  3. 使用其他数据库:如果你希望通过网络进行数据库访问,并且对于你的应用程序来说不一定要使用 SQLite,那么可以考虑使用其他支持网络连接的数据库,例如 MySQL、PostgreSQL、Microsoft SQL Server 等。这些数据库通常提供了内置的网络连接功能,可以更方便地通过网络连接进行数据库访问。

综上所述,虽然 SQLite 本身不直接支持通过网络连接,但可以通过使用服务器中间件、自定义网络协议或选择其他支持网络连接的数据库来实现通过网络连接到 SQLite 数据库的功能。选择适合你需求的方法,根据你的应用程序的具体要求进行操作。

1.3 SQLite不需要安装MySQL Server数据库

不需要单独安装 SQLite 数据库,因为 SQLite 是一个嵌入式数据库引擎。它以源代码或预编译库的形式提供,可以直接集成到应用程序中,无需单独安装

使用 SQLite 数据库非常方便,只需在你的应用程序中包含 SQLite 的相关文件或库,并在代码中使用相应的 API 即可。这样,你的应用程序就可以创建、连接和管理 SQLite 数据库,执行 SQL 查询和事务等操作。

SQLite 数据库通常以一个单一的文件形式存储在本地,也可以内存模式下进行操作。你可以手动创建数据库文件,也可以让 SQLite 自动创建。

因为 SQLite 是一个本地文件数据库,所以它的使用非常灵活和便捷。你可以将 SQLite 数据库文件随应用程序一起分发,让用户在本地使用。无需额外的数据库服务器,这使得 SQLite 成为在本地应用程序中轻量级的数据库解决方案。

总结来说,SQLite 是一个嵌入式数据库引擎,不需要单独安装。它可以直接集成到应用程序中,通过文件操作来创建、连接和管理数据库。这使得 SQLite 在开发本地应用程序时非常方便和便捷。

SQLite提供了一个简便的方式存储数据。

1.4. SQLite性能

QT 中的 SQLite 模块提供了与 SQLite 数据库进行交互的功能。

关于 QT SQLite 的性能,以下几个方面可能会影响其性能表现:

  1. 数据库访问模式:QT SQLite 模块支持多种不同的数据库访问模式,如默认模式(文件模式)、内存模式和只读模式等。性能可能会因所选的访问模式不同而有所不同。内存模式通常是最快的,因为它避免了硬盘读写操作。

  2. SQL 查询优化:编写高效的 SQL 查询是提高 QT SQLite 性能的关键。使用索引、适当的过滤条件和合适的查询方式,能够减少数据扫描,提高查询效率。

  3. 数据库连接池:使用连接池可以重用数据库连接,减少连接和断开连接的开销,提高性能。

  4. 事务处理:在批量插入、更新和删除等操作时,使用事务可以提高性能。事务可以将多个操作打包成一个原子性的操作,减少提交和回滚的次数,提高效率。

  5. 数据库设计和表结构:合理设计数据库和表结构,选择合适的数据类型和索引,能够优化查询和数据操作的性能。

  6. 硬件和环境:性能还受硬件和环境因素的影响,如硬盘速度、内存大小和 CPU 性能等。

需要根据具体的应用场景和需求来评估 QT SQLite 的性能,进行性能测试和优化。通常情况下,QT SQLite 在典型的轻量级数据库操作和中小规模数据应用中表现良好,并具有较高的性能和响应能力。但对于大规模数据处理和高并发访问,可能需要进一步评估性能,并考虑其他数据库解决方案。

1.5 SQLite支持的数据条目

SQLite 是一个轻量级的数据库引擎,无论是在理论上还是在实际应用中,SQLite 没有硬性的限制。然而,根据 SQLite 文档的说明,以下是一些关于数据条目(记录)的限制和建议:

  1. 数据库文件大小限制:SQLite 数据库文件的大小最多可以达到数 TB(1 TB = 1024 GB),这是因为 SQLite 使用 64 位整数来表示文件偏移量。

  2. 表中数据条目数量限制(行数据):SQLite 没有显示规定表中数据条目数量的上限。你可以在一张表中插入数百万、甚至上亿条数据。然而,数据库的性能和查询速度可能会受到影响,特别是在大规模数据处理和复杂查询的情况下。在这种情况下,你可能需要考虑优化表结构、索引和查询方式。

  3. 列数量限制(列数据):SQLite 没有固定的列数量限制。你可以在表中定义任意多的列。然而,每个表中的列数量会影响插入、查询和索引的性能。在设计表结构时,应根据数据模型的需要,合理选择列的数量,同时注意表的规范化和冗余问题。

  4. 行大小限制:SQLite 本身没有固定的行大小限制。但是,SQLite 数据库引擎的默认配置下,每个数据库文件的每个页的大小为 4096 字节。因此,在一个页内,存储的行数据大小总和不能超过该限制,否则会发生溢出。如果需要存储大型数据,如大文本或二进制数据,可以使用 BLOB 类型和流式方式处理。

总体而言,SQLite 在处理适度规模的数据时表现良好并无明显限制。针对大规模数据和高并发访问场景可能需要考虑其他数据库解决方案。在设计数据库结构和进行数据操作时,合理规划和优化是保证性能的关键。

2. SQLite操作示例

以下是一个示例,展示如何在 QT 中使用 SQLite 数据库:

  1. 首先,在 QT 项目中添加 QT += sql 到项目文件(.pro)中,以启用 QT 的数据库功能。

  2. 在需要使用 SQLite 数据库的地方,包括头文件 <QtSql> 并使用相应的 QT 命名空间。

#include <QtSql>
  1. 在代码中建立数据库连接,打开数据库文件,并创建一个查询对象
QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE");
db.setDatabaseName("path/to/database.db");
if (db.open()) {
    QSqlQuery query;
    // 执行数据库操作
    // ...
}

在这个示例中,我们使用 QSqlDatabase 类创建一个 SQLite 数据库连接,并指定数据库文件的路径。然后,通过调用 db.open() 打开数据库连接,如果成功打开,则创建一个 QSqlQuery 查询对象,用于执行数据库操作。

  1. 在查询对象上执行数据库操作,例如插入、更新或查询数据。
QSqlQuery query;
query.exec("CREATE TABLE IF NOT EXISTS users (id INTEGER PRIMARY KEY, name TEXT, age INTEGER)");

QString name = "John";
int age = 30;
query.prepare("INSERT INTO users (name, age) VALUES (?, ?)");
query.addBindValue(name);
query.addBindValue(age);
query.exec();

if (query.exec("SELECT * FROM users")) {
    while (query.next()) {
        int id = query.value("id").toInt();
        QString name = query.value("name").toString();
        int age = query.value("age").toInt();
        // 处理查询结果
        // ...
    }
}

在这个示例中,我们使用 QSqlQuery 对象执行了一些数据库操作。首先,我们创建了一个名为 “users” 的数据表(如果不存在),然后插入了一条数据。接下来,我们执行了一个查询语句 "SELECT * FROM users" 来获取数据表中的内容,然后遍历查询结果并处理每一行的数据。

  1. 最后,在完成数据库操作后,记得关闭数据库连接。
db.close();

通过调用 db.close() 可以关闭 SQLite 数据库连接。

通过上述步骤,你可以在 QT 中使用 SQLite 数据库进行各种数据库操作,包括创建表、插入数据、更新数据和查询数据等。你可以根据具体的需求和业务逻辑进行相应的操作。

3. QSqlDatabase 

QSqlDatabase 类是 QT 中用于管理数据库连接的类

它提供了一种统一的接口来连接和操作不同类型的数据库,包括 SQLite、MySQL、PostgreSQL 等。

下面列出了一些常用的 QSqlDatabase 类的方法和功能:

  1. QSqlDatabase::addDatabase(const QString &driverName):添加一个数据库连接,并指定驱动类型。驱动类型可以是 “QSQLITE”、“QMYSQL”、“QPSQL” 等。返回一个数据库连接对象。

  2. QSqlDatabase::setDatabaseName(const QString &name):设置数据库名称或文件路径。

  3. QSqlDatabase::setHostName(const QString &host):设置数据库服务器的主机名。

  4. QSqlDatabase::setUserName(const QString &userName):设置连接数据库的用户名。

  5. QSqlDatabase::setPassword(const QString &password):设置连接数据库的密码。

  6. QSqlDatabase::open():打开数据库连接。

  7. QSqlDatabase::isOpen():检查数据库连接是否已打开。

  8. QSqlDatabase::close():关闭数据库连接。

  9. QSqlDatabase::database():获取当前默认数据库连接。

  10. QSqlDatabase::tables():获取数据库中所有的表。

  11. QSqlDatabase::drivers():获取 QT 支持的所有数据库驱动列表。

通过 QSqlDatabase 类,你可以创建、打开、关闭和管理数据库连接。你可以使用相关的方法来设置连接的属性,例如数据库名称、用户名、密码等。一旦连接成功,你可以执行 SQL 查询、插入、更新等操作。

以下是一个示例代码,展示了如何使用 QSqlDatabase 类连接到 SQLite 数据库:

#include <QtSql>

QString dbName = "path/to/database.db";
QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE");
db.setDatabaseName(dbName);

if (db.open()) {
    // 数据库连接成功
    // 执行数据库操作
} else {
    // 数据库连接失败
    QString errorMessage = db.lastError().text();
    // 处理连接错误
}

在上述示例中,首先调用 QSqlDatabase::addDatabase("QSQLITE") 创建一个 SQLite 数据库连接。然后,使用 setDatabaseName() 方法设置数据库文件路径。最后,通过 db.open() 方法打开数据库连接。如果连接成功,可以执行相应的数据库操作。如果连接失败,可以通过 db.lastError() 获取错误信息并进行相应的处理。

总结来说,QSqlDatabase 类提供了管理数据库连接的功能,包括连接的创建、打开、关闭以及设置连接属性等。使用这个类,你可以方便地在 QT 应用程序中连接和操作不同类型的数据库。

4. QSqlQuery 

QSqlQuery 类是 QT 中用于执行和处理 SQL 查询的类。它提供了一种简单的方式来执行查询、插入、更新和删除等数据库操作,并处理查询结果。

以下是一些常用的 QSqlQuery 类的方法和功能:

  1. QSqlQuery::exec(const QString &query):执行 SQL 查询或操作。可以传递一个完整的 SQL 语句作为参数,用于执行查询和修改操作(如插入、更新或删除)。返回一个布尔值,表示查询是否执行成功。

  2. QSqlQuery::exec():执行提前设置的查询语句或操作。在调用 prepare() 方法后,可以调用该方法来执行语句。

  3. QSqlQuery::prepare(const QString &query):准备查询语句,但不执行它。可以使用 ? 占位符来代替查询语句中的参数,然后使用 addBindValue() 方法将参数绑定到查询中。

  4. QSqlQuery::next():在执行查询后,移动到下一条记录。可以在循环中使用,以遍历查询结果。

  5. QSqlQuery::value(int index)QSqlQuery::value(const QString &name):获取当前记录中指定列的值。可以通过索引或列名访问数据。

  6. QSqlQuery::bindValue(const QString &placeholder, const QVariant &value):将值绑定到预处理查询中的占位符。

  7. QSqlQuery::lastInsertId():在执行插入语句后,返回最后插入的行的 ID。

  8. QSqlQuery::isActive()QSqlQuery::isValid():检查查询是否处于活动状态,以及查询结果是否有效。

以下是一个示例代码,展示了如何使用 QSqlQuery 类执行 SQL 查询和处理查询结果:

QString queryStr = "SELECT * FROM users";
QSqlQuery query(queryStr);

if (query.exec()) {
    // 查询执行成功
    while (query.next()) {
        QString name = query.value("name").toString();
        int age = query.value("age").toInt();
        // 处理查询结果
    }
} else {
    // 查询执行失败
    QString errorMessage = query.lastError().text();
    // 处理查询错误
}

在上述示例中,我们创建了一个 QSqlQuery 对象,并使用 exec() 方法执行了一个查询语句。然后,使用 next() 和 value() 方法遍历查询结果,并获取每一行记录的值。

需要注意的是,QSqlQuery 是一个基于结果集的类,它仅处理查询的结果,而不会直接执行修改数据库的操作。对于插入、更新或删除操作,你可以使用 exec() 方法或提前准备好的查询语句进行执行。

总结来说,QSqlQuery 类允许你执行 SQL 查询并处理查询结果。你可以使用相关方法获取查询结果中的值,并执行插入、更新和删除等操作。通过使用 QSqlQuery 来构建和执行 SQL 查询,你可以轻松地与数据库进行交互,并获取和操作所需的数据。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

[QT编程系列-38]:数据存储 - SQLite数据库存储与操作 的相关文章

  • 第一次信号发射后自动断开

    我正在从文件加载网页 然后替换其中的一些 html self template web page QtWebKit QWebPage self template web page mainFrame load QtCore QUrl tem
  • 如何在QT上暂停和重新启动Qtimer

    我有 Ubuntu 我正在使用 IDEQT on C 我将暂停和恢复计时器 例如 void Ordonnancer les taches on pushButton clicked connect dataTimer SIGNAL time
  • SQLite 性能基准 - 为什么 :memory: 这么慢...只有磁盘速度的 1.5 倍?

    为什么 sqlite 中的 memory 这么慢 我一直在尝试查看使用内存中的 sqlite 与基于磁盘的 sqlite 是否可以获得任何性能改进 基本上我想用启动时间和内存来换取非常快速的查询not在应用程序过程中击中磁盘 然而 以下基准
  • SQLite 查询查找主键

    在 SQLite 中 我可以运行以下查询来获取表中的列列表 PRAGMA table info myTable 这给了我列 但没有关于主键可能是什么的信息 此外 我可以运行以下两个查询来查找索引和外键 PRAGMA index list m
  • Retina 显示屏中具有 QOpenGLWIdget 的 Qt MainWindow 显示错误大小

    我有一个 Qt 应用程序MainWindow 我嵌入一个QOpenGLWidget在里面 一切正常 直到我开始使用 Apple Retina 显示屏并在高 DPI 模式下运行我的应用程序 我的QOpenGLWidget只是它应该具有的大小的
  • 完全彻底卸载QT Creator

    问题 如何从 Linux 机器上卸载 QT Creator 我的 Debian Jessie 机器上的安装已损坏 我尝试过重新安装 修复等 但没有成功 建议我完全卸载 获取最新版本并重新安装 问题是我不确定如何执行此操作 每次我尝试时 QT
  • 将 jstring 转换为 QString

    我正在调用一个返回字符串的 Java 函数 QAndroidJniObject obj QAndroidJniObject callStaticObjectMethod
  • QTableView 并双击一个单元格

    我正在开发测试用例编辑器 该编辑器包含 USART 传输和接收数据包格式 编辑器是一个表格视图 发送和接收数据包的长度为八个字节 例如 0x01 0x02 0x03 0x08 它在我的第五和第六栏中 现在 我希望此列中的单元格为只读 但是当
  • Mac OS X 上的 Qt 字体系列和样式

    我有一个基于 Qt PyQt 的 GUI 应用程序 在 Mac OS X 和其他平台 上运行 它允许用户选择字体并具有粗体和斜体选项的复选框 在更新到新的基于 Cocoa 的 Qt 时 用户发现QFontComboBox不再显示不同的字体样
  • 如何doxygen注释Qt属性?

    我想将 Doxygen 注释附加到我的 Q PROPERTY 例如 song h class Song public QObject Q OBJECT private Q PROPERTY QString title READ title
  • python sqlite3从excel创建数据库

    我正在尝试从 Excel 电子表格创建数据库 我有下面的代码 问题是当我运行代码时 我的数据库为每列创建一个表 我想为工作簿中列出的每个电子表格创建一个表格 工作表名称为工作表 1 和工作表 2 import sqlite3 import
  • 是否有 Qt 小部件可以浏览应用程序中小部件的层次结构(类似于 Spy++)?

    我们有一个具有复杂的小部件层次结构的应用程序 我希望能够以与 Spy 类似的方式浏览此层次结构 查看和编辑属性 例如大小 如果有一个小部件可以显示此信息 则它不需要在外部应用程序中运行 那么问题来了 这样的神兽存在吗 您可以使用Gammar
  • 针对初学者的 QT 商业许可证与非商业许可证 [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 QT 许可似乎非常反学习 因为据我所知 用它开发的任何东西都只能是商业的当且仅当 its entire开发是在使用商业许可证的情况下完成的
  • QFileSystemModel setRootPath

    我正在尝试创建一个 Qt 应用程序来显示文件夹 Mac OS 中的 Users 文件夹 的内容 这是代码 QFileSystemModel dirModel new QFileSystemModel dirModel gt setRootP
  • QML 列表视图拖放

    我想创建两个 qml 列表视图 可以执行两个功能 拖放一个列表中的项目以更改项目的顺序 跨列表拖放项目 项目将从一个列表中删除并添加到另一个列表中 根据 Qt 文档中的拖放示例 我决定创建两个访问同一列表模型的列表视图 列表模型中的每个项目
  • Qt 支持 Windows 蓝牙 API 吗?

    谁能告诉我 Qt 是否支持 Windows 蓝牙 API 如果是这样 您能否分享一些有关如何使用它的信息 自上次答复以来 这个问题的答案发生了一些变化 Qt 5 2 版为 Linux BlueZ 和 BlackBerry 设备实现了蓝牙 A
  • Android - 在sqlite数据库中存储敏感数据

    我需要将敏感数据存储在 Android 应用程序的 sqlite 数据库中 我如何确定这些数据非常安全 我知道我可以使用密钥加密数据 但是我将该密钥存储在哪里 我也不想要求用户填写密钥 我只是希望它能够自行工作 因为我害怕逆向工程 所以我也
  • SQLite插入大量记录时出现问题

    我试图使用 SQLite3 shell 在某个表中插入 15530 条记录 但出现该错误 我搜索了解决方案 SQLITE MAX COMPOUND SELECT 默认为 500 是原因 但我不知道如何使用 Shell 更改它 错误 复合 S
  • 为什么 QT 设计器重新调整大小或不允许我缩小或展开小部件或按钮?

    很多时候 在使用 QT 设计器时 我发现自己需要通过缩小或扩展来调整事物的大小 每当我尝试这样做时 程序都不允许我这样做 而只是恢复到将对象放置在窗口中时给我的原始默认大小 无论我的布局如何 为什么要这样做 是否有可能改变这一点 以便我可以
  • iphone sqlite 静态链接?

    有人静态链接 sqlite 而不是使用动态链接 吗 我遇到的问题是 越狱手机的用户没有与普通 iPhone 所采用的 sqlite 版本相同的版本 因此导致崩溃 我假设在我的应用程序中静态链接已知版本的 sqlite 就是答案 我需要全文支

随机推荐

  • 大数据学习第2天----------------linux 安装mysql 出现安装依赖问题解决(centos7)

    问题 安装mysql过程中出现的依赖 root hadoop mysql 5 7 16 rpm ivh mysql community devel 5 7 16 1 el7 x86 64 rpm warning mysql communit
  • 实录:SUSE服务器下的LVM配置

    SUSE Linux 存储阵列目前是主流应用 根据自己的工程经验 以下总结下suse 服务器下如何使用LVM管理软件进行阵列配置 在SUSE服务器对阵列进行配置一般有两种模式 1 直接使用fdisk 外挂存储设备名 对其进行分区划分 使用f
  • 【Linux】浅谈网络协议栈-网桥br0

    目录 1 什么是桥接 2 linux的桥接实现 3 网桥的功能 4 网桥的配置 1 什么是桥接 简单来说 桥接就是把一台机器上的若干个网络接口 连接 起来 其结果是 其中一个网口收到的报文会被复制给其他网口并发送出去 以使得网口之间的报文能
  • 计算机软件研究方法与技术路线,研究方法与技术路线

    研究方法与技术路线 由会员分享 可在线阅读 更多相关 研究方法与技术路线 2页珍藏版 请在人人文库网上搜索 1 1 研究方法1 实地调查法 在凤阳县地区和安徽科技学院附近分别进行调查 实地了解凤阳县中小企业对财会人员的需求及招聘要求 2 问
  • 第38.2节 osg加载大tif-10.20活动直播资源&中秋活动参赛源码

    目录 本节内容 本节内容 根据2021 10 20直播活动的内容 使用VPB处理影像高程的示例 将资源进行打包 里面使用的是VS2019 若使用其它版本的VS 则需要对应的OSG编译包 则在此链接获取 osgChina权威发布 vs各版本第
  • Flutter 自定义单选按钮和自定义复选框

    Flutter 自定义单选按钮和自定义复选框 前言 一 自定义单选按钮 二 自定义复选框 总结 前言 在日常开发中 很多时候系统自带的单选按钮 复选框无法满足我们的需求 那么就需要自定义样式的按钮 本篇文章将记录如何自定义单选按钮 复选框
  • Vue实现Markdown

    前言 本文将介绍如何使用Vue和SpringBoot实现一个Markdown编辑器 其中Vue用于前端 SpringBoot用于后端 实现数据存储和接口调用 项目背景 Markdown是一种轻量级的标记语言 用于简化文本编辑 最初由John
  • 初等数学概论

    author hjjdebug date 2016年 01月 18日 星期一 21 36 50 CST article 初等数学概论 记得高中的哲学书上说的 真理是相对的 没有永恒 绝对的真理 而我们这里讨论的数学 却是永恒绝对的真理 放之
  • Unity中的Debug类调试使用

    UnityEngine Debug Class containing methods to ease debugging while developing a game 该类中包含了一些便于游戏开发时的调试方法 Class Variable
  • The content of element type “configuration“ must match “(properties?,settings?,typeAliases?,typeHand

    注意 每个标签必须按顺序写
  • 有源滤波器治理谐波好在哪

    减小谐波影响应对谐波源本身或在附近采取适当的措施 通常情况下 采用加装滤波器的方式治理谐波 滤波器一般分为无源滤波器和有源滤波器 下面领步 北京 根据多年的实践经验给出一个具体的解决方案 在有谐波问题是 什么样的选择才是最好的 谐波的危害
  • React---使用componentDidUpdate钩子函数判断路由地址是否发生变化

    在组件更新 例如组件的路由更新 后会执行componentDidUpdate钩子函数 componentDidUpdate方法会传入两个参数 prevProps prevState prevProps prevState可以拿到组件更新前的
  • Web3 入门手册:从认知到实践

    如果你也喜欢 Web3 希望在这做些有趣的 有意义的事情 那么我希望这篇文章可以帮助到你 送给想要进入 Web3 或者刚刚进入 Web3 的小伙伴 但是考虑到两点原因 我还是打算把这件事推迟一些时日 一是在各大媒体都鼓吹 All In We
  • 如何将pdf转换成txt?悄悄告诉你3个好用的转换方法

    pdf和txt文档都是我们经常会使用到的文档格式 这两种文档各有各的特点 pdf文档适合用于展示 而txt文档适合用于整理各种文字信息 在面对不同的情况时我们就要使用不同的文档 就比如将纯文字的资料进行搜集的时候 利用txt文档会更方便 而
  • 如何在vue中引入字体

    一 为什么要引入字体 在前端开发中 选用合适的字体往往会极大地提升网站的视觉体验 然而 网页中默认字体的种类和风格有限 且在不同的设备 浏览器上渲染效果不尽相同 因此 很多开发者会选择自定义字体来提升用户体验 二 如何引入字体 1 搜索下载
  • 2020华为杯数学建模总结

    2020研究生数学建模竞赛总结 题目 2020年中国研究生数学建模竞赛B题 降低汽油精制过程中的辛烷值损失模型 一 背景 汽油是小型车辆的主要燃料 汽油燃烧产生的尾气排放对大气环境有重要影响 为此 世界各国都制定了日益严格的汽油质量标准 见
  • linux 套接字文件类型,Linux下的文件类型

    Linux下的文件类型 1 开头 表示普通文件 2 d开头 表示目录文件 3 b开头 表示块设备 4 c开头 表示是字符设备 5 I开头 表示符号链接文件 6 p开头 表示管道文件pipe 7 s开头 表示套接字文件socket root
  • 浅谈BERT/Transformer模型的压缩与优化加速

    作者 姚益武 单位 阿里巴巴集团 研究方向 AI算法与工程架构 前言 BERT Transformer 结构及其变体 已成为自然语言处理 NLP 语音识别 ASR 等领域的主流序列建模结构 并且 相比于卷积操作的局部特征提取能力 以及平移不
  • 【Python】ValueError: The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any

    一 问题描述 在使用Python的判断语句的时候 data2 data2 Month 11 and data2 Day 11 我的本意是想找出11月11日的数据 运用上面的代码 却得到了报错 报错信息 ValueError The trut
  • [QT编程系列-38]:数据存储 - SQLite数据库存储与操作

    目录 1 SQLite数据库概述 1 1 简介 1 2 SQLite不支持网络连接 1 3 SQLite不需要安装MySQL Server数据库 1 4 SQLite性能 1 5 SQLite支持的数据条目 2 SQLite操作示例 3 Q