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

【Rust光年纪】超越ORM:探索Rust语言多款数据库客户端库的核心功能和使用场景

数据库操作新选择:从异步操作到连接管理,掌握Rust语言数据库客户端库的全貌

前言

在现代软件开发中,与数据库进行交互是一个常见的任务。Rust语言作为一种高性能、内存安全的编程语言,拥有丰富的生态系统来支持各种数据库操作。本文将介绍几个用于Rust语言的不同数据库客户端库,以及它们的核心功能、使用场景、安装配置和API概览。

欢迎订阅专栏:Rust光年纪

文章目录

  • 数据库操作新选择:从异步操作到连接管理,掌握Rust语言数据库客户端库的全貌
    • 前言
  • 1. diesel:一个用于Rust语言的ORM和查询构建器
    • 1.1 简介
      • 1.1.1 核心功能
      • 1.1.2 使用场景
    • 1.2 安装与配置
      • 1.2.1 安装指南
      • 1.2.2 基本配置
    • 1.3 API 概览
      • 1.3.1 ORM操作
      • 1.3.2 查询构建
  • 2. sqlx:一个用于Rust语言的异步数据库驱动程序和查询构建器
    • 2.1 简介
      • 2.1.1 核心功能
      • 2.1.2 使用场景
    • 2.2 安装与配置
      • 2.2.1 安装指南
      • 2.2.2 基本配置
    • 2.3 API 概览
      • 2.3.1 异步数据库操作
      • 2.3.2 查询构建
  • 3. Redis-rs:一个用于Rust语言的Redis客户端
    • 3.1 简介
      • 3.1.1 核心功能
      • 3.1.2 使用场景
    • 3.2 安装与配置
      • 3.2.1 安装指南
      • 3.2.2 基本配置
    • 3.3 API 概览
      • 3.3.1 连接管理
      • 3.3.2 数据操作
  • 4. postgres:一个用于Rust语言的PostgreSQL客户端
    • 4.1 简介
      • 4.1.1 核心功能
      • 4.1.2 使用场景
    • 4.2 安装与配置
      • 4.2.1 安装指南
      • 4.2.2 基本配置
    • 4.3 API 概览
      • 4.3.1 连接管理
      • 4.3.2 数据操作
  • 5. rusqlite:一个用于Rust语言的SQLite客户端
    • 5.1 简介
      • 5.1.1 核心功能
      • 5.1.2 使用场景
    • 5.2 安装与配置
      • 5.2.1 安装指南
      • 5.2.2 基本配置
    • 5.3 API 概览
      • 5.3.1 连接管理
        • 打开数据库连接
        • 关闭数据库连接
      • 5.3.2 数据操作
        • 执行 SQL 查询
  • 6. Clickhouse-rs:一个用于Rust语言的ClickHouse客户端
    • 6.1 简介
      • 6.1.1 核心功能
      • 6.1.2 使用场景
    • 6.2 安装与配置
      • 6.2.1 安装指南
      • 6.2.2 基本配置
    • 6.3 API 概览
      • 6.3.1 连接管理
      • 6.3.2 数据操作
    • 总结

1. diesel:一个用于Rust语言的ORM和查询构建器

1.1 简介

diesel是一个用于Rust语言的ORM(对象关系映射)和查询构建器。它提供了一套强大的工具,帮助开发者在Rust中轻松地操作数据库,执行ORM操作,并构建复杂的查询。

1.1.1 核心功能

  • 提供ORM功能,将数据库表映射为Rust结构体,方便进行对象级别的操作。
  • 支持常见的数据库操作,如增删改查等。
  • 提供类型安全的查询构建器,可以避免手写SQL语句,减少出错的可能性。

1.1.2 使用场景

diesel适合于需要使用Rust语言进行数据库操作的项目,特别是对类型安全和性能有较高要求的项目。由于其良好的文档和活跃的社区支持,diesel在Rust生态圈中得到了广泛的应用。

1.2 安装与配置

安装diesel之前,需要确保已经安装了Rust编程语言的开发环境。接下来,可以通过Cargo(Rust的包管理工具)来安装diesel。

1.2.1 安装指南

在项目的Cargo.toml文件中添加以下依赖:

[dependencies]
diesel = { version = "1.4", features = ["<数据库类型>"] }

其中<数据库类型>需要替换为实际使用的数据库类型,比如sqlitemysqlpostgres等。

