Hive基本原理与数据开发

news2024/9/20 5:26:28

目录

1.什么是Hive

2.Hive的特点和优势

2.1.Hive的特点

2.1.1.易用性

2.1.2.高效性

2.1.3.兼容性

2.1.4.可扩展性

2.1.5.容错性

2.2.与传统数据库的区别

3.hive的架构

3.1.hive的核心组件(如 Metastore、Driver、Query Compiler、Execution Engine 等)

3.1.1.用户接口(Client):包括CLI、JDBC/ODBC、WebGUI

3.1.2.元数据存储(Meta Store)

3.1.3.Driver驱动模块( 解释器、编译器、优化器)

3.1.4.执行器

3.2.Hive 与 HDFS 的集成

3.3.Hive 的工作流程:

3.3.1.客户端提交SQL语句        

3.3.2.SQL解析成抽象语法树(AST)        

3.3.3.语义分析与查询块(Query Block)构建

3.3.4.生成逻辑查询计划(Operator Tree)

3.3.5.逻辑计划优化

3.3.6.生成物理计划(MapReduce任务)

3.3.7.物理计划优化

3.3.8.提交MapReduce作业

3.3.9.结果返回给客户端

4.Hive中表、数据库、分区和桶的概念

4.1.Databases数据库

4.2.表

4.3.分区

4.4.分桶

5.HiveSQL基础语法

5.1.数据定义语言 (DDL)

5.1.1.创建数据库和表

5.1.2.修改表

5.1.3.删除数据库和表

5.2.数据操作语言 (DML)

5.2.1.插入数据

5.2.2. 更新数据

5.2.3.删除数据

5.3.查询语句 (SELECT)

6.优化hive查询

6.1.使用分区和桶优化数据存储和查询性能。

6.1.1.分区

6.1.2.分桶

6.2.使用 Hive 内置的优化器和性能调优方法

6.2.1.压缩

6.2.1.1.启动压缩

6.2.1.2.选择合适的数据存储格式:

6.2.2.其他调优方法

6.2.2.1.并行执行

6.2.2.2.启动CBO

6.2.2.3.减少小文件


1.什么是Hive

        hive是基于hadoop 的一个数据仓库工具,用于进行数据提取、转化、加载、这是一种可以存储,查询和分析存储在hadoop中的大规模数据机制。 hive数据仓库工具能够将结构化的数据文件映射为一张数据库表,并提供SQL查询功能,能够SQL语句转变成MapReduce任务来执行。Hive的优点是学习成本低,可以通过类似SQL语句实现快速MapReduce统计,使MapReduce变得更加简单,而不必开发专门的MapReduce应用程序。hive十分适合对数据仓库进行统计分析。

2.Hive的特点和优势

2.1.Hive的特点

2.1.1.易用性

        SQL查询语言:Hive提供类似SQL的HiveSQL查询语言,降低了Hadoop编程的门槛,使用户无需编写复杂的MapReduce程序就能进行大数据分析。

        易于集成:Hive 可以与其他 Hadoop 生态系统组件(如 HDFS、YARN、HBase)无缝集成,便于用户构建复杂的数据处理管道。

2.1.2.高效性

        大规模数据处理能力:Hive 构建在 Hadoop 之上,利用 Hadoop 的分布式计算和存储能力,能够处理 PB 级别的数据。

        优化执行:Hive 支持多种执行引擎(如 MapReduce、Tez、Spark),可以根据具体场景选择最优的执行引擎,优化查询性能。

        列存储格式:Hive 支持 ORC、Parquet 等列式存储格式,有助于数据压缩和快速读取,进一步提升查询效率。

2.1.3.兼容性

        兼容多种数据格式:支持多种数据格式(如文本,JSON,Avro,ORC,Parquet等),使得Hive能够处理多种来源和格式的数据。

        与传统数据库兼容:Hive支持许多SQL标准,并可以与传统数据仓库(如MYSQL,PostgreSQL等)中SQL语句兼容 ,易于数据库管理员和分析人员上手。

