Dynamo介绍

一、介绍

1、简介

Amazon DynamoDB 是由 AWS 提供的一种完全托管的 NoSQL 数据库服务,适用于高性能、可扩展的应用程序。它设计用于处理大规模的数据存储和高速数据访问,广泛应用于需要低延迟、高吞吐量的场景,如移动应用、电商、游戏后端、IoT(物联网)和社交媒体等。此外还可以使用 AWS 管理控制台来监控资源使用情况和各种性能指标。

2、特点
  • 高可扩展性: DynamoDB 能够自动扩展以处理大规模的数据和高并发的请求。它通过分区技术在多个服务器上自动分配数据,确保随着数据增长,性能不会下降。

  • 低延迟和高吞吐量: DynamoDB 提供毫秒级响应时间,支持数百万请求每秒,适用于需要低延迟和高并发的场景。

  • 完全托管: 用户无需管理硬件、数据库的安装、配置和维护等,AWS 会自动管理 DynamoDB 实例的运行、扩展、备份和恢复。

  • 无服务器架构: DynamoDB 支持无服务器(Serverless)模式,意味着用户不需要管理服务器的数量或规模,可以根据需要自动调整容量。

  • 多区域复制: DynamoDB 支持跨多个 AWS 区域复制,确保数据高可用和灾难恢复能力。

  • 灵活的数据模型: DynamoDB 是一个键值和文档存储数据库,可以根据业务需求选择适当的模式。它支持单表设计,并通过索引和查询操作提高数据检索的效率。

  • 强一致性与最终一致性: DynamoDB 支持强一致性读取和最终一致性读取两种模式。强一致性读取返回的结果是最新的,而最终一致性读取可能会稍微滞后,但可以提高吞吐量。

3、使用 DynamoDB 的场景

(1)高并发应用:如社交媒体平台、移动应用后端、实时分析等。

(2)快速增长的应用:如物联网设备数据存储、电商网站用户行为跟踪等。

(3)需要低延迟的应用:如金融服务、广告实时竞价系统、游戏排行榜等。

4、主要优点
  • 管理简单:无需手动配置数据库实例或进行硬件扩展,AWS 负责底层管理。
  • 高可用性:自动跨多个区域复制数据,避免单点故障。
  • 灵活扩展:支持处理大规模流量,适应需求变化。
5、主要限制
  • 查询功能有限:相比关系型数据库,DynamoDB 在复杂查询和联接操作上的能力有限。通常需要依赖设计好的索引和查询模式。
  • 成本:根据表的规模和访问模式,DynamoDB 的费用可能会根据读取、写入、存储和索引等项产生较高费用,特别是大规模操作时需要注意成本控制。
6、官方文档

DynamoDB 入门 - Amazon DynamoDB

7、dynamo local

dynamo是aws完全托管的,无需安装任何服务,即可可以在aws控制台上建表。

为了方便开发和测试,Amazon还提供了DynamoDB Local,这是一种轻量级的版本,可以在本地机器上运行,所以需要手动下载和安装。

二、关键概念

1、表(Table)

DynamoDB中的数据是存储在表中的。每个表都需要一个主键来唯一标识记录。主键由两个部分组成:

(1)分区键(Partition Key):表中的每个项目都有一个分区键,决定了数据存储的位置。

(2)复合主键(Partition Key + Sort Key):允许对数据进行排序的键,复合主键使得每个分区可以存储多个项目。

2、项目(Item)

表中的一条记录是一个项目,类似于传统数据库中的一行。项目由多个属性(字段)组成。

3、属性(Attribute)

 每个项目都有一个或多个属性,类似于数据库中的列。属性的类型可以是基本数据类型,如字符串、数字、布尔值,也可以是嵌套的数据结构,如列表和映射。

4、索引(Index)

 DynamoDB 提供了两种类型的索引:

(1)全局二级索引(GSI):可以根据不同的属性进行查询,支持强一致性或最终一致性读取。

