大数据学习(3)

news2024/11/18 8:47:44

大数据学习(3)

  • 1 Hive-SQL-DML语句
    • 1.1 Hive SQL Load 加载数据语句
      • 1.1.1 Load功能
      • 1.1.2 Load语法规则
      • 1.1.3 Load 语法实验
        • 1.1.3.1 Load Data From Local FS
        • 1.1.3.2 Load Data From HDFS
        • 1.1.3.3 Overwrite选项
    • 1.2 Hive SQL Insert 插入数据语句
    • 1.3 Hive SQL Select 基础查询语句
      • 1.3.1 select 语法树
        • 1.3.1.1 select_expr
        • 1.3.1.2 all、distinct
        • 1.3.1.3 where
        • 1.3.1.4 聚合操作
        • 1.3.1.5 group by
        • 1.3.1.6 having
        • 1.3.1.7 order by
        • 1.3.1.8 limit
        • 1.3.1.9 执行顺序
    • 1.4 Hive SQL Join 查询语句
      • 1.4.1 hive join 语法规则
      • 1.4.2 inner join 内连接
      • 1.4.3 left join 左连接
  • 2 Hive函数
    • 2.1 概述
    • 2.2 分类标准
      • 2.2.1 内置函数
      • 2.2.2 用户定义函数UDF分类标准
      • 2.2.3 UDF分类标准扩大化
    • 2.3 常用内置函数

本次主要讲述Hadoop中的Hive的DML语法和函数,Hive数据库也有类似的sql语句。

1 Hive-SQL-DML语句

在数据库中一般分为DDL语言和DML语言,DDL(Data Define Language)是数据定义语言,主要是进行定义/改变表的结构、数据类型、表之间的链接等操作。常用的语句关键字有 CREATE、DROP、ALTER 等。而接下来要学习的是DML(Data Manipulation Language)数据操纵语言,主要是对数据进行增加、删除、修改操作。常用的语句关键字有 INSERT、UPDATE、DELETE 等。

DDL在大数据学习 2中已经介绍过了,主要是对数据库,数据表的建立,删除,更改等操作,比较像面向对象编程中的类,对类进行属性的确认。那么DML进行的操作就是对数据库中实际数据的处理,类比于面向对象编程中的实例。

1.1 Hive SQL Load 加载数据语句

如果不使用Hive sql语句来完成加载数据的话,Hadoop的HDFS系统有一个web端口,可以在其应用中通过上传文件来完成加载数据的操作。

  • 在Hive中建表成功之后,就会在HDFS上创建一个与之对应的文件夹,且文件夹名字就是表名。
  • 文件夹父路径是由参数hive.metastore.warehouse.dir控制,默认值是/user/hive/warehouse。在其中找到自己创建的表,upload对应的文件就行。
  • 不管路径在哪里,只有把数据文件移动到对应的表文件夹下面,Hive才能映射解析成功;
  • 最原始暴力的方式就是使用hadoop fs -put|-mv等方式直接将数据移动到表文件夹下;
  • 但是,Hive官方推荐使用Load命令将数据加载到表中。

1.1.1 Load功能

  • 所谓加载是指:将数据文件移动到与Hive表对应的位置,移动时是纯复制、移动操作。
  • 纯复制、移动指在数据load加载到表中时,Hive不会对表中的数据内容进行任何转换,任何操作。

1.1.2 Load语法规则

LOAD DATA [LOCAL] INPATH 'filepath' [OVERWRITE] INTO TABLE tablename;

1.1.3 Load 语法实验

Load语法有两种操作方法:

  • Load Data From Local FS
  • Load Data From HDFS

1.1.3.1 Load Data From Local FS

这里主要的关键是Local关键字的含义,对于集群的HDFS系统来说,Local就是安装了hadoop的那台主机,并非是其他打开Beeline,Datagrip或者其他连接工具所在的机器。

Load Data From Local FS,是从本机上直接复制已经结构化的数据文件到hdfs的文件系统对应的数据表目录下,完成数据的加载。其本质和hadoop的fs命令是一样的。