2.1.4.可扩展性

        支持用户自定义函数(UDF):Hive 支持用户自定义函数(UDFs),使用户可以扩展 HiveSQL 的功能来满足特定的业务需求。

        支持多种存储系统:除了 HDFS,Hive 还支持多种存储系统(如 Amazon S3、Azure Blob Storage 等),提高了数据存储和管理的灵活性。

2.1.5.容错性

        自动任务重试机制:利用 Hadoop 提供的分布式计算和存储的优势,Hive 能够在任务失败时自动重试,具有较好的容错性和稳定性。

2.2.与传统数据库的区别

HiveRDBMS
架构分布式架构单机/集群
数据量级PBGB
数据存储HDFSRaw Device or Local FS
数据更新不支持频繁改写和添加支持改写和添加
查询语言HsqlSQL
执行延迟
可扩展性
索引
引擎MR、Tez或SparkExcutor
事务支持不支持 ACID 事务支持 ACID 事务
数据一致性数据一致性要求相对较低提供严格的数据一致性保证
数据一致性Schema-on-ReadSchema-on-Write
查询优化依赖于CBO和底层执行引擎优化内置强大的查询优化器
使用场景数据仓库、批处理、大数据分析事务处理、实时查询、高并发场景

3.hive的架构

3.1.hive的核心组件(如 Metastore、Driver、Query Compiler、Execution Engine 等)

3.1.1.用户接口(Client):包括CLI、JDBC/ODBC、WebGUI

        Hive的用户接口主要有3个:CLI(命令行界面),Client(客户端)和WUI(web用户界面)。CLI是最常用的接口,启动CLI时会启动一个Hive副本。Client时Hive的客户端,用户通过Client连接至Hive server。启动Client模式时,需要指定Hive Server所在节点,并在该节点启动Hive Server。WUI则是通过浏览器访问Hive。

3.1.2.元数据存储(Meta Store)

        Hive将元数据存储再数据库中,如Mysql,Derby等。Hive中的元数据包括表的名字、表的列和分区及其属性、表的属性(是否为外部表等)、表的数据所在目录等。这些元数据信息对于Hive的操作和管理非常重要。

3.1.3.Driver驱动模块 解释器、编译器、优化器)

        解释器、编译器、优化器是Hive的核心组件,用于完成HSQL查询语句的解析、编译和优化。解释器负责将HSQL查询语句进行词法分析和语法分析,编译器则将解析后的语法树进行编译和优化,生成高效的查询计划。优化器则进一步对查询计划进行优化,提高查询的效率和性能。生成的查询计划存储在HDFS中,供后续的MapReduce调用执行。

3.1.4.执行器

        执行器是Hive的执行模块,负责执行查询计划并生成相应的MapReduce任务。Hive通过与Hadoop集成,利用MapReduce框架处理和计算大规模数据。执行器生成的MapReduce任务会被提交到Hadoop集群中运行,最终返回查询结果。

3.2.Hive 与 HDFS 的集成

数据存储在 HDFS 中,Hive 用于处理和分析数据。

        Hive是一个基于Hadoop文件系统之上的数据仓库架构,存储用hdfs,计算MapReduce。

3.3.Hive 的工作流程:

Hive的本质就是将HSQL转换成MapReduce程序

3.3.1.客户端提交SQL语句        

        用户在hive客户端,(如Hive CLI或Beeline)中输入SQL查询语句

        例如Select * from table_name WHERE column > 100;

3.3.2.SQL解析成抽象语法树(AST)        

        hive的Sql解析器(Parser)读取SQL查询,并将其解析为一个抽象语法树(AST),用于表示SQL查询的语法结构。解析器会检查SQL的语法正确性,并生成对应的AST。

对于示例查询,AST会包括节点表示:

select关键字
*选择所有列
from table_name指定数据源
where column > 100过滤条件

3.3.3.语义分析与查询块(Query Block)构建

        Hive的语义分析器(Semantic Analyzer)遍历 AST 进行语义检查(例如表名、列名的正确性,用户权限检查等)。语义分析通过后,将查询拆分为多个查询块(Query Block)。每个查询块代表一个基础查询单元,例如一个子查询或 JOIN 操作。例如:

检查table_name 表是否存在
检查 column 列是否存在于 table_name 表中
验证用户权限,确保用户有权访问和查询该表

3.3.4.生成逻辑查询计划(Operator Tree)

        Hive 编译器(Compiler)将查询块(Query Block)转换为逻辑查询计划,通常称为 操作符树(Operator Tree)。这棵树结构表示了查询中各个操作(如过滤、连接、聚合等)的逻辑步骤。操作符树中的每个节点代表一个逻辑操作符,例如 TableScanOperator(扫描表)、FilterOperator(过滤操作)、JoinOperator(连接操作)等。

TableScanOperator扫描table_name表的所有数据
FilterOperator应用 WHERE column > 100 过滤条件

3.3.5.逻辑计划优化

        Hive 的逻辑优化器(Logical Optimizer)对操作符树进行一系列的逻辑优化。例如,合并不必要的 ReduceSinkOperator,以减少数据在 MapReduce 作业中的 shuffle 操作量,从而优化性能。优化后的操作符树将生成一个更高效的查询执行策略。

        确认FilterOperator尽可能靠近TableScanOperator,以便尽早过滤数据,减少后续操作的数据量。

3.3.6.生成物理计划(MapReduce任务)

        优化后的操作符树被进一步转换为一个或多个 MapReduce 任务。在这个阶段,每个操作符或操作符子树被映射为一个对应的 MapReduce 作业。生成的物理计划详细描述了如何使用 Hadoop 的 MapReduce 框架来执行查询,包括映射(Map)阶段和归约(Reduce)阶段的逻辑。

Mapper阶段从HDFS中读取table_name表的数据
Mapper阶段使用过滤条件 column > 100,将符合条件的记录输出到临时存储。
Reduce阶段因为这个查询没有聚合或 JOIN 操作,所以不需要 Reduce 阶段。作业优化器可以决定省略 Reduce 阶段。

3.3.7.物理计划优化

        物理计划生成后,物理优化器(Physical Optimizer)对 MapReduce 作业进行进一步优化。例如,重新排列 MapReduce 作业的执行顺序、合并多个 MapReduce 作业、启用数据压缩、选择合适的数据格式等。优化的结果是一个经过调整的最终执行计划,这个计划会被转换为 Hadoop 可执行的 MapReduce 作业。例如:

确认不需要Reduce阶段,直接输出Mapper的结果
选择合适的数据格式(如ORC、Parquet)和压缩方式以便提高性能。

3.3.8.提交MapReduce作业

        Hive 的执行引擎将生成的 MapReduce 作业提交给 Hadoop 的 YARN集群资源管理器。YARN 负责管理作业的资源分配、任务调度和执行。

Hive 执行引擎将物理执行计划(即生成的 MapReduce 作业)提交给 Hadoop YARN
YARN 分配集群资源,调度并管理 MapReduce 作业的执行

        Hadoop的MapReduce框架执行计划的Map阶段任务:

从HDFS中读取table_name表的数据,逐行读取每条记录
应用过滤条件column>100
过滤符合条件的记录写入临时文件存储

        由于没有 Reduce 阶段,任务直接输出结果

3.3.9.结果返回给客户端

        MapReduce 作业执行完成后,Hive 执行引擎收集结果,并将最终结果返回给客户端。用户可以在客户端(如 Hive CLI 或 Beeline)查看查询结果,即所有满足 column > 100 条件的行。

4.Hive中表、数据库、分区和桶的概念

        hive中所有的数据都存储在hdfs中,它包含数据库( Database )、表( Table )、分区表( Partition )和桶表( Bucket ) 4 种数据类型,其模型如图所示。

4.1.Databases数据库

        Hive作为一个数据仓库,在结构上积极向传统数据看齐,也分数据库(Schema),每个数据库下面有各自的表组成。默认数据库default

        Hive的数据都是存储在HDFS上的,默认有一个根目录,在hive-site.xml中,由参数hive.metastore.warehouse.dir指定。默认值为/user/hive/warehouse

        因此,Hive中的数据库在HDFS上的存储路径为:${hive.metastore.warehouse.dir}/databasename.db

        比如,名为itcast的数据库存储路径为:

/user/hive/warehouse/itcast.db

4.2.表

        Hive表与关系数据库中的表相同。hive中的表所对应的数据通常是存储在hdfs中,而表相关的元数据是存储在RDBMS中。

        Hive中的表数据在HDFS上的存储路径为:

${hive.metastore.warehouse.dir}/databasename.db/tablename

        比如,itcast的数据库下t_user表存储路径为:

/user/hive/warehouse/itcast.db/t_user

4.3.分区

        Partition分区时hive的一种优化手段表。分区时指根据分区列(例如“日期day”)的值将表划分为不同分区。这样可以更快的指定分区数据进行查询。

        分区存储层面表现是:table表目录下以子文件夹形式存在。

        一个文件夹表示一个分区。子文件命名标准:分区列=分区值。

        hive还支持分区下继续创建分区,所谓的多重分区。

        比如,itcast的数据库下t_student表下按照性别分区存储路径为:

//user/hive/warehouse/itcast.db/t_student/sex=male

//user/hive/warehouse/itcast.db/t_student/sex=female

4.4.分桶

        Bucket分桶表是hive的一种优化手段表。分桶是指根据表中字段(例如 “编号ID”)的值,经过hash计算规划将数据文件划分成指定的若干个小文件。

       比如可以这样理解:"23届大学生" 的数据已经按照班级分区好了,每个班级的数据分到不同的文件夹中,但如果每个班级的数据量依然很大,查询起来效率低。这时候可以再对每个班级的数据进行分桶,比如按照学生的学号列的哈希值,将数据分成多个桶文件存储。

5.HiveSQL基础语法

5.1.数据定义语言 (DDL)

5.1.1.创建数据库和表

创建数据库

CREATE DATABASE IF NOT EXISTS db_name;

创建表

CREATE TABLE IF NOT EXISTS table_name ( 
  column1 datatype,
  column2 datatype,
  ...
)
COMMENT 'Table description'
ROW FORMAT DELIMITED FIELDS TERMINATED BY ',' 
STORED AS TEXTFILE;
--IF NOT EXISTS​​​​​​​:这表示如果表已经存在,则不再重新新创建,以防止因重复创建表而报错。
--COMMENT:为表提供一个描述性的注释,便于理解表的用途或数据内容。这是可选的,不会影响表的功能。
--ROW FORMAT DELIMITED:这部分定义了表的行格式,即数据文件中每一行的分隔方式。
--FIELDS TERMINATED BY ',':指定每一行中字段之间的分隔符。在这个例子中,逗号 , 是字段的分隔符,表示表中的数据以逗号分隔。
--STORED AS:指定表的数据存储格式。
--TEXTFILE:表示表的数据以文本文件格式存储,这是Hive中常用的一种数据存储格式。每行数据将以纯文本格式存储。

5.1.2.修改表

向表中添加新列

ALTER TABLE table_name ADD COLUMNS (new_column datatype);
--ALTER TABLE 用于修改现有的表结构。ADD COLUMNS 可以向表中添加新的列。

5.1.3.删除数据库和表

删除数据库:如果数据库存在则删除,并强制删除相关表

DROP DATABASE IF EXISTS db_name CASCADE;
--DROP DATABASE 用于删除数据库。
--IF EXISTS 防止数据库不存在时报错。
--CASCADE 表示删除数据库的同时,删除该数据库下的所有表。

删除表

DROP TABLE IF EXISTS table_name;
--DROP TABLE 用于删除一个表,IF EXISTS 防止在表不存在时报错。

5.2.数据操作语言 (DML)

5.2.1.插入数据

插入一条或多条数据到表中:

INSERT INTO TABLE table_name VALUES (value1, value2, ...);
-- INSERT INTO TABLE 用于向表中插入数据,VALUES 指定插入的值。

从查询结果中插入数据到目标表:

INSERT INTO TABLE target_table SELECT * FROM source_table;
-- 这条语句从源表中查询数据,并将结果插入到目标表。SELECT * 表示选择源表的所有列。