(2)本地二级索引(LSI):与主表的分区键相同,但支持不同的排序键。

5、主键

在 Amazon DynamoDB 中,每个表必须有主键 (Primary Key),这也是 DynamoDB 表结构的核心要求。主键用于唯一标识表中的每个项目,并决定如何将数据分布到不同的分区。主键由两种类型组成:分区键 (Partition Key,也叫Hash Key) 和 排序键 (Sort Key,也叫Range Key)。这两者可以用来定义数据的存储方式。

(1)Partition Key /Hash Key

是 DynamoDB 主键的一部分,负责将数据分布到不同的物理分区。根据分区键的值,DynamoDB 会使用哈希函数计算分区存储位置。如果你只定义了分区键,则数据表的主键是 单一分区键。每个分区键值都对应一个分区,其中存储着该键值下的所有数据项。

使用排序键,你可以执行类似范围查询、排序查询等操作。例如,你可以查找某个分区键值下,所有排序键在某个范围内的数据项。

 如在一个订单表中,UserId 可以作为分区键,而OrderDate 作为排序键。这样可以让同一个用户(分区键相同)拥有多个订单(排序键不相同)。

(2)Range Key / Sort Key

是可选的,用来进一步细分存储在同一分区下的项目。它允许在同一个分区键值下存储多项数据,并按照排序键的值进行排序。

DynamoDB 主键类型总结

单分区键:

只有一个分区键,适用于数据量较小的情况(可以确保唯一性)。

分区键 + 排序键组合:

一个分区键+一个排序键,注意排序键也最多只能有一个。适用于数据量较大、需要按排序键进行操作的情况。

6、流(Streams)

 DynamoDB Streams 可以记录表的数据变更,支持应用程序监听这些变更并执行相应操作。

7、容量单位(Capacity Units)

 DynamoDB 的吞吐量是基于容量单位来计算的。用户可以选择按预置容量模式(Provisioned Mode)或者按需容量模式(On-Demand Mode)计费:

(1)预置容量模式:事先设定表的吞吐量(读取和写入请求),适合预测负载的应用。

(2)按需容量模式:DynamoDB 根据实际负载动态调整吞吐量,适合负载波动较大的应用。

8、自动备份和恢复

DynamoDB 提供了自动备份、点-in-time 恢复(PITR),确保数据的持久性和恢复能力。

三、数据类型

Amazon DynamoDB 中,数据类型的表示方式与传统关系型数据库有所不同。DynamoDB 支持多种基本数据类型,以及一些复合数据类型,用于存储复杂的数据结构。通过使用 AWS SDKDynamoDB Mapper,你可以在应用程序中更容易地映射这些类型。

以下是 DynamoDB 中常见的几种数据类型,以及如何在 DynamoDB 表中表示它们:

1、String (S)

用于表示文本数据。

// 表示 String 类型
@DynamoDBAttribute
private String name;
2、Number (N)

用于表示整数或浮动小数(双精度浮动数)。DynamoDB 将其存储为字符串格式,但它可以作为数字进行处理。 

3、Binary (B)

用于存储二进制数据,如文件、加密密钥或图片。

// 表示 Binary 类型
@DynamoDBAttribute
private Byte[] fileData;
4、Boolean (BOOL)

用于表示 truefalse 布尔值。

 5、Null (NULL)

表示空值(没有值)。如果某个属性没有被设置,可以将其设置为 NULL

// 表示 Null 类型
@DynamoDBAttribute
private String address;  // 如果 address 没有值,可以设置为 NULL
6、List (L)

用于表示一个有序的元素列表,可以包含多个不同类型的元素。

// 表示 List 类型
@DynamoDBAttribute
private List<String> tags;
 7、Map (M)

用于表示一个由键值对组成的哈希映射,可以嵌套其他类型的集合。

