Hive基本原理与数据开发

目录

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.xdnf.cn/news/144980.html

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

相关文章

防爆手机+鸿蒙系统,遨游通讯筑牢工业安全基石

在科技日新月异的今天,工业领域正稳步迈向数字化转型的新阶段。遨游通讯,作为“危、急、特”赛道的开创者,携手鸿蒙系统,共同探索智慧工业的新路径。这一合作不仅体现了双方在技术创新上的默契与互补,更为智慧工业的发…

分布式中间件-Pika一个高效的分布式缓存组件

文章目录 Pika简介Pika特性Pika解决的问题及应用场景Pika架构之存储引擎部署模式1、主从模式2、分布式集群模式 Pika快速上手1、二进制包方式2、源码编译方式2.1 支持的平台2.2 依赖的库软件2.3 编译过程2.4 启动 Pika2.5 清空已编译的结果2.6 Pika 的开发调试 3、容器化3.1 使…

Java 内存模型(Java Memory Model)

1. 概述 对于 Java 程序员来说,在虚拟机⾃动内存管理机制下,不再需要像 样为每⼀个 new 操作去写对应的 delete / C/C 程序开发程序员这 free 操作,不容易出现内存泄漏和内存溢出问 题。正是因为 Java 程序把内存控制权利交给 JVM 虚拟机。⼀…

vscode 环境搭建

1. 插件离线安装 官网链接是:https://marketplace.visualstudio.com/vscode 下载需要的插件: vscode 离线安装 在打开的文件中选择扩展包,点击安装即可 2. 故障解决 参考:https://blog.csdn.net/weixin_63712639/article/det…

【VUE3.0】动手做一套像素风的前端UI组件库---先导篇

目录 引言准备素材字体鼠标手势图 创建vue3项目构建项目1. 根据命令行提示选择如下:2. 进入项目根目录下载依赖并启动。3. 设置项目src路径别名,方便后期应用路径。4. 将素材按照自己的规则放置在assets文件夹下:5. 初始化全局css样式&#x…

列表、数组排序总结:Collections.sort()、list.sort()、list.stream().sorted()、Arrays.sort()

列表类型 一.Collections.sort() Collections.sort()用于List类型的排序&#xff0c;其提供了两个重载方法&#xff1a; 1.sort(List<T> list) &#xff08;1&#xff09;List指定泛型时只能指定引用数据类型&#xff0c;也就是说无法用于基本数据类型的排序。 &am…

leetcode:3232. 判断是否可以赢得数字游戏(python3解法)

难度&#xff1a;简单 给你一个 正整数 数组 nums。 Alice 和 Bob 正在玩游戏。在游戏中&#xff0c;Alice 可以从 nums 中选择所有个位数 或 所有两位数&#xff0c;剩余的数字归 Bob 所有。如果 Alice 所选数字之和 严格大于 Bob 的数字之和&#xff0c;则 Alice 获胜。 如果…

web自动化学习笔记

目录 一、web自动化测试环境搭建二、web自动化测试第一个脚本三、selenium 8种定位方式3.1、通过id定位3.2、通过name定位3.3、通过tag_name&#xff08;标签名&#xff09;定位3.4、通过class值进行定位3.5、通过链接文本定位3.6、通过部分链接文本定位3.7、通过xpath定位3.8、…

Java自定义集合-基于文件的泛型列表 LocalFileArrayList

Java实现基于文件的泛型列表 LocalFileArrayList 简介核心概念泛型文件操作实现细节构造函数读取和写入文件类型转换List 接口方法实现总结调用示例完整代码简介 LocalFileArrayList我自己随便起的,没怎么思考,不一定是最适合的名字。搞这东西主要是有些需求用到的数据量太大…

漏洞挖掘 | Selenium Grid 中的 SSRF

Selenium 网格框架上的基本服务器端请求伪造 最近&#xff0c;我正在阅读漏洞文章看到Peter Jaric写的一篇 Selenium Grid 文章&#xff1b;他解释了 Selenium Grid 框架上缺乏身份验证和安全措施强化的问题。 在网上进行了更多搜索&#xff0c;我发现 Selenium Grid 开箱即用…

