Hive篇面试题+详解

Hive篇面试题


1.什么是Hive?它的主要功能是什么?

Hive是一个基于Hadoop的数据仓库工具,它提供了一个类SQL的查询语言(HiveQL)来查询和分析存储在Hadoop集群中的大规模数据。Hive的主要功能是将结构化数据映射到Hadoop的分布式文件系统(HDFS)上,并提供高级查询和分析功能。

2.Hive与传统关系型数据库的区别是什么?

Hive与传统关系型数据库的主要区别在于数据存储和查询方式。传统关系型数据库使用表格格式存储数据,并使用SQL语言进行查询,而Hive使用HDFS存储数据,并使用类SQL的HiveQL语言进行查询。此外,Hive适用于大规模数据的批处理和分析,而传统关系型数据库更适用于实时事务处理。

3.Hive的架构是什么样的?请解释各个组件的作用。

Hive的架构包括三个主要组件:Hive客户端、Hive服务和Hive Metastore。

  • Hive客户端:Hive客户端是用户与Hive交互的界面,用户可以使用HiveQL语言向Hive发送查询和命令。
  • Hive服务:Hive服务包括Hive查询执行引擎和Hive驱动程序。它负责解析HiveQL查询,生成查询计划,并将查询发送到底层的执行引擎(如MapReduce、Tez等)执行。
  • Hive Metastore:Hive Metastore负责管理和存储Hive表的元数据,包括表的结构、分区信息等。它通常使用关系型数据库(如MySQL、PostgreSQL)来存储元数据。

4.Hive Metastore是什么?它的作用是什么?它如何管理和存储Hive表的元数据?

Hive Metastore是Hive的一个组件,用于管理和存储Hive表的元数据。元数据包括表的结构、分区信息、表位置等。Hive Metastore使用关系型数据库来存储元数据,它提供了一组API和服务,用于查询、更新和管理Hive表的元数据。通过Hive Metastore,不同的用户和进程可以共享和访问相同的元数据,从而协调和共享表的结构和属性。

5.Hive表的存储格式有哪些?请介绍它们的特点和适用场景。

Hive支持多种存储格式,包括文本文件、序列文件、RC文件、ORC文件和Parquet文件等。

  • 文本文件:适用于存储结构简单的数据,易于读写和处理,但性能较差。
  • 序列文件:适用于大规模数据的读写操作,提供高压缩率和高性能。
  • RC文件:适用于大规模数据的读取操作,提供更好的数据压缩和查询性能。
  • ORC文件:适用于大规模数据的读取和查询操作,提供更高的压缩率和查询性能。
  • Parquet文件:适用于大规模数据的读取和查询操作,提供更高的压缩率和列式存储优势。

6.Hive的分区是什么?它的作用是什么?如何创建和管理分区?

Hive的分区是将表的数据按照某个列(通常是时间或地区等)划分为多个子目录或文件。分区的作用是提高查询性能和过滤效率,同时可以更灵活地管理和组织数据。可以使用PARTITIONED BY子句在创建表时定义分区列,或者使用ALTER TABLE命令来添加、修改和删除分区

7.Hive的Bucketing是什么?它的作用是什么?如何创建和使用Bucketing?

 Hive的Bucketing是一种数据分桶技术,它将表的数据根据某个列的哈希值分成固定数量的桶(buckets)。Bucketing的作用是提高查询性能,通过将相关数据存储在同一个桶中,可以减少数据的扫描量。

可以使用CLUSTERED BY子句在创建表时定义Bucketing列,并使用SORTED BY子句来指定排序列。例如,创建一个具有Bucketing的表可以使用以下语法:

CREATE TABLE table_name (col1 data_type, col2 data_type, ...)
CLUSTERED BY (bucket_column) SORTED BY (sort_column) INTO num_buckets BUCKETS;

在查询时,可以使用CLUSTER BY子句指定按照Bucketing列进行聚类,以提高查询性能。

8.Hive的数据类型有哪些?分别介绍它们的特点和使用场景。

