大数据从入门到精通(超详细版)之 Hive的配置与基本语法

2023-11-01

前言

嗨,各位小伙伴,恭喜大家学习到这里,不知道关于大数据前面的知识遗忘程度怎么样了,又或者是对大数据后面的知识是否感兴趣,本文是《大数据从入门到精通(超详细版)》的一部分,小伙伴们如果对此感谢兴趣的话,推荐大家按照大数据学习路径开始学习哦。

以下就是完整的学习路径哦。

↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓

大数据从入门到精通文章体系!!!!!!!!!!!!!!

↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑

推荐大家认真学习哦!!!


在这里插入图片描述

知识回顾

Hive 是一个基于 Hadoop 的数据仓库基础架构,它提供了类似于 SQL 的查询语言用于分析和处理大规模的结构化数据。Hive 的设计目标是使非技术人员能够轻松地使用 SQL 进行数据分析,而无需编写复杂的 MapReduce 代码。

以下是 Hive 的一些主要特点和功能:

  1. 数据仓库架构:Hive 使用数据仓库架构来管理和处理大规模数据集。它支持常见的关系型数据库概念,如表、列、分区和分桶,以及丰富的数据类型。
  2. SQL-like 查询语言:Hive 提供了一个类似于 SQL 的查询语言,称为 HiveQL(HQL)。用户可以使用类似于传统数据库的 SQL 语法进行数据查询、过滤、聚合等操作。
  3. 可扩展性:Hive 建立在 Hadoop 分布式计算框架之上,能够有效地处理大规模的数据集。它能够利用 Hadoop 的并行计算能力,实现高度可扩展的数据处理。
  4. 高容错性:Hadoop 提供了容错机制,因此 Hive 能够处理大规模数据时发生故障或节点失效的情况。它具备自动故障恢复和数据冗余的特性。
  5. 数据存储和压缩:Hive 支持多种数据存储格式,包括文本文件、序列文件、Avro、Parquet 等。此外,它还支持数据压缩,可以减少存储空间和提高查询性能。
  6. 扩展性和可定制性:Hive 提供了丰富的内置函数和扩展接口,允许用户编写自定义的函数、转换器和优化器,以满足特定的数据处理需求。

Hive 被广泛用于大规模数据处理、数据仓库、ETL(Extract、Transform、Load)等场景。它可以与其他 Hadoop 生态系统工具(如 HBase、Spark)和常见的可视化工具(如 Tableau、Superset)集成,提供更全面的数据分析解决方案。

以上就是之前文章的一个简单回顾。

在当前文章当中 , 主要介绍了Hive的一些参数配置, 日志配置以及JVM和其他优化 , 后续又介绍了Hive的操作语句和表的操作语句.

下面开始正文 :

交互式命令与非交互式命令

交互式命令

bin/hive命令行进入的hive shell一条指令一条指令的操作的方式就是交互式操作方式

bin/hive

这种方式比较适用于实时操作 , 交互性较强

非交互式命令之传入sql语句

bin/hive命令加上参数的方式操作hive , 就是非交互式命令