LOAD DATA LOCAL INPATH '/root/hivedata/students.txt' INTO TABLE student_local;

结果:

完成的是复制操作,原来的文件并没有发生变化
在这里插入图片描述

查询表的结果:

在这里插入图片描述

1.1.3.2 Load Data From HDFS

对于从HDFS系统中的操作,首先要将文件上传到Hadoop的HDFS中,有两种上传方式,一种是用hadoop fs命令上传,另一种是直接从web端的文件上传。个人认为这主要取决于上传的文件多少和具体的开发环境,网络的设置。

hadoop fs 命令上传:

hadoop fs -put /root/hivedata/students.txt /  

在这里插入图片描述
可以在HDFS系统中看到上传的students.txt,同时原本的txt文件也没有变化。
在这里插入图片描述
在这里插入图片描述
使用Load命令,可以发现加载的方式不同,结果:
在这里插入图片描述

同时可以看到原本在根目录下的txt文件被移动

在这里插入图片描述
查询表的结果:
在这里插入图片描述

1.1.3.3 Overwrite选项

这个补充命令慎用,会将之前加载的数据全部清除,重新写入此次的加载数据。

同时也注意,同一个文件是可以多次加载的,如果sql文件的逻辑不对,可能会一直加载同一个文件,造成数据库里重复。

另外Load指令只是官方推荐给用户使用的加载方法,但是在一些情况下也可以在了解原理的情况下使用其他(非安全但快速)方法来解决加载。

1.2 Hive SQL Insert 插入数据语句

Hive官方推荐加载数据的方式:
清洗数据成为结构化文件,再使用Load语法加载数据到表中。

但是Insert的功能就类似于传统的sql语言,直接通过在控制端的手输脚本来向表中添加数据。**不过Hive运行插入很慢,非常慢。**执行mapreduce,还要申请资源,非常慢。

insert into table Tablename values(......);

在Hive的最常使用的配合就是将查询返回的结果插入到另一张表中。

insert+select

insert into table Tablename select statement1,statement2 from From_tablename; 

insert+select表示:将后面查询返回的结果作为内容插入到指定表中

  • 需要保证查询结果列的树木和需要插入数据表格的列数目一致。
  • 如果查询出来的数据类型和插入表格对应的列数据类型不一致,将会进行转换,但是不能保证一定成功,转换失败的数据会为NULL。

实验结果:

  1. 建表,加载数据
create table student(num int,name string,sex string,age int,dept string)
row format delimited fields terminated by ',';
load data local inpath '/root/hivedata/students.txt' into table student;
  1. 查看student表
    datagrip中可以直接点击表查看里面的数据,也可以用select语句来查看。
    在这里插入图片描述

在这里插入图片描述
3. 再创建一个目标表,只有两个字段

create table student_from_insert(sno int,sname string);

这时新建的student_from_insert表是空的

  1. 使用Insert+select语句
insert into table student_from_insert select num,name from student;
  1. 查看插入之后的student_from_insert
    在这里插入图片描述
    可以看到表中的变化,但是由于底层是完成了一个mr程序,是有点慢的,在vm虚拟机上大概是运行了30s。
    在这里插入图片描述

1.3 Hive SQL Select 基础查询语句

1.3.1 select 语法树

  • FROM后面的参数就是查询操作的对象
  • 表名和列名不区分大小写
select [all|distinct] select_expr1,select_expr2...
from table_reference
[where where_condition]
[group by col_list]
[order by col_list]
[limit [offset,] rows];

1.3.1.1 select_expr

1. 查询所有字段和指定字段

基本和其他的sql语言一样,前面准备和加载t_usa_covid19表格的操作略去。

select *  from t_usa_covid19;

在这里插入图片描述

上面的sql语句是查询表中所有字段的数据,对于数据量比较小的开发情况的话,可以这样暴力拉整个表的数据来看,但是表太大的话也是会爆内存的。

select county, cases, deaths from t_usa_covid19;

在这里插入图片描述

2. 查询常数返回

查询常数返回 此时返回的结果和表中字段无关

