实训笔记7.27

news2024/11/15 8:49:06

实训笔记7.27

  • 7.27笔记
    • 一、Hive数据仓库基本概念(处理结构化数据)
      • 1.1 Hive的组成架构
        • 1.1.1 Hive的客户端
        • 1.1.2 Hive的驱动程序
        • 1.1.3 Hive的元数据库
      • 1.2 Hive和数据库的区别
    • 二、Hive的安装配置
    • 三、Hive的相关配置项
    • 四、Hive的基本使用方式
      • 4.1 使用Hive的命令行客户端操作Hive
        • 4.1.1 hive命令行的使用有三种方式
      • 4.2 使用hiveserver2方法操作Hive
      • 4.3 在Hive客户端中也可以直接操作HDFS和Linux的文件系统
    • 五、Hive中HQL语法
      • 5.1 DDL语法
        • 5.1.1 数据库的管理语法
        • 5.1.2 数据表的管理语法
      • 5.2 DML语法
      • 5.3 DQL语法
    • 六、相关代码

7.27笔记

一、Hive数据仓库基本概念(处理结构化数据)

Hive数据仓库相当于是Hadoop的一个客户端,一个类SQL操作的客户端。Hive会使用数据库和数据表的形式进行结构化数据的存储,只不过Hive只提供库和表的结构,真实的表数据还是存放在HDFS上,Hive会使用一个叫做元数据库的概念将表数据和数据表进行关联。同时Hive也可以类SQL的查询语言对表数据进行统计分析,但是类SQL查询语言底层会被hive的驱动程序转换成为MapReduce程序在YARN上进行运行。

1.1 Hive的组成架构

1.1.1 Hive的客户端

Hive的客户端:HiveCli–hive的命令行 Java API等等 是用来编写HQL语言的媒介

1.1.2 Hive的驱动程序

Hive的驱动程序:解析器、编译器、优化器、执行器,四个驱动程序是将HQL语言转换成为MR、Spark、TEZ等分布式计算程序的核心。

1.1.3 Hive的元数据库

Hive的元数据库:hive的元数据库中存储了Hive中创建的数据库、数据表、表字段和字段类型以及表数据和数据表之间的映射关系。 Hive的元数据库不是在Hive中存放的,而是在一个关系型数据库derby、MySQL、SQL Server、Oracle等等中存放。默认情况下如果没有进行任何的配置,hive默认会在derby数据库存放元数据(hive-default.xml.templete默认文件配置的)

1.2 Hive和数据库的区别

虽然Hive使用了数据库类似的SQL语言,但是Hive和数据库完全不是一回事,只是Hive使用了数据库的相关思想简化了我们对海量数据的存储和计算操作。Hive底层的实现和数据库的实现完全不一样,Hive底层的实现还是基于大数据的分布式计算和分布式存储思想实现的,数据库的底层实现是数据库的相关原理性内容。