// 表示 Map 类型
@DynamoDBAttribute
private Map<String, String> metadata;
8、Set (SS, NS, BS)
  • SS:String Set,用于表示一个字符串集合。
  • NS:Number Set,用于表示一个数字集合。
  • BS:Binary Set,用于表示一个二进制数据集合。
// 表示 String Set 类型
@DynamoDBAttribute
private Set<String> interests;

// 表示 Number Set 类型
@DynamoDBAttribute
private Set<Double> ratings;

// 表示 Binary Set 类型
@DynamoDBAttribute
private Set<Byte[]> binaryData;
9、日期与时间

DynamoDB 并没有内建的日期时间类型,但可以使用 StringNumber 类型来存储日期和时间。常见的做法是使用 ISO 8601 格式的字符串来表示日期(例如:"2024-11-14T00:00:00Z")或 Unix 时间戳(自 1970 年 1 月 1 日以来的秒数)。 

// 日期存储为 ISO 8601 格式的 String
@DynamoDBAttribute
private String createdAt;
// 日期存储为 Unix 时间戳(秒数)
@DynamoDBAttribute
private Long timestamp;

四、和mongodb的区别

Amazon DynamoDB 和 MongoDB 都是流行的 NoSQL 数据库,但它们在设计理念、架构、功能、用途等方面有一些显著的区别。以下是 DynamoDB 和 MongoDB 之间的主要区别: 

1. 类型和架构
  • DynamoDB
    • 类型:完全托管的键值存储(Key-Value Store)和文档数据库(Document Store)。
    • 架构:DynamoDB 是一个分布式数据库,完全由 Amazon Web Services (AWS) 提供管理。它是一个托管服务,支持自动扩展和自动分区,以应对大规模的读取和写入负载。
    • 数据模型:数据存储在表(Table)中,表由 分区键(Partition Key) 和可选的 排序键(Sort Key) 组成,支持简单的键值访问(Hash Key + Range Key)。此外,它还支持全局二级索引(GSI)和本地二级索引(LSI)。
  • MongoDB
    • 类型:文档数据库(Document Store)。
    • 架构:MongoDB 是一个开源的、分布式的数据库,通常需要自行管理部署。虽然有托管版本(如 MongoDB Atlas),但它也可以自托管和配置。
    • 数据模型:MongoDB 将数据存储为 BSON 格式的文档,文档类似于 JSON 格式。它允许具有嵌套结构的复杂文档,并且字段可以动态变化,不需要提前定义模式(Schema-less)。
2. 数据模型与查询语言
  • DynamoDB

    • 数据模型:基于键值存储和表的结构,主键包括 分区键(HashKey) 和可选的 排序键(RangeKey)。它支持存储非结构化数据,但通常不提供传统的 SQL 查询能力。
    • 查询语言:DynamoDB 使用其特定的查询 API,主要基于 Key-Value 存取方式,可以进行简单的查询、扫描、分页操作。支持通过二级索引(GSI、LSI)来扩展查询功能。
    • 限制:对于复杂的多表联合查询、聚合操作等,DynamoDB 的查询能力相对有限。
  • MongoDB

    • 数据模型:数据以 JSON 类似的 BSON 文档形式存储,具有更高的灵活性,可以存储复杂的嵌套数据。每个文档可以有不同的字段和结构,非常适合处理不规则和半结构化数据。
    • 查询语言:MongoDB 提供强大的查询语言,支持多种操作(如查找、聚合、排序、分组等),并且支持表达式、条件查询、范围查询和文本搜索等。
    • 灵活性:由于其模式自由的特性,MongoDB 适合需要快速开发、频繁变更数据结构的场景。