bin/hive -e "select * from student"![在这里插入图片描述](https://img-blog.csdnimg.cn/26c7e8f8b38841099dad44b54714575e.png)

在这里插入图片描述

这种方式是不进入hive shell的操作界面, 就可以直接进行操作的方式, 适用于离线数仓的场景

非交互式命令之传入sql文件

mkdir test 
vim test.sql

insert into student valeus(3,'王五','男');

bin/hive -f test.sql

这种方式就是直接从文件中加载sql命令 , 可以达到与sql语句一样的效果

Hive的参数配置方式

配置文件的方式

在配置文件当中 , hive-default.xml文件会被源码忽略掉, 而采用hive-site.xml这个配置文件进行默认配置

交互式命令行的方式

bin/hive -hiveconf mapreduce.job.reduces=10

以上参数配置是为了调整mapreduce的个数使用的, 这种配置只能本次使用, 下一次退出客户端时就不会生效

交互式界面的方式

#设置mapreduce的值
set mapreduce.job.reduces=10;
#查看mapreduce的值
set mapreduce.job.reduces;

配置的优先级

配置文件 < 命令行参数 < 界面参数声明

Hive的常见配置

命令行的展示界面配置

此处小题一嘴 : Hive的命令行操作界面可能在后续版本移除 , 只保留beeline的方式操作Hive , 但是大家仍然要抓紧学习, 知道的东西多一点不一定是坏事.

为了展示直观, 我们通常需要显示hive的当前选择的数据库和查询表中的字段名

这是没有对其进行配置的界面, 页面的展示数据过少

在这里插入图片描述

下面更改其配置 :

vim hive-site.xml

然后在文件当中插入以下的配置

<property>
	<name>hive.cli.print.header</name>
	<value>true</value>
	<description>展示字段名</description>
</property>

<property>
	<name>hive.cli.print.current.db</name>
	<value>true</value>
	<description>展示当前的数据库名</description>
</property>

再次连接客户端 , 即可看见配置的效果 , 已经可以展示库名和字段名了

在这里插入图片描述

Hive运行日志配置

Hive的日志文件在hive-exec-log4j2.properties.template文件当中 , 需要先将其改名为hive-exec-log4j2.properties

mv hive-exec-log4j2.properties.template hive-exec-log4j2.properties
#文件当中关于日志文件路径的配置
# list of propertiessh
property.hive.log.level = INFO
property.hive.root.logger = FA
property.hive.query.id = hadoop
#这就是默认存放的路径,默认在/tmp/[启动hive的用户] 需要的话在此修改其配置
property.hive.log.dir = ${sys:java.io.tmpdir}/${sys:user.name}
#默认的文件名
property.hive.log.file = ${sys:hive.query.id}.logsh

我们可以验证一下日志文件的位置

#当前我的hive就是以hadoop用户启动的
cd /tmp/hadoop
ll -l

在这里插入图片描述

可以看到日志文件就在其配置文件夹当中的位置中存储, 如果需要修改的话, 可以对property.hive.log.dir此文件进行修改

Hive的JVM内存堆进行配置

Hive 使用 JVM 来执行查询和处理大规模数据,因此 JVM 内存堆对于 Hive 的性能和稳定性非常重要。

Hive 的 JVM 内存堆可以通过以下两个参数进行配置:

  1. hive.heapsize:该参数用于指定 JVM 内存堆的总大小。它定义了 Hive 在执行查询时可以使用的最大内存量。

    默认申请的 JVM 堆内存大小为 256M,JVM 堆内存申请的太小 , 导致后期开启本地模式 ,执行复杂的SQL时经常会报错java.lang.OutOfMemoryError: Java heap space,因此最好提前调整一下 HADOOP_HEAPSIZE 这个参数 。

    刚刚有提到本地模式 , 下面我会详细讲解一下Hive的本地模式.

    跳转到Hive的本地模式介绍

    #修改hive-env.sh的内容
    export HADOOP_HEAPSIZE=2048
    
  2. hive.server2.heapsize:该参数用于指定 Hive Server2 进程的 JVM 内存堆大小。Hive Server2 是 Hive 的服务器组件,用于提供远程查询服务。默认情况下,该参数的值为 1024MB。

通常情况下,可以根据系统的资源和负载情况来调整这两个参数的值。如果系统中有多个用户同时执行查询,并且有较大的数据集需要处理,那么增加 JVM 内存堆的大小可能是一个好的选择,以提高查询的性能和并发处理能力。但是,如果内存资源有限或者系统负载较高,增加内存堆的大小可能会导致内存压力或竞争,影响系统的稳定性和性能。

关闭 Hadoop 虚拟内存检查

**Hadoop 通过虚拟内存检查来控制和监控任务的资源使用情况,以防止任务由于过度使用内存而导致系统崩溃或执行时间过长。**虚拟内存检查主要包括以下几个方面:

  1. MapReduce 任务的虚拟内存限制:Hadoop 允许为每个任务设置虚拟内存限制。该限制指定了任务可以使用的最大虚拟内存量。一旦任务超过这个限制,Hadoop 将终止任务并标记为失败。
  2. MapReduce 任务的物理内存检查:除了虚拟内存外,Hadoop 还会检查任务使用的实际物理内存。如果任务使用的物理内存超出了预定义的阈值,则任务可能被终止。
  3. 虚拟内存与物理内存的比例检查:Hadoop 还提供了一个配置选项,允许您设置虚拟内存与物理内存之间的比例限制。默认情况下,虚拟内存可以是物理内存的倍数。如果某个任务的虚拟内存超过该比例限制,Hadoop 可能会终止该任务。

这些虚拟内存检查措施有助于避免 Hadoop 集群中的任务过度使用内存而导致资源耗尽或系统不稳定。通过适当地配置虚拟内存限制和比例限制,可以平衡任务执行的资源需求和集群的整体性能。

注意 , 虚拟内存检查仅仅是一种资源管理和保护机制,并不一定意味着任务使用虚拟内存就一定是错误的。**在某些情况下,可能需要根据具体的应用场景和需求来调整虚拟内存限制,以达到最佳的性能和资源利用率。

本操作主要关闭Yarn的虚拟内存检查 , 对Yarn不熟悉的同学可以看下之前对Yarn的的文章 , 以及接下来对Yarn的知识补充

Yarn的使用,安装与部署

点击跳转到Yarn的虚拟内存

实际上我们就是控制Yarn当中Container的资源 , Yarn会默认轮询每个Container是否超过了资源限制, 如果超过了就会kill掉 , 如果我们关闭掉虚拟内存的检查 , 那么默认就会直接检查我们的物理内存

首先关闭Hadoop

stop-hadoop.sh

再到yarn-site.xml文件当中 , 添加以下配置

<property>
	<name>yarn.nodemanager.vmem-check-enabled</name>
	<value>false</value>
</property>

再使用scp分发yarn-site.xml, 重启yarn即可

Hive的基本语法

接下来为了方便操作, 我们使用上一篇文章当中介绍的Beneline方式使用DataGrip客户端进行操作

DDL(库相关)

创建数据库

先进行数据库的操作

语法 :

CREATE DATABASE [IF NOT EXISTS] database_name 
[COMMENT '注释']   		#可选 , 设置注释
[LOCATION hdfs_path]	  #可选 , 设置新建的数据库在hdfs当中的存储路径	
[WITH DBPROPERTIES]		  #可选 , 

若不指定路径LOCATION,其默认路径为${hive.metastore.warehouse.dir}/database_name.db

create database studyHard;

此时没有指定路径, 那么默认在hdfs当中的存储路径应该为 : /user/hive/warehouse , 我们打开Hdfs的Web界面可以进行验证

在这里插入图片描述

现在我们测试指定创建存储路径的创建方式

create database studyHard1 location '/studyHard1';

按照sql语句, studyHard1库应该存在于根目录下的/studyHard1当中

在这里插入图片描述

这下来是带初始键值对的创建库的方式sql

create database studyHard2 with dbproperties ('date'='2023-09-02');

这个dbproperties需要查看特定的查看数据库的方式才能查看 , 我们下面来详细的介绍

查看数据库

语法:

SHOW DATABASES [LIKE '通配符表达式']

like通配符表达式有两种 : * 表示任意个任意字符 , | 表示或的关系

下面我们来测试这两种方式 :

show databases like 'stu*';  

这句是sql是查看所有以stu开头的库名称

在这里插入图片描述

下面我们来测序查看数据库的详细信息

这是语法, 使用DESCRIBE关键字即可

DESCRIBE DATABASE [EXTENDED] db_name

我们先查看刚刚创建的studyHard

DESC DATABASE studyHard

以下图片就是查看结果, 可以看到可以战术名称 , 注释, hdfs的存储位置 , 创建的用户 , 用户的类型 等等

在这里插入图片描述

还记得刚刚创建表的时候带有了dbproperties吗 , 想要查询它就需要EXTENDED扩展选项

DESCRIBE DATABASE EXTENDED studyHard2

可以看到, 我们刚刚指定的dbproperties的值已经能够查询出来了.

在这里插入图片描述

修改数据库

用户可以使用 alter database 命令修改数据库的某些信息 , 其中能修改的信息包括 dbproperties , location , owner user .

注意, 这里的修改数据库的location , 不会修改当前已有的表路径信息 , 而是修改后续创建表的默认的父目录.

语法 :

--修改dbproperties 
ALTER DATABASE database_name SET DBPROPERTIES (property_name=property_value, ...) ;

--修改location
ALTER DATABASE database_name SET LOCATION hdfs_path ;

--修改owner user
ALTER DATABASE database_name SET LOCATION OWNER USER user_name ;

这个语法比较简单, 这里对DBPROPERTIES进行测试

ALTER DATABASE studyHard2 SET DBPROPERTIES ('Alter date'='2023-09-02','date'='YYYY-mm-dd');

这段sql语句会覆盖修改原有的date , 同时也会新增新的Alter date;

在这里插入图片描述

删除数据库

删除数据库是生产环境当中需要谨慎使用的命令 , 慎用!!!

语法 :

DROP DATABASE [IF EXITSTS] database_name [RESTRICT | CASCADE];

RESTRICT 严格模式 , 若数据库不为空, 则会删除失败 , 默认就是该模式 , 算是一个保护性的涉及

CASCADE 级联模式 , 若数据库不为空 , 则会将库中的表一并删除

这里就不对其进行演示了, 这种删除库的操作一定要慎重!!!

DDL(表相关)

创建表(普通语法)

CREATE [TEMPORARY] [EXTERNAL] TABLE [IF NOT EXISTS]
[db_name.]table_name
[(col_name data_type [COMMENT col_comment], ...)]
[COMMENT table_comment]
[PARTITIONED BY (col_name data_type [COMMENT col_comment], ...)]hive
[CLUSTERED BY (col_name, col_name, ...)
[SORTED BY (col_name [ASC|DESC], ...)] INTO num_buckets BUCKETS]
[ROW FORMAT row_format]

可以看到可以选择的关键字其实挺多的 , 我们这里逐步介绍每个关键字的作用

  • TEMPORARY 临时表 :

    该表只在当前会话可见,会话结束,表会被删除。

  • EXTERNAL 外部表 :

    外部表,与之相对应的是内部表(管理表)。管理表意味着 Hive 会完全接管该表,包括元数据和 HDFS 中的数据。而外部表则意味着 Hive 只接管元数据,而不完全接管 HDFS中的数据。

    内部表和外部表的区别注意体现在删除表的时候 :

    当删除内部表时 : 元数据和HDFS当中的数据会被一并删除

    但删除外部表时 : 元数据的数据才会被删除 , HDFS当中的数据一定不会被删除

  • data_type 数据类型 :

    Hive 中的字段类型可分为基本数据类型和复杂数据类型

    基本数据类型 :

    Hive 说明 定义格式
    tinyint 1byte有符号整数
    smallint 2byte有符号整数
    int 4byte有符号整数
    bigint 8byte有符号整数
    boolean 布尔类型,true或者false
    float 单精度浮点数
    double 双精度浮点数
    decimal 十进制精准数字类型 decimal(16,2)
    varchar 字符序列,需指定最大长度,最大长度的范围是[1,65535] varchar(32)
    string 字符串,无需指定最大长度
    timestamp 时间类型
    binary 二进制数据

    复杂数据类型

    类型 说明 定义 取值
    array 数组是一组相同类型的值的集合 array arr[0]
    map map是一组相同类型的键-值对集合 map<string, int> map[‘key’]
    struct 结构体由多个属性组成,每个属性都有自己的属性名和数据类型 struct<id:int, name:string> struct.id

    Hive的基本数据类型可以做类型转换 , 转换的方式包括隐式转换和显示转换 . 可以通过知识补充查看隐式转换和显示转换的具体介绍.

    跳转到Hive的隐式转换与显示转换

  • ROW FORMAT

    SERDE就是Hive的序列化与反序列化过程 , 英文名为 : “Serializer and Deserializer”

    在知识补充里面有对它的介绍 : 点击跳转到 : Hive的序列化与反序列化

    指定 SERDE,SERDE 是 Serializer and Deserializer 的简写。Hive 使用 SERDE 序列化和反序列化每行数据。语法说明如下:

    **语法一:**DELIMITED 关键字表示对文件中的每个字段按照特定分割符进行分割,其会使用默认的 SERDE 对每行数据进行序列化和反序列化。

    ROW FORAMT DELIMITED 
    [FIELDS TERMINATED BY char] 
    [COLLECTION ITEMS TERMINATED BY char] 
    [MAP KEYS TERMINATED BY char] 
    [LINES TERMINATED BY char] 
    [NULL DEFINED AS char]
    

    注:

    fields terminated by :列分隔符

    collection items terminated by : map、struct 和 array 中每个元素之间的分隔符

    map keys terminated by :map 中的 key 与 value 的分隔符

    lines terminated by :行分隔符

    **语法二:**SERDE 关键字可用于指定其他内置的 SERDE 或者用户自定义的 SERDE。例如 JSON

    SERDE,可用于处理 JSON 字符串。

    ROW FORMAT SERDE serde_name [WITH SERDEPROPERTIES]
    (property_name=property_value,property_name=property_value, ...)]
    
  • PARTITIONED BY

    创建分区表 , 这个分区概念以后会重点介绍

  • CLUSTERED BY … SORTED BY…INTO … BUCKETS

    创建分桶表, 这个分桶概念也会在后续详细介绍

  • STORED AS

    指定文件格式,就是这张表所对应的HDFS的文件格式 ,常用的文件格式有,textfile(默认值),sequence file,orc file、parquet file等等。

  • LOCATION

    指定表所对应的HDFS路径,若不指定路径,其默认值为

    ${hive.metastore.warehouse.dir}/db_name.db/table_name , 其实就是默认存储在库的路径下