Hive支持多种数据类型,包括基本类型(如整数、字符串、布尔值等)和复杂类型(如数组、结构体、映射等)。

  • 基本类型:包括整数、浮点数、字符串、布尔值等。这些类型用于存储简单的数据,支持各种常见的操作和函数。
  • 复杂类型:包括数组、结构体、映射等。数组用于存储可变长度的有序元素,结构体用于存储多个字段的组合,映射用于存储键值对。这些类型适用于存储和处理复杂的数据结构。

9.Hive的查询语言是什么?请提供一些常见的Hive查询语句示例。

Hive的查询语言是HiveQL,它类似于SQL语言。以下是一些常见的Hive查询语句示例:

  • 查询表中的所有数据:SELECT * FROM table_name;
  • 查询表中的特定字段:SELECT col1, col2 FROM table_name;
  • 带有过滤条件的查询:SELECT * FROM table_name WHERE col1 > 10;
  • 聚合查询:SELECT COUNT(*) FROM table_name;
  • 使用JOIN操作进行表连接:SELECT * FROM table1 JOIN table2 ON table1.col1 = table2.col1;
  • 分组和聚合操作:SELECT col1, COUNT(*) FROM table_name GROUP BY col1;

10.Hive支持的内置函数有哪些?请举例说明它们的用法。

Hive支持多种内置函数,包括数学函数、字符串函数、日期函数、聚合函数等。以下是一些常见的内置函数及其用法示例:

  • 数学函数:ABS(value)计算绝对值,ROUND(value, digits)对值进行四舍五入。
  • 字符串函数:LENGTH(str)返回字符串的长度,SUBSTR(str, start, length)返回字符串的子串。
  • 日期函数:YEAR(date)返回日期的年份,MONTH(date)返回日期的月份。
  • 聚合函数:COUNT(*)计算行数,SUM(col)计算列的总和。

11.Hive支持的连接方式有哪些?请说明它们的特点和适用场景。

Hive支持多种连接方式,包括内连接、外连接和交叉连接。

  • 内连接(INNER JOIN):内连接返回两个表中匹配的行,即只返回两个表中共有的行。适用于需要获取两个表中共有的数据的场景。
  • 左外连接(LEFT OUTER JOIN):左外连接返回左表中所有的行以及与右表匹配的行。如果右表中没有匹配的行,将返回NULL值。适用于需要获取左表所有行以及与右表匹配的行的场景。
  • 右外连接(RIGHT OUTER JOIN):右外连接返回右表中所有的行以及与左表匹配的行。如果左表中没有匹配的行,将返回NULL值。适用于需要获取右表所有行以及与左表匹配的行的场景。
  • 全外连接(FULL OUTER JOIN):全外连接返回两个表中所有的行,并将不匹配的行填充为NULL值。适用于需要获取两个表中所有行的场景。

12.Hive的索引是什么?它的作用是什么?Hive支持哪些类型的索引?

Hive的索引是一种数据结构,用于加快查询和过滤操作的速度。它可以提供快速的数据定位,减少数据扫描的量。

Hive支持两种类型的索引:B树索引和位图索引。

  • B树索引:B树索引适用于等值查询和范围查询,它通过构建一棵平衡的B树来存储索引数据。B树索引可以加速等值查询和范围查询的速度,但对于模糊查询和排序操作的效果较差
  • 位图索引:位图索引适用于低基数列的等值查询,它通过为每个不同的值创建一个位图来存储索引数据。位图索引可以提供非常快速的等值查询速度,但对于范围查询和排序操作的效果较差。

13.如何在Hive中创建索引?请提供一个创建索引的示例。

在Hive中,可以使用CREATE INDEX语句来创建索引。以下是一个创建B树索引的示例:

CREATE INDEX index_name ON TABLE table_name (column_name) AS 'btree' WITH DEFERRED REBUILD;

该语句创建一个名为index_name的B树索引,将其应用于table_name表的column_name列。WITH DEFERRED REBUILD选项表示索引在创建后不会立即构建,而是在之后的时间点进行构建。

14.Hive的分区和索引有什么区别?它们是如何共同作用的?