然后运行以下命令安装diesel-cli工具:

cargo install diesel_cli --no-default-features --features "<数据库类型>"

1.2.2 基本配置

安装完成后,可以使用diesel setup命令来配置数据库连接,并生成相应的目录结构和文件。

1.3 API 概览

diesel提供了丰富的API,涵盖了ORM操作和查询构建等功能。

1.3.1 ORM操作

下面是一个简单的示例,演示了如何使用diesel进行ORM操作,假设已经定义了名为User的Rust结构体,用于映射数据库中的users表:

use diesel::prelude::*;
use diesel::sqlite::SqliteConnection;// 定义 User 结构体
#[derive(Queryable)]
struct User {id: i32,name: String,
}fn main() {let connection = SqliteConnection::establish("test.db").unwrap();// 查询所有用户let all_users: Vec<User> = users.load(&connection).expect("Error loading users");
}

在上面的示例中,我们使用了diesel::prelude::*导入了diesel的预定义符号,准备好了数据库连接之后,通过load方法加载了所有用户信息。

1.3.2 查询构建

以下是一个简单的示例,展示了如何使用diesel的查询构建器进行查询操作:

use diesel::prelude::*;
use diesel::sqlite::SqliteConnection;
use schema::users::dsl::*;fn main() {let connection = SqliteConnection::establish("test.db").unwrap();// 查询名字为Alice的用户let alice = users.filter(name.eq("Alice")).first::<User>(&connection).expect("Error loading user");
}

2. sqlx:一个用于Rust语言的异步数据库驱动程序和查询构建器

2.1 简介

sqlx 是一个用于 Rust 语言的异步数据库驱动程序和查询构建器。它允许您连接到数据库并执行查询,同时提供了一套易于使用的 API。

2.1.1 核心功能

  • 异步数据库操作
  • 查询构建
  • 支持多种主流数据库,如 PostgreSQL、MySQL、SQLite

2.1.2 使用场景

sqlx 适用于任何需要在 Rust 中处理异步数据库操作的项目。无论是构建 Web 服务、后台任务或其他类型的应用,sqlx 都能提供高效的数据库访问能力。

2.2 安装与配置

2.2.1 安装指南

您可以将 sqlx 添加到您的 Cargo.toml 文件中的依赖项部分:

[dependencies]
sqlx = "0.5"

2.2.2 基本配置

sqlx 不需要太多基本配置,但需要在项目中引入相应的模块来使用,例如:

use sqlx::postgres::PgPool;

2.3 API 概览

2.3.1 异步数据库操作

sqlx 提供了异步数据库操作的支持,下面是一个简单的示例代码,创建一个 PostgreSQL 连接池,并执行查询:

use sqlx::postgres::PgPoolOptions;#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {// 创建一个连接池let pool = PgPoolOptions::new().max_connections(5).connect("postgresql://username:password@localhost/database").await?;// 执行查询let count: i64 = sqlx::query_scalar("SELECT COUNT(*) FROM users").fetch_one(&pool).await?;println!("Total users: {}", count);Ok(())
}

官网链接:sqlx - Asynchronous Postgres

2.3.2 查询构建

sqlx 具有灵活而强大的查询构建能力,使得构建复杂的查询变得非常简单。以下是一个简单的示例,展示了如何执行 SELECT 查询:

use sqlx::{Pool, Postgres, Row};#[tokio::main]
async fn main() -> Result<(), sqlx::Error> {let pool = Pool::<Postgres>::connect("postgresql://username:password@localhost/database").await?;let account_id: i32 = 1;let rec = sqlx::query("SELECT * FROM accounts WHERE id = $1").bind(account_id).map(|row: sqlx::postgres::PgRow| {(row.get(0), row.get(1))}).fetch_one(&pool).await?;let (id, name): (i32, String) = rec;println!("Account {}: {}", id, name);Ok(())
}

官网链接:sqlx - Query Building

以上是关于 sqlx 的简要介绍和使用示例。希望可以帮助你更好地了解和使用这个在 Rust 生态圈中备受推崇的数据库驱动和查询构建工具。

3. Redis-rs:一个用于Rust语言的Redis客户端

3.1 简介

Redis-rs 是一个为 Rust 语言开发的 Redis 客户端库,它提供了连接管理、数据操作等核心功能,使得在 Rust 中操作 Redis 数据库变得更加便捷和高效。