3. 性能和扩展
  • DynamoDB
    • 性能:DynamoDB 以自动分区和分布式的方式来提供可扩展性。它支持自动的横向扩展,随着数据量和请求量的增加,AWS 会自动分配更多的资源。通过 Provisioned(预配置)和 On-Demand(按需)两种容量模式来进行管理。
    • 扩展性:DynamoDB 提供自动扩展和负载均衡,几乎不需要手动管理。它能够在 AWS 全球范围内自动扩展,适合大规模、高吞吐量的工作负载。
  • MongoDB
    • 性能:MongoDB 同样支持分布式架构,支持水平扩展(Sharding)。你可以通过增加更多节点来提高性能。
    • 扩展性:虽然 MongoDB 支持分片和集群,但它需要用户手动配置和管理(特别是当处理大规模数据时)。MongoDB 在扩展性上需要更多的运维管理。
4. 一致性和可用性
  • DynamoDB

    • 一致性:DynamoDB 提供 强一致性最终一致性 两种读取选项。强一致性保证读取到的数据是最新的,而最终一致性则允许更高的吞吐量,但可能返回过时的数据。
    • 高可用性:DynamoDB 是一个高可用的服务,通过在多个 AWS 区域和可用区之间自动复制数据来实现高可用性。它的 SLA 保证了 99.99% 的可用性。
  • MongoDB

    • 一致性:MongoDB 支持 强一致性最终一致性,根据配置,可以控制读写操作的副本集(Replica Set)的行为。通过选择副本集读写策略,可以决定是否读取到最新的写入数据。
    • 高可用性:MongoDB 通过副本集(Replica Set)提供高可用性,并支持自动故障转移和复制。副本集可以在多个节点间进行数据复制,确保数据的高可用性。
5. 管理和运维
  • DynamoDB

    • 管理:DynamoDB 是一个 完全托管 的服务,不需要用户管理服务器或底层基础设施。AWS 会自动处理备份、恢复、扩展、分区等问题。
    • 备份与恢复:提供自动备份、定期快照和时间点恢复(Point-in-Time Recovery)功能,简化了数据的备份和恢复。
  • MongoDB

    • 管理:MongoDB 可以自托管,也可以通过 MongoDB Atlas 进行托管。自托管版本需要你自己管理数据库的扩展、备份、监控和维护工作。
    • 备份与恢复:MongoDB 也提供备份和恢复功能,但需要更多的配置和管理,尤其是在自托管环境中。
6. 成本
  • DynamoDB

    • 计费模型:DynamoDB 按请求计费,包括读取、写入、存储和流量。你可以选择按需(On-Demand)计费模式,也可以选择按预配置的吞吐量计费(Provisioned)。
    • 自动扩展:DynamoDB 的自动扩展可能会根据流量波动导致费用的波动,因此需要对成本进行监控。
  • MongoDB

    • 计费模型:MongoDB 在自托管模式下不收取许可费用,但需要自行管理硬件和基础设施。如果使用 MongoDB Atlas,则按实例的大小、存储、备份、流量等收费。
    • 灵活性:MongoDB 在自托管环境中,可以通过优化资源使用来降低成本,但管理和维护的负担较重。
7. 使用场景
  • DynamoDB

    • 适合高吞吐量、低延迟和全托管的应用场景,如 实时数据分析物联网(IoT)移动应用后端游戏数据存储 等。
    • 适合需要 自动扩展高可用性 的工作负载,尤其是在 AWS 云环境中。
  • MongoDB

    • 适合需要复杂查询、聚合操作和灵活数据模型的应用场景,如 内容管理系统(CMS)日志分析社交网络平台电子商务平台 等。
    • 适合 开发快速原型 和频繁更改数据结构的应用。
总结
特性DynamoDBMongoDB
类型键值存储、文档存储文档存储
数据模型表格,分区键 + 排序键 + 属性BSON 文档,支持嵌套结构
查询语言基于键值的查询,支持简单查询和二级索引强大的查询语言,支持复杂查询、聚合等
管理完全托管服务,自动扩展和分区自托管或通过 Atlas 托管,手动扩展
一致性强一致性、最终一致性强一致性、最终一致性,副本集控制
性能与扩展自动扩展,高吞吐量,适合大规模应用支持水平扩展和分片,适合复杂查询和大数据工作负载
高可用性自动高可用,自动跨可用区复制数据副本集支持高可用性和自动故障转移
成本按请求计费,按吞吐量和存储计费