CTAS建表

CTAS 就是 Create Table As Select

该语法允许用户利用select查询语句返回的结果,直接建表,表的结构和查询语句的结构保持一致,且保证包含select查询语句放回的内容。

CREATE [TEMPORARY] TABLE [IF NOT EXISTS] table_name 
[COMMENT table_comment] 
[ROW FORMAT row_format] 
[STORED AS file_format] 
[LOCATION hdfs_path]
[TBLPROPERTIES (property_name=property_value, ...)]
[AS select_statement]

Create Table Like建表

该语法允许用户复刻一张已经存在的表结构,与上述的CTAS语法不同,该语法创建出来的表中不包含数据。

CREATE [TEMPORARY] [EXTERNAL] TABLE [IF NOT EXISTS] [db_name.]table_name
[LIKE exist_table_name]
[ROW FORMAT row_format] 
[STORED AS file_format] 
[LOCATION hdfs_path]
[TBLPROPERTIES (property_name=property_value, ...)]

以上就是本文的的全部内容了 , 主要介绍了Hive的一些参数配置以及JVM和其他优化 , 后续有介绍了Hive的操作语句和表的操作语句.

在接下来的文章中我将会介绍Hive的详细表操作案例和详细的数据操作案例, 敬请期待吧~

重要知识补充

