数据仓库系列4-什么是维度建模,它与关系型建模有什么区别

news2024/12/24 19:59:23

稿定设计-2.png
想象一下,你正在分析一家大型零售连锁店的销售数据。突然,你意识到传统的数据库模型无法有效地回答"去年黑色星期五当天,哪个地区的哪类产品销售额最高?"这样的复杂问题。这就是维度建模发挥作用的时候了

目录

    • 引言:维度建模的魔力
    • 什么是维度建模?
      • 维度建模的定义
      • 维度建模的起源
    • 维度建模 vs 关系型建模:关键区别
      • 关系型模型示例:
      • 维度模型示例(星型模式):
    • 维度建模的核心概念
      • 1. 事实表(Fact Table)
      • 2. 维度表(Dimension Table)
      • 3. 星型模式(Star Schema)
      • 4. 雪花模式(Snowflake Schema)
      • 5. 缓慢变化维度(Slowly Changing Dimensions, SCD)
      • 6. 退化维度(Degenerate Dimension)
      • 7. 聚集事实(Aggregate Fact)
    • 实际案例:零售业维度模型
      • 业务需求
      • 维度模型设计
        • 1. 事实表: FactSales
        • 2. 维度表: DimDate
        • 3. 维度表: DimProduct
        • 4. 维度表: DimStore
        • 5. 维度表: DimCustomer
        • 6. 维度表: DimPromotion
      • 模型说明
      • 示例查询
    • 维度建模的优势
    • 维度建模的挑战
    • 实施维度建模:最佳实践
    • 结论:选择正确的建模方法

引言:维度建模的魔力

在大数据时代,企业面临着前所未有的数据分析挑战。传统的关系型数据库模型在处理复杂的多维度查询时往往力不从心。这就是维度建模横空出世的原因 —— 它为数据仓库和商业智能系统提供了一种革命性的数据组织方法。
image.png
本文将深入探讨维度建模的本质,揭示它与传统关系型建模的根本区别,并通过具体示例展示其在现实世界中的应用。无论你是数据架构师、BI开发人员,还是对数据建模感兴趣的技术爱好者,这篇文章都将为你打开一扇通往高效数据分析的大门。

什么是维度建模?

维度建模是一种专为数据仓库和商业智能(BI)系统设计的数据建模技术。它的核心思想是将复杂的业务数据组织成直观、易于理解和高效查询的结构。

维度建模的定义

维度建模是一种数据组织和访问技术,它:

  1. 将数据分为事实(度量)和维度(上下文)两类。
  2. 采用星型模式或雪花模式来组织这些事实和维度。
  3. 优化了面向商业用户的查询性能和易用性。
    image.png

维度建模的起源

维度建模的概念最早由Ralph Kimball在20世纪90年代提出。Kimball观察到,传统的实体关系(ER)建模虽然适合事务处理系统,但在支持复杂的分析查询时表现不佳。他提出了一种新的方法,将业务过程的度量(如销售额)放在中心,周围环绕着描述这些度量的维度(如时间、产品、客户等)。

维度建模 vs 关系型建模:关键区别

要真正理解维度建模的价值,我们需要将其与传统的关系型建模进行对比。以下是几个关键区别:

  1. 设计目标

    • 关系型建模:主要目标是减少数据冗余,确保数据一致性。
    • 维度建模:主要目标是优化查询性能和提高数据的可理解性。
  2. 数据结构

    • 关系型建模:通常使用高度规范化的表结构。
    • 维度建模:使用非规范化或部分规范化的星型或雪花型结构。
  3. 查询复杂性

    • 关系型建模:复杂查询可能需要多个表连接,影响性能。
    • 维度建模:简化了复杂查询,减少了表连接的需求。
  4. 数据冗余

    • 关系型建模:尽量减少数据冗余。
    • 维度建模:允许一定程度的冗余以提高查询效率。
  5. 灵活性

    • 关系型建模:修改模式可能比较困难。
    • 维度建模:更容易适应新的业务需求和维度。
  6. 用户友好性

    • 关系型建模:对于业务用户来说可能较难理解。
    • 维度建模:结构直观,易于业务用户理解和使用。

image.png
为了更清晰地展示这些差异,让我们看一个具体的例子:

假设我们有一个简单的销售系统,需要记录产品销售信息。

关系型模型示例:

-- 产品表
CREATE TABLE Products (
    ProductID INT PRIMARY KEY,
    ProductName VARCHAR(100),
    CategoryID INT,
    SupplierID INT
);

-- 客户表
CREATE TABLE Customers (
    CustomerID INT PRIMARY KEY,
    CustomerName VARCHAR(100),
    City VARCHAR(50),
    Country VARCHAR(50)
);

-- 销售表
CREATE TABLE Sales (
    SaleID INT PRIMARY KEY,
    ProductID INT,
    CustomerID INT,
    SaleDate DATE,
    Quantity INT,
    UnitPrice DECIMAL(10, 2),
    FOREIGN KEY (ProductID) REFERENCES Products(ProductID),
    FOREIGN KEY (CustomerID) REFERENCES Customers(CustomerID)
);

维度模型示例(星型模式):

-- 日期维度
CREATE TABLE DimDate (
    DateKey INT PRIMARY KEY,
    FullDate DATE,
    DayOfWeek VARCHAR(10),
    Month VARCHAR(10),
    Quarter INT,
    Year INT
);

-- 产品维度
CREATE TABLE DimProduct (
    ProductKey INT PRIMARY KEY,
    ProductID INT,
    ProductName VARCHAR(100),
    Category VARCHAR(50),
    Supplier VARCHAR(100)
);

-- 客户维度
CREATE TABLE DimCustomer (
    CustomerKey INT PRIMARY KEY,
    CustomerID INT,
    CustomerName VARCHAR(100),
    City VARCHAR(50),
    Country VARCHAR(50)
);

-- 销售事实表
CREATE TABLE FactSales (
    SaleKey INT PRIMARY KEY,
    DateKey INT,
    ProductKey INT,
    CustomerKey INT,
    Quantity INT,
    UnitPrice DECIMAL(10, 2),
    TotalAmount DECIMAL(10, 2),
    FOREIGN KEY (DateKey) REFERENCES DimDate(DateKey),
    FOREIGN KEY (ProductKey) REFERENCES DimProduct(ProductKey),
    FOREIGN KEY (CustomerKey) REFERENCES DimCustomer(CustomerKey)
);

在这个例子中,我们可以看到:

  1. 关系型模型将数据分散在多个规范化的表中,而维度模型将相关的描述性信息合并到维度表中。
  2. 维度模型引入了一个专门的日期维度表,使得基于时间的分析更加方便。
  3. 维度模型的事实表(FactSales)包含了所有相关的度量和维度键,简化了查询。

维度建模的核心概念

要深入理解维度建模,我们需要掌握几个核心概念:

1. 事实表(Fact Table)

事实表是维度模型的核心,它包含了业务过程的量化度量。

特点:

  • 通常包含数值型度量(如销售额、数量等)
  • 包含指向各个维度表的外键
  • 通常是模型中最大的表

示例:

CREATE TABLE FactSales (
    SaleKey INT PRIMARY KEY,
    DateKey INT,
    ProductKey INT,
    CustomerKey INT,
    Quantity INT,
    UnitPrice DECIMAL(10, 2),
    TotalAmount DECIMAL(10, 2),
    FOREIGN KEY (DateKey) REFERENCES DimDate(DateKey),
    FOREIGN KEY (ProductKey) REFERENCES DimProduct(ProductKey),
    FOREIGN KEY (CustomerKey) REFERENCES DimCustomer(CustomerKey)
);

2. 维度表(Dimension Table)

维度表提供了对事实的上下文信息。

特点:

  • 包含描述性属性
  • 通常比事实表小,但列数可能更多
  • 提供了查询的"入口点"

示例:

CREATE TABLE DimProduct (
    ProductKey INT PRIMARY KEY,
    ProductID INT,
    ProductName VARCHAR(100),
    Category VARCHAR(50),
    Supplier VARCHAR(100),
    Brand VARCHAR(50),
    Color VARCHAR(20),
    Size VARCHAR(10)
);

3. 星型模式(Star Schema)

星型模式是最简单和最常见的维度模型结构。

特点:

  • 一个中心事实表
  • 多个直接连接到事实表的维度表
  • 维度表通常是非规范化的

4. 雪花模式(Snowflake Schema)

雪花模式是星型模式的变体,其中一些维度被进一步规范化。

特点:

  • 维度表可能有自己的相关维度表
  • 可以减少一些数据冗余
  • 但可能增加查询复杂性