Hive的分区和索引是用于提高查询性能和过滤效率的两种不同的技术。

  • 分区通过将数据划分为多个子目录或文件,可以提高查询性能和过滤效率。分区可以根据某个列(通常是时间或地区等)进行划分,从而使查询只需要处理符合特定条件的数据。
  • 索引通过创建特定的数据结构,可以加快查询和过滤操作的速度。索引可以提供快速的数据定位,减少数据扫描的量。

分区和索引可以共同作用,从而进一步提高查询性能。通过在分区列上创建索引,可以在进行查询时更快地定位到特定分区,从而减少数据扫描的范围,提高查询效率。

15.Hive的动态分区是什么?它与静态分区有何区别?

Hive的动态分区是一种动态分区是指在插入数据时,根据插入语句中的列值动态创建分区。动态分区可以根据插入的数据自动创建分区目录,无需预先定义分区。

16.Hive支持的连接方式有哪些?请说明它们的特点和适用场景。

Hive支持多种连接方式,包括内连接、外连接和交叉连接。

  • 内连接(INNER JOIN):内连接返回两个表中匹配的行,即只返回两个表中共有的行。适用于需要获取两个表中共有的数据的场景。
  • 左外连接(LEFT OUTER JOIN):左外连接返回左表中所有的行以及与右表匹配的行。如果右表中没有匹配的行,将返回NULL值。适用于需要获取左表所有行以及与右表匹配的行的场景。
  • 右外连接(RIGHT OUTER JOIN):右外连接返回右表中所有的行以及与左表匹配的行。如果左表中没有匹配的行,将返回NULL值。适用于需要获取右表所有行以及与左表匹配的行的场景。
  • 全外连接(FULL OUTER JOIN):全外连接返回两个表中所有的行,并将不匹配的行填充为NULL值。适用于需要获取两个表中所有行的场景。

17.Hive的索引是什么?它的作用是什么?Hive支持哪些类型的索引?

Hive的索引是一种数据结构,用于加快查询和过滤操作的速度。它可以提供快速的数据定位,减少数据扫描的量。

Hive支持两种类型的索引:B树索引和位图索引。

  • B树索引:B树索引适用于等值查询和范围查询,它通过构建一棵平衡的B树来存储索引数据。B树索引可以加速等值查询和范围查询的速度,但对于模糊查询和排序操作的效果较差。
  • 位图索引:位图索引适用于低基数列的等值查询,它通过为每个不同的值创建一个位图来存储索引数据。位图索引可以提供非常快速的等值查询速度,但对于范围查询和排序操作的效果较差。

18.如何在Hive中创建索引?请提供一个创建索引的示例。

在Hive中,可以使用CREATE INDEX语句来创建索引。以下是一个创建B树索引的示例:

CREATE INDEX index_name ON TABLE table_name (column_name) AS 'btree' WITH DEFERRED REBUILD;

该语句创建一个名为index_name的B树索引,将其应用于table_name表的column_name列。WITH DEFERRED REBUILD选项表示索引在创建后不会立即构建,而是在之后的时间点进行构建。

19.Hive的分区和索引有什么区别?它们是如何共同作用的?


Hive的分区和索引是用于提高查询性能和过滤效率的两种不同的技术。

  • 分区通过将数据划分为多个子目录或文件,可以提高查询性能和过滤效率。分区可以根据某个列(通常是时间或地区等)进行划分,从而使查询只需要处理符合特定条件的数据。
  • 索引通过创建特定的数据结构,可以加快查询和过滤操作的速度。索引可以提供快速的数据定位,减少数据扫描的量。

分区和索引可以共同作用,从而进一步提高查询性能。通过在分区列上创建索引,可以在进行查询时更快地定位到特定分区,从而减少数据扫描的范围,提高查询效率。

20.Hive的动态分区是什么?它与静态分区有何区别?


Hive的动态分区是一种动态分区是指在插入数据时,根据插入语句中的列值动态创建分区。动态分区可以根据插入的数据自动创建分区目录,无需预先定义分区。

与之相反,静态分区是在创建表时就定义好的分区。在插入数据时,需要明确指定插入的分区。