## Hive的本地模式

Hive的本地模式是一种执行模式,适用于小数据集的查询。在本地模式下,Hive的查询将在单个节点上执行,而不需要分布到大型的Hadoop集群中。这使得查询更加快速,因为数据和计算都在同一台机器上进行。

本地模式的配置方法是设置Hive的配置参数hive.exec.mode.local.auto为true,这将使Hive自动选择在本地模式执行查询。然而,这种模式只能运行一个reducer,因此对于处理大型数据集可能会非常慢。

注意,本地模式的限制在于它可能无法处理多个用户的并发操作,因为每个操作都可能在不同的JVM中运行,导致数据不一致的情况。因此,在处理多个用户操作同一张表时,需要特别注意。

以下图片是对分布式计算引擎的直观概括 :

在这里插入图片描述

## Yarn的虚拟内存

在这里插入图片描述

Yarn的虚拟内存主要通过设置container的内存大小来实现。每个container被分配一定量的虚拟内存,这使得Yarn可以更好地管理内存资源,避免内存消耗过多或者过少的问题。

在启动Yarn时,可以通过调整一些配置参数来调节虚拟内存率或者应用运行时调节内存大小。比如,可以在Yarn的配置文件(yarn-site.xml)中设置yarn.nodemanager.vmem-pmem-ratio参数来调节虚拟内存与物理内存的比例。