五、和ES的区别

Amazon DynamoDBElasticsearch (ES) 都是非常流行的 NoSQL 数据存储系统,但它们在设计理念、用途、架构、功能等方面有一些显著的区别。以下是 DynamoDBElasticsearch 之间的主要区别:

1. 基本类型和目标
  • DynamoDB

    • 类型:分布式的 键值存储文档数据库(Key-Value Store 和 Document Store)。
    • 目标:DynamoDB 旨在提供一个高可扩展性、低延迟、高吞吐量的数据库服务,适合存储和快速访问大量结构化数据。它通常用于需要低延迟、高吞吐量的实时应用场景,比如用户数据存储、会话管理、物联网数据存储等。
  • Elasticsearch (ES)

    • 类型:分布式的 搜索引擎全文搜索数据库(Full-Text Search Engine)。
    • 目标:Elasticsearch 是基于 Lucene 的搜索引擎,专为处理大规模的、复杂的 全文搜索数据分析 场景设计。它非常适合于需要快速、强大搜索和分析功能的应用,如日志分析、产品搜索、文档搜索、日志监控等。
2. 数据模型和结构
  • DynamoDB

    • 数据模型:基于表(Table)、行(Item)、列(Attribute)的模型。每个表都有一个 主键(由分区键和可选的排序键组成)。数据是结构化的,字段值可以是基本数据类型(如字符串、数字、布尔值)或嵌套类型(如列表、映射)。
    • 访问模式:通过主键(Partition Key 和可选的 Sort Key)进行直接的 键值查询。它支持 二级索引(GSI 和 LSI)以扩展查询功能。
  • Elasticsearch (ES)

    • 数据模型:基于 索引文档字段。每个文档是一个 JSON 格式的对象,并存储在索引中。文档可以包含复杂的嵌套结构,如数组和对象,支持强大的查询功能。
    • 访问模式:基于 全文搜索查询 DSL(Domain Specific Language)进行复杂查询,支持全文索引、过滤、聚合等。
3. 查询语言和查询能力
  • DynamoDB

    • 查询语言:DynamoDB 使用 AWS SDKDynamoDB API 来执行 CRUD 操作。查询是基于主键或通过 全表扫描 进行的。它也支持通过 二级索引 来进行更灵活的查询,但查询能力相对简单,主要支持按 分区键排序键 查询。
    • 限制:DynamoDB 支持的查询类型有限,不能像传统的关系型数据库那样进行复杂的联接、聚合和排序。对于需要复杂查询、排序和聚合的场景,DynamoDB 有一定的限制。
  • Elasticsearch (ES)

    • 查询语言:Elasticsearch 使用 Elasticsearch Query DSL,一种强大的查询语言,支持全文搜索、布尔查询、过滤器、范围查询、模糊查询、聚合等。它提供了丰富的查询能力,适合处理复杂的文本和分析查询。
    • 优势:ES 具有高效的全文搜索和 全文索引 能力,适合进行复杂的搜索、分析、排序、聚合等操作。它还支持 近似匹配模糊搜索,对于日志分析和搜索引擎应用非常强大。
4. 性能和扩展性
  • DynamoDB

    • 性能:DynamoDB 提供了 低延迟、高吞吐量 的数据存储解决方案。它具有自动横向扩展的能力,能够根据流量自动调整容量。
    • 扩展性:DynamoDB 是 完全托管的,AWS 会自动管理底层硬件资源并根据流量自动扩展。用户只需关心请求和存储的容量,DynamoDB 可以处理大规模的数据存储和高并发的读写请求。
    • 自动化:它自动进行分区管理,自动复制到多个可用区(Availability Zones),确保高可用性。
  • Elasticsearch (ES)

    • 性能:Elasticsearch 是为 全文搜索分析 优化的,能够快速进行高效的索引和查询操作。ES 的查询速度非常快,尤其是在处理大量文本数据和复杂的查询时。
    • 扩展性:Elasticsearch 支持 水平扩展(Sharding),用户可以根据数据量和查询需求调整集群规模。可以通过增加节点来水平扩展集群。ES 的性能在集群化部署时表现更好。
    • 自动化:虽然 ES 也支持自动扩展,但在大规模部署时需要更多的配置和管理。使用 Elasticsearch Service(例如 Elastic CloudAmazon Elasticsearch Service)时,AWS 也会提供托管服务。
