当前位置: 首页 > news >正文

【大数据技术基础】 课程 第8章 数据仓库Hive的安装和使用 大数据基础编程、实验和案例教程(第2版)

第8章 数据仓库Hive的安装和使用

8.1 Hive的安装

8.1.1 下载安装文件

访问Hive官网(http://www.apache.org/dyn/closer.cgi/hive/)下载安装文件apache-hive-3.1.2-bin.tar.gz

下载完安装文件以后,需要对文件进行解压。按照Linux系统使用的默认规范,用户安装的软件一般都是存放在“/usr/local/”目录下。请在Linux系统中打开一个终端,执行如下命令:

sudo tar -zxvf ./apache-hive-3.1.2-bin.tar.gz -C /usr/local   # 解压到/usr/local中
cd /usr/local/
sudo mv apache-hive-3.1.2-bin hive       # 将文件夹名改为hive
sudo chown -R hadoop:hadoop hive          # 修改文件权限

8.1.2 配置环境变量

为了方便使用,可以把hive命令加入到环境变量PATH中,从而可以在任意目录下直接使用hive命令启动,请使用vim编辑器打开“~/.bashrc”文件进行编辑,命令如下:

vim ~/.bashrc

在该文件的最前面一行添加如下内容:

export HIVE_HOME=/usr/local/hive
export PATH=$PATH:$HIVE_HOME/bin

 保存该文件并退出vim编辑器,然后,运行如下命令使得配置立即生效:

source ~/.bashrc

8.1.3 修改配置文件

将“/usr/local/hive/conf”目录下的hive-default.xml.template文件重命名为hive-default.xml,命令如下:

cd /usr/local/hive/conf
sudo mv hive-default.xml.template hive-default.xml

 同时,使用vim编辑器新建一个文件hive-site.xml,命令如下:

cd /usr/local/hive/conf
vim hive-site.xml

在hive-site.xml中输入如下配置信息:

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration><property><name>javax.jdo.option.ConnectionURL</name><value>jdbc:mysql://localhost:3306/hive?createDatabaseIfNotExist=true</value><description>JDBC connect string for a JDBC metastore</description></property><property><name>javax.jdo.option.ConnectionDriverName</name><value>com.mysql.jdbc.Driver</value><description>Driver class name for a JDBC metastore</description></property><property><name>javax.jdo.option.ConnectionUserName</name><value>hive</value><description>username to use against metastore database</description></property><property><name>javax.jdo.option.ConnectionPassword</name><value>hive</value><description>password to use against metastore database</description></property>
</configuration>

8.1.4 安装并配置MySQL

1. 安装MySQL

        这里采用MySQL数据库保存Hive的元数据,而不是采用Hive自带的derby来存储元数据,因此,需要安装MySQL数据库。可以参照“附录B:Linux系统中的MySQL安装及常用操作”,完成MySQL数据库的安装,这里不再赘述。

2. 下载MySQL JDBC驱动程序

为了让Hive能够连接到MySQL数据库,需要下载MySQL JDBC驱动程序。可以到MySQL官网(http://www.mysql.com/downloads/connector/j/)下载mysql-connector-java-5.1.40.tar.gz。

在Linux系统中打开一个终端,在终端中执行如下命令解压缩文件:

cd ~
tar -zxvf mysql-connector-java-5.1.40.tar.gz   #解压

下面将mysql-connector-java-5.1.40-bin.jar拷贝到/usr/local/hive/lib目录下

cp mysql-connector-java-5.1.40/mysql-connector-java-5.1.40-bin.jar  /usr/local/hive/lib

3. 启动MySQL

执行如下命令启动MySQL,并进入“mysql>”命令提示符状态:

service mysql start  #启动MySQL服务
mysql -u root -p   #登录MySQL数据库

4. 在MySQL中为Hive新建数据库

        现在,需要在MySQL数据库中新建一个名称为hive的数据库,用来保存Hive的元数据。MySQL中的这个hive数据库,是与Hive的配置文件hive-site.xml中的“mysql://localhost:3306/hive”对应起来的,用来保存Hive元数据。在MySQL数据库中新建hive数据库的命令,需要在“mysql>”命令提示符下执行,具体如下:

create database hive;

5. 配置MySQL允许Hive接入

需要对MySQL进行权限配置,允许Hive连接到MySQL。

grant all on *.* to hive@localhost identified by 'hive'; 
flush privileges; 

6. 启动Hive

Hive是基于Hadoop的数据仓库,会把用户输入的查询语句自动转换成为MapReduce任务来执行,并把结果返回给用户。因此,启动Hive之前,需要先启动Hadoop集群,命令如下:

cd /usr/local/hadoop
./sbin/start-dfs.sh

 然后,再执行如下命令启动Hive:

cd /usr/local/hive
./bin/hive

8.2 Hive的数据类型

Hive的基本数据类型

类型

描述

示例

TINYINT

1个字节(8位)有符号整数

1

SMALLINT

2个字节(16位)有符号整数

1

INT

4个字节(32位)有符号整数

1

BIGINT

8个字节(64位)有符号整数

1

FLOAT

4个字节(32位)单精度浮点数

1.0

DOUBLE

8个字节(64位)双精度浮点数

1.0

BOOLEAN

布尔类型,true/false

true

STRING

字符串,可以指定字符集

xmu

TIMESTAMP

整数、浮点数或者字符串

1327882394Unix新纪元秒)

BINARY

字节数组

[0,1,0,1,0,1,0,1]

 Hive的集合数据类型

8.3 Hive基本操作

8.3.1 创建数据库、表、视图

1. 创建数据库

创建数据库hive

hive> create database hive;

创建数据库hive,因为hive已经存在,所以会抛出异常,加上if not exists关键字,则不会抛出异常

hive> create database if not exists hive;

2. 创建表

在hive数据库中,创建表usr,含三个属性id,name,age

       hive> use hive;

       hive>create table if not exists usr(id bigint,name string,age int);

在hive数据库中,创建表usr,含三个属性id,name,age,存储路径为“/usr/local/hive/warehouse/hive/usr”

       hive>create table if not exists hive.usr(id bigint,name string,age int)

              >location ‘/usr/local/hive/warehouse/hive/usr’;

在hive数据库中,创建外部表usr,含三个属性id,name,age,可以读取路径“/usr/local/data”下以“,”分隔的数据。

       hive>create external table if not exists hive.usr(id bigint,name string,age int)

              >row format delimited fields terminated by ','

                location ‘/usr/local/data’;

在hive数据库中,创建分区表usr,含三个属性id,name,age,还存在分区字段sex。

       hive>create table hive.usr(id bigint,name string,age int) partition by(sex boolean);

在hive数据库中,创建分区表usr1,它通过复制表usr得到。

       hive> use hive;

       hive>create table if not exists usr1 like usr;

3. 创建视图

创建视图little_usr,只包含usr表中id,age属性

hive>create view little_usr as select id,age from usr;

8.3.2 删除数据库、表、视图

删除数据库

删除数据库hive,如果不存在会出现警告

      hive> drop database hive;

删除数据库hive,因为有if exists关键字,即使不存在也不会抛出异常

      hive>drop database if not exists hive;

删除数据库hive,加上cascade关键字,可以删除当前数据库和该数据库中的表

       hive> drop database if not exists hive cascade;

删除表

删除表usr,如果是内部表,元数据和实际数据都会被删除;如果是外部表,只删除元数据,不删除实际数据

      hive> drop table if exists usr;

删除视图

删除视图little_usr

      hive> drop view if exists little_usr;

8.3.3 修改数据库、表、视图

修改数据库

为hive数据库设置dbproperties键值对属性值来描述数据库属性信息

      hive> alter database hive set dbproperties(‘edited-by’=’lily’);

修改表

重命名表usr为user

      hive> alter table usr rename to user;

为表usr增加新分区

      hive> alter table usr add if not exists partition(age=10);

删除表usr中分区

     hive> alter table usr drop if exists partition(age=10);

把表usr中列名name修改为username,并把该列置于age列后

      hive>alter table usr change name username string after age;

在对表usr分区字段之前,增加一个新列sex

     hive>alter table usr add columns(sex boolean);

删除表usr中所有字段并重新指定新字段newid,newname,newage

     hive>alter table usr replace columns(newid bigint,newname string,newage int);

为usr表设置tblproperties键值对属性值来描述表的属性信息

      hive> alter table usr set tabproperties(‘notes’=’the columns in usr may be null except id’);

修改视图

修改little_usr视图元数据中的tblproperties属性信息

     hive> alter view little_usr set tabproperties(‘create_at’=’refer to timestamp’);

8.3.4 查看数据库、表、视图

查看数据库

查看Hive中包含的所有数据库

      hive> show databases;

查看Hive中以h开头的所有数据库

      hive>show databases like ‘h.*’;

查看表和视图

查看数据库hive中所有表和视图

      hive> use hive;

      hive> show tables;

查看数据库hive中以u开头的所有表和视图

      hive> show tables in hive like ‘u.*’;

8.3.5 描述数据库、表、视图

描述数据库

查看数据库hive的基本信息,包括数据库中文件位置信息等

      hive> describe database hive;

查看数据库hive的详细信息,包括数据库的基本信息及属性信息等

      hive>describe database extended hive;

描述表和视图

查看表usr和视图little_usr的基本信息,包括列信息等

hive> describe hive.usr/ hive.little_usr;

查看表usr和视图little_usr的详细信息,包括列信息、位置信息、属性信息等

hive> describe extended hive.usr/ hive.little_usr;

查看表usr中列id的信息

hive> describe extended hive.usr.id;

8.3.6 向表中装载数据

把目录’/usr/local/data‘下的数据文件中的数据装载进usr表并覆盖原有数据

      hive> load data local inpath ‘/usr/local/data’ overwrite into table usr;

把目录’/usr/local/data‘下的数据文件中的数据装载进usr表不覆盖原有数据

      hive> load data local inpath ‘/usr/local/data’ into table usr;

把分布式文件系统目录’hdfs://master_srever/usr/local/data‘下的数据文件数据装载进usr表并覆盖原有数据

      hive> load data inpath ‘hdfs://master_srever/usr/local/data’

            >overwrite into   table usr;

8.3.7 查询表中数据

该命令和SQL语句完全相同这里不再赘述。

8.3.8 向表中插入数据或从表中导出数据

向表usr1中插入来自usr表的数据并覆盖原有数据

      hive> insert overwrite table usr1

            > select * from usr where age=10;

向表usr1中插入来自usr表的数据并追加在原有数据后

      hive> insert into table usr1

            > select * from usr

            > where age=10;

8.4 Hive应用实例:WordCount

    现在我们通过一个实例——词频统计,来深入学习一下Hive的具体使用。首先,需要创建一个需要分析的输入数据文件,然后编写HiveQL语句实现WordCount算法,在Unix下实现步骤如下:

(1)创建input目录,其中input为输入目录。命令如下:

cd /usr/local/hadoopmkdir input

(2)在input文件夹中创建两个测试文件file1.txt和file2.txt,命令如下:

cd  /usr/local/hadoop/inputecho "hello world" > file1.txtecho "hello hadoop" > file2.txt

(3)进入hive命令行界面,编写HiveQL语句实现WordCount算法,命令如下:

  hive

  hive> create table docs(line string);

  hive> load data inpath 'input' overwrite into table docs;

  hive>create table word_count as

      select word, count(1) as count from

      (select explode(split(line,' '))as word from docs) w

      group by word

      order by word;

执行完成后,用select语句查看运行结果如下:

8.5 Hive编程的优势

        词频统计算法是最能体现MapReduce思想的算法之一,接下来,我们将比较WordCount算法在MapReduce中的编程实现和Hive中编程实现的主要不同点:

1.  采用Hive实现WordCount算法需要编写较少的代码量

        在MapReduce中,wordcount类由63行Java代码编写而成代码位置:%HADOOP_HOME/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.1.jar;

而在Hive中只需要编写7行代码

2.  在MapReduce的实现中,需要进行编译生成jar文件来执行算法,而在Hive中不需要。

        HiveQL语句的最终实现需要转换为MapReduce任务来执行,这都是由Hive框架自动完成的,用户不需要了解具体实现细节。

8.6 本章小结

        Hive是一个构建于Hadoop顶层的数据仓库工具,主要用于对存储在 Hadoop 文件中的数据集进行数据整理、特殊查询和分析处理。Hive在某种程度上可以看作是用户编程接口,本身不存储和处理数据,依赖HDFS存储数据,依赖MapReduce处理数据。

        本章介绍了Hive的安装方法,包括下载安装文件、配置环境变量、修改配置文件、安装并配置MySQL等。Hive支持关系数据库中的大多数基本数据类型,同时Hive还支持关系数据库中不常出现的的3种集合数据类型。Hive提供了类似SQL的语句——HiveQL,可以很方便地对Hive进行操作,包括创建、修改、删除数据库、表、视图等。Hive的一大突出优点是,可以把查询语句自动转化成相应的MapReduce任务去执行得到结果,这样就可以大大节省用户的编程工作量,本章最后通过一个WordCount应用实例,充分展示了Hive的这一优点。

相关文章:

【大数据技术基础】 课程 第8章 数据仓库Hive的安装和使用 大数据基础编程、实验和案例教程(第2版)

第8章 数据仓库Hive的安装和使用 8.1 Hive的安装 8.1.1 下载安装文件 访问Hive官网&#xff08;http://www.apache.org/dyn/closer.cgi/hive/&#xff09;下载安装文件apache-hive-3.1.2-bin.tar.gz 下载完安装文件以后&#xff0c;需要对文件进行解压。按照Linux系统使用的…...

Postman之newman

系列文章目录 1.Postman之安装及汉化基本使用介绍 2.Postman之变量操作 3.Postman之数据提取 4.Postman之pm.test断言操作 5.Postman之newman Postman之newman 1.基础环境node安装1.1.配置环境变量1.2.安装newman和html报告组件 2.newman运行 newman可以理解为&#xff0c;没有…...

Lua 实现继承的一种方式

以下代码来自Loxodon Framework&#xff0c;截取自其中的一段 function class(classname, super)local cls {}cls.__classname classnamecls.__class clscls.base function (self)return cls.superendcls.__type 0cls.super supercls.__index clsif super thensetmetat…...

相机网卡开启巨型帧和关闭节能模式方法

2022 年 8 月 2 日 Tank 阅读次数&#xff08;ip/1年&#xff09;: 26,796 win10为例子 首先在开始菜单搜索&#xff1a;网络连接 对想要设置的网络右键&#xff1a;属性 点 配置 高级里面找到这三个选项&#xff0c;参考下图设置&#xff0c;螃蟹网卡建议关掉所有节能有关的…...

如何在 Ubuntu 22.04 上安装带有 Nginx 的 ELK Stack

今天我们来聊聊如何在 Ubuntu 22.04 服务器上安装 ELK Stack&#xff0c;并集成 Nginx 作为 Web 服务器&#xff0c;同时使用 Let’s Encrypt Certbot 进行 SSL 认证。ELK Stack&#xff0c;包括 Elasticsearch、Logstash 和 Kibana&#xff0c;是一套强大的工具&#xff0c;用…...

Android中的依赖注入(DI)框架Hilt

Hilt 是 Android 提供的一种依赖注入&#xff08;DI&#xff09;框架&#xff0c;它基于 Dagger&#xff0c;目的是简化依赖注入的使用&#xff0c;提供更易用的接口和与 Android 生命周期组件的紧密集成。下面是 Hilt 的详细介绍。 为什么选择 Hilt? 依赖注入的优势&#xf…...

笔记记录 k8s操作

docker下载arm架构的镜像 docker pull centos --platform arm64 其中华为鲲鹏、飞腾CPU采用的是ARM架构,龙芯采用的是MIPS架构,而兆芯、海光CPU采用的是X86架构,申威采用的是Alpha架构 docker查看容器的日志文件目录 docker inspect --format={{.LogPath}} containername…...

掌握Go语言中的异常控制:panic、recover和defer的深度解析

掌握Go语言中的异常控制:panic、recover和defer的深度解析 在Go语言的编程世界中,异常处理是一个不可忽视的话题。Go语言提供了panic、recover和defer三个关键字来处理程序中的异常情况。本文将深入探讨这三个关键字的工作原理、使用场景和最佳实践,帮助读者在实际编程中更…...

SpringBoot项目部署到云服务器全流程

文章目录 一、前期准备&#xff08;一&#xff09;云服务器选择&#xff08;二&#xff09;本地环境准备&#xff08;三&#xff09;数据库准备&#xff08;若项目需要&#xff09; 二、服务器配置&#xff08;一&#xff09;获取服务器信息&#xff08;二&#xff09;重置实例…...

对传统加密算法降维打击?!——量子计算

量子计算 声明&#xff01; 学习视频来自B站up主 泷羽sec 有兴趣的师傅可以关注一下&#xff0c;如涉及侵权马上删除文章&#xff0c;笔记只是方便各位师傅的学习和探讨&#xff0c;文章所提到的网站以及内容&#xff0c;只做学习交流&#xff0c;其他均与本人以及泷羽sec团队无…...

什么是Lodash,有什么特点

什么是 Lodash&#xff1f; Lodash 是一个 JavaScript 工具库&#xff0c;提供了一系列实用的函数来处理常见的编程任务&#xff0c;如数组操作、对象操作、字符串处理等。Lodash 由 John-David Dalton 创建&#xff0c;旨在提供一个更全面、更高效的替代方案&#xff0c;以弥…...

Simulink中Model模块的模型保护功能

在开发工作过程中&#xff0c;用户为想要知道供应商的开发能力&#xff0c;想要供应商的模型进行测试。面对如此要求&#xff0c;为了能够尽快拿到定点项目&#xff0c;供应商会选择一小块算法或是模型以黑盒的形式供客户测试。Simulink的Model模块除了具有模块引用的功能之外&…...

【电子通识】LED的一些基础知识

什么是LED LED是被称为"发光二极管"的半导体&#xff0c;名称取至 "Light Emitting Diode" 的首字母。 从爱迪生1879年发明白炽灯后&#xff0c;白炽灯统治了照明一百多年&#xff0c;为世界带来光明。而在21世纪&#xff0c;白炽灯却早已被取代&#xff0…...

React Native 基础

React 的核心概念 定义函数式组件 import组件 要定义一个Cat组件,第一步要使用 import 语句来引入React以及React Native的 Text 组件: import React from react; import { Text } from react-native; 定义函数作为组件 const CatApp = () => {}; 渲染Text组件...

C语言 蓝桥杯某例题解决方案(查找完数)

蓝桥杯原题&#xff1a; 一个数如果恰好等于它的因子之和&#xff0c;这个数就称为“完数”。例如6 1 2 3.编程找出1000以内的所有完数。 这个题没有很大的难点&#xff0c;与我们上一个解决的问题“质因数分解”不同&#xff0c;它不需要判断因数是否是质数&#xff0c;因此…...

【shodan】(三)vnc漏洞利用

shodan基础&#xff08;三&#xff09; 声明&#xff1a;该笔记为up主 泷羽的课程笔记&#xff0c;本节链接指路。 警告&#xff1a;本教程仅作学习用途&#xff0c;若有用于非法行为的&#xff0c;概不负责。 count count命令起到一个统计计数的作用。 用上节的漏洞指纹来试…...

蚁群算法(Ant Colony Optimization, ACO)

简介 蚁群算法&#xff08;Ant Colony Optimization, ACO&#xff09;是一种基于自然启发的优化算法&#xff0c;由意大利学者马可多里戈&#xff08;Marco Dorigo&#xff09;在1992年首次提出。它受自然界中蚂蚁觅食行为的启发&#xff0c;用于解决离散优化问题。 在自然界…...

python可视化将多张图整合到一起(画布)

这周有点事忙着&#xff0c;没时间重温刚结束的Mathurcup数学建模&#xff0c;这两天也是再看了下&#xff0c;论文还是赶紧挺烂的&#xff0c;但比国赛又有进步&#xff08;说起国赛又不得不抱怨了&#xff0c;基本其余省份都发了&#xff0c;但江西......哎&#xff09;。哎&…...

计算机网络socket编程(5)_TCP网络编程实现echo_server

个人主页&#xff1a;C忠实粉丝 欢迎 点赞&#x1f44d; 收藏✨ 留言✉ 加关注&#x1f493;本文由 C忠实粉丝 原创 计算机网络socket编程(5)_TCP网络编程实现echo_server 收录于专栏【计算机网络】 本专栏旨在分享学习计算机网络的一点学习笔记&#xff0c;欢迎大家在评论区交…...

w055基于web的服装生产管理的设计与实现

&#x1f64a;作者简介&#xff1a;多年一线开发工作经验&#xff0c;原创团队&#xff0c;分享技术代码帮助学生学习&#xff0c;独立完成自己的网站项目。 代码可以查看文章末尾⬇️联系方式获取&#xff0c;记得注明来意哦~&#x1f339;赠送计算机毕业设计600个选题excel文…...

hadoop集群搭建

一、环境准备⼯作&#xff1a; 确保已经按照以下文档安装完毕&#xff1a;虚拟机和远程工具的安装&#xff08;hadoop集群安装01&#xff09;-CSDN博客 Linux设置以及软件的安装(hadoop集群安装02)-CSDN博客 虚拟机的克隆和免密&#xff08;hadoop集群03&#xff09;-CSDN博…...

JVM中TLAB(线程本地分配缓存区)是什么

JVM中TLAB&#xff08;线程本地分配缓存区&#xff09;是什么 简单来说 TLAB&#xff0c;线程本地分配缓存区&#xff0c;是在 Java 堆内存中的一块线程专属的内存区域&#xff0c;每个线程在创建对象时&#xff0c;首先会尝试在自己的 TLAB 区域内分配内存&#xff0c;这样多…...

如何使用 MMPreTrain 框架

如何使用 MMPreTrain 框架进行预训练模型的微调和推理 MMPreTrain 是一个基于 PyTorch 的开源框架&#xff0c;专注于图像分类和其他视觉任务的预训练模型。它提供了丰富的预训练模型和便捷的接口&#xff0c;使得研究人员和开发者可以轻松地进行模型微调和推理。本文将详细介…...

Python的tkinter如何把日志弄进文本框(Text)

当我们用python的Tkinter包给程序设计界面时&#xff0c;在有些时候&#xff0c;我们是希望程序的日志显示在界面上的&#xff0c;因为用户也需要知道程序目前运行到哪一步了&#xff0c;以及程序当前的运行状态是否良好。python的通过print函数打印出来的日志通常显示在后台&a…...

bash笔记

0 $0 是脚本的名称&#xff0c;$# 是传入的参数数量&#xff0c;$1 是第一个参数&#xff0c;$BOOK_ID 是变量BOOK_ID的内容 1 -echo用于在命令窗口输出信息 -$()&#xff1a;是命令替换的语法。$(...) 会执行括号内的命令&#xff0c;并将其输出捕获为一个字符串&#xff…...

嵌入式工程师面试题 - 2024/11/19

欢迎找我进行职业规划&#xff0c;超值的自我投资 -> 嵌入式软件工程师一对一指导 转载请注明来源 1.以下叙述中正确的是&#xff08;&#xff09; A 程序必须包含所有三种基本结构才能成为一种算法 B 我们所写的每条C语句&#xff0c;经过编译最终都将转换成二进制的机器…...

springboot配置https,并使用wss

学习链接 springboot如何将http转https SpringBoot配置HTTPS及开发调试 可借鉴的参考&#xff1a; springboot如何配置ssl支持httpsSpringBoot配置HTTPS及开发调试的操作方法springboot实现的https单向认证和双向认证(java生成证书)SpringBoot配置Https访问的详细步骤Sprin…...

【C语言】连接陷阱探秘(3):形参、实参与返回值

目录 一、形参的 “迷障” 1.1. 定义与功能 1.2. 类型不匹配 1.3. 数量不一致 1.4. 顺序不一致 1.5. 数组形参退化 二、实参的 “暗礁” 2.1. 定义与功能 2.2. 求值顺序 “谜题” 2.3. 悬空指针 “深渊” 三、返回值的 “陷阱” 3.1. 定义与功能 3.2. 陷阱与缺陷 …...

学习笔记030——若依框架中定时任务的使用

定时任务是软件开发中经常使用一个功能。 Java定时任务广泛应用于各种需要定时执行或周期性执行任务的场景&#xff0c;如&#xff1a; 数据备份&#xff1a;定期备份数据库中的数据&#xff0c;确保数据的安全性和可靠性。数据同步&#xff1a;如果有多个数据源需要同步数据…...

基于SpringBoot的数据结构系统设计与实现(源码+定制+开发)

博主介绍&#xff1a; ✌我是阿龙&#xff0c;一名专注于Java技术领域的程序员&#xff0c;全网拥有10W粉丝。作为CSDN特邀作者、博客专家、新星计划导师&#xff0c;我在计算机毕业设计开发方面积累了丰富的经验。同时&#xff0c;我也是掘金、华为云、阿里云、InfoQ等平台…...

利用 Python 和 Selenium 高效启动和管理 Chrome 浏览器

在自动化测试和网页抓取的过程中&#xff0c;Selenium 是最常用的工具之一。其强大的功能可以与浏览器无缝集成&#xff0c;实现复杂的操作。然而&#xff0c;为了提高效率和扩展性&#xff0c;尤其在处理大量任务时&#xff0c;我们可以通过定制化的方法启动 Chrome 浏览器并与…...

外卖系统开发实战:从架构设计到代码实现

开发一套外卖系统&#xff0c;需要在架构设计、技术选型以及核心功能开发等方面下功夫。这篇文章将通过代码实例&#xff0c;展示如何构建一个基础的外卖系统&#xff0c;从需求梳理到核心模块的实现&#xff0c;帮助你快速掌握开发要点。 一、系统架构设计 一个完整的外卖系…...

类和对象(上)--类、类的实例化(对象)、this指针

1.类 1.1定位&#xff1a; 和namespace一样&#xff0c;类也有类域。同样起到既保护又限制的功能。别人不能随意访问类里的东西&#xff0c;得通过特定的方式来访问&#xff08;访问方法和命名空间域一样&#xff0c;三种方法&#xff09;。 1.2作用 在C语言中&#xff0c;…...

使用ENSP实现浮动静态路由

一、项目拓扑 二、项目实现 1.路由器AR1配置 进入系统试图 sys将路由器命名为R1 sysname R1关闭信息中心 undo info-center enable 进入g0/0/0接口 int g0/0/0将g0/0/0接口IP地址配置为1.1.1.1/24 ip address 1.1.1.1 24进入g0/0/1接口 int g0/0/1将g0/0/1接口IP地址配置为2.…...

JavaEE 【知识改变命运】02 多线程(1)

文章目录 线程是什么&#xff1f;1.1概念1.1.1 线程是什么&#xff1f;1.1.2 为什么要有线程1.1.3 进程和线程的区别1.1.4 思考&#xff1a;执行一个任务&#xff0c;是不是创建的线程或者越多是不是越好&#xff1f;&#xff08;比如吃包子比赛&#xff09;1.1.5 ) Java 的线程…...

pytorch官方FasterRCNN代码详解

本博文转自捋一捋pytorch官方FasterRCNN代码 - 知乎 (zhihu.com)&#xff0c;增加了其中代码的更详细的解读&#xff0c;以帮助自己理解该代码。 代码理解的参考Faster-RCNN全面解读(手把手带你分析代码实现)---前向传播部分_手把手faster rcnn-CSDN博客 1. 代码结构 作为 to…...

【线程】Java多线程编程

【线程】Java多线程编程 一、前言一个最简单的多线程编程示例可以使用的工具 二、创建线程的方式三、Thread类中重要的属性和方法3.1 构造方法3.2 常见属性 一、前言 当有多个线程的时候&#xff0c;这些线程的执行顺序是不确定的。这一点&#xff0c;是我们之前提到的操作系统…...

4.2 MySQL存储过程

存储过程是MySQL中用于封装一组 SQL 语句的数据库对象&#xff0c;便于简化重复任务、增强性能和逻辑复用。本文将从多个角度详细解析存储过程的功能、语法和应用场景。 1. 存储过程概述 1.1 什么是存储过程 存储过程&#xff08;Stored Procedure&#xff09;是一段在数据库…...

archlinux安装waydroid

目录 参考资料 注意 第一步切换wayland 第二步安装binder核心模组 注意 开始安装 AUR安裝Waydroid 启动waydroid 设置网络&#xff08;正常的可以不看&#xff09; 注册谷歌设备 安装Arm转译器 重启即可 其他 参考资料 https://ivonblog.com/posts/archlinux-way…...

C语言数学函数库<math.h>的常用函数讲解

math函数 一. 基础数学函数1. fabs(double x) — 绝对值2. fmod(double x, double y) — 余数3. pow(double x, double y) — 幂运算4. sqrt(double x) — 平方根5. cbrt(double x) — 立方根6. hypot(double x, double y) — 计算斜边 二. 对数和指数函数1. exp(double x) — …...

Swift 实现判断链表是否存在环:快慢指针法

文章目录 前言摘要描述题解答案题解代码题解代码分析示例测试及结果时间复杂度空间复杂度总结关于我们 前言 本题由于没有合适答案为以往遗留问题&#xff0c;最近有时间将以往遗留问题一一完善。 LeetCode - #141 环形链表 不积跬步&#xff0c;无以至千里&#xff1b;不积小流…...

借助算力云跑模型

算力平台&#xff1a;FunHPC | 算力简单易用 AI乐趣丛生 该文章只讲述了最基本的使用步骤&#xff08;因为我也不熟练&#xff09;。 【注】&#xff1a;进入平台&#xff0c;注册登录账号后&#xff0c;才能租用。学生认证&#xff0b;实名认证会有免费的算力资源&#xff0…...

Python 版本的 2024详细代码

2048游戏的Python实现 概述&#xff1a; 2048是一款流行的单人益智游戏&#xff0c;玩家通过滑动数字瓷砖来合并相同的数字&#xff0c;目标是合成2048这个数字。本文将介绍如何使用Python和Pygame库实现2048游戏的基本功能&#xff0c;包括游戏逻辑、界面绘制和用户交互。 主…...

Homebrew切换成国内源

将 Homebrew 切换成国内的源可以显著提高软件包的下载速度。以下是详细步骤&#xff0c;帮助你将 Homebrew 的主仓库和核心仓库切换到国内镜像源。这里以中国科学技术大学&#xff08;USTC&#xff09;的镜像源为例&#xff0c;其他镜像源的切换方法类似。 切换 Homebrew 主仓…...

《Shader 入门精要》学习笔记 茵蒂克丝

渲染流水线 《UnityShader入门精要》学习1_cpu设置渲染状态是什么-CSDN博客 UnityShader 基础 《UnityShader入门精要》学习2_unityshader入门精要2-CSDN博客 学习Shader需要的数学基础 《UnityShader入门精要》学习3_透视投影到-1到1空间-CSDN博客 实现一个简单的顶点/…...

小苯吃糖果

一、题目 二、代码——解析 1、3种情况&#xff0c;第一种&#xff1a;他们都相等&#xff1b;第二种&#xff1a;前大后&#xff1b;第三种&#xff1a;后大前 2、转换成列表&#xff0c;使用列表方法进行升序 x,y,z map(int,input().split()) a [x,y,z] a.sort() if a[0…...

Docker+Nginx | Docker(Nginx) + Docker(fastapi)反向代理

在DockerHub搜 nginx&#xff0c;第一个就是官方镜像库&#xff0c;这里使用1.27.2版本演示 1.下载镜像 docker pull nginx:1.27.2 2.测试运行 docker run --name nginx -p 9090:80 -d nginx:1.27.2 这里绑定了宿主机的9090端口&#xff0c;只要访问宿主机的9090端口&#…...

开发工具 - VSCode 快捷键

以下是一些常用的 VS Code 快捷键&#xff08;Windows、macOS 和 Linux 均适用&#xff0c;略有不同&#xff09;&#xff1a; 常用快捷键 功能Windows/LinuxmacOS打开命令面板Ctrl Shift P 或 F1Cmd Shift P打开文件Ctrl OCmd O保存文件Ctrl SCmd S全部保存Ctrl K,…...

session理解

一、术语session   session&#xff1a;中文经常翻译为 ‘会话’&#xff0c;其本来的含义是指有始有终的一系列动作/消息&#xff0c;比如&#xff1a;打电话时从拿起电话拨号到挂断电话这中间的一系列过程可以称为一个session。在阅读技术书籍时我们可能会看到这样的话“在…...

linux服务器中tomcat应用使用root用户启动之后再使用普通用户启动后无法启动问题解决

参考一 参考二 修改用户名用户组为普通用户 在Linux中&#xff0c;您可以使用chown命令修改文件夹的所有者&#xff08;用户名&#xff09;&#xff0c;使用chgrp命令修改文件夹的所属组&#xff08;用户组&#xff09;。还可以使用chown命令同时修改所有者和所属组。 例如&…...