此外,Yarn的虚拟内存管理也体现在它如何处理不同类型的应用任务上。例如,对于Map Task和Reduce Task,Yarn会根据预设的虚拟内存比例,为它们分配不同的虚拟内存量。如果应用的虚拟内存需求超过了预设的数值,Yarn会报错并拒绝执行任务。

为了解决这种错误情况,可以在启动Yarn时调整虚拟内存率或者在应用运行时调节内存大小。另外,也可以考虑优化应用的内存使用,例如通过减少不必要的内存占用或者优化数据结构等方式。

## Hive的隐式转换和显示转换

隐式转换和显示转换的转换规则其实和Java中的转换极其相似

隐式转换 :

  1. 任何整数类型都可以隐式地转换为一个范围更广的类型,如tinyint可以转换成int,int可以转换成bigint。
  2. 所有整数类型、float和string类型都可以隐式地转换成double。
  3. tinyint、smallint、int都可以转换为float。
  4. boolean类型不可以转换为任何其它的类型。

显示转换 :

可以借助cast函数完成显示的类型转换

a.语法

cast(expr as <type>) 

b.案例

hive (default)> select '1' + 2, cast('1' as int) + 2;

Hive支持多种数据存储的格式,序列化/反序列化只是其中的一种格式。在Hive中,序列化是对象转化为字节序列的过程,而反序列化则是将字节序列恢复为对象的过程。