3.1.1 核心功能

  • 连接管理
  • 数据操作

3.1.2 使用场景

Redis-rs 可以被广泛应用于需要使用 Redis 进行数据存储和缓存的 Rust 项目中,例如 Web 应用程序、分布式系统等。

3.2 安装与配置

3.2.1 安装指南

你可以在 Cargo.toml 文件中添加如下依赖来使用 redis-rs:

[dependencies]
redis = "0.23.0"

3.2.2 基本配置

暂无特殊基本配置要求。

3.3 API 概览

3.3.1 连接管理

通过 Redis-rs 连接 Redis 服务器非常简单。以下是一个建立连接并执行一些简单操作的示例代码:

use redis::Commands;fn main() -> redis::RedisResult<()> {let client = redis::Client::open("redis://127.0.0.1/")?;let mut con = client.get_connection()?;let _: () = con.set("my_key", 42)?;let result: i32 = con.get("my_key")?;println!("My key is: {}", result);Ok(())
}

官网链接:连接管理

3.3.2 数据操作

Redis-rs 提供了丰富的数据操作方法,包括字符串、哈希表、列表、集合等操作。以下是一个简单的示例,演示了如何在 Rust 中进行 Redis 数据操作:

use redis::Commands;fn main() -> redis::RedisResult<()> {let client = redis::Client::open("redis://127.0.0.1/")?;let mut con = client.get_connection()?;// String 操作示例let _: () = con.set("my_string_key", "Hello, Redis!")?;let result: String = con.get("my_string_key")?;println!("My string key is: {}", result);// 哈希表操作示例let _: () = con.hset("my_hash_key", "field1", 1)?;let _: () = con.hset("my_hash_key", "field2", 2)?;let result: Option<i32> = con.hget("my_hash_key", "field1")?;println!("Field1 in my hash key is: {:?}", result);// 列表操作示例let _: () = con.rpush("my_list_key", 1)?;let _: () = con.rpush("my_list_key", 2)?;let result: Vec<i32> = con.lrange("my_list_key", 0, -1)?;println!("My list key contains: {:?}", result);// 集合操作示例let _: () = con.sadd("my_set_key", 1)?;let _: () = con.sadd("my_set_key", 2)?;let result: Vec<i32> = con.smembers("my_set_key")?;println!("My set key contains: {:?}", result);Ok(())
}

官网链接:数据操作

通过以上示例,我们可以看到 Redis-rs 在 Rust 语言中提供了简洁而强大的 Redis 客户端功能,使得 Rust 开发者可以更加方便地与 Redis 进行交互。

4. postgres:一个用于Rust语言的PostgreSQL客户端

4.1 简介

postgres 是一个 Rust 语言下的 PostgreSQL 客户端库。它提供了连接管理、数据操作等核心功能,适用于各种使用场景。

4.1.1 核心功能

  • 连接管理
  • 数据操作

4.1.2 使用场景

  • 数据库应用程序开发
  • 数据分析与处理

4.2 安装与配置

安装 postgres 可以在 Cargo.toml 中添加相应的依赖。

4.2.1 安装指南

在 Cargo.toml 文件中添加以下依赖:

[dependencies]
postgres = "0.17.3"

更多安装和更新信息,请参考 postgres crate。

4.2.2 基本配置

在使用 postgres 之前,需要确保已经安装了 Rust 工具链,并且有可访问的 PostgreSQL 数据库实例。

4.3 API 概览

下面将介绍一些 postgres 的核心 API。

4.3.1 连接管理

使用 postgres 进行数据库连接管理的示例代码如下:

use postgres::{Client, NoTls};fn main() {let mut client = Client::connect("host=localhost user=postgres", NoTls).unwrap();// 更多连接管理操作
}

更多关于连接管理的详细内容,请参考 postgres Connection API。

4.3.2 数据操作

postgres 提供了丰富的数据操作方法,例如执行查询、插入、更新和删除等操作。

use postgres::{Client, NoTls};fn main() {let mut client = Client::connect("host=localhost user=postgres", NoTls).unwrap();client.execute("INSERT INTO person (name, age) VALUES ($1, $2)",&[&"Alice", &31],).expect("Error inserting into person");// 更多数据操作
}

更多关于数据操作的详细内容,请参考 postgres Query API。

通过以上示例,我们简要介绍了如何在 Rust 中使用 postgres 客户端库进行连接管理和数据操作。更多详细内容请参考官方文档。

