- 博客(974)
- 资源 (24)
- 收藏
- 关注
原创 Spring Boot 多环境配置
不同的环境可能需要不同的环境配置,针对这种情况,不可能手动变更配置文件来适应不同的开发环境,通常需要对项目进行多环境配置,Spring Boot框架提供了两种多环境配置的方式,分别是Profile文件多环境配置和@Profile注解多环境配置。在net.army.boot.config包里创建impl子包,在子包里创建MySQLConfig类。在net.army.boot里创建config子包,在子包里创建DatabaseConfig接口。
2023-06-06 23:05:11
260
原创 Spark RDD实现分组排行榜
使用Spark RDD的groupByKey()算子可以对(key, value)形式的RDD按照key进行分组,key相同的元素的value将聚合到一起,形成(key, value-list),将value-list中的元素降序排列取前N个即可。分组求TopN是大数据领域常见的需求,主要是根据数据的某一列进行分组,然后将分组后的每一组数据按照指定的列进行排序,最后取每一组的前N行数据。同一个学生有多门成绩,现需要计算每个学生分数最高的前3个成绩,期望输出结果如下所示。在控制台查看输出结果。
2023-06-06 22:59:55
195
原创 Spark RDD统计每日新增用户
若同一个用户对应多个访问日期,则最小的日期为该用户的注册日期,即新增日期,其他日期为重复访问日期,不应统计在内。如下图所示,将每个用户访问的最小日期都移到第一列,第一列为有效数据,只统计第一列中每个日期的出现次数,即为对应日期的新增用户数。即2023-05-01新增了3个用户(分别为mike、alice、brown),2023-05-02新增了1个用户(green),2023-05-03新增了两个用户(分别为smith、brian)。已知有以下用户访问历史数据,第一列为用户访问网站的日期,第二列为用户名。
2023-06-06 22:59:42
260
原创 1+X 大数据应用开发(Java)理论题库(中级题4)
Override用于表示该方法是重写了父类的方法,@ Deprecated表示过期,@Overload表示重写,@ SuppressWarnings当你的编码可能存在警告时,比如安全警告,可以用它来消除。所谓声明方法抛出异常,就是当方法本身不知道或者不愿意处理某个可能抛出的异常时,可以选择用throws关键字将该异常提交给调用该方法的方法进行处理。直接选择排序算法思路的核心是:N(N为需要排列的元素个数)从1开始,每一轮从待排数列中选择第N小(或大)的数放到排序列表的第N个位置。
2023-06-06 13:00:40
63
原创 Spark RDD计算总分与平均分
针对成绩表,计算每个学生总分和平均分读取成绩文件,生成lines;定义二元组成绩列表;遍历lines,填充二元组成绩列表;基于二元组成绩列表创建RDD;对rdd按键归约得到rdd1,计算总分;将rdd1映射成rdd2,计算总分与平均分。执行命令:start-dfs.sh执行命令:start-all.sh在/home里创建scores.txt文件在HDFS上创建/scores/input目录,将成绩文件上传至该目录执行命令:执行命令:执行命令:执行上述代码执行命令:执行命令:执行命令:S
2023-06-06 12:17:11
37
原创 Spark RDD容错机制
Spark建议,在将RDD标记为检查点之前,最好将RDD持久化到内存,因为Spark会单独启动一个任务将标记为检查点的RDD的数据写入文件系统,如果RDD的数据已经持久化到了内存,将直接从内存中读取数据,然后进行写入,提高数据写入效率,否则需要重复计算一遍RDD的数据。cache()或者persist()是将数据存储于机器本地的内存或磁盘,当机器发生故障时无法进行数据恢复,而检查点是将RDD数据存储于外部的共享文件系统(例如HDFS),共享文件系统的副本机制保证了数据的可靠性。因此,广播变量是只读的。
2023-06-06 11:21:03
328
原创 Spark RDD持久化机制
Spark会自动监视每个节点上的缓存使用情况,并以最近最少使用的方式从缓存中删除旧的分区数据。从上述代码可以看出,cache()方法调用了无参的persist()方法,两者的默认存储级别都为MEMORY_ONLY,但cache()方法不可更改存储级别,而persist()方法可以通过参数自定义存储级别。Spark中重要的功能之一是可以将某个RDD中的数据保存到内存或者磁盘中,每次需要对这个RDD进行算子操作时,可以直接从内存或磁盘中取出该RDD的持久化数据,而不需要从头计算才能得到这个RDD。
2023-06-06 10:32:52
121
原创 MySQL JDBC详解
JDBC 的顶层是开发人员自己编写的 Java 应用程序,如下图所示。Java 应用程序可以通过集成在 JDK 中的 java.sql 及 javax.sql 包中的 JDBC API 来访问数据库。下面讲解上图中出现的一些 JDBC 重要组件,思维导图如下。JDBC API 包含了 Java 应用程序与各种不同数据库交互的标准接口,如Connection连接接口、Statement操作接口、ResultSet结果集接口、预处理操作接口等,使用这些JDBC接口可以操作各种关系型数据库;
2023-06-06 09:55:14
113
原创 1+X 大数据应用开发(Java)理论题库(中级题3)
文章目录1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950123456789101112131415161718192021222324252627282930313233343536373839404142
2023-06-06 08:44:29
3
原创 Spark RDD分区
在有些情况下,使用Spark自带的分区器满足不了特定的需求。例如,某学生有以下3科三个月的月考成绩数据。科目成绩chinese98math88english96chinese89math96english67chinese88math78english89现需要将每一科成绩单独分配到一个分区中,然后将3科成绩输出到HDFS的指定目录(每个分区对应一个结果文件),此时就需要对数据进行自定义分区。
2023-06-06 08:41:58
44
原创 Spark RDD的创建
将数据集(hello, world, scala, spark, love, spark, happy)存储在三个节点上,节点一存储(hello, world),节点二存储(scala, spark, love),节点三存储(spark, happy),这样对三个节点的数据可以并行计算,并且三个节点的数据共同组成了一个RDD。在编程时,可以把RDD看作是一个数据操作的基本单位,而不必关心数据的分布式特性,Spark会自动将RDD的数据分发到集群的各个节点。不同的是,数据的来源路径不同。
2023-06-05 12:10:52
43
原创 Spark RDD算子
例如,rdd1的元素以(k,v)表示,rdd2的元素以(k, w)表示,进行左外连接时将以rdd1为基准,rdd2中的k与rdd1的k相同的元素将连接到一起,生成的结果形式为(k, (v, Some(w))。例如,rdd1的元素以(k, v)表示,rdd2的元素以(k, w)表示,执行rdd1.cogroup(rdd2)生成的结果形式为(k, (Iterable, Iterable))。fullOuterJoin()算子与数据库的全外连接类似,相当于对两个RDD取并集,两个RDD的记录都会存在。
2023-06-05 12:09:50
34
原创 Spring Boot Application.properties和yaml配置文件
全局配置文件能够对一些默认配置值进行修改。Spring Boot使用一个application.properties或者application.yaml的文件作为全局配置文件,该文件存放在src/main/resource目录或者类路径的/config,一般会选择resource目录。
2023-06-04 19:14:41
280
原创 Spring Boot 加载自定义配置文件
Spring Boot免除了项目中大部分的手动配置,对于一些特定情况,我们可以通过修改全局配置文件以适应具体生产环境,可以说,几乎所有的配置都可以写在application.peroperties或application.yaml文件中,Spring Boot会自动加载全局配置文件从而免除我们手动加载的烦恼。但是,如果我们自定义配置文件,Spring Boot是无法识别这些配置文件的,此时就需要我们手动加载。使用Spring Initializr创建Spring Boot项目——ConfigDemo01。
2023-06-04 19:13:07
683
原创 MySQL 数据定义语言 DDL
前面我们学习的 DML 语言,主要实现对数据的增、删、改等基本操作。而数据定义语言(Data Definition Language,DDL)则是实现对数据结构、操作等的定义。例如,对数据库、数据表、索引等的设计、创建、修改、删除等操作,都属于 DDL 范围。接下来,就让我们一起进入 DDL 的学习之旅。
2023-06-04 19:07:13
65
原创 MySQL 事务处理语言 TCL
事务(Transaction)是数据库操作的最小工作单元,是作为单个逻辑执行的一系列操作(比如上述中的输入取款金额,得到现金,取回磁卡等操作)的集合;这些操作作为一个整体一起向系统提交,要么都执行、要么都不执行。事务是不可再分割的。原子性(Atomicity):事务是数据库的逻辑工作单位,事务中包含的各操作要么都做,要么都不做。一致性(Consistency):事务执行的前后数据都处于合法状态,不会违背任何的数据完整性和逻辑的正确性,这就是“一致”的意思。
2023-06-04 19:06:54
442
原创 MySQL 数据操纵语言 DML
因为 SELECT 查询语句属于数据查询语言 DQL,不属于数据操纵语言 DML,只是在日常工作中,多数研发人员、数据库管理员都习惯性的将 SELECT 语句归入数据操纵语言中,这一点大家需要弄清楚。第一种形式无需指定要插入数据的列名,只需提供被插入的值即可。其中 table 表示的是表名,column1、column2 表示的是要修改的字段名,value1、value2 表示的是修改后的值。值得注意的是,在使用 UPDATE 语句时,通常需要使用 WHERE 子句进行条件限制,用来指定被修改的行。
2023-06-04 19:06:52
241
原创 MySQL 约束控制
我们把讲 3NF 的时候的专业信息表创建出来,并用列级约束的形式设置专业字段为非空。数据的完整性约束(简称“约束”)是在表和字段上强制执行的数据检测规则,是为了防止不规范的数据进入数据库。需要注意,主表在插入记录的时候,外键的值必须能在关联表的关联列中找到,否则插入信息失败。创建外键约束使用的语句是 FOREIGN KEY,其作用为限制两个表的关系,保证表中该字段的值来自于关联表。在 MySQL 中支持的约束有 6 种,分别是:非空约束、主键约束、默认值约束、唯一约束、外键约束和自定义检查约束。
2023-06-04 19:06:39
566
原创 MySQL 子查询
相关子查询执行过程:先在外层查询中取第一行记录,用该记录的相关的属性值(在内层 where 子句中给定的)处理内层查询,若外层的 where 子句返回True值,则这条记录放入结果表中。不相关子查询:子查询的查询条件不依赖于父查询的称为不相关子查询。相关子查询:子查询的查询条件依赖于外层父查询的某个属性值的称为相关子查询,带 EXISTS 的子查询就是相关子查询。所谓子查询就是 select 查询语句中还有 select 查询语句,里面的称为子查询或内查询,外面的称为主查询或外查询。
2023-06-04 19:05:27
45
原创 MySQL 分组统计
关于多行函数,上面所举例子均是直接对整个表进行数据统计。已知在 city 这个表中,有 4079 条记录,在这些记录中,有多个城市属于同一个国家。如果想统计 city 表中各个国家的人口总数该怎么办?分析:countrycode 码相同的城市即属于同一个国家,我们以国家为单位进行分组进行人数统计。结果解析:每个国家都会有一个统计结果,总共有 232 个国家。
2023-06-04 19:03:38
8
原创 MySQL 连接查询
使用该语法,解析引擎会自动探测两个表中相同的字段并设定等值条件,这样的字段可以不止一个,有多少个这样的字段就会生成多少个等值条件。自然连接需要 MySQL 判定表中相同的字段,在有多个相同字段时,如果想指定以某个字段进行等值连接,需要使用 join……左外连接简称左连接,是指在两个表进行连接时,返回左表的全部记录及右表中符合条件的记录,右表没有匹配的记录用 null 补全。右外连接简称右连接,右连接刚好和左连接相反,返回右表的全部记录及左表中符合条件的记录,左表没有匹配的记录用 null 补全。
2023-06-04 19:03:23
717
原创 静态Web服务器搭建
虚拟主机是指在一个主机上运行多个Web网站,每个网站均有自己独立的域名,通过不同的域名可以访问不同的网站。虽然多个Web网站部署在同一台计算机内,但是对于用户是透明的。用户在访问时,只需要在浏览器中输入相应的域名即可。虚拟主机主要分为:基于端口的虚拟主机、基于IP地址的虚拟主机以及基于域名的虚拟主机。可以把虚拟主机配置内容直接写入主配置文件(早期Apache版本)在conf.d目录下建立独立的配置文件(vhost.conf)(建议使用方法)虚拟主机配置文件名称自定,但必须以”.conf”结尾。
2023-06-02 10:10:52
663
原创 执行jar包时出现:Exception in thread “main“ java.lang.UnsupportedClassVersionError
注意:本地重新设置环境变量后,需重新启动IDEA程序,环境才能生效。将本地的java版本设置为和IDEA的java版本相同即可。
2023-05-31 16:07:37
45
原创 MySQL 格式化函数
我们经常会要求按照某种格式输出数据,以方便我们阅读、快速掌握数据信息。前面学习的日期时间函数其实就是一种格式化函数,通过函数把日期转化为我们需要的格式。注意:其中 value 是被格式化的数据,n 表示保留的小数位数。结果解析:可以看到该函数具有四舍五入的功能。接下来给大家介绍的格式化函数是。
2023-05-30 10:52:16
42
原创 MySQL 多行函数
结果解析:求平均值一般会出现小数位,但像人口数这样的数据出现小数位就显得不合适。我们可以结合上一章的求四舍五入的单行函数,把小数点给去掉。多行函数,即组函数,也叫聚合函数,它们的作用是对一组(至少 2 条)记录进行统计计算,并得到统计结果。开始下面实验时,请同学们自行导入上一次实验所下载的 world.sql,并切换数据库。注意:world 示例数据库中的数据仅供 MySQL 操作练习使用,不确保数据真实性。注意:在 round 函数中设置保留 0 位小数,所以结果只有整数部分。
2023-05-30 10:52:05
1169
原创 MySQL 加密函数
MD5 是一种被广泛使用的加密方法,它是一个密码散列函数,可以产生一个 128 位的散列值,这些值按一定规则进行排序。当你的保护对象发生变化后,其 MD5 的值也会不一样,所以 MD5 经常用来验证数据有没有被篡改。sha 和 MD5 一样,也是一个密码散列函数,是 FIFS 认证的安全散列算法,比 MD5 更安全。
2023-05-30 10:49:43
37
原创 MySQL 系统信息函数
当我们需要知道当前 MySQL 数据库的一些基本信息和使用情况的时候,可以使用系统信息函数来获取相关信息,以随时掌握数据库的使用情况。结果解析:如果之前没有使用语句 use 数据库名;来确定数据库的使用,那么返回的结果为 null。其他函数的使用,大家可以自己去尝试。
2023-05-30 10:48:40
1304
原创 MySQL CAST 函数与 CONVERT 函数
接下来笔者给大家介绍的 cast() 函数和 convert() 函数可实现数据在不同类型之间进行转换。注意:在转换为整型的时候,如果遇到无法识别的字符则停止转换,只返回能正常识别的部分。结果解析:decimal(m,n) ,其中 m>n,表示总共 m 位数据,其中小数 n 位,整数 m-n 位。注意:使用convert()函数则是:convert(‘3.12’,signed),得到的结果相同。其他类型之间的转换,读者朋友们可以在自己的 MySQL 数据库中去尝试,就不一一举例了。
2023-05-30 10:48:26
1014
原创 MySQL 条件判断函数
如果 expr 等于其中一个 value 的值,则返回对应 then 后的结果,如果都不等,则返回 else 后面的 default。该函数先判断 value1,如果 value1 不为 null,该函数返回 value1,否则返回 value2。其中 expr 是条件判断表达式,如果 expr 为真返回 value1,否则返回 value2。
2023-05-30 10:47:54
849
原创 MySQL 对字符串使用 STR_TO_DATE() 函数
前面(《MySQL 对日期使用 DATE_FORMAT()函数》)我们利用 date_formate() 函数,按照自己希望的格式来输出日期时间。我们从用户界面接收到的信息都是以字符串的形式在进行传递,如何把字符串转换为日期类型进行存储呢?str_to_date() 函数的用法和 date_format() 基本一致,只是输出数据的类型不同,前提都需要熟悉输出格式,参照上表。结果解析:20231501 转换为日期后得到的月份是 15,超出有效范围,故结果返回 null。
2023-05-30 10:47:24
1066
原创 MySQL 对日期使用 DATE_FORMAT()函数
前面使用日期时间函数,获取到的要么是 yyyy-mm-dd 形式的日期,要么是 hh:MM:ss 形式的时间,或者是 yyyy-mm-dd hh:mm:ss 形式的日期及时间,其输出格式都已经确定。但在日常生活中,而每次提及日期时间信息都有不同的关注侧面,如:我只想知道今天是几号,或者是星期几,或者时间是几点几分。该函数的输出形式非常灵活,可以根据需要进行任意输出格式的搭配,这里就不一一进行举例说明了。DATE_FORMAT ,日期格式化,顾名思义,可以将日期格式化为各种各样的形式。,输出结果为 Wed。
2023-05-30 10:46:23
1138
原创 MySQL 日期时间函数
日期操作是 MySQL 中的常用操作,掌握常用的日期时间函数并熟练组合运用,能够帮助我们解决查询中的许多难题。常用的数值函数如下表所示,函数括号内为输入的参数。结果解析:如果 date1 日期比 date2 日期小,输出为负值。下面使用 SQL 语句对上述日期时间函数进行演示。返回 date1 与 date2 间隔的天数。返回 date 日期添加 n 天后的新日期。返回 date 日期中的年份、月份、日。返回 date 日期是一年中的第几周。
2023-05-30 10:44:04
672
原创 MySQL 数值函数
数值函数用来处理数值方面的运算,能够提高用户的工作效率。常用的数值函数如下表所示,函数括号内为输入的参数。注意:如果 num 中的小数位数小于 n,缺少的位数用 0 补上。注意:如果 num 中的小数位数小于 n,缺少的位数用 0 补上。返回 num 的四舍五入的 n 位小数的值。返回数字 num 截断为 n 位小数的结果。返回大于 num 的最小整数值。返回小于 num 的最大整数值。返回 0 到 1 内的随机值。返回 num 的绝对值。返回 num 的平方根。
2023-05-30 10:42:47
891
原创 1+X 大数据应用开发(Java)理论题库(中级题2)
文章目录1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950123456789101112131415161718192021222324252627282930313233343536373839404142
2023-05-23 20:47:01
88
原创 1+X 大数据应用开发(Java)理论题库(中级题1)
文章目录1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950123456789101112131415161718192021222324252627282930313233343536373839404142
2023-05-23 20:33:34
62
原创 Spring Boot 单元测试
在实际开发中,每当完成一个功能接口或业务方法的编写后,通常都会借助单元测试验证该功能是否正确。Spring Boot对项目的单元测试提供了很好的支持,在使用时,需要提前在项目的pom.xml文件中添加spring-boot-starter-test测试依赖启动器,可以通过相关注解实现单元测试。
2023-05-23 19:32:09
722
1
原创 Spring Boot 热部署
在开发过程中,通常会对一段业务代码不断地修改测试,在修改之后往往需要重启服务,有些服务需要加载很久才能启动成功,这种不必要的重复操作极大地降低了程序开发效率。为此,Spring Boot框架专门提供了进行热部署的依赖启动器,用于进行项目热部署,而无需手动重启项目。
2023-05-23 19:05:17
502
原创 Spring Initializr方式构建Spring Boot项目
总结:使用Spring Boot框架实现Web功能,比在Spring框架里使用Spring MVC实现Web功能简洁很多,不需要Spring配置文件、Spring MVC配置文件,也不需要配置web.xml文件,只要添加了Web依赖,直接就可以使用控制器来进行相应的处理,比如返回字符串数据。在static目录里创建images目录,然后在images目录里放一张图片 - bear.jpg。在static目录里创建css目录,在css目录里创建index.css样式表文件。创建登录页面login.html。
2023-05-23 11:46:11
595
原创 Maven方式构建Spring Boot项目
注意:控制器添加注解符@RestController,该注解为组合注解,等同于Spring中@Controller+@ResponseBody注解。控制器是用于Web访问的,在net.army.boot包里创建controller子包,然后在子包里创建控制器HelloController。创建net.army.boot包,在包里创建启动类HelloWorld01Application。启动应用,查看效果,可以看到,项目启动标语消失了。启动应用程序,查看启动标语。单击【Create】按钮。
2023-05-23 10:33:43
330
原创 XML配置方式SSM框架西蒙购物网
1、只有注册用户成功登录后才可查看商品类别,查看商品,选购商品,生成订单、查看订单2、只有管理员才有权限进入购物网后台管理(用户管理 + 类别管理 + 商品管理 + 订单管理)分层架构:展现层(JSP)控制层(Controller)业务层(Service)数据映射层(Mapper)数据库(DB)数据库simonshop,采用utf8mb4编码单击【确定】按钮创建用户表t_user执行命令:插入4条记录执行命令:3、创建类别表创建类别表结构 - t_categor
2023-05-23 09:57:27
500
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人