5. 一致性和可用性
  • DynamoDB

    • 一致性:DynamoDB 支持 强一致性最终一致性 的读操作。强一致性确保读取到的数据是最新的,而最终一致性允许更高的吞吐量和可用性,但可能会读取到稍微过时的数据。
    • 高可用性:DynamoDB 在多个可用区中自动复制数据,确保 高可用性容错性。在 AWS 上运行的 DynamoDB 提供了 99.99% 的可用性 SLA。
  • Elasticsearch (ES)

    • 一致性:Elasticsearch 采用 最终一致性 模型,特别是在分布式集群中的写操作。它通过副本分片来提供高可用性,但读操作的最终一致性意味着数据的更新可能在所有节点之间传播有所延迟。
    • 高可用性:Elasticsearch 提供 副本集(Replicas)和 分片(Shards)机制,通过复制数据到不同节点上来实现高可用性和容错。它支持自动故障转移,确保集群的高可用性。
6. 用途
  • DynamoDB

    • 适合用于 低延迟、高吞吐量 的应用程序,如 实时数据处理物联网(IoT) 数据存储、会话存储用户管理系统购物车管理数据存储与访问 等。
    • 用于存储结构化数据,尤其是主键查询性能要求高的场景。
  • Elasticsearch (ES)

    • 主要用于 全文搜索日志分析,常见应用包括 搜索引擎日志聚合与分析电子商务搜索文档管理系统社交媒体分析 等。
    • 适用于需要 复杂查询全文搜索聚合分析 的场景,尤其在处理海量日志数据、文本数据分析时非常强大。
7. 成本
  • DynamoDB

    • 计费模型:DynamoDB 按请求容量(读写操作)和存储容量收费,也提供按需计费模式。在高流量、需要高吞吐量的场景中,成本可能会较高。
    • 自动扩展:自动扩展的能力虽然提供了极大的便利,但在使用上需要精确控制读写操作,避免不必要的浪费。
  • Elasticsearch (ES)

    • 计费模型:Elasticsearch 的费用通常按 节点数存储容量计算资源(如 CPU、内存)收费。使用 Elasticsearch Service(例如 AWS Elasticsearch Service 或 Elastic Cloud)时,也按资源的消耗来计费。
    • 资源管理:Elasticsearch 的性能和成本与集群规模密切相关,需要根据查询负载和数据存储量来调整集群规模。
8. 管理和运维
  • DynamoDB

    • 管理:DynamoDB 是一个 完全托管服务,AWS 负责所有的硬件、自动扩展和故障恢复,用户无需担心底层硬件和运维。
    • 备份与恢复:DynamoDB 提供自动备份功能,并且支持 时间点恢复(Point-in-Time Recovery,PITR)。
  • Elasticsearch (ES)

    • 管理:Elasticsearch 既可以自托管,也可以使用托管版本(例如 AWS 提供的 Elasticsearch Service)。自托管版本需要更多的资源和精力来管理集群、索引、

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

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

相关文章

【Linux】HTTP协议和HTTPS加密

文章目录 HTTP1、概念2、认识URL3、协议格式、请求方法和状态码4、HTTP请求和响应报头5、Cookie和Session HTTPS1、对称和非对称加密2、对称非对称加密安全分析3、证书 HTTP 1、概念 我们在应用层定制协议时&#xff0c;不建议直接发送结构体对象&#xff0c;因为在不同的环境…