select 1 from t_usa_covid19;

在开发的某些情况下有用。
在这里插入图片描述

3. 查询当前数据库

select current_database();

这种写法可以省略FROM关键字,查询当前处于哪个数据库下。
在这里插入图片描述

1.3.1.2 all、distinct

用于指定查询返回结果中重复的行如何处理

  1. 如果没有写参数,则默认值为ALL(返回所有匹配的行)。
  2. DISTINCT指定从结果集中删除重复的行。

如果查询有多个字段时,再加上distinct是对整体去重。

1.3.1.3 where

  • where后面所接的是一个布尔表达式(结果要么是true,要么是false),用于查询过滤,当布尔表达式为true时,返回select后面expr表达式的结果,否则返回空。
  • 在where表达式中,可以使用hive支持的任何函数和运算符,但聚合函数除外

支持比较运算和逻辑运算
比较运算:> < = != >= <= <>
逻辑运算:and or

支持特殊条件
1.空值判断: is null

select * from emp where comm is null;

查询emp表中comm列中的空值
2.between and(在 之间的值)

select * from emp where sal between 1500 and 3000;

查询emp表中sal列中大于1500的小于300的值。
注意:大于等于1500且小于等于3000,1500为下限,3000为上限,上限在后,查询的范围包涵有上下限的值。

3.in

select * from emp where sal in (5000,3000,1500);

查询emp表sal列中等于5000,3000,1500的值。

1.3.1.4 聚合操作

  • SQL中拥有很多可用于计数和计算的内建函数,其使用的语法是:SELECT function(列)FROM 表。
  • 这里我们要介绍的叫做聚合(Aggregate)操作函数,如:Count、Sum、Max、Min、Avg等函数。
  • 聚合函数的最大特点是不管原始数据有多少行记录,经过聚合操作只返回一条数据,这一条数据就是聚合的结果。

常见的聚合操作函数

函数作用例子
返回某列的平均值AVG(column)
返回某列的行数(不包括NULL值)COUNT(column)
返回被选行数COUNT(*)
返回某列的最高值MAX(column)
返回某列的最低值MIN(column)
返回某列的总和SUM(column)
--统计美国总共有多少个县county
select county as ct from t_usa_covid19;
--学会使用as 给查询返回的结果起个别名
select count(county) as county_cnts from t_usa_covid19;
--去重distinct
select count(distinct county) as county_cnts from t_usa_covid19;

--统计美国加州有多少个县
select count(county) from t_usa_covid19 where state = "California";
--统计德州总死亡病例数
select sum(deaths) from t_usa_covid19 where state = "Texas";
--统计出美国最高确诊病例数是哪个县
select max(cases) from t_usa_covid19;

1.3.1.5 group by

  • GROUP BY语句用于结合聚合函数,根据一个或多个列对结果集进行分组;
  • 如果没有group by语法,则表中的所有行数据当成一组。

GROUP BY语法限制:

  • 出现在GROUP BY中select_expr的字段:要么是GROUP BY分组的字段;要么是被聚合函数应用的字段。
  • 原因:避免出现一个字段多个值的歧义。
    1.分组字段出现select_expr中,一定没有歧义,因为就是基于该字段分组的,同一组中必相同;
    2.被聚合函数应用的字段,也没歧义,因为聚合函数的本质就是多进一出,最终返回一个结果。

1.3.1.6 having

  • 在SQL中增加HAVING子句原因是,WHERE关键字无法与聚合函数一起使用。
  • HAVING子句可以让我们筛选分组后的各组数据,并且可以在Having中使用聚合函数,因为此时where,group by已经执行结束,结果集已经确定。

where和having的区别:

  • having是在分组后对数据进行过滤
  • where是在分组前对数据进行过滤
  • having后面可以使用聚合函数
  • where后面不可以使用聚合函数

1.3.1.7 order by

  • ORDER BY 语句用于根据指定的列对结果集进行排序。
  • ORDER BY 语句默认按照升序(ASC)对记录进行排序。如果您希望按照降序对记录进行排序,可以使用DESC关键字