【人工智能学习】8_人工智能其他通用技术

知识图谱 在看影视剧或小说时&#xff0c;若其中的人物很多、人物关系复杂&#xff0c;我们一般会用画人物关系图谱来辅助理解人物关系。那什么是知识图谱呢&#xff1f; 知识是人类对信息进行处理之后的认识和理解&#xff1b;对数据和信息的凝练、总结后的成果。 将信息转…

TaskRes: Task Residual for Tuning Vision-Language Models

文章汇总 当前VLMs微调中存在的问题 提示微调的问题 在提示调优中缺乏对先验知识保存的保证(me&#xff1a;即提示微调有可能会丢失预训练模型中的通用知识)。虽然预先训练的文本分支模块(如文本编码器和投影)的权重在提示调优范式中被冻结&#xff0c;但原始的良好学习的分类…

Linux 信号的产生

1. 概念 在Linux系统中&#xff0c;信号是一种进程间通信的机制&#xff0c;它允许操作系统或其他进程向特定进程发送异步通知。我们可以通过命令 kill -l来查看信号的种类&#xff1a; Linux系统中的信号可以分为两大类&#xff1a;传统信号和实时信号。从上图可以看出它们分…

AI助力智慧农田作物病虫害监测,基于YOLOv8全系列【n/s/m/l/x】参数模型开发构建花田作物种植场景下棉花作物常见病虫害检测识别系统

智慧农业是一个很大的应用市场&#xff0c;将当下如火如荼的AI模型技术与现实的农业生产场景相结合能够有效提升生产效率&#xff0c;农作物在整个种植周期中有很多工作需要进行&#xff0c;如&#xff1a;浇水、施肥、除草除虫等等&#xff0c;传统的农业作物种植生产管理周期…

Vivado FIR IP 详解 (一)

FIR滤波器是数字信号处理中常用的滤波器&#xff0c;除了通过Verilog代码自己实现外&#xff0c;Vivado提供了一个FIR滤波器 IP&#xff0c;可以直接调用。 一、什么是 Vivado FIR IP 核 FIR&#xff08;Finite Impulse Response&#xff09;滤波器即有限长单位冲激响应滤波器…

通信工程学习:什么是ODN光分配网络

ODN&#xff1a;光分配网络 ODN&#xff08;Optical Distribution Network&#xff0c;光分配网络&#xff09;是光接入网中的重要组成部分&#xff0c;它位于光线路终端&#xff08;OLT&#xff09;和光网络单元&#xff08;ONU&#xff09;/光网络终端&#xff08;ONT&#x…

【我的 PWN 学习手札】Tcache Poisoning

目录 前言 一、Tcachebin 的组织形式 二、Tcache Poisoning 三、测试与模板 前言 早期对于 Tcachebin 的引入&#xff0c;在提高分配释放效率的同时&#xff0c;也因毫无保护而变得尤为好攻击和利用。自 glibc-2.32 以后添加了 key 等保护机制&#xff0c;现在的 tcachebi…

必知的PDF转换软件:看2024大学生如何选择

你翻翻你文件的下载记录&#xff0c;是不是PDF文件占了大多数&#xff1f;很多是为了保证页面版式直接收到打印手填再扫描或者直接提交。但是如果能够直接在电脑上编辑之后直接转发或者打印是不是方便了很多&#xff1f;这次我就介绍几款可以进行PDF转换操作的工具&#xff0c;…

使用集成学习对不同的机器学习方法进行集成

数据入口&#xff1a;数据人才的现场调研 - Heywhale.com 本数据集中有 43 行&#xff0c;19 列&#xff0c;数据集包含如下字段&#xff1a; 首先读取数据&#xff1a; import pandas as pd# 读取Excel文件 data pd.read_excel(数据人才的现场调研.xls)可以输出每一列含有…

电脑维修的基本原则

要识别电脑故障&#xff0c;一定要遵循“先易后难”、“先外后内”及“先软后硬”原则&#xff0c;使维修更有效的进行。 一、先易后难 “先易后难”是指处理电脑故障时需要从最简单的事情做起&#xff0c;通过认真的观察后&#xff0c;再进行判断与维修&#xff0c;这样有利于…