动态分区的优势在于可以根据实际的数据动态创建分区目录,灵活性更高,适用于数据量较大且需要频繁插入的场景。而静态分区适用于分区结构相对固定、不需要频繁插入的场景。

21.Hive中的压缩是什么?它的作用是什么?Hive支持哪些压缩算法?

在Hive中,压缩是一种将数据以更高效的方式存储的技术。压缩可以减少磁盘空间的使用,提高数据的读写效率。

压缩的主要作用是减少磁盘空间的占用,从而节省存储成本。同时,压缩还可以提高数据的读写效率,减少磁盘IO和网络传输的数据量,提高查询性能。

Hive支持多种压缩算法,包括:

  • Gzip:Gzip是一种通用的压缩算法,可以提供较高的压缩比,但对于查询性能的影响较大。
  • Snappy:Snappy是一种较为快速的压缩算法,压缩比相对较低,但对于查询性能的影响较小。
  • LZO:LZO是一种高性能的压缩算法,压缩比和查询性能都相对较好,但需要额外的配置和安装。

22.如何在Hive中启用压缩?请提供一个启用压缩的示例。

在Hive中,可以使用SET语句来启用压缩。以下是一个启用Snappy压缩的示例:

SET hive.exec.compress.output=true;
SET mapreduce.output.fileoutputformat.compress=true;
SET mapreduce.output.fileoutputformat.compress.codec=org.apache.hadoop.io.compress.SnappyCodec;

以上示例中,第一行设置Hive输出压缩为true,第二行设置MapReduce输出压缩为true,第三行设置压缩编解码器为SnappyCodec。

23.Hive中的分桶是什么?它与分区和索引有何区别?*

Hive中的分桶是一种将数据划分为多个桶的技术。每个桶包含的数据量相对均衡,可以提高查询效率。

与分区相比,分桶是将数据按照某种规则划分为多个桶,而不是按照列的值进行划分。分桶可以更细粒度地控制数据的划分,适用于需要更细粒度的数据过滤和查询的场景。

与索引相比,分桶是通过将数据分散在不同的桶中来提高查询效率,而索引是通过构建特定的数据结构来加速查询。分桶可以在一定程度上提高查询性能,但对于某些查询操作(如范围查询)的效果可能不如索引。

与之相反,静态分区是在创建表时就定义好的分区。在插入数据时,需要明确指定插入的分区。

动态分区的优势在于可以根据实际的数据动态创建分区目录,灵活性更高,适用于数据量较大且需要频繁插入的场景。而静态分区适用于分区结构相对固定、不需要频繁插入的场景。

24.Hive中的压缩是什么?它的作用是什么?Hive支持哪些压缩算法?

在Hive中,压缩是一种将数据以更高效的方式存储的技术。压缩可以减少磁盘空间的使用,提高数据的读写效率。

压缩的主要作用是减少磁盘空间的占用,从而节省存储成本。同时,压缩还可以提高数据的读写效率,减少磁盘IO和网络传输的数据量,提高查询性能。

Hive支持多种压缩算法,包括:

  • Gzip:Gzip是一种通用的压缩算法,可以提供较高的压缩比,但对于查询性能的影响较大。
  • Snappy:Snappy是一种较为快速的压缩算法,压缩比相对较低,但对于查询性能的影响较小。
  • LZO:LZO是一种高性能的压缩算法,压缩比和查询性能都相对较好,但需要额外的配置和安装。

25.如何在Hive中启用压缩?请提供一个启用压缩的示例。

在Hive中,可以使用SET语句来启用压缩。以下是一个启用Snappy压缩的示例:

SET hive.exec.compress.output=true;
SET mapreduce.output.fileoutputformat.compress=true;
SET mapreduce.output.fileoutputformat.compress.codec=org.apache.hadoop.io.compress.SnappyCodec;

以上示例中,第一行设置Hive输出压缩为true,第二行设置MapReduce输出压缩为true,第三行设置压缩编解码器为SnappyCodec。

26.Hive中的分桶是什么?它与分区和索引有何区别?

Hive中的分桶是一种将数据划分为多个桶的技术。每个桶包含的数据量相对均衡,可以提高查询效率。