5.2.2. 更新数据

        HiveSQL不直接支持UPDATE操作。通常会通过创建临时表来模拟更新操作。

5.2.3.删除数据

        HiveSQL中不支持逐行删除数据,但可以通过删除整个表或分区来实现类似效果。

5.3.查询语句 (SELECT)

--基本查询
SELECT column1, column2 FROM table_name;

--过滤条件 使用 WHERE 语句进行数据过滤:
SELECT * FROM table_name WHERE column1 = 'value';

--排序使用 ORDER BY 进行排序:
SELECT * FROM table_name ORDER BY column1 ASC;

-- 聚合操作 使用聚合函数如 COUNT、SUM、AVG 等:
SELECT COUNT(*) FROM table_name;

--分组聚合 使用 GROUP BY 进行分组聚合:
SELECT column1, COUNT(*) FROM table_name GROUP BY column1;

--连接操作 使用 JOIN 连接多个表:
SELECT a.column1, b.column2
FROM table_a a
JOIN table_b b ON a.id = b.id;

6.优化hive查询

6.1.使用分区和桶优化数据存储和查询性能。

6.1.1.分区

        分区是一种将大表的数据按某个字段进行拆分的方式。通过分区,可以避免每次查询都扫描整个表的数据,减少数据扫描量,提升查询速度。

CREATE TABLE table_name (
  column1 datatype,
  column2 datatype,
  ...
)
PARTITIONED BY (partition_column datatype);
--PARTITIONED BY 用于定义分区字段,例如按日期、地区或类别来划分数据。

在查询时,通过 WHERE 子句限制在特定分区上进行查询,可以显著减少扫描的数据量。

示例:

SELECT * FROM table_name WHERE partition_column = '2024-09-01';

这个查询只会扫描符合特定分区条件的数据,从而提升查询效率。

6.1.2.分桶

        分桶是另一种将数据划分成更小单元的方法。它基于哈希函数来将数据分散到不同的桶中。在与分区配合使用时,分桶可以进一步提升查询效率,尤其是对具有相同分桶字段的表进行联接操作时。

CREATE TABLE table_name (
  column1 datatype,
  column2 datatype,
  ...
)
CLUSTERED BY (bucket_column) INTO num_buckets BUCKETS;
--CLUSTERED BY 指定用于分桶的列。
--INTO num_buckets BUCKETS 定义桶的数量,Hive 会将数据分成相应数量的文件。

示例

SELECT * FROM table_name WHERE bucket_column = 'value';

使用分桶可以有效缩小查询范围,从而加快查询速度,特别是在联接操作中表现尤为显著。

6.2.使用 Hive 内置的优化器和性能调优方法

6.2.1.压缩

        压缩数据可以显著减少存储空间和 I/O 负载。Hive 支持多种压缩格式,比如 GzipSnappyBzip2 等。在进行查询时,压缩数据也会减少磁盘读取时间,从而加速查询。

6.2.1.1.启动压缩
SET hive.exec.compress.output=true;
SET mapred.output.compression.codec=org.apache.hadoop.io.compress.SnappyCodec;

以上设置会启用压缩输出,并使用 Snappy 压缩格式。

6.2.1.2.选择合适的数据存储格式:
TextFile默认格式适合简单存储,但效率较低
SequenceFile支持压缩的二进制格式,适合大批量数据处理
ORC面向列存储的格式,适合需要快速查询和聚合的场景,通常用于数据仓库。
Parquet类似 ORC 的列存储格式,常用于与 Spark、Impala 等系统集成。

选择数据格式的示例:

CREATE TABLE table_name (
  column1 datatype,
  column2 datatype,
  ...
)
STORED AS ORC;
--STORED AS ORC 将表的数据存储为 ORC 格式,这种格式压缩率高且查询性能好。

6.2.2.其他调优方法

6.2.2.1.并行执行
SET hive.exec.parallel=true;
-- 允许 Hive 并行执行多个任务,提升任务整体的执行效率。
6.2.2.2.启动CBO
SET hive.cbo.enable=true;
-- CBO 是基于代价的优化器,通过分析查询代价,选择最优的执行计划。
6.2.2.3.减少小文件