二、Hive的安装配置

  1. 上传Hive的安装包、解压缩、配置环境变量

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-NRT6V7Yk-1690454364156)(F:/Typora/%E5%AE%9E%E8%AE%ADmd/%E7%AC%AC%E5%8D%81%E5%91%A8/7.27/97ba37bae1cce636fc8710e54e0315c5f172b5733b6f12505b4bc343c180cb08.png)]

  2. 解决Hive和其他软件的依赖冲突问题

    1. Hive的日志框架依赖和Hadoop的框架依赖冲突,将hive的lib目录下的

      log4j-slf4jxxxxx

    2. Hive的guava的第三方依赖和Hadoop的依赖冲突了,将hive的guava依赖删除了,然后将Hadoop下的依赖复制到hive的lib目录下即可

  3. 在Hive中引入一个依赖文件–JDBC连接MySQL的驱动依赖—配置hive的元数据库到MySQL中

  4. 修改hive的相关配置文件

    1. hive-env.sh

      1. export HADOOP_HOME

      2. export HIVE_CONF_DIR

        之所以指定hive的配置文件目录,是因为hive默认提供的配置文件都是一个临时后缀名的文件,更像是一个hive的配置模块,Hive在默认情况下找不到配置文件目录

    2. hive-log4j2.properties

      1. 配置了hive在运行中输出日志的保存目录
      2. 以后hive出现任何的问题(初始化元数据库、hive的HQL执行的问题),如果看不到具体的错误信息,在配置的日志保存目录下的hive.log文件中查看详细的出错信息
      3. 日志主要分为:DEBUG INFO,WARN ERROR
    3. hive-site.xml(需要手动创建)

      1. 这个文件中主要配置hive的相关配置项,配置项默认在hive-default.xml.template文件中都存在,但是如果我们在hive-site.xml文件中配置了相同的配置项,会覆盖hive-default.xml同样的配置。
      2. hive-site.xml文件中第一行和第二行代码是xml文件的核心,如果第一行和第二行出现多余的空格或者少了字符,xml文件就不会解析或者解析失败
      3. 主要先配置了和元数据库有关的四项配置:URL(在xml中 &符合必须使用&标识)、Driver、Username、Password
  5. 使用hive之前,必须先初始化hive的元数据库,初始化只需要做一次,初始化元数据库和在hive-site.xml文件中配置的元数据库有关系的 schematool -initSchema -dbType mysql -verbos

    配置Hive的时候,Hive底层需要MapReduce运行,但是hive的HQL语句转换的MR程序启动多少个map任务,多少个reduce任务都是不一定,因此如果转换的MR的任务书过多,而你的Hadoop集群的计算资源(CPU、内存不足)语法没问题,但是HQL语句执行会报错—报错资源不足:xxxG of xxxG 使用Hive之前,最好在Hadoop的mapred-site.xml和yarn-site.xml文件中把资源调整一下

三、Hive的相关配置项

  1. Hive的表数据在HDFS上存储目录的配置

    Hive存储的表数据默认是在HDFS上存放的,默认存储到了HDFS的/user/hive/warehouse目录下

    Hive安装好以后,默认会给我们提供一个default数据库。如果在hive中我们没有指定使用哪个数据库,那么hive会默认使用default数据库。default数据库中相关表数据都在/user/hive/warehouse路径下存放的 其他数据库的表数据会先在/user/hive/warehouse路径下创建一个xxx.db目录,然后再在这个目录下放对应数据库的表数据

    hive的配置文件有一个配置项可以更改hive表数据的存储目录:

    hive.metastore.warehouse.dir 默认配置的路径就是/user/hive/warehouse路径

  2. Hive的HQL语句执行的时候可以转换成为MR程序、Spark程序、TEZ程序,默认情况下转换成为MR程序hive-default.xml.template中有一个配置项可以指定MR底层的转换规则:

    hive.execution.engine mr

  3. 配置hive的数据库名和表头的显示

    默认情况下,HiveCli-hive的命令行的客户端使用了某个数据库以后无法直观看到我们正在使用哪个数据库,包括查询表数据的时候,只会展示表数据,表字段不会展示。

     <property>      
     	<name>hive.cli.print.header</name>      
     	<value>true</value>  
     </property>   
     <property>      
    	 <name>hive.cli.print.current.db</name>      
     	<value>true</value>  
     </property>
    
  4. hive常用的客户端有两种

    1. Hive的命令行客户端:hive命令 命令行客户端只能在hive安装的节点上使用

    2. Hive的JDBC客户端操作

      如果我们想在其他机器、节点上操作hive,hive命令行客户端就无法使用了,但是我们可以使用JDBC远程连接hive操作hive。但是如果使用jdbc连接hive,那么hive必须启动一个对应的服务hiveserver2,只有启动了这个服务,我们才能使用jdbc远程连接hive。

      hivesever2是hive的远程连接服务,远程连接服务器会启动一个端口,通过端口可以进行通信远程操作Hive,在默认情况下,Hiveserver2没有配置的,我们需要自己配置并且启动。

      1. 配置hive-site.xml文件

      2. 配置Hadoop的core-site.xml文件 是因为hiveserver2启动之后,远程连接是需要用户名和密码的,远程连接的使用的用户名和密码默认是不能访问HDFS的。

      3. 启动hiveserver2:

        nohup hiveserver2 1>/opt/app/hive-3.1.2/hive.log 2>&1 &

        【注意】hiveserver2后端启动的时候,需要将日志输出到一个设置的指定文件中,日志文件赋予777的权限

      4. JDBC连接操作Hive有三种方式

        1. 使用一种叫做beeline客户端连接hiveserver2服务进行操作,beeline是一种命令行工具,只不过命令行工具底层需要通过JDBC的方式去操作hive。beelinehive有集成的。我们可以单独安装
        2. 使用DBeaver连接hiveserver2进行操作,DBeaver连接相关数据库都是使用JDBC的方式进行连接
        3. 使用原生的Java代码去连接hiveserver2进行操作,七步曲