与分区相比,分桶是将数据按照某种规则划分为多个桶,而不是按照列的值进行划分。分桶可以更细粒度地控制数据的划分,适用于需要更细粒度的数据过滤和查询的场景。

与索引相比,分桶是通过将数据分散在不同的桶中来提高查询效率,而索引是通过构建特定的数据结构来加速查询。分桶可以在一定程度上提高查询性能,但对于某些查询操作(如范围查询)的效果可能不如索引。

27.Hive支持的数据导入和导出方式有哪些?请介绍它们的用法和适用场景。

Hive支持的数据导入和导出方式有多种,包括:

  • 通过HiveQL语句进行数据导入和导出:可以使用LOAD DATA语句将本地或HDFS上的数据导入到Hive表中,也可以使用INSERT INTO语句将Hive表中的数据导出到本地或HDFS上的文件中。
  • 使用Hive的外部表进行数据导入和导出:可以创建外部表,然后将数据文件放置在外部表指定的位置,这样就可以直接访问外部表中的数据。
  • 使用Hive的ETL工具,如Sqoop和Flume,进行数据导入和导出:Sqoop用于将关系型数据库中的数据导入到Hive表中,Flume用于实时地将数据流导入到Hive表中。

不同的数据导入和导出方式适用于不同的场景。如果数据量较小且对性能要求较高,可以使用HiveQL语句进行导入和导出。如果数据量较大或需要实时导入数据,可以考虑使用外部表或ETL工具进行数据导入和导出。

28.Hive的性能优化有哪些方面?请列举一些常见的性能优化技巧。*

Hive的性能优化可以从多个方面进行,包括:

  • 数据分区和分桶:通过将数据划分为多个分区和桶,可以减少数据扫描的范围,提高查询效率。
  • 压缩:使用压缩算法可以减少磁盘空间的使用,提高数据的读写效率。
  • 数据倾斜处理:对于存在数据倾斜的情况,可以采取一些优化措施,如使用动态分区、调整分桶数量等。
  • 合理的数据类型选择:选择合适的数据类型可以减少存储空间的占用和数据的序列化/反序列化开销。
  • 合理的查询优化:如使用合适的Join类型、合理的Join顺序、适当的过滤条件等。
  • 使用合适的硬件配置:如调整内存、磁盘和网络等参数,以提高查询性能。

这只是一些常见的性能优化技巧,具体的优化策略还应根据具体的场景和需求进行调整。

29.Hive中的“SerDe”是什么?

在Hive中,SerDe(Serializer/Deserializer)是指用于处理数据序列化和反序列化的组件。它是Hive的一个重要概念,用于将数据在Hive表和底层存储格式之间进行转换。

SerDe允许Hive读取和写入不同的数据格式,例如文本、CSV、JSON、Avro等。它负责将表中的数据与存储格式之间进行转换,使得Hive可以与各种不同的数据源进行交互。

当Hive读取数据时,SerDe将数据从底层存储格式(如HDFS文件)中反序列化为Hive表的列,并将它们转换为Hive可以理解和处理的格式。

当Hive写入数据时,SerDe将Hive表的列序列化为底层存储格式,以便将其写入到文件或其他数据源中。

30.说说Hive Metastore

Hive Metastore是Hive的元数据存储和管理组件,负责存储和管理Hive表的结构、分区信息等元数据。它允许多个Hive客户端和服务共享和访问相同的元数据,提供了元数据的查询、更新、管理和权限控制等功能。

31.默认的“Hive Metastore”可以被多个用户(进程)同时使用吗?

Hive Metastore使用关系型数据库(如MySQL、PostgreSQL等)来存储元数据。大多数关系型数据库都采用悲观锁机制,即在写操作期间锁定数据,以防止并发访问导致的数据不一致性。因此,默认情况下,Hive Metastore在写操作期间会锁定元数据,阻塞其他用户/进程的访问。

当一个用户/进程正在执行写操作(例如创建表、修改表结构等)时,其他用户/进程可能会被阻塞,直到该写操作完成。这意味着默认情况下,Hive Metastore不支持并发的写操作。