当表中有大量小文件时,会影响查询性能,可以通过 hive.merge.mapfileshive.merge.mapredfiles 参数在查询时合并小文件:

SET hive.merge.mapfiles=true;
SET hive.merge.mapredfiles=true;

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

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

相关文章

Apache的ab压力测试工具与性能监控

【图书介绍】《软件性能测试、分析与调优实践之路(第2版)》_软件性能测试分析与调优实践之路-CSDN博客《软件性能测试、分析与调优实践之路(第2版)》(张永清)【摘要 书评 试读】- 京东图书 (jd.com) Apache的ab压力测试工具 A…

go语言中的切片详解

1.概念 在Go语言中,切片(Slice)是一种基于数组的更高级的数据结构,它提供了一种灵活、动态的方式来处理序列数据。切片在Go中非常常用,因为它们可以动态地增长和缩小,这使得它们比固定大小的数组更加灵活。…

电子看板实时监控数据可视化助力工厂精细化管理

在当今竞争激烈的制造业领域,工厂的精细化管理成为提高竞争力的关键。而电子看板实时监控数据可视化作为一种先进的管理工具,正为工厂的精细化管理带来巨大的助力。 一、工厂精细化管理的挑战 随着市场需求的不断变化和客户对产品质量要求的日益提高&am…

记一次键盘f2和f5键被自动触发情况

背景: 联想小新笔记本电脑内置键盘,其中f2键和f5键一直被自动触发,已尝试过更换输入法,重装系统,拆开键帽清灰依旧无效。考虑维修费或者更换键盘(内置)费都挺贵的,而且f2和f5作用也…

音视频入门基础:AAC专题(10)——FFmpeg源码中计算AAC裸流每个packet的pts、dts、pts_time、dts_time的实现

音视频入门基础:AAC专题系列文章: 音视频入门基础:AAC专题(1)——AAC官方文档下载 音视频入门基础:AAC专题(2)——使用FFmpeg命令生成AAC裸流文件 音视频入门基础:AAC…

uniapp小程序使用canvas画圆

<view class"container"><canvas canvas-id"arcCanvas" id"arcCanvas" class"arc-canvas" width"300" height"300"></canvas> </view> 最开始我使用…

【华为杯】第二十一届中国研究生数学建模竞赛

“华为杯”第二十一届中国研究生数学建模竞赛即将开始&#xff0c;梦想科研社给大家整理一些比赛信息&#xff0c;在正式开赛后&#xff0c;我们也会持续分享一些课题的分析以及代码&#xff0c;有需要的可以联系我们获取资料信息哦 一、时间节点 1.加密赛题开始下载时间&…

DPDK 简易应用开发之路 1:数据包接收与解析

本机环境为 Ubuntu20.04 &#xff0c;dpdk-stable-20.11.10 DPDK 应用基础 DPDK应用程序的一般处理流程如下&#xff1a; 初始化DPDK环境&#xff1a;调用rte_eal_init()初始化DPDK环境抽象层&#xff08;EAL&#xff09;&#xff0c;设置运行时环境和配置。 配置和绑定网卡…

2024最新版 Tuxera NTFS for Mac 2023绿色版图文安装教程

​ 在数字化时代&#xff0c;数据的存储和传输变得至关重要。Mac用户经常需要在Windows NTFS格式的移动硬盘上进行读写操作&#xff0c;然而&#xff0c;由于MacOS系统默认不支持NTFS的写操作&#xff0c;这就需要我们寻找一款高效的读写软件。Tuxera NTFS for Mac 2023便是其中…

超详图解 Apache HTTP Server(httpd)安装与验证

在OpenEuler 24.03系统中安装验证 Apache HTTP Server&#xff08;httpd&#xff09;的过程通常涉及以下步骤&#xff1a; 一、Apache HTTP Server&#xff08;httpd&#xff09;安装 1.检查是否已安装httpd: rpm -q httpd 2.更新系统包索引&#xff1a;更新您的系统包索引以…

基于深度学习的药品三期OCR字符识别