四、Hive的基本使用方式

4.1 使用Hive的命令行客户端操作Hive

好处:只需要启动了HDFS和YARN,就可以直接使用了,不需要启动任何的hive服务

缺点:只能在hive的安装节点上使用

4.1.1 hive命令行的使用有三种方式

  1. hive——————直接执行hive会进入hive的交互式命令行窗口,在窗口中写一行HQL语句,只要一敲回车执行一行HQL语句

  2. hive -e "HQL语句"——————不需要进入hive的交互式命令行也可以快速的执行hive的HQL语句,缺点只能执行一条

  3. hive -f xxx.sql --hiveconf key=value --hivevar key=value

    可以将需要执行的HQL语句封装到一个SQL文件当中,文件当中可以编写多条HQL语句,只需要每一条HQL语句以分号分割即可。

    –hiveconf选项可以增加可以不增加,如果添加了 代表向sql文件传递一个参数,参数在SQL文件可以使用${hiveconf:key}获取参数的值

    –hivevar选项传递的参数需要通过${hivevar:key}

    如果传递多个参数,使用hiveconf传递:

    hive -f xxx.sql --hiveconf key=value --hiveconf key=value

    如果传递多个参数,使用hivevar传递:

    hive -f xxx.sql --hivevar key=value --hivevar key=value

4.2 使用hiveserver2方法操作Hive

好处:可以在任何一台节点,通过JDBC的远程连接方式去远程操作Hive

缺点:因为远程连接需要通过网络传输数据,速度没有直接使用hive客户端快

4.3 在Hive客户端中也可以直接操作HDFS和Linux的文件系统

dfs 选项 HDFS路径

!命令 相关操作—Linux的相关操作

【注意】命令行客户端支持使用sql文件执行多个HQL命令,其中sql文件中可以添加注释,在Hive的SQL文件中 注释语言–空格 注释。 DBeaver中SQL编辑器中也是同样的道理,-- 注释

五、Hive中HQL语法

Hive中提供了类SQL语法进行数据的存储和计算操作,存储的数据也都是以表格和库的形式存在的。因此HQL语言和SQL语言有很多相似之处,但是也有很多的操作不一样的。

5.1 DDL语法

数据库和数据表的管理语法:创建、删除、修改、查询数据库和数据表的语法

5.1.1 数据库的管理语法

  1. 创建语法

    create database [if not exists] database_name 
    [comment   "备注"]     #给数据库加个介绍和备注 
    [location  "hdfs路径"]   #指定数据库的数据在HDFS上的存储位置,如果没有指定,那么默认存储到hdfs的/user/hive/warehouse/xxx.db 
    [with  dbproperties(key=value,key=value)]
    
  2. 修改语法

    数据库不能改名字以及数据库在HDFS上的位置,但是可以修改数据库的dbproperties

    属性值

    alter database database_name set dbproperties('createtime'='20180830');

  3. 查看语法

    show databases:    #查看hive中有哪些数据库
    show dataabases like '名字'  #查询带有这个名字的数据库有哪些
    desc  database  数据库名;  #查看数据库的简略信息
    desc  database  extended 数据库名;   #查看数据库的详细信息
    
  4. 使用语法

    use 数据库名;

  5. 删除数据库语法

    drop database database_name [cascade];