示例:

-- 产品类别维度
CREATE TABLE DimProductCategory (
    CategoryKey INT PRIMARY KEY,
    CategoryName VARCHAR(50)
);

-- 产品维度(雪花)
CREATE TABLE DimProduct (
    ProductKey INT PRIMARY KEY,
    ProductID INT,
    ProductName VARCHAR(100),
    CategoryKey INT,
    Supplier VARCHAR(100),
    FOREIGN KEY (CategoryKey) REFERENCES DimProductCategory(CategoryKey)
);

5. 缓慢变化维度(Slowly Changing Dimensions, SCD)

缓慢变化维度是处理维度属性随时间变化的技术。

主要类型:

  • Type 1: 直接覆盖旧值
  • Type 2: 创建新记录
  • Type 3: 添加新属性

示例(Type 2 SCD):

CREATE TABLE DimCustomer (
    CustomerKey INT PRIMARY KEY,
    CustomerID INT,
    CustomerName VARCHAR(100),
    City VARCHAR(50),
    Country VARCHAR(50),
    ValidFrom DATE,
    ValidTo DATE,
    IsCurrent BIT
);

6. 退化维度(Degenerate Dimension)

退化维度是存在于事实表中的维度,它不需要单独的维度表。

示例:

CREATE TABLE FactSales (
    SaleKey INT PRIMARY KEY,
    OrderNumber VARCHAR(20), -- 退化维度
    DateKey INT,
    ProductKey INT,
    CustomerKey INT,
    Quantity INT,
    UnitPrice DECIMAL(10, 2),
    TotalAmount DECIMAL(10, 2)
);

7. 聚集事实(Aggregate Fact)

聚集事实是预先计算的汇总数据,用于提高查询性能。

示例:

CREATE TABLE FactMonthlySales (
    MonthKey INT,
    ProductKey INT,
    TotalQuantity INT,
    TotalAmount DECIMAL(10, 2),
    PRIMARY KEY (MonthKey, ProductKey)
);

理解这些核心概念对于有效实施维度建模至关重要。它们共同构成了一个强大的框架,使得复杂的业务数据可以以一种直观和高效的方式进行组织和分析。

实际案例:零售业维度模型

为了更好地理解维度建模在实际中的应用,让我们以一个零售业的例子来详细说明。假设我们正在为一家大型连锁超市设计数据仓库。
image.png

业务需求

  1. 分析不同产品类别的销售趋势
  2. 了解客户购买行为
  3. 评估促销活动的效果
  4. 分析不同地区和门店的表现
  5. 追踪库存水平

维度模型设计

基于这些需求,我们可以设计以下维度模型:

1. 事实表: FactSales
CREATE TABLE FactSales (
    SaleKey BIGINT PRIMARY KEY,
    DateKey INT,
    ProductKey INT,
    StoreKey INT,
    CustomerKey INT,
    PromotionKey INT,
    Quantity INT,
    UnitPrice DECIMAL(10, 2),
    DiscountAmount DECIMAL(10, 2),
    SalesAmount DECIMAL(10, 2),
    Cost DECIMAL(10, 2),
    Profit DECIMAL(10, 2),
    FOREIGN KEY (DateKey) REFERENCES DimDate(DateKey),
    FOREIGN KEY (ProductKey) REFERENCES DimProduct(ProductKey),
    FOREIGN KEY (StoreKey) REFERENCES DimStore(StoreKey),
    FOREIGN KEY (CustomerKey) REFERENCES DimCustomer(CustomerKey),
    FOREIGN KEY (PromotionKey) REFERENCES DimPromotion(PromotionKey)
);
2. 维度表: DimDate
CREATE TABLE DimDate (
    DateKey INT PRIMARY KEY,
    FullDate DATE,
    DayOfWeek VARCHAR(10),
    DayName VARCHAR(10),
    DayOfMonth INT,
    DayOfYear INT,
    WeekOfYear INT,
    MonthName VARCHAR(10),
    MonthOfYear INT,
    Quarter INT,
    Year INT,
    IsWeekend B[前面的内容保持不变,从DimDate表的创建语句继续]

```sql
CREATE TABLE DimDate (
    DateKey INT PRIMARY KEY,
    FullDate DATE,
    DayOfWeek VARCHAR(10),
    DayName VARCHAR(10),
    DayOfMonth INT,
    DayOfYear INT,
    WeekOfYear INT,
    MonthName VARCHAR(10),
    MonthOfYear INT,
    Quarter INT,
    Year INT,
    IsWeekend BIT,
    IsHoliday BIT
);
3. 维度表: DimProduct
CREATE TABLE DimProduct (
    ProductKey INT PRIMARY KEY,
    ProductID VARCHAR(20),
    ProductName VARCHAR(100),
    ProductDescription TEXT,
    ProductCategory VARCHAR(50),
    ProductSubcategory VARCHAR(50),
    Brand VARCHAR(50),
    Color VARCHAR(20),
    Size VARCHAR(10),
    Weight DECIMAL(8, 2),
    UnitCost DECIMAL(10, 2),
    UnitPrice DECIMAL(10, 2),
    SupplierName VARCHAR(100),
    IntroductionDate DATE
);
4. 维度表: DimStore
CREATE TABLE DimStore (
    StoreKey INT PRIMARY KEY,
    StoreID VARCHAR(20),
    StoreName VARCHAR(100),
    StoreType VARCHAR(50),
    Address VARCHAR(200),
    City VARCHAR(50),
    State VARCHAR(50),
    Country VARCHAR(50),
    PostalCode VARCHAR(20),
    ManagerName VARCHAR(100),
    OpenDate DATE,
    CloseDate DATE,
    SquareFootage INT
);
5. 维度表: DimCustomer
CREATE TABLE DimCustomer (
    CustomerKey INT PRIMARY KEY,
    CustomerID VARCHAR(20),
    FirstName VARCHAR(50),
    LastName VARCHAR(50),
    FullName VARCHAR(100),
    Gender VARCHAR(10),
    DateOfBirth DATE,
    Email VARCHAR(100),
    Phone VARCHAR(20),
    Address VARCHAR(200),
    City VARCHAR(50),
    State VARCHAR(50),
    Country VARCHAR(50),
    PostalCode VARCHAR(20),
    CustomerSince DATE
);
6. 维度表: DimPromotion
CREATE TABLE DimPromotion (
    PromotionKey INT PRIMARY KEY,
    PromotionID VARCHAR(20),
    PromotionName VARCHAR(100),
    PromotionType VARCHAR(50),
    DiscountPercent DECIMAL(5, 2),
    StartDate DATE,
    EndDate DATE,
    MinQuantity INT,
    MaxQuantity INT
);

模型说明

  1. FactSales表: 这是我们的主要事实表,记录了每次销售交易的详细信息。它包含了销售数量、单价、折扣金额、销售总额、成本和利润等关键度量。每个外键(DateKey, ProductKey等)都链接到相应的维度表。

  2. DimDate表: 时间维度是几乎所有数据仓库中最常见的维度之一。它允许我们按照各种时间粒度(天、周、月、季度、年)进行分析。IsWeekend和IsHoliday字段有助于分析周末和假日的销售情况。

  3. DimProduct表: 产品维度包含了产品的所有相关属性。注意我们如何将产品类别和子类别作为属性包含在内,而不是创建单独的表。这是非规范化的一个例子,目的是简化查询。

  4. DimStore表: 商店维度包含了每个商店的详细信息。SquareFootage(平方英尺)属性可以用于分析每平方英尺的销售额等指标。

  5. DimCustomer表: 客户维度允许我们分析客户的购买行为。CustomerSince字段可用于客户忠诚度分析。

  6. DimPromotion表: 促销维度使我们能够评估不同促销活动的效果。

示例查询

让我们看几个使用这个维度模型的查询示例:

  1. 按产品类别和月份统计销售额:
SELECT 
    p.ProductCategory,
    d.MonthName,
    d.Year,
    SUM(f.SalesAmount) AS TotalSales
FROM 
    FactSales f
    JOIN DimProduct p ON f.ProductKey = p.ProductKey
    JOIN DimDate d ON f.DateKey = d.DateKey
GROUP BY 
    p.ProductCategory, d.MonthName, d.Year
ORDER BY 
    d.Year, d.MonthOfYear, p.ProductCategory;
  1. 查找top 10的客户及其总购买金额:
SELECT 
    TOP 10 c.FullName,
    c.City,
    c.State,
    SUM(f.SalesAmount) AS TotalPurchase
FROM 
    FactSales f
    JOIN DimCustomer c ON f.CustomerKey = c.CustomerKey
GROUP BY 
    c.FullName, c.City, c.State
ORDER BY 
    TotalPurchase DESC;
  1. 分析特定促销活动的效果:
SELECT 
    p.PromotionName,
    COUNT(DISTINCT f.CustomerKey) AS UniqueCustomers,
    SUM(f.Quantity) AS TotalQuantitySold,
    SUM(f.SalesAmount) AS TotalSalesAmount,
    AVG(f.DiscountAmount) AS AvgDiscount
FROM 
    FactSales f
    JOIN DimPromotion p ON f.PromotionKey = p.PromotionKey
WHERE 
    p.PromotionID = 'PROMO2023'
GROUP BY 
    p.PromotionName;
  1. 计算每个商店的年度销售增长率:
WITH StoreSales AS (
    SELECT 
        s.StoreID,
        s.StoreName,
        d.Year,
        SUM(f.SalesAmount) AS YearlySales
    FROM 
        FactSales f
        JOIN DimStore s ON f.StoreKey = s.StoreKey
        JOIN DimDate d ON f.DateKey = d.DateKey
    GROUP BY 
        s.StoreID, s.StoreName, d.Year
)
SELECT 
    s1.StoreID,
    s1.StoreName,
    s1.Year,
    s1.YearlySales,
    (s1.YearlySales - s2.YearlySales) / s2.YearlySales * 100 AS GrowthRate
FROM 
    StoreSales s1
    JOIN StoreSales s2 ON s1.StoreID = s2.StoreID AND s1.Year = s2.Year + 1
ORDER BY 
    s1.StoreID, s1.Year;

这些查询展示了维度模型的强大之处。我们可以轻松地从多个角度分析数据,而无需编写复杂的表连接。

维度建模的优势

  1. 查询性能: 星型模式减少了需要的表连接,从而提高了查询性能。

  2. 易于理解: 维度模型更接近业务用户的思维方式,使得非技术用户也能轻松理解和使用。

  3. 灵活性: 可以轻松添加新的维度或事实,以适应不断变化的业务需求。

  4. 一致性: 维度表作为"共同语言"促进了整个组织的数据一致性。

  5. 可扩展性: 维度模型可以从小规模开始,随着业务的增长而扩展。
    image.png

维度建模的挑战

  1. 初始设计复杂性: 设计一个好的维度模型需要深入理解业务过程和需求。

  2. 数据冗余: 非规范化可能导致一些数据冗余,增加存储需求。

  3. ETL过程: 将源系统数据转换为维度模型可能需要复杂的ETL(提取、转换、加载)过程。

  4. 维护成本: 随着时间的推移,维护缓慢变化维度可能变得复杂。

  5. 不适合所有场景: 对于某些类型的应用(如OLTP系统),维度建模可能不是最佳选择。
    image.png

实施维度建模:最佳实践

  1. 从业务需求开始: 在开始建模之前,充分理解业务流程和分析需求。

  2. 选择合适的粒度: 事实表的粒度应该足够细,以支持最详细的分析需求。

  3. 标准化维度: 在整个企业范围内使用一致的维度定义,以促进数据集成。

  4. 使用易懂的名称: 为维度和属性使用业务友好的名称,避免技术术语。

  5. 考虑未来需求: 设计时要考虑到可能的未来扩展和变化。

  6. 性能优化: 使用适当的索引、分区和聚合表来优化查询性能。

  7. 文档化: 详细记录模型设计、业务规则和任何假设,以便未来参考。

  8. 定期审查和调整: 随着业务的变化,定期审查和调整模型以确保其持续满足需求。
    image.png

结论:选择正确的建模方法

维度建模为数据仓库和商业智能系统提供了一个强大的框架,能够支持复杂的分析需求,同时保持模型的简单性和易用性。然而,它并不是所有场景下的最佳选择。

在选择建模方法时,需要考虑以下因素:

  1. 数据用途: 如果主要用于复杂的分析查询,维度建模可能是最佳选择。如果主要用于事务处理,关系型建模可能更合适。

  2. 用户群体: 如果主要用户是业务分析师,维度模型的直观性会很有帮助。

  3. 性能需求: 对于需要高性能的复杂查询,维度模型通常表现更好。

  4. 灵活性需求: 如果业务需求经常变化,维度模型的灵活性可能更有价值。

  5. 现有技能和工具: 考虑团队的现有技能和可用的工具支持。
    image.png
    无论选择哪种方法,关键是要理解业务需求,并选择能够最好地支持这些需求的模型。在许多情况下,混合方法可能是最佳选择,在数据仓库中使用维度模型,而在操作系统中保留关系模型。

维度建模不仅是一种技术,更是一种思维方式。它鼓励我们从业务视角看待数据,这往往能带来意想不到的洞察。通过掌握维度建模,我们能够更好地将原始数据转化为有价值的商业智能,为组织的决策提供有力支持。

记住,没有一种放之四海而皆准的解决方案。最好的建模方法是能够满足你特定需求的方法。持续学习、实践和调整将是成功实施数据仓库项目的关键。
数据仓库.png

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

在我的博士科研生活中,SCI的英语写作一直是我的挑战。

在我的博士科研生活中,SCI的英语写作一直是我的挑战。尽管我不断地努力提高自己的语言水平,但每当我提交文章后,审稿人或编辑总是会指出语言表达的不足之处,让我深感苦恼。于是,我开始寻找专业的润色服务来帮助我提升文…

大模型之二十六-Diffusion model实例浅析

在2022年,midjourney、DALL-E以及Stable Diffusion三个文生图模型引爆了机器生产文生图领域,他们的模型能够在可控条件(标签、文本描述)下生成高分辨率、细节丰富的多样性图像,这在视觉上往往难以与真实图像区分。配套…

其它特殊库存

自有特殊库存 对于特殊库存,我们通常认为是由于所有权或存储地点与其它库存分开管理的物料库存。当过帐涉及特殊库存的货物移动时,除了移动类型外,必须(如向特定供应商或客户或销售订单)提供相关特殊库存标识以及更多…

3秒内搞定服务器端口扫描!用RustScan快速查看开放端口

文章目录 3秒内搞定服务器端口扫描!用RustScan快速查看开放端口1. RustScan简介2. RustScan特点3. RustScan的基本使用3.1 创建alias别名3.2 基本用法3.3 常用参数说明3.4 示例4. 注意事项 最近开始公众号文章也开始同步更新了,对Java、大数据、人工智能…

游戏开发设计模式之命令模式

目录 命令模式的定义和工作原理 应用场景 实现方式 优点 缺点 结论 命令模式在游戏开发中的具体实现案例是什么? 如何在Unity3D中有效地实现和管理命令模式以提高游戏性能? 命令模式与其他设计模式(如观察者模式、状态模式&#xff…

【C++ 面试 - 内存管理】每日 3 题(一)

✍个人博客:Pandaconda-CSDN博客 📣专栏地址:http://t.csdnimg.cn/fYaBd 📚专栏简介:在这个专栏中,我将会分享 C 面试中常见的面试题给大家~ ❤️如果有收获的话,欢迎点赞👍收藏&…

JavaScript解构介绍

​在JavaScript中,解构赋值(Destructuring Assignment)是一种方便的语法,用于从数组或对象中提取值并将其赋给变量。解构使得代码更简洁、可读性更高,同时减少了重复的代码。 1. 数组解构 数组解构允许我们从数组中提…

2024最新、最热、最全Java容器【知识点】!!!

文章目录 Java容器种类详细说说他们都有哪些内容Collection :存储对象的集合 为什么HashSet和ArrayDeque不支持有序性操作Map:存储键值对的映射表 ArrayList和LinkedList的区别?ArrayList的增删一定比LinkedList的增删慢吗?native()方法是什么…

SOMEIP_ETS_064: String_UTF16FIXED_too_short

测试目的: 验证当设备(DUT)接收到一个小于64字节的UTF16FIXED字符串时,是否能够返回错误消息。 描述 本测试用例旨在检查DUT在接收到一个长度小于64字节的UTF16FIXED字符串的SOME/IP消息时,是否能够返回格式错误&am…

04-javascript 高阶(知识点)

目录 1.严格模式 1.1什么是严格模式 1.2开启严格模式 1.3严格模式中的变化 2.高阶函数 3.闭包 3.1 变量的作用域 3.2 什么是闭包 3.3 闭包的作用 3.4 闭包的案例 4.递归 4.1 什么是递归 4.2 利用递归求1~n的阶乘 5.赋值(地址传递)-浅拷贝-深拷贝 5.1 地址传递 5…

MATLAB中bicgstabl函数用法

目录 语法 说明 示例 线性系统的迭代解 使用指定了预条件子的 bicgstabl 提供初始估计值 使用函数句柄代替数值矩阵 bicgstabl函数的功能是求解线性系统 - 稳定双共轭梯度 (l) 法。 语法 x bicgstabl(A,b) x bicgstabl(A,b,tol) x bicgstabl(A,b,tol,maxit) x bic…

map容器的所有操作

1.基本概念 2.构造和赋值 注意map中存放的是pair对组&#xff0c;<key,value>&#xff0c;会根据key自动排序 3.大小和交换 4.插入和删除 插入的四种方式&#xff1a; 5.查找和统计 6.排序

8.21-部署eleme项目

1.设置主从从mysql57服务器 &#xff08;1&#xff09;配置主数据库 [rootmsater_5 ~]# systemctl stop firewalld[rootmsater_5 ~]# setenforce 0[rootmsater_5 ~]# systemctl disable firewalldRemoved symlink /etc/systemd/system/multi-user.target.wants/firewalld.serv…

# 利刃出鞘_Tomcat 核心原理解析(八)-- Tomcat 集群

利刃出鞘_Tomcat 核心原理解析&#xff08;八&#xff09;-- Tomcat 集群 一、Tomcat专题 - Tomcat集群 - 介绍及准备工作 1、Tomcat集群 简介 由于单台Tomcat的承载能力是有限的&#xff0c;当我们的业务系统用户量比较大&#xff0c;请求压力比较大时&#xff0c;单台Tomc…

i.MX6裸机开发(8):中断

相比STM32的NVIC&#xff0c;i.MX 6ULL的中断控制系统更复杂&#xff0c;它的中断管理器使用的是GIC V2&#xff0c;GIC V2的实现方式与我们熟知的NVIC差别较大。 本章重点讲解i.MX 6U的GIC基本结构以及实现方法&#xff0c;更详细的介绍可以参考《ARM Generic Interrupt Contr…

快速学习初阶“堆“(数据结构C语言)

前言&#xff1a; 二叉树是什么&#xff1f; 同样也和之前的"栈"跟"队列"是一样的&#xff0c;是一种存储数据的方式&#xff0c;只不过二叉树的结构更为复杂。 那么为什么要用二叉树存储数据呢&#xff1f;真的多此一举吗&#xff1f; 它的实际作用是什么…

买对不买贵,宠物空气净化器应该怎么选才能选到好的产品

你是否还在为家中无处不在的猫毛而烦恼&#xff1f;每当有风吹来&#xff0c;就把四处躲藏的猫毛给吹出来&#xff0c;不经意间就可能让这些”蒲公英“悄悄附在你的食物上&#xff0c;或是不经意间吸入鼻腔&#xff0c;让人既无奈又尴尬。你是否每天下班回家后的第一件事&#…

AnyV2V:一种用于各种视频编辑任务的即插即用框架

人工智能咨询培训老师叶梓 转载标明出处 视频编辑任务通常涉及根据额外的控制信息&#xff08;如文本提示、主题、风格等&#xff09;编辑源视频&#xff0c;以生成与源视频和提供的控制信息相符的新视频。然而&#xff0c;现有方法往往局限于特定类型的编辑任务&#xff0c;难…

面向对象06:super关键字详解

本节内容视频链接&#xff1a;面向对象10&#xff1a;Super详解_哔哩哔哩_bilibilihttps://www.bilibili.com/video/BV12J41137hu?p69&vd_sourceb5775c3a4ea16a5306db9c7c1c1486b5 Java中的‌super关键字是一个特殊的引用&#xff0c;‌用于指代父类对象‌。‌在子…

搜维尔科技:Xsens通过其先进的动作捕捉技术和惯性跟踪传感器,实现了与机器人的高效互动,提高了机器人的操作精度、自然性和稳定性

‌Xsens通过实时动作捕捉技术和MTI惯性跟踪传感器与机器人进行互动‌&#xff0c;这些技术为机器人提供了高精度的运动数据和稳定的导航能力&#xff0c;从而实现了机器人操作的精确性和效率的提升。 Xsens的技术主要应用于两大领域&#xff1a;人类物理交互行为的建模和分析&a…