5. rusqlite:一个用于Rust语言的SQLite客户端

5.1 简介

rusqlite 是一个用于 Rust 语言的 SQLite 客户端。它提供了与 SQLite 数据库进行交互的功能,包括连接管理、数据操作等。

5.1.1 核心功能

  • 提供连接管理功能,包括打开数据库连接、关闭数据库连接等。
  • 支持执行 SQL 命令,如查询、插入、更新和删除数据等操作。

5.1.2 使用场景

rusqlite 可以在 Rust 项目中用于访问和操作 SQLite 数据库,适用于需要使用轻量级嵌入式数据库的场景,例如移动应用程序和小型 Web 服务等。

5.2 安装与配置

使用 Rusqlite 需要先安装相应的依赖,并进行基本的配置。

5.2.1 安装指南

在 Cargo.toml 中添加 rusqlite 依赖:

[dependencies]
rusqlite = "0.26.0"

然后运行 cargo build 即可完成安装。

更多安装细节可以参考 rusqlite GitHub 页面。

5.2.2 基本配置

在 Rust 代码中引入 rusqlite 库:

extern crate rusqlite;use rusqlite::Connection;

5.3 API 概览

下面将介绍 rusqlite 的一些常用 API,包括连接管理和数据操作等。

5.3.1 连接管理

打开数据库连接
use rusqlite::Connection;fn main() {let conn = Connection::open("path_to_your_database.db").unwrap();
}
关闭数据库连接
conn.close().unwrap();

5.3.2 数据操作

执行 SQL 查询
use rusqlite::Connection;fn main() {let conn = Connection::open("path_to_your_database.db").unwrap();conn.execute("SELECT id, name FROM users", &[], |row| {let id: i32 = row.get(0);let name: String = row.get(1);println!("id = {}, name = {}", id, name);Ok(())}).unwrap();
}

这是一个简单的示例,更多关于 rusqlite 的 API 可以查阅官方文档:rusqlite.

通过上述介绍,我们了解了 rusqlite 的基本安装与配置,以及常用的 API 操作。在实际项目中,可以根据需要进一步深入学习和使用 rusqlite 来实现对 SQLite 数据库的灵活操作。

6. Clickhouse-rs:一个用于Rust语言的ClickHouse客户端

6.1 简介

Clickhouse-rs 是一个为 Rust 语言提供的 ClickHouse 客户端,能够快速方便地连接和操作 ClickHouse 数据库。

6.1.1 核心功能

  • 支持连接到 ClickHouse 数据库
  • 执行 SQL 查询
  • 插入、更新和删除数据
  • 支持异步操作

6.1.2 使用场景

Clickhouse-rs 可以用于在 Rust 项目中与 ClickHouse 数据库进行交互,例如进行大规模数据分析、实时数据处理等场景。

6.2 安装与配置

安装 Clickhouse-rs 可以通过 Cargo,在你的 Cargo.toml 文件中添加以下依赖:

[dependencies]
clickhouse = "0.1.7"

6.2.1 安装指南

点击 这里 查看 clickhouse crate 的最新版本和详细信息。

6.2.2 基本配置

接下来,配置 Clickhouse-rs 的基本信息,比如数据库连接地址、用户名和密码等。示例代码如下:

use clickhouse::client::Client;fn main() {let client = Client::default().with_url("clickhouse://host:port").with_user("username").with_password("password").with_database("database_name");// 其他操作
}

6.3 API 概览

Clickhouse-rs 提供了丰富的 API,用于管理连接并进行数据操作。

6.3.1 连接管理

点击 这里 查看关于连接管理的详细文档。下面是一个简单的连接示例:

use clickhouse::client::Client;fn main() {let client = Client::default().with_url("clickhouse://host:port");// 其他操作
}

6.3.2 数据操作

Clickhouse-rs 提供了对数据进行插入、查询、更新和删除的操作。下面是一个数据插入的示例:

use clickhouse::client::Client;
use clickhouse::types::options::InsertOptions;fn main() {let client = Client::default().with_url("clickhouse://host:port");let insert_query = r#"INSERT INTO test (a, b) VALUES (1, 'foo')"#;let insert_options = InsertOptions::default();let result = client.insert(insert_query, Some(insert_options));// 处理结果
}

以上是 Clickhouse-rs 的基本用法,更多操作请参考官方文档 clickhouse-rs.