5.1.2 数据表的管理语法

  1. 创建数据表的语法

    CREATE [EXTERNAL] TABLE [IF NOT EXISTS] table_name #external 外部的 
    [(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, ...) #hive中特有的数据表  分桶表 
    [SORTED BY (col_name [ASC|DESC], ...)] INTO num_buckets BUCKETS]  #分桶表的信息
    [ROW FORMAT row_format]  #表字段之间的分隔符 
    [STORED AS file_format]  #hdfs存储的文件的类型格式 默认是文本格式 
    [LOCATION hdfs_path]     #单独指定数据表在hdfs上存储的目录,如果没有指定 那么就在表对应的数据库的路径下
    
  2. Hive中有四种类型的表–一张数据表可能同时满足多个类型

    1. 管理表/内部表

      create table table_name(.......)

      管理表是Hive具备所有权限的一张表,如果把表删除了,那么表数据文件在HDFS上也会同步删除

    2. 外部表

      create external table table_name(......)

      hive对于外部表只具备查询和添加数据的操作,如果外部表删除,只是在hive中把表元数据信息删除了 表数据在hdfs还依然存在

      在有些情况下,我们使用的数据不只只有hive在使用,spark flink可能都在使用这个数据,因此hive如果不使用这个数据了,把表删除了,但是数据是不能删除的,此时这样的表设置成为外部表。

    3. 分区表

      create [external] table  table_name(.......)
      comment "" partitioned by(分区字段 字段类型,第二个分区字段 字段类型)
      row format .......
      

      分区表可以是管理表也可以是外部表,分区表和普通数据表不一样的地方在于,在HDFS存储数据的时候,非分区表是将数据以文件的形式直接存储到数据表所在目录下,而分区表会先在数据表所在目录下创建一个一个文件夹,然后再在文件夹里面放对应分区的数据,文件夹都是按照指定的数值进行操作的。

      如果创建一个分区表,指定一个或者多个分区字段,分区字段的值有多个,那么在数据库表的目录下创建多个不同的文件夹存放不同分区的数据

      分区表的目的是将表数据按照指定的规则分为不同的区域,这样的话以后我们在处理数据的时候可以按照指定的区域获得我们想要的数据。

      分区表需要指定分区字段,分区字段一定不能是表字段

      分区表增加数据的语法:

      insert into table_name partition(分区字段=值) values(表字段值)

    4. 分桶表

      create [external] table  table_name(.......) 
      comment "" partitioned by(分区字段 字段类型,第二个分区字段 字段类型) 
      clustered by(分桶字段--一定表字段)   
      [sorted by (排序字段  asc|desc)]   into   num  buckets; 
      row format .......
      

      分桶表既可以是分区表,也可以是外部表,还可以是内部表。分桶表指的是将最终存储的结果文件存储为指定个数个文件,就相当于是MR程序在执行时,启动了多个reduceTask,每个reudceTask输出一个结果文件。

  3. 修改数据表的语法

    1. 修改表名

      alter table table_name rename to new_table_name

    2. 修改/增加/替换列

      alter table table_name change old_column new_column type

    3. 增加分区信息–不是增加分区字段,而是增加基于现有的分区字段增加一个新的目录

      alter table table_name add partition(分区字段=分区值)

    4. 删除分区信息

      alter table table_name drop partition(分区字段=分区值)

  4. 查看表的相关信息语法

    show tables;  #查看某一个数据库下的所有数据表
    desc 表名    #查看某个表的字段、分区字段
    desc  formatted 表名      #查看某个表的详细信息
    show partitions 表名   #查看某个表有多少个分区
    

5.2 DML语法

5.3 DQL语法

六、相关代码

-- 在hive客户端(命令行、JDBC方式的客户端)中执行HDFS的相关操作
dfs -ls /;
dfs -rm -r /demo;
-- 创建数据库的语法
create database if not exists demo01;--默认数据库数据存放到HDFS的/user/hive/warehouse路径下
create database if not exists demo02
comment "这是一个测试使用的专属数据库"
location "hdfs://192.168.35.101:9000/demo01"  -- 路径我们一般不会指定 默认路径就挺好
with dbproperties("createtime"="2023-7-27","createuser"="zhipeng","name"="demo02");