1.3.1.8 limit

  • LIMIT用于限制SELECT语句返回的行数。
  • LIMIT接受一个或两个数字参数,这两个参数都必须是非负整数常量。
  • 第一个参数指定要返回的第一行的偏移量(从Hive 2.0.0开始),第二个参数指定要返回的最大行数。当给出单个参数时,它代表最大行数,并且偏移量默认为0。

1.3.1.9 执行顺序

  • 在查询过程中执行顺序:from>where>group(含聚合)>having >order>select;
    1.聚合语句(sum,min,max,avg,count)要比having子句优先执行
    2.where子句在查询过程中执行优先级别优先于聚合语句(sum,min,max,avg,count)

1.4 Hive SQL Join 查询语句

join查询背景:

  • 根据数据库的三范式设计要求和日常工作习惯来说,我们通常不会设计一张大表把所有类型的数据都放在一起,而
    是不同类型的数据设计不同的表存储。
  • 在这种情况下,有时需要基于多张表查询才能得到最终完整的结果。
  • join语法的出现是用于根据两个或多个表中的列之间的关系,从这些表中共同组合查询数据。

1.4.1 hive join 语法规则

  • 在Hive中,使用最多,最重要的两种join分别是:
    inner join(内连接)、left join(左连接)

table_reference:是join查询中使用的表名。
table_factor:与table_reference相同,是联接查询中使用的表名。
join_condition:join查询关联的条件,如果在两个以上的表上需要连接,则使用AND关键字。

join_table:

  • table_reference [INNER] JOIN table_factor [join_condition]
  • | table_reference YLEFT} [OUTER] JOIN table_reference join_condition

join_condition:

  • ON expression

上面写的公式可能比较抽象,具体的例子。

table1 t_1 inner join table2 t_2
on t_1.id =t_2.id;

上面的结果是一张表,是table1和table2两张表进行内连接。

1.4.2 inner join 内连接

  • 内连接是最常见的一种连接,它也被称为普通连接,其中inner可以省略:inner join= join;
  • 只有进行连接的两个表中都存在与连接条件相匹配的数据才会被留下来。
select e.id,e.name,e_a.city,e_a.street
from employee e inner join employee_address e_a
on e.id =e_a.id;

在这里插入图片描述
同理也可以省略掉inner,直接将inner join写成join。

select e.id,e.name,e_a.city,e_a.street
from employee e join employee_address e_a
on e.id =e_a.id;

隐式连接写法也可以达到相同的结果。(这个写法在mysql和oracle database也比较常见)

select e.id,e.name,e_a.city,e_a.street
from employee e , employee_address e_a
where e.id =e_a.id;

1.4.3 left join 左连接

  • left join中文叫做是左外连接(Left Outer Join)或者左连接,其中outer可以省略,left outer join是早期的写法。
  • left join的核心就在于left左。左指的是join关键字左边的表,简称左表。
  • 通俗解释:join时以左表的全部数据为准,右边与之关联;左表数据全部返回,右表关联上的显示返回,关联不上的显示null返回。
select e.id,e.name,e_conn.phno,e_conn.email
from employee e left join employee_connection e_conn
on e.id =e_conn.id;

在这里插入图片描述

2 Hive函数

2.1 概述

Hive内建了不少函数,用于满足用户不同使用需求,提高SQL编写效率:

  1. 使用show functions查看当下可用的所有函数;
  2. 通过describe function extended funcname来查看函数的使用方式。

2.2 分类标准

Hive的函数分为两大类:内置函数(Built-in Functions)用户定义函数UDF(User-Defined Functions)

2.2.1 内置函数

内置函数可分为:数值类型函数、日期类型函数、字符串类型函数、集合函数、条件函数等;

2.2.2 用户定义函数UDF分类标准

用户定义函数根据输入输出的行数可分为3类:UDF、UDAF、UDTF。

根据函数输入输出的行数:

  • UDF(User-Defined-Function)普通函数,一进一出
  • UDAF(User-Defined Aggregation Function)聚合函数,多进一出
  • UDTF(User-Defined Table-Generating Functions)表生成函数,一进多出