FlinkPipelineComposer 详解

FlinkPipelineComposer 详解 原文 背景 在flink-cdc 3.0中引入了pipeline机制&#xff0c;提供了除Datastream api/flink sql以外的一种方式定义flink 任务 通过提供一个yaml文件&#xff0c;描述source sink transform等主要信息 由FlinkPipelineComposer解析&#xff0c…

Python中如何获取HTTP请求的Response Body

目录 一、引言 二、使用urllib库获取Response Body 1. 基本用法 2. 发送POST请求 三、使用requests库获取Response Body 1. 安装requests库 2. 基本用法 3. 发送POST请求 4. 处理JSON响应 四、高级用法 1. 处理请求头 2. 设置超时 3. 处理Cookies 五、案例&#…

从华为到创业公司

我有一个朋友&#xff0c;在华为工作了很长一段时间&#xff0c;一年多前&#xff0c;他从华为出来到了一家创业公司。 周末趁着有时间&#xff0c;我跟他聊了下关于从华为到创业公司的一些问题&#xff0c;总结给大伙看看。 ▎1 在华为工作和在创业公司工作最大的差别是什么呢…

如何解决由于找不到d3dx9_43.dll导致游戏启动失败?这里是如何解决的完整指南

遇到“由于找不到d3dx9_43.dll”错误时&#xff0c;很多用户可能会感到困惑和无助。这个问题通常发生在尝试启动游戏或使用基于DirectX的应用程序时。d3dx9_43.dll是Microsoft DirectX软件的一部分&#xff0c;专门用于处理复杂的图形计算&#xff0c;缺少它意味着某些图形功能…

Matlab2022b安装MinGW64

1 问题引入 能找到这个问题的&#xff0c;一定就是在matlab中用mex这个编译命令的时候出现下面的错误&#xff0c;才会来找解决的办法。 首先在网上众多资料中一定是让你先去matlab窗口的这个Add-Ons进行添加&#xff0c;但是很多情况下因为大家装的版本问题&#xff0c;都会…

低代码可视化-uniapp开关选择组件-低码生成器

开关&#xff08;Switch&#xff09;选择组件是一种用户界面元素&#xff0c;允许用户在两种状态&#xff08;通常是开/关、是/否、启用/禁用等&#xff09;之间进行切换。这种组件在移动应用、桌面软件、网页以及物联网设备中广泛应用。以下是对开关Switch选择组件的详细介绍&…

蓝桥杯每日真题 - 第11天

题目&#xff1a;&#xff08;合并数列&#xff09; 题目描述&#xff08;14届 C&C B组D题&#xff09; 解题思路&#xff1a; 题意理解&#xff1a;给定两个数组&#xff0c;目标是通过若干次合并操作使两个数组相同。每次合并操作可以将数组中相邻的两个数相加&#xff…

【2024软考架构案例题】你知道什么是 RESTful 风格吗?

&#x1f449;博主介绍&#xff1a; 博主从事应用安全和大数据领域&#xff0c;有8年研发经验&#xff0c;5年面试官经验&#xff0c;Java技术专家&#xff0c;WEB架构师&#xff0c;阿里云专家博主&#xff0c;华为云云享专家&#xff0c;51CTO 专家博主 ⛪️ 个人社区&#x…

面试经典 150 题:20、2、228

20. 有效的括号 参考代码 #include <stack>class Solution { public:bool isValid(string s) {if(s.size() < 2){ //特判&#xff1a;空字符串和一个字符的情况return false;}bool flag true;stack<char> st; //栈for(int i0; i<s.size(); i){if(s[i] ( |…

NFS-Ganesha 核心架构解读

NFSv4 简要概述 NFS 这个协议( NFSv2 )最初由 Sun Microsystems 在 1984 年设计提出&#xff0c;由于存在一些不足&#xff0c;因此在随后由几家公司联合推出了 NFSv3。到了 NFSv4 时&#xff0c;开发完全由 IETF 主导&#xff0c;设计目标是&#xff1a; 提高互联下的 NFS 访…