-- 修改数据库的语法
ALTER database demo02 set dbproperties("createtime"="2023-7-26","tablenum"="3");

-- 查看demo02的数据库信息
desc database demo02;

-- 查看demo02的详细信息
desc database extended demo02;

-- 使用数据库
use demo02;
create table student(student_name string);

-- 删除数据库
drop database demo01; -- 这个命令只能删除空数据库 非空数据库无法使用该命令删除
drop database demo02 cascade; -- 删除非空数据库 把库下的数据表以及表数据一并删除了

-- 表的创建语法
use demo;
-- 1、管理表/内部表
create table if not exists demo(
   username string comment "name",
   password string comment "password"
)comment "this is manager table"
row format delimited fields terminated by ","  lines TERMINATED BY "\n"
STORED AS TEXTFILE;

INSERT INTO demo values("zs","123456");

dfs -cat /user/hive/warehouse/demo.db/demo/000000_0;

-- 删除表
drop table demo;

-- 2、外部表
create external table if not exists demo(
   username string comment "name",
   password string comment "password"
)comment "this is external table"
row format delimited fields terminated by ","  lines TERMINATED BY "\n"
STORED AS SEQUENCEFILE;

-- 3、创建一个管理分区表 学生表 按照学生的性别分区
create table if not exists student(
   student_name string,
   student_age  int,
   student_phone string
)partitioned by(student_sex string)
row format delimited fields terminated by ",";

insert into student partition(student_sex="woman") values("dnn",20,"13566666666");

dfs -cat /user/hive/warehouse/demo.db/student/student_sex=man/000000_0_copy_1;

select * from student where student_sex="man";

-- 4、创建一个多级分区表
create table if not exists student1(
   student_name string,
   student_age  int,
   student_phone string
)partitioned by(student_sex string,student_birthday string)
row format delimited fields terminated by ",";

insert into student1 partition(student_sex="man",student_birthday="2023-07") 
values("qys",20,"1356666666");

-- 创建一个普通的分桶表教师表,要求按照教师的编号分为4个文件存储教师信息 每个文件中需要按照教师的年龄降序排序
create table if not exists teacher(
   teacher_num string,
   teacher_name string,
   teacher_age int
)clustered by (teacher_num) sorted by(teacher_age desc) into 4 buckets;

insert into teacher values("t001","zs",30),
                          ("t002","zs1",28),
                          ("t003","zs2",27),
                          ("t004","zs3",45),
                          ("t005","zs4",50),
                          ("t006","zs5",55),
                          ("t007","zs6",46),
                          ("t008","zs7",39),
                          ("t009","zs8",52),
                          ("t010","zs9",43);
dfs -cat /user/hive/warehouse/demo.db/teacher/000001_0;
-- 查看hive中所有配置项
set;

-- 分桶表的抽样查询  总共设置了4个桶  1 out of 2的意思 从第1个桶开始抽取4/2个桶的数据
select * from teacher tablesample(bucket 1 out of 8);

-- 按比例抽取时 如果抽取某一个数据块的大小小于128M  返回数据块的所有数据
select * from teacher tablesample(0.2 percent);

-- 修改表名
alter table teacher rename to teacher1;

alter table teacher1 change teacher_num teacher_number string;
alter table teacher1 add columns(teacher_phone string);
-- 增加分区
alter table student1 add partition(student_sex="woman",student_birthday="2023-08") 
                          partition(student_sex="no",student_birthday="2023-08");
-- 删除分区 分区下的数据丢失了
alter table student1 drop partition(student_sex="man",	student_birthday="2023-07");
            
--查看所有的数据表
show tables;
desc student1;
desc formatted student1;
show partitions student1;

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

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

相关文章

FS32K144官方提供串口Bootloader对接Matlab串口烧写程序