总结

通过本文的介绍,我们了解了多个用于Rust语言的数据库客户端库,覆盖了关系型数据库例如PostgreSQL、SQLite以及非关系型数据库如Redis和ClickHouse。每个库都有其独特的特性和使用场景,例如diesel提供ORM操作,sqlx支持异步数据库操作,而Redis-rs则是专门针对Redis数据库的客户端库。通过选择适合的数据库客户端库,可以有效提升Rust语言项目与数据库进行交互的效率和性能。

相关文章:

【Rust光年纪】超越ORM:探索Rust语言多款数据库客户端库的核心功能和使用场景

数据库操作新选择&#xff1a;从异步操作到连接管理&#xff0c;掌握Rust语言数据库客户端库的全貌 前言 在现代软件开发中&#xff0c;与数据库进行交互是一个常见的任务。Rust语言作为一种高性能、内存安全的编程语言&#xff0c;拥有丰富的生态系统来支持各种数据库操作。…...

解决:事件监听器 addEventListener 被多次调用

背景&#xff1a; 给一个元素添加了事件监听&#xff0c;click 会触发 然而在实际场景中&#xff0c;点击一次&#xff0c;事件会被触发两次 阻止冒泡也没有用 解决&#xff1a; 使用API&#xff1a;event.stopImmediatePropagation() stopImmediatePropagation() 方法可防止…...

配置RIPv2的认证

目录 一、配置IP地址、默认网关、启用端口 1. 路由器R1 2. 路由器R2 3. 路由器R3 4. Server1 5. Server2 二、搭建RIPv2网络 1. R1配置RIPv2 2. R2配置RIPv2 3. Server1 ping Server2 4. Server2 ping Server1 三、模拟网络攻击&#xff0c;为R3配置RIPv2 四、在R…...

前端调试技巧:动态高亮渲染区域

效果&#xff1a; 前端界面的渲染过程、次数&#xff0c;会通过高亮变化来显示&#xff0c;通过这种效果排除一些BUG 高亮 打开方式 F12进入后点击ESC&#xff0c;进入rendering&#xff0c;选择前三个即可&#xff08;如果没有rendering&#xff0c;点击橘色部分勾选上&…...

深克隆与浅克隆的区别与实现

在软件开发中&#xff0c;克隆对象是一个常见需求。克隆的方式主要有两种&#xff1a;深克隆&#xff08;Deep Clone&#xff09;和浅克隆&#xff08;Shallow Clone&#xff09;。了解它们的区别及其实现方法&#xff0c;对于编写高效、安全的代码非常重要。 深克隆与浅克隆的…...

【学习笔记】无人机系统(UAS)的连接、识别和跟踪(六)-无人机直接C2通信

目录 引言 5.4 直接C2通信 5.4.1 概述 5.4.2 A2X直接C2通信服务的授权策略 5.4.3 USS使用A2X直接C2通信服务的C2授权程序 5.4.4 直接C2通信建立程序 引言 3GPP TS 23.256 技术规范&#xff0c;主要定义了3GPP系统对无人机&#xff08;UAV&#xff09;的连接性、身份识别…...

认识和安装R的扩展包,什么是模糊搜索安装,工作目录和空间的区别与设置

R语言以其强大的功能和灵活的扩展性,成为了无数数据分析师和研究者的首选工具。R的丰富功能和海量扩展包直接相关,但如何高效管理这些扩展包,进而充分发挥R的强大潜力?本文将为您揭示这些问题的答案。 一、R的扩展包 R的包(packages)是由R函数、数据和预编译代码组成的一…...

解决STM32开启定时器时立即进入一次中断程序问题

转自 解决STM32开启定时器时立即进入一次中断程序问题_stm32f407定时器初始化自动进入一次-CSDN博客 配置STM32定时器时&#xff0c;定时器中断使能、定时器使能、清除更新中断标志位&#xff0c;三者不同顺序程序执行时有不同效果&#xff0c;具体如下&#xff1a; TIM_Clea…...

Unity UGUI 之EventSystem

本文仅作学习笔记与交流&#xff0c;不作任何商业用途 本文包括但不限于unity官方手册&#xff0c;唐老狮&#xff0c;麦扣教程知识&#xff0c;引用会标记&#xff0c;如有不足还请斧正 1.EventSystem是什么&#xff1f; 有需要请查看手册&#xff1a;Unity - 手册&#xff1…...