2.2.3 UDF分类标准扩大化

UDF分类标准本来针对的是用户自己编写开发实现的函数。UDF分类标准可以扩大到Hive的所有函数中:包括内置函数和用户自定义函数。

因为不管是什么类型的函数,一定满足于输入输出的要求,那么从输入几行和输出几行上来划分没有任何问题。

千万不要被UD(User-Defined)这两个字母所迷惑,照成视野的狭隘。

比如Hive官方文档中,针对聚合函数的标准就是内置的UDAF类型。

2.3 常用内置函数

内置函数(build-in)指的是Hive开发实现好,直接可以使用的函数,也叫做内建函数。

官方文档地址:https://cwiki.apache.org/confluence/display/Hive/LanguageManual+UDF

内置函数根据应用归类整体可以分为8大种类型,我们将对其中重要的,使用频率高的函数使用进行详细讲解。

------------String Functions 字符串函数------------
select length("itcast");
select reverse("itcast");

select concat("angela","baby");
--带分隔符字符串连接函数:concat_ws(separator, [string | array(string)]+)
select concat_ws('.', 'www', array('itcast', 'cn'));

--字符串截取函数:substr(str, pos[, len]) 或者  substring(str, pos[, len])
select substr("angelababy",-2); --pos是从1开始的索引,如果为负数则倒着数
select substr("angelababy",2,2);
--分割字符串函数: split(str, regex)
--split针对字符串数据进行切割  返回是数组array  可以通过数组的下标取内部的元素 注意下标从0开始的
select split('apache hive', ' ');
select split('apache hive', ' ')[0];
select split('apache hive', ' ')[1];


----------- Date Functions 日期函数 -----------------
--获取当前日期: current_date
select current_date();
--获取当前UNIX时间戳函数: unix_timestamp
select unix_timestamp();
--日期转UNIX时间戳函数: unix_timestamp
select unix_timestamp("2011-12-07 13:01:03");
--指定格式日期转UNIX时间戳函数: unix_timestamp
select unix_timestamp('20111207 13:01:03','yyyyMMdd HH:mm:ss');
--UNIX时间戳转日期函数: from_unixtime
select from_unixtime(1618238391);
select from_unixtime(0, 'yyyy-MM-dd HH:mm:ss');

--日期比较函数: datediff  日期格式要求'yyyy-MM-dd HH:mm:ss' or 'yyyy-MM-dd'
select datediff('2012-12-08','2012-05-09');
--日期增加函数: date_add
select date_add('2012-02-28',10);
--日期减少函数: date_sub
select date_sub('2012-01-1',10);


----Mathematical Functions 数学函数-------------
--取整函数: round  返回double类型的整数值部分 (遵循四舍五入)
select round(3.1415926);
--指定精度取整函数: round(double a, int d) 返回指定精度d的double类型
select round(3.1415926,4);
--取随机数函数: rand 每次执行都不一样 返回一个0到1范围内的随机数
select rand();
--指定种子取随机数函数: rand(int seed) 得到一个稳定的随机数序列
select rand(3);


-----Conditional Functions 条件函数------------------
--使用之前课程创建好的student表数据
select * from student limit 3;

--if条件判断: if(boolean testCondition, T valueTrue, T valueFalseOrNull)
select if(1=2,100,200);
select if(sex ='男','M','W') from student limit 3;

--空值转换函数: nvl(T value, T default_value)
select nvl("allen","itcast");
select nvl(null,"itcast");

--条件转换函数: CASE a WHEN b THEN c [WHEN d THEN e]* [ELSE f] END
select case 100 when 50 then 'tom' when 100 then 'mary' else 'tim' end;
select case sex when '男' then 'male' else 'female' end from student limit 3;

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

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

相关文章

河道垃圾自动识别监测算法 opencv