然而,默认情况下,Hive Metastore是支持并发的读操作的。多个用户/进程可以同时进行元数据的读取操作,例如查询表结构、分区信息等。

如果需要支持并发的写操作,可以考虑使用Hive Metastore的分布式模式,如Hive Metastore Server(HMS)和Apache ZooKeeper等。这些解决方案可以提供更好的并发性和扩展性,以满足高并发的需求。

32.“Hive”存储表数据的默认位置是什么?

Hive存储表数据的默认位置是由${HIVE_HOME}/conf/hive-site.xml配置文件的hive.metastore.warehouse.dir属性指定的。

默认情况下,Hive会将表数据存储在HDFS的/user/hive/warehouse。


更多内容请看主页~

如对您有帮助,欢迎点赞收藏!!!

👍👍👍

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

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

相关文章

动手学深度学习—使用块的网络VGG(代码详解)

目录 1. VGG块2. VGG网络3. 训练模型 1. VGG块 经典卷积神经网络的基本组成部分是下面的这个序列: 1.带填充以保持分辨率的卷积层; 2.非线性激活函数,如ReLU; 3.汇聚层,如最大汇聚层。 定义网络块,便于我…

【安全体系架构】——零信任网络架构

什么是零信任网络架构? 零信任网络架构是一种网络和信息安全模型,它将传统的信任模型颠覆,不再信任内部或外部用户、设备或网络。相反,它将每个访问请求都视为不受信任,要求对每个用户、设备和流量都进行认证和授权&a…

2023-10-20 LeetCode每日一题(根据规则将箱子分类)

2023-10-20每日一题 一、题目编号 2525. 根据规则将箱子分类二、题目链接 点击跳转到题目位置 三、题目描述 给你四个整数 length ,width ,height 和 mass ,分别表示一个箱子的三个维度和质量,请你返回一个表示箱子 类别 的字…

底层驱动day2作业

控制三盏灯亮灭 代码: //head.h#ifndef __HEAD_H__ #define __HEAD_H__ #define PHY_RCC 0x50000A28 #define PHY_GPIOE_MODER 0x50006000 #define PHY_GPIOF_MODER 0x50007000 #define PHY_GPIOE_ODR 0x50006014 #define PHY_GPIOF_ODR 0x50007014#endif //demo…

播放svga动画的时候 第一次加载资源,然后切换动画 会动画会重影

如果在切换 SVGA 动画的过程中,第一次加载时出现重影,但第二次及以后的切换没有重影,这可能是由于第一次加载时资源缓存不完整导致的。为了解决这个问题,你可以尝试以下方法: 1.在每次切换动画之前,预先加…

C#经典十大排序算法(完结)

C#冒泡排序算法 简介 冒泡排序算法是一种基础的排序算法,它的实现原理比较简单。核心思想是通过相邻元素的比较和交换来将最大(或最小)的元素逐步"冒泡"到数列的末尾。 详细文章描述 https://mp.weixin.qq.com/s/z_LPZ6QUFNJcw…

vue-pdf多页预览异常,Rendering cancelled, page 1 Error at BaseExceptionClosure xxx

项目开发使用vue-pdf,单页情况预览正常,多页vue-pdf预览异常,第一次预览时,会先弹出异常模态窗口,关闭模态窗口,pdf又是正常显示,报错信息及异常截图如下: 报错信息 Rendering cancelled, page…

【PADS封装】2.4G PCB天线封装(量产用)

包含了我们平时常用的2.4GPCB天线封装,总共11种封装。完全能满足日常设计使用。 下载链接!!https://mp.weixin.qq.com/s?__bizMzU2OTc4ODA4OA&mid2247548815&idx1&sne625e51a06755a34ab4404497770df48&chksmfcfb2c58cb8ca5…

MMWHS数据集

Multi-Modality Whole Heart Segmentation (MMWHS) 数据集[1] 是多模态医疗图像数据集,有磁共振(Magnetic Resonance Imaging,MRI)和断层扫描(Computed Tomography,CT)两种,[2] 对数…

探索图像分割技术:使用 OpenCV 的分水岭算法