由播客转向个人定制的音频频道(1)平台搭建

项目的背景 最近开始听喜马拉雅播客的内容&#xff0c;但是发现许多不方便的地方。 休息的时候收听喜马拉雅&#xff0c;但是还需要不断地选择喜马拉雅的内容&#xff0c;比较麻烦&#xff0c;而且黑灯操作反而伤眼睛。 喜马拉雅为代表的播客平台都是VOD 形式的&#xff0…

mysql数据库(五)多表查询

多表查询 文章目录 多表查询一、链表查询1.1交叉连接1.2 内连接1.3 左连接1.4 右连接1.5 全连接1.6 例子 二、子查询2.1 in与not in2.2 any/some2.3 all2.4 比较运算符2.5 exists 三、例子 查询中使用的表如下所示 ------------ | id | name | ------------ | 1 | IT | …

Redis设计与实现 学习笔记 第十七章 集群

Redis集群是Redis提供的分布式数据库方案&#xff0c;集群通过分片&#xff08;sharding&#xff0c;水平切分&#xff09;来进行数据共享&#xff0c;并提供复制和故障转移功能。 17.1 节点 一个Redis集群通常由多个节点&#xff08;node&#xff09;组成&#xff0c;在刚开…

分布式----Ceph部署

目录 一、存储基础 1.1 单机存储设备 1.2 单机存储的问题 1.3 商业存储解决方案 1.4 分布式存储&#xff08;软件定义的存储 SDS&#xff09; 1.5 分布式存储的类型 二、Ceph 简介 三、Ceph 优势 四、Ceph 架构 五、Ceph 核心组件 #Pool中数据保存方式支持两种类型&…

【Qt聊天室客户端】消息功能--发布程序

1. 获取文件内容 主要目标是实现获取内容二进制数据的接口&#xff0c;主要是为后面的消息功能提供服务 具体实现 客户端发送请求 服务端处理请求&#xff0c;同时支持三种数据类型 客户端处理服务端的响应 2. 发送图片消息 客户端与服务端的通信约定 客户端从服务器中获取图片…

ab (Apache Bench)的使用

Apache Bench&#xff08;ab&#xff09;是一个用于基准测试HTTP Web服务器的命令行工具&#xff0c;广泛用于评估和优化Web服务器的性能。以下是关于Apache Bench的详细介绍&#xff0c;包括其功能、使用方法、常用参数和输出结果解析。 功能 性能测试&#xff1a;通过模拟多…

【HarmonyNext】显示提示文字的方法

【HarmonyNext】显示提示文字的方法 本文介绍在 HarmonyNext 中显示提示文字的两种常见方法&#xff1a;使用自定义弹窗 CustomDialog 和使用 promptAction 的 showToast 方法。 一、使用自定义弹窗 CustomDialog 在 HarmonyNext 中&#xff0c;自定义弹窗是实现复杂提示信…

第三十一天|贪心算法| 56. 合并区间,738.单调递增的数字 , 968.监控二叉树

目录 56. 合并区间 方法1&#xff1a;fff 看方法2&#xff1a;fff优化版 方法3&#xff1a; 738.单调递增的数字 968.监控二叉树&#xff08;贪心二叉树&#xff09; 56. 合并区间 判断重叠区间问题&#xff0c;与452和435是一个套路 方法1&#xff1a;fff 看方法2&am…

【自用】0-1背包问题与完全背包问题的Java实现

引言 背包问题是计算机科学领域的一个经典优化问题&#xff0c;分为多种类型&#xff0c;其中最常见的是0-1背包问题和完全背包问题。这两种问题的核心在于如何在有限的空间内最大化收益&#xff0c;但它们之间存在一些关键的区别&#xff1a;0-1背包问题允许每个物品只能选择…