在药品生产线上,药品三期的喷码与条形码识别是保证药品追溯和安全管理的重要环节。传统的识别方法依赖于人工操作,不仅效率低下且容易出错。随着深度学习技术的不断发展,基于OCR(Optical Character Recognition,光学字符识别)的自动化识别系统逐渐成为主流。本文将以哪吒…

【Godot4.2】基于EasyTreeData解析的扩展Tree控件 - ETDTree

概述 基于EasyTreeData解析的扩展Tree控件。 EasyTreeData&#xff08;ETD&#xff09; EasyTreeData&#xff08;ETD&#xff09;是一种基于Tab缩进的简单层级结构数据&#xff0c;可以用于描述树形结构。能够被解析为Tree控件或表示树形结构的其他类或控件。 根目录 | 0节…

cadence SPB17.4 - allegro - 用板子外形创建整板铺铜

文章目录 cadence SPB17.4 - allegro - 用板子外形创建整板铺铜概述笔记先确定自己板子的 board Geometry/Design_Outline 是否有外形shape为了将软件提示看得更清楚&#xff0c;在每个操作之前&#xff0c;先将命令提示区内容先删了用Z-copy从外形层生成整板的铺铜备注END cad…

Maven 和 gradle JavaFX 项目的休眠行为差异

我一直在尝试将Hibernate与我的JavaFX Maven项目集成。它与Hibernate社区包、Jakarta和xerial配合得很好。我还将persistence.xml文件放在了src/main/resources/META-INF/persistence.xml。 我还尝试使用gradle创建另一个项目&#xff0c;并按照此maven项目的步骤操作&#xf…

《高等代数》行列式转置(应用)

说明&#xff1a;此文章用于本人复习巩固&#xff0c;如果也能帮助到大家那就更加有意义了。 注&#xff1a;1&#xff09;“行列式转置值不变”这一性质在求解行列式的过程中也有极大的作用。

代码随想录算法训练营第51天 | 岛屿数量、岛屿的最大面积

目录 岛屿数量 题目描述 输入描述 输出描述 输入示例 输出示例 提示信息 1. 深搜解法 2. 广搜解法 岛屿的最大面积 题目描述 输入描述 输出描述 输入示例 输出示例 提示信息 1. 深搜解法 2. 广搜解法 岛屿数量 题目描述 给定一个由 1&#xff08;陆地&…

Python和C++气候模型算法模型气候学模拟和统计学数据可视化及指标评估

&#x1f3af;要点 贝叶斯推理气候模型辐射对流及干湿能量平衡模型时间空间气象变化预测模型评估统计指标气象预测数据变换天气和气象变化长短期影响预估降低气候信息尺度评估算法气象行为模拟&#xff1a;碳循环、辐射强迫和温度响应温室气体排放碳循环温室诱导气候变化评估气…

影刀RPA实战:网页爬虫之苦瓜书籍数据

书籍常常被视为心灵的慰藉&#xff0c;因为它们能够在不同的层面上为人们提供支持和安慰。 1. 书籍对我们的重要性 书籍是人类知识的载体&#xff0c;也是智慧的结晶。它们不仅是学习的工具&#xff0c;更是人类心灵的慰藉。在忙碌的生活中&#xff0c;书籍能够提供知识、启发…

VMWare17.5.2中Windows7企业版安装VMWareTools失败及解决办法

一、问题产生环境 宿主机系统&#xff1a;Windows11专业版 x64 虚拟机版本&#xff1a;VMWare17.5.2 虚拟机系统&#xff1a;Windows 7企业版 x64&#xff08;sp1纯净版&#xff09; 二、问题表现现象 在Windows 7企业版系统安装完成后&#xff0c;点击虚拟机编辑&#xff0c;…

安科瑞智能塑壳断路器适用于物联网配电电网中-安科瑞黄安南

智能塑壳断路器是一款多功能、体积小、智能化的塑壳断路器&#xff0c;适用于物联网配电电网中。用于三相四线中性点直接接地的供电、用电系统&#xff0c;能全面采集功率、电能量、功率因数、谐波等用电参数;具有过载、短路、缺相、过压、欠压、剩余电流动作保护等功能&#x…