序列化的主要作用有两个:一是实现对象的持久化,即将对象转换为字节序列并保存到文件;二是实现对象数据的传输,即在网络上发送对象数据。

反序列化的主要作用则是在Hive加载数据到表中时,将<key,value>对反序列化为Hive表的每一列的值。这样,在处理海量数据时,可以节省大量的时间,因为不需要对数据进行转换。

在Hive中创建表时,可以通过自定义的SerDe或使用Hive内置的SerDe类型来指定数据的序列化和反序列化方式。

HDFS与Hive之间的转换过程

成double。
3. tinyint、smallint、int都可以转换为float。
4. boolean类型不可以转换为任何其它的类型。

显示转换 :

可以借助cast函数完成显示的类型转换

a.语法

cast(expr as <type>) 

b.案例

hive (default)> select '1' + 2, cast('1' as int) + 2;
## Hive的序列化与反序列化

Hive支持多种数据存储的格式,序列化/反序列化只是其中的一种格式。在Hive中,序列化是对象转化为字节序列的过程,而反序列化则是将字节序列恢复为对象的过程。

序列化的主要作用有两个:一是实现对象的持久化,即将对象转换为字节序列并保存到文件;二是实现对象数据的传输,即在网络上发送对象数据。

反序列化的主要作用则是在Hive加载数据到表中时,将<key,value>对反序列化为Hive表的每一列的值。这样,在处理海量数据时,可以节省大量的时间,因为不需要对数据进行转换。

在Hive中创建表时,可以通过自定义的SerDe或使用Hive内置的SerDe类型来指定数据的序列化和反序列化方式。

HDFS与Hive之间的转换过程

在这里插入图片描述

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

大数据从入门到精通(超详细版)之 Hive的配置与基本语法 的相关文章