河道垃圾自动识别监测系统通过pythonopencv网络模型技术&#xff0c;河道垃圾自动识别监测算法对水面上的垃圾进行自动识别&#xff0c;一旦发现垃圾污染将自动发出警报。OpenCV基于C实现&#xff0c;同时提供python, Ruby, Matlab等语言的接口。OpenCV-Python是OpenCV的Python…

Win10文件夹选项在哪里打开?Win10文件夹选项打开方法

Win10文件夹选项在哪里打开&#xff1f;Win10电脑中用户不知道在哪里才能打开文件夹选项&#xff0c;这时候用户随意打开Win10电脑上的一个文件夹&#xff0c;然后点击右上角的选项&#xff0c;打开之后就能打开文件夹选项了&#xff0c;也可以打开电脑的运行窗口&#xff0c;在…

自动化漏洞猎人代码分析

0x00 前言 安全人员可以扫描&#xff0c;网络上悬赏网站等的漏洞&#xff0c;如果能够发现其存在着安全漏洞&#xff0c;则可以通过提交漏洞的方式来获得一定的赏金&#xff0c;国外的这类悬赏的网站比较多&#xff0c;比如hackone&#xff0c;这上面列出了大量的资产信息&…

你不得不知道的箭头函数和普通函数使用区别!

前言 箭头函数是 ES6 新增的一种函数类型&#xff0c;它采用箭头 > 定义函数&#xff0c;也称为 lambda 函数。箭头函数语法更为简洁&#xff0c;用起来很是方便顺手。 但它存在一些需要注意的问题和局限性。在实际使用时&#xff0c;我们需要根据具体情况来选择合适的函数…

【夜深人静学数据结构与算法 | 第九篇】栈与队列

目录 ​前言&#xff1a; 栈&#xff1a; 栈的实际应用&#xff1a; 队列&#xff1a; 队列的实际应用&#xff1a; 总结&#xff1a; 前言&#xff1a; 栈与队列是我们学习的两个经典的数据结构&#xff0c;这两个数据结构应用广泛&#xff0c;在计算机内有很多底层应用…

操作系统2——进程的描述与控制

本系列博客重点在深圳大学操作系统课程的核心内容梳理&#xff0c;参考书目《计算机操作系统》&#xff08;有问题欢迎在评论区讨论指出&#xff0c;或直接私信联系我&#xff09;。 梗概 本篇博客主要介绍操作系统第二章进程的描述与控制的相关知识。 目录 一、前驱图与程序…

大数据从0到1的完美落地之Flume案例1

案例演示 案例演示&#xff1a;AvroMemoryLogger Avro Source&#xff1a;监听一个指定的Avro端口&#xff0c;通过Avro端口可以获取到Avro client发送过来的文件&#xff0c;即只要应用程序通过Avro端口发送文件&#xff0c;source组件就可以获取到该文件中的内容,输出位置为…

数据库详细讲解--下

数据库详细讲解–下 mysql 表外连接 外连接 1.左外连接&#xff08;如果左侧的表完全显示我们就说是左外连接&#xff09; 2.右外连接&#xff08;如果右侧的表完全显示我们就说是右外连接&#xff09; 3.使用左连接&#xff08;显示所有人的成绩&#xff0c;如果没有成绩…

4自由度并联机器狗实现行走功能

1. 功能说明 本文示例将实现R328a样机4自由度并联机器狗行走的功能。 2. 电子硬件 在这个示例中&#xff0c;我们采用了以下硬件&#xff0c;请大家参考&#xff1a; 主控板 Basra主控板&#xff08;兼容Arduino Uno&#xff09;‍ 扩展板 Bigfish2.1扩展板‍ 电池7.4V锂电池 …

【Linux】进程优先级 进程切换 环境变量

目录 一、进程优先级 1、优先级概念 2、优先级特点 3、修改Linux下的优先级 二、进程切换 1、进程特性 2、进程切换 三、环境变量 1、基本概念 2、常见环境变量 3、查看环境变量方法 4、PATH环境变量 5、和环境变量相关的命令 6、环境变量的组织方式 7、通过代码如何获取环境…

io.netty学习(十一)Reactor 模型