USB转多路UART - USB 基础

一、 前言 断断续续做了不少USB相关开发&#xff0c;但是没有系统去了解过&#xff0c;遇到问题就很被动了。做这个USB转UART的项目就是&#xff0c;于是专门花了一天的时间学习USB及CDC相关&#xff0c;到写这文章时估计也忘得差不多了&#xff0c;趁项目收尾阶段记录一下&am…...

接近50个实用编程相关学习资源网站

Date: 2024.07.17 09:45:10 author: lijianzhan 编程语言以及编程相关工具等实用性官方文档网站 C语言文档&#xff1a;https://learn.microsoft.com/zh-cn/cpp/c-languageMicrosoft C、C和汇编程序文档&#xff1a;https://learn.microsoft.com/zh-cn/cppJAVA官方文档&#…...

在数据操作中使用SELECT子句

目录 一、INSERT 语句中使用 SELECT子句 二、UPDATE 语句中使用 SELECT子句 三、DELETE 语句中使用 SELECT子句 一、INSERT 语句中使用 SELECT子句 在 INSERT 语句中使用 SELECT子句&#xff0c;可以将一个或多个表或视图中的数据添加到另外一个表中。使用 SELECT 子句还可以…...

Golang | Leetcode Golang题解之第274题H指数

题目&#xff1a; 题解&#xff1a; func hIndex(citations []int) int {// 答案最多只能到数组长度left,right:0,len(citations)var mid intfor left<right{// 1 防止死循环mid(leftright1)>>1cnt:0for _,v:range citations{if v>mid{cnt}}if cnt>mid{// 要找…...

区块链技术在智能家居中的创新应用探索

随着物联网技术的发展和智能家居市场的蓬勃发展&#xff0c;区块链技术作为一种去中心化的数据管理和安全保障技术&#xff0c;正在逐渐引入智能家居领域&#xff0c;并为其带来了新的创新应用。本文将探讨区块链技术在智能家居中的具体应用场景、优势以及未来发展方向。 智能家…...

无需业务改造,一套数据库满足 OLTP 和 OLAP,GaiaDB 发布并行查询能力

在企业中通常存在两类数据处理场景&#xff0c;一类是在线事务处理场景&#xff08;OLTP&#xff09;&#xff0c;例如交易系统&#xff0c;另一类是在线分析处理场景&#xff08;OLAP&#xff09;&#xff0c;例如业务报表。 OLTP 数据库擅长处理数据的增、删、改&#xff0c…...

PHP 表单验证:邮件和URL

PHP 表单验证&#xff1a;邮件和URL 在Web开发中&#xff0c;表单验证是一个至关重要的环节&#xff0c;它确保了用户输入的数据的有效性和安全性。特别是在处理邮件地址和URL时&#xff0c;准确的验证尤为重要。本文将详细介绍如何使用PHP来验证表单中的邮件地址和URL。 邮件…...

前端八股文 路由的懒加载

为什么会有 路由的懒加载 在现代单页应用&#xff08;SPA&#xff09;的开发中&#xff0c;路由懒加载是一种提升应用性能的关键技术。通过按需加载组件&#xff0c;而非在应用启动时一次性加载所有模块&#xff0c;可以显著减少初次加载时间和资源消耗。本文旨在深入探讨前端…...

HarmonyOS Web组件(二)

1. HarmonyOS Web组件 官方文档 1.1. 混合开发的背景和好处 混合开发&#xff08;Hybrid Development&#xff09;是一种结合原生应用和Web应用的开发模式&#xff0c;旨在同时利用两者的优势。随着移动应用需求的多样化和复杂化&#xff0c;单一的开发方式往往难以满足所有…...

HarmonyOS应用开发者高级认证,Next版本发布后最新题库 - 单选题序号2

基础认证题库请移步&#xff1a;HarmonyOS应用开发者基础认证题库 注&#xff1a;有读者反馈&#xff0c;题库的代码块比较多&#xff0c;打开文章时会卡死。所以笔者将题库拆分&#xff0c;单选题20个为一组&#xff0c;多选题10个为一组&#xff0c;题库目录如下&#xff0c;…...

基于python深度学习遥感影像地物分类与目标识别、分割实践技术应用