​​​​​​​ ​​​​​​​ ​​​​​​​ ​​​​​​​ ​​​​​​​ ​​​​​​​ ​​​​​​​ 前言 Bootloader升级工具&#xff1a;可用TTL、232、485&#xff08;硬件收发模式&#xff09;,其中的一种&#x…

DP学习第四篇之不同路径II

DP学习第四篇之不同路径|| 63. 不同路径 II - 力扣&#xff08;LeetCode&#xff09; 一.题目解析 二. 算法原理 状态表示 tips: 经验题目要求。以[i,j]位置为结尾&#xff0c;。。。 dp[i][j]: 走到[i, j]位置时&#xff0c;一共多少种路径 状态转移方程 tips: 用之前或…

【业务功能篇55】Springboot+easyPOI 导入导出

Apache POI是Apache软件基金会的开源项目&#xff0c;POI提供API给Java程序对Microsoft Office格式档案读和写的功能。 Apache POI 代码实现复杂&#xff0c;学习成本较高。 Easypoi 功能如同名字easy,主打的功能就是容易,让一个没见接触过poi的人员 就可以方便的写出Excel导出…

Golang单元测试详解:单元测试的基本使用方法

Golang 单元测试 Golang 中的单元测试是使用标准库 testing 来实现的&#xff0c;编写一个单元测试是很容易的&#xff1a; 创建测试文件&#xff1a;在 Go 项目的源代码目录下创建一个新的文件(和被测代码文件在同一个包)&#xff0c;以 _test.go 为后缀名。例如&#xff0c…

性能优化 - 前端性能监控和性能指标计算方式