贾斯卡兰巴蒂亚 一、说明 图像分割是计算机视觉的一个基本方面,多年来经历了巨大的转变。这将是一系列三篇博客文章,深入研究三种不同的图像分割技术 - 1使用OpenCV的经典分水岭算法,2使用PyTorch实现的基于深度学习的UNet模型,3 …

【Redis】数据结构之dict

目录 dict的基本结构dict的相关操作函数底层通用的之查找插入key-value对应该放入ht表的哪个槽rehash过程 dict的基本结构 typedef struct dict {dictType *type;void *privdata;dictht ht[2];long rehashidx; /* rehashing not in progress if rehashidx -1 */unsigned long…

Ubuntu小知识总结

Ubuntu相关的小知识总结 一、Ubuntu系统下修改用户开机密码二、Vmware虚拟机和主机之间复制、粘贴内容、拖拽文件的详细方法问题描述Vmware tools灰色不能安装解决方法小知识点:MarkDown的空格 三、Ubuntu虚拟机网络无法连接的几种解决方法1.重启网络编辑器2. 重启虚…

Linux下使用openssl为harbor制作证书

openssl是一个功能丰富且自包含的开源安全工具箱。它提供的主要功能有:SSL协议实现(包括SSLv2、SSLv3和TLSv1)、大量软算法(对称/非对称/摘要)、大数运算、非对称算法密钥生成、ASN.1编解码库、证书请求(PKCS10)编解码、数字证书编解码、CRL编解码、OCSP协议、数字证…

免费高清壁纸下载(静态和动态壁纸)

一、网址下载(静态壁纸) 高清图片直接另存为就可以了。然后在电脑空白处右键——个性化设置即可替换壁纸。 ①网址:https://www.hippopx.com ②极简壁纸:https://bz.zzzmh.cn/index ③彼岸图网:http://pic.netbian…

Linux:firewalld防火墙-介绍(1)

防火墙技术 1.包过滤 packet filtering 2.应用代理 application proxy 3.状态检测 stateful inspection Linux 包过滤防火墙 概述 1.netfilter 位于Linux内核中的包过滤功能体系 称为Linux防火墙的“内核态” 2.firewalld CentOS7默认的管理防火墙规则的工具 称为Linux防火…

OpenCV17-图像形态学操作

OpenCV17-图像形态学操作 1.形态学操作1.1腐蚀1.2膨胀 2.形态学应用2.1开运算2.2闭运算2.3形态学梯度2.4顶帽运算2.5黑帽运算2.6击中击不中变换2.7形态学应用示例 1.形态学操作 1.1腐蚀 图像腐蚀(Image erosion)可用于减小图像中物体的大小、填充孔洞或…

通过数组的指针获得数组个数

这几天学习智能指针时,自己在练习写个管理数组指针的类时碰到了通过数组指针获取数组个数的问题 1.在网上查询了通过数组指针获取数组个数的方法,对于自定义数据在前四个节点保存了数组个数 Student* pAry new Student[3];size_t num *((size_t*)pAry - 1);//3测试是成功的…

华为eNSP配置专题-VRRP的配置

文章目录 华为eNSP配置专题-VRRP的配置0、参考文档1、前置环境1.1、宿主机1.2、eNSP模拟器 2、基本环境搭建2.1、基本终端构成和连接 2.VRRP的配置2.1、PC1的配置2.2、接入交换机acsw的配置2.3、核心交换机coresw1的配置2.4、核心交换机coresw2的配置2.5、配置VRRP2.6、配置出口…

C++多态、虚函数、纯虚函数、抽象类

多态的概念 通俗来说,就是多种形态,具体点就是去完成某个行为,当不同的对象去完成时会产生出不同的状态。 举个简单的例子:抢红包,我们每个人都只需要点击一下红包,就会抢到金额。有些人能…

OpenCV中world模块介绍

OpenCV中有很多模块,模块间保持最小的依赖关系,用户可以根据自己的实际需要链接相关的库,而不需链接所有的库,这样在最终交付应用程序时可以减少总库的大小。但如果需要依赖OpenCV的库太多,有时会带来不方便,此时可以使…