目录 专题一、深度学习发展与机器学习 专题二、深度卷积网络基本原理 专题三、TensorFlow与Keras介绍与入门 专题四、PyTorch介绍与入门 专题五、卷积神经网络实践与遥感图像场景分类 专题六、深度学习与遥感图像检测 专题七、遥感图像检测案例 专题八、深度学习与遥感…...

C++实现分布式网络通信框架RPC(3)--rpc调用端

目录 一、前言 二、UserServiceRpc_Stub 三、 CallMethod方法的重写 头文件 实现 四、rpc调用端的调用 实现 五、 google::protobuf::RpcController *controller 头文件 实现 六、总结 一、前言 在前边的文章中&#xff0c;我们已经大致实现了rpc服务端的各项功能代…...

【论文笔记】若干矿井粉尘检测算法概述

总的来说&#xff0c;传统机器学习、传统机器学习与深度学习的结合、LSTM等算法所需要的数据集来源于矿井传感器测量的粉尘浓度&#xff0c;通过建立回归模型来预测未来矿井的粉尘浓度。传统机器学习算法性能易受数据中极端值的影响。YOLO等计算机视觉算法所需要的数据集来源于…...

CMake 从 GitHub 下载第三方库并使用

有时我们希望直接使用 GitHub 上的开源库,而不想手动下载、编译和安装。 可以利用 CMake 提供的 FetchContent 模块来实现自动下载、构建和链接第三方库。 FetchContent 命令官方文档✅ 示例代码 我们将以 fmt 这个流行的格式化库为例,演示如何: 使用 FetchContent 从 GitH…...

UR 协作机器人「三剑客」:精密轻量担当(UR7e)、全能协作主力(UR12e)、重型任务专家(UR15)

UR协作机器人正以其卓越性能在现代制造业自动化中扮演重要角色。UR7e、UR12e和UR15通过创新技术和精准设计满足了不同行业的多样化需求。其中&#xff0c;UR15以其速度、精度及人工智能准备能力成为自动化领域的重要突破。UR7e和UR12e则在负载规格和市场定位上不断优化&#xf…...

Maven 概述、安装、配置、仓库、私服详解

目录 1、Maven 概述 1.1 Maven 的定义 1.2 Maven 解决的问题 1.3 Maven 的核心特性与优势 2、Maven 安装 2.1 下载 Maven 2.2 安装配置 Maven 2.3 测试安装 2.4 修改 Maven 本地仓库的默认路径 3、Maven 配置 3.1 配置本地仓库 3.2 配置 JDK 3.3 IDEA 配置本地 Ma…...

算法笔记2

1.字符串拼接最好用StringBuilder&#xff0c;不用String 2.创建List<>类型的数组并创建内存 List arr[] new ArrayList[26]; Arrays.setAll(arr, i -> new ArrayList<>()); 3.去掉首尾空格...

CSS | transition 和 transform的用处和区别

省流总结&#xff1a; transform用于变换/变形&#xff0c;transition是动画控制器 transform 用来对元素进行变形&#xff0c;常见的操作如下&#xff0c;它是立即生效的样式变形属性。 旋转 rotate(角度deg)、平移 translateX(像素px)、缩放 scale(倍数)、倾斜 skewX(角度…...

【前端异常】JavaScript错误处理:分析 Uncaught (in promise) error

在前端开发中&#xff0c;JavaScript 异常是不可避免的。随着现代前端应用越来越多地使用异步操作&#xff08;如 Promise、async/await 等&#xff09;&#xff0c;开发者常常会遇到 Uncaught (in promise) error 错误。这个错误是由于未正确处理 Promise 的拒绝&#xff08;r…...

消息队列系统设计与实践全解析

文章目录 &#x1f680; 消息队列系统设计与实践全解析&#x1f50d; 一、消息队列选型1.1 业务场景匹配矩阵1.2 吞吐量/延迟/可靠性权衡&#x1f4a1; 权衡决策框架 1.3 运维复杂度评估&#x1f527; 运维成本降低策略 &#x1f3d7;️ 二、典型架构设计2.1 分布式事务最终一致…...

使用SSE解决获取状态不一致问题

使用SSE解决获取状态不一致问题 1. 问题描述2. SSE介绍2.1 SSE 的工作原理2.2 SSE 的事件格式规范2.3 SSE与其他技术对比2.4 SSE 的优缺点 3. 实战代码 1. 问题描述 目前做的一个功能是上传多个文件&#xff0c;这个上传文件是整体功能的一部分&#xff0c;文件在上传的过程中…...