随机推荐

  • 微信小程序原生开发学习01

    文章目录 一 起步 1 注册一个小程序账号 2 下载安装开发者工具 3 新建小程序项目 二 小程序配置 1 全局配置 1 小程序默认启动页 2 页面路径列表 3 分包
  • 字符串的数字部分加1操作

    字符串如通天塔001 10002 Test990 public static String addOne4Str String str if str null int fIndex 1 for int i 0 i lt str length
  • 2022搭建企业级数据治理体系

    数据治理是企业数据建设必不可少的一个环节 好的数据治理体系可以盘活整条数据链路 最大化保障企业数据的采集 存储 计算和使用过程的可控和可追溯 如何构建企业数据治理体系 企业数据治理过程需要注意哪些问题 总体而言 不能一口一个胖子 路要一步一
  • Pycharm乱码解决大全

    一 运行项目时控制台乱码 最直观的方法就是改控制台的默认编码方式 如果不行 就在Settings的Editor里点击FileEncoding 在下图中三个位置修改编码一致 一般为UTF 8或者GBK 最后Apply并确认后重新运行项目即可
  • 测试用例具体设计方法

    目录 一 根据需求写测试用例 二 测试用例具体的设计方法 1 等价类 2 边界值 3 因果图法 4 正交法 5 场景法 6 错误猜测法 一 根据需求写测试用例 1 首先要保证需求的合理性和正确性 要先验证需求 2 分析需求 把大需求细化成小
  • 机器如何识别花的种类

    惊蛰已过 一声春雷 大地开始解冻 条件允许的话 出去晒晒太阳 看看风景 赏赏花 也可以在央视直播云赏花 十多个机位展示了全国各地不同地区的美丽风景 形色 看到好看的花 但是叫不上名字怎么办 这里推荐一下 形色 一款小众的识花应用 带你遇见全
  • 使用arcpy导出要素类和删除要素类中的要素数据

    需求 目的是在指定的GDB数据库中 将要素数据集SourcePolygon下的北京图层中的Layer字段值等于 KZ 控制指标 的记录先导出到新创建的TempPolygon下 导出的图层名为 ControlIndex 然后再将北京图层中的L
  • java知识点——case

    A continue statement can be used only in a loop continue语句只能在循环中使用 A break statement can t be used only in a loop break语
  • 【计算机视觉

    文章目录 一 检测相关 9篇 1 1 Federated Ensemble YOLOv5 A Better Generalized Object Detection Algorithm 1 2 Zero shot Nuclei Detect
  • 使用WinDbg Preview 查看Windows 10蓝屏Dump文件

    从应用商店安装WinDbg Preview 1 登陆应用商店 搜索WinDbg Preview 2 选择获取 我的Windows 10 系统已经安装过了 3 在启动菜单可以找到WinDbg Preview 4 找到蓝屏文件 并选择使用Win
  • 【Github】错误解决:OpenSSL SSL_read: Connection was reset, errno 10054

    git 报错信息 OpenSSL SSL read Connection was reset errno 10054 Git 中 push 或者 pull 报错 OpenSSL SSL read Connection was reset e
  • arthas的trace、watch、tt、profiler命令的使用

    arthas的trace watch tt profiler命令的使用
  • 通过C语言实现小数整数求原码,反码,补码

    通过C语言实现小数 整数求原码 反码 补码 判断输入的值是整数还是小数 是正是负 求纯整数不含符号的原码 求纯小数不含符号的原码 完善整个原码 符号 小数 整数合在一起 将求原码的函数封装在一个函数里 求反码的函数 求补码的函数 main函
  • Linux-线程学习(上)

    本文导航 内容 所占百分比 线程概念 40 线程与进程区别与联系 20 线程优缺点 10 线程控制 创建 终止 等待 30 线程的概念 谈到线程 我们先从进程说起 我们写的程序从硬盘加载到内存开始运行时 进程就产生了 也就是操作系统开始为这
  • 水仙花数(Java实现)

    春天是鲜花的季节 水仙花就是其中最迷人的代表 数学上有个水仙花数 他是这样定义的 水仙花数 是指一个三位数 它的各位数字的立方和等于其本身 比如 153 1 3 5 3 3 3 现在要求输出所有在m和n范围内的水仙花数 import jav
  • 栈溢出原理

    栈溢出原理 文章目录 栈溢出原理 前言 栈 一 栈溢出原理 二 栈保护技术 三 常发生栈溢出的危险函数 四 可利用的栈溢出覆盖位置 总结 前言 栈 栈是一种LIFO的数据结构 应用程序有一到多个用户态栈 栈自底向上增长 由指令PUSH和PO
  • tcpdump抓包注意事项

    使用tcpdump进行抓包 然后用wireshark进行分析的时候 出现了 Packet size limited during capture 也不算是错误 只是数据包里的内容无法完全查看清楚 经过查询 原因是因为我在Linux下进行抓包
  • es6合并对象

    es5 let name name sea age age 15 person Object assign person name age console log person name sea age 15 es6 let name na
  • golang 读取项目配置文件

    golang读取文件配置 介绍golang项目中配置文件的读取相关内容 包括项目结构 具体实现代码等内容 ref 煎鱼 实际上这只是煎鱼博客项目中的一小部分 项目结构 配置读取相关文件结构如下 config文件夹下存放config yaml
  • 大数据从入门到精通(超详细版)之 Hive的配置与基本语法

    前言 嗨 各位小伙伴 恭喜大家学习到这里 不知道关于大数据前面的知识遗忘程度怎么样了 又或者是对大数据后面的知识是否感兴趣 本文是 大数据从入门到精通 超详细版 的一部分 小伙伴们如果对此感谢兴趣的话 推荐大家按照大数据学习路径开始学习哦