性能优化 - 前端性能监控和性能指标计算方式 前言一. 性能指标介绍1.1 单一指标介绍1.2 指标计算① Redirect(重定向耗时)② AppCache(应用程序缓存的DNS解析)③ DNS(DNS解析耗时)④ TCP(TCP连接耗时)⑤ TTFB(请求响应耗时)⑥ Trans(内容传输耗时)⑦ DOM(DOM解析耗时) 1.3 FP(f…

项目接入星火认知大模型!!!

项目接入星火认知大模型demo 导言 随着国内的语言大模型不断兴起&#xff0c;科大讯飞的星火大模型&#xff0c;阿里的通义千问&#xff0c;百度的文心一言等。 这些大模型给我提供了很好的便利 同时星火大模型提供了 开放api功能 使得我们能够将大模型接入到我们自己的项目当…

又一“邪恶版”ChatGPT出现,专为网络犯罪而生

最近&#xff0c;Hackread 分享了一个恶意聊天机器人 WormGPT 的详细信息&#xff0c;该聊天机器人是为帮助网络犯罪分子进行非法活动而创建的。现在&#xff0c;暗网上又出现了一个名为 FraudGPT 的聊天机器人。这是一个基于订阅的人工智能聊天机器人&#xff0c;可以为网络犯…

【AI可视化---04】点亮数据之旅:发现Matplotlib的奇幻绘图世界!用Python挥洒数据音符的创意乐章——这四篇就够了!

晴川历历汉阳树,芳草萋萋鹦鹉洲。 日暮乡关何处是,烟波江上使人愁。 🎯作者主页: 追光者♂🔥 🌸个人简介: 💖[1] 计算机专业硕士研究生💖 🌟[2] 2022年度博客之星人工智能领域TOP4🌟 🏅[3] 阿里云社区特邀专家博主🏅 🏆[4] CSDN-人工…

2023Java 岗面试,进互联网大厂必备 Java 面试八股文真题解析

前言 一般技术面试官都会通过自己的方式去考察程序员的技术功底与基础理论知识。 很多时候&#xff0c;面试官问的问题会和自己准备的“题库”中的问题不太一样&#xff0c;即使做了复盘&#xff0c;下次面试还是不知道该从何处下手。 为此鄙人软磨硬泡才把阿里 P8 专门归纳…

合并两个有序链表——力扣21

题目描述 法一 递归 class Solution { public:ListNode* mergeTwoLists(ListNode *l1, ListNode*l2){if(l1 nullptr){return l2;} else if (l2nullptr){return l1;} else if (l1->val<l2->val){l1->next mergeTwoLists(l1->next, l2);return l1;} else {l2-&g…

常用的快捷键 -VTK快捷键

按键W --------------------- 网格显示模型 按键S --------------------- 曲面显示模型 按键P --------------------- 显示模型包围框 按键F --------------------- 放大到选取点 按键R --------------------- 重置相机视图 按键A ---------------------- 切换演员模式 按…

SSM框架 基础

1.数据库 2.工程 3.pom 4.web.xml 5.spring配置文件头部 6.实体类 7.StudentMapper接口 8. StudentMapper.xml 9.StudentService 10. StudentServiceImpl 11.StudentController 实战 查询所有 StudentMapper StudentService StudentServiceImpl StudentMapper.xml Stude…

使用jmeter进行接口测试

jmeter介绍 JMeter是Apache基金会Jakarta上的一个纯java开源项目&#xff0c;起初用于基于Web的压力测试&#xff08;pressure test&#xff09;&#xff0c;后来其应用范围逐渐扩展到对文件传输FTP&#xff0c;大型数据库&#xff08;JDBC方式&#xff09;&#xff0c;脚本程…

列表的sort方法和sorted的区别

问题&#xff1a;简述一下列表list的sort方法和sorted的区别 sort是应用在list列表上的方法&#xff0c;sorted可以对所有可迭代的对象进行排序操作 list.sort()不会返回对象&#xff0c;会改变原有的list&#xff0c;即直接在原来的list基础上修改(原列表就地排序)&#xff0…

(链表) 剑指 Offer 35. 复杂链表的复制 ——【Leetcode每日一题】

❓ 剑指 Offer 35. 复杂链表的复制 难度&#xff1a;中等 请实现 copyRandomList 函数&#xff0c;复制一个复杂链表。在复杂链表中&#xff0c;每个节点除了有一个 next 指针指向下一个节点&#xff0c;还有一个 random 指针指向链表中的任意节点或者 null。 示例 1&#x…

从容应对,探索CAD辅助命令的优秀实践

在CAD设计中&#xff0c;辅助命令是提升效率和精确度的重要工具。熟练掌握并正确运用CAD中的各种辅助命令对于设计师们来说至关重要。本文将为你介绍一些常用的CAD辅助命令&#xff0c;并详细说明它们的功能和使用方法&#xff0c;帮助你更好地利用这些命令完成高质量的设计工作…

Elasticsearch:使用 ELSER 释放语义搜索的力量:Elastic Learned Sparse EncoderR

问题陈述 在信息过载的时代&#xff0c;根据上下文含义和用户意图而不是精确的关键字匹配来查找相关搜索结果已成为一项重大挑战。 传统的搜索引擎通常无法理解用户查询的语义上下文&#xff0c;从而导致相关性较低的结果。 解决方案&#xff1a;ELSER Elastic 通过其检索模型…

虚拟机(VMware)安装Linux(Ubuntu)安装教程

清华大学开源网站镜像站网址&#xff1a;清华大学开源软件镜像站 | Tsinghua Open Source Mirror 进入之后在搜索框中搜索“ubuntu” 直接点击箭头所指的蓝色字体“ubuntu-20.04.1-desktop-amd64.iso”即可下载

Jmeter介绍以及脚本制作与调试

Jmeter介绍 Jmeter 是 Apache 基金会 Jakarta 上的一个纯 Java 开源项目&#xff0c;起初用于基于 Web 的压力测试&#xff08;pressure test&#xff09;&#xff0c;后来其应用范围逐渐扩展到对文件传输 FTP, 大型数据库&#xff08;JDBC 方式&#xff09;&#xff0c;脚本程…

7.27 作业

1.闹钟 #include "widget.h" #include "ui_widget.h"Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget) {ui->setupUi(this);tid1 startTimer(1);//显示时间计时器ui->pushButton_2->setEnabled(false);//设置停止为不可用…