目录 前言 传统服务的设计模型 NIO 分发模型 Reactor 模型 1、Reactor 处理请求的流程 2、Reactor 三种角色 单Reactor 单线程模型 1、消息处理流程 2、缺点 单Reactor 多线程模型 1、消息处理流程 2、缺点 主从Reactor 多线程模型 主从Reactor 多线程模型示例 1…

索尼笔记本U盘重装Win10系统教程图解

很多使用索尼笔记本的用户想要给笔记本重装一下Win10系统&#xff0c;但不清楚具体要怎么操作&#xff0c;首先用户需要确保自己的索尼笔记本电脑能够正常联网&#xff0c;还需要准备一个8G以上的U盘&#xff0c;接着按照小编分享的索尼笔记本U盘重装Win10系统教程图解操作&…

怎么高效的通过爬虫获取数据

导语&#xff1a;在当今数字化时代中&#xff0c;获取数据已成为许多企业和个人的重要需求。在快速获取数据时&#xff0c;通过爬虫技术迅速获取网络数据已成为一项重要的技能和技术。然而&#xff0c;在应用爬虫技术前&#xff0c;需要注意一些重要的问题。本文总结了从数据来…

九大数据结构

数据结构想必大家都不会陌生&#xff0c;对于一个成熟的程序员而言&#xff0c;熟悉和掌握数据结构和算法也是基本功之一。数据结构本身其实不过是数据按照特点关系进行存储或者组织的集合&#xff0c;特殊的结构在不同的应用场景中往往会带来不一样的处理效率。 常用的数据结…

IDEA上面书写wordcount的Scala文件具体操作

系列文章目录 IDEA创建项目的操作步骤以及在虚拟机里面创建Scala的项目简单介绍_intellij 创建scala 目录 系列文章目录 1、编写Scala程序 2、更换pom.xml文件 3、更新Maven的依赖文件 4、执行代码即可 总结 前言 本文主要在上述文章的基础上编辑和创建一个WordCount应…

Linux常用命令——ftp命令

在线Linux命令查询工具 ftp 用来设置文件系统相关功能 补充说明 ftp命令用来设置文件系统相关功能。ftp服务器在网上较为常见&#xff0c;Linux ftp命令的功能是用命令的方式来控制在本地机和远程机之间传送文件&#xff0c;这里详细介绍Linux ftp命令的一些经常使用的命令…

【23-06-25:window基础命令学习】

目录 命令提示符cd /? 查看cd 语法 切换文件目录cd /d d:\ 改变当前的驱动器到D盘&#xff0c; 根目录切换到D盘&#xff0c;因为改变了驱动器&#xff0c;所以需要加上 /dDIRmd 命令 创建目录&#xff08;文件夹&#xff09; &#xff0c;也可以直接创建多级子目录![在这里插…

MySql进阶篇(1)

MySql进阶篇 一、存储引擎1.1 MySql体系结构1.2 存储引擎的简介1.3 存储引擎的特点1.3.1 innoDB1.3.2 MyISAM1.3.3 Memory1.3.4 上述总结 1.4 存储引擎的选择 二、索引2.1 索引的概述2.2 索引结构2.2.1 二叉树和红黑树2.2.2 B-Tree&#xff08;多路平衡查找树&#xff09;2.2.3…

基于Java+Swing实现天气预报系统

基于JavaSwing实现天气预报系统 一、系统介绍二、功能展示1.主面2.IP定位城市3.通过城市名称查询天气状态4、查看各城区的天气 三、代码展示四、其他系统五、获取源码 一、系统介绍 系统主要通过输入城市名字&#xff08;可通过电脑IP查询所属城市&#xff0c;查询所属城市IP接…

Linux系统编程(exec函数家族和system函数)

文章目录 前言一、exec函数家族二、system函数介绍三、system函数使用总结 前言 本篇文章我们继续讲解多进程编程中的&#xff0c;exec函数家族和system函数。 一、exec函数家族 exec 函数家族是一组在类Unix操作系统中常用的函数&#xff0c;用于在当前进程中执行一个新的程…