自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

涤生手记

知道不去做,等于不知道。知行合一。

  • 博客(296)
  • 资源 (1)
  • 论坛 (1)
  • 收藏
  • 关注

原创 Scala系列22:Scala泛型,非变,协变,逆变等使用详解

0.泛型scala和Java一样,类和特质、方法都可以支持泛型。我们在学习集合的时候,一般都会涉及到泛型。所以泛型,简单点理解就是定义(类,方法等)不指定具体数据类型,而在使用时才传入具体使用类型,这样的好处就是支持多类型的复用。0.1定义一个泛型方法在scala中,使用方括号[]来定义类型参数。语法格式def 方法名[泛型名称](..) = { //...}示例说明用一个方法来获取任意类型数组的中间的元素 不考虑泛型直接实现(基于Array[Int]实现) 加

2020-09-08 22:02:20 488

原创 Scala系列21:Scala提取器的使用

0.提取器(Extractor)我们之前已经使用过scala中非常强大的模式匹配功能了,通过模式匹配,我们可以快速匹配样例类中的成员变量。例如:// 1. 创建两个样例类case class Person(name:String, age:Int)case class Order(id:String)def main(args: Array[String]): Unit = { // 2. 创建样例类对象,并赋值为Any类型 val zhangsan:Any = Perso

2020-09-08 21:14:17 112

原创 Scala系列20:Scala中异常捕获与抛出异常

0.异常处理来看看下面一段代码 def main(args: Array[String]): Unit = { val i = 10 / 0 println("你好!") }Exception in thread "main" java.lang.ArithmeticException: / by zero at ForDemo$.main(ForDemo.scala:3) at ForDemo.main(ForDemo.scala)执行程序,可以看到

2020-09-08 14:35:22 372

原创 Scala系列19:Option类型,隐函数以及正则表达式的使用详解

0. Option类型使用Option类型,可以用来有效避免空引用(null)异常。也就是说,将来我们返回某些数据时,可以返回一个Option类型来替代。scala中,Option类型来表示可选值。这种类型的数据有两种形式: Some(x):表示实际的值 None:表示没有值 使用getOrElse方法,当值为None是可以指定一个默认值 0.1示例演示示例1定义一个两个数相除的方法,使用Option类型来封装结果 然后使用模式匹配来打印...

2020-09-07 15:31:52 144

原创 Scala系列18: 模式匹配之简单匹配,匹配类型,守卫,匹配样例类,匹配集合等详解

0.模式匹配scala中有一个非常强大的模式匹配机制,可以应用在很多场景:switch语句 类型查询 使用模式匹配快速获取数据1.简单模式匹配在Java中,有switch关键字,可以简化if条件判断语句。在scala中,可以使用match表达式替代。1.1 语法格式变量 match { case "常量1" => 表达式1 case "常量2" => 表达式2 case "常量3" => 表达式3 case _ => 表达式

2020-09-07 14:40:57 134

原创 Scala系列17:样例类,样例对象以及样例方法使用详解

0.样例类 样例类是一种特殊类,它可以用来快速定义一个用于保存数据的类(类似于Java POJO类),在后续要学习并发编程和spark、flink这些框架也都会经常使用它。0.1定义样例类语法语法格式 在[]里的参数是可选的case class 样例类名([var/val] 成员变量名1:类型1, 成员变量名2:类型2, 成员变量名3:类型3)如果要实现某个成员变量可以被修改,可以添加var 默认为val,可以省略0.2示例 | 定义一个样例类参考代码/**示例...

2020-09-05 18:53:48 549

原创 Scala系列16:trait实战,trait实现调用链模式

1.业务需求我们如果要开发一个支付功能,往往需要执行一系列的验证才能完成支付。例如:进行支付签名校验 数据合法性校验 ...如果将来因为第三方接口支付的调整,需要增加更多的校验规则,此时如何不修改之前的校验代码,来实现扩展呢?2.业务逻辑剖析2.1责任链模式2.2trait调用链【尖叫提示】 类多继承traint方法的调用顺序和构造器的调用顺序是不一致的。 类继承了多个trait后,可以依次调用多个trait中的同一个方法,只要让多个trait中的同一个方法在最...

2020-09-05 17:08:24 557

原创 Scala系列15:抽象,匿名内部类,特质,模板等使用详解与演示

0. 抽象类和Java语言一样,scala中也可以定义抽象类0.1 定义如果类的某个成员在当前类中的定义是不包含完整的,它就是一个抽象类不完整定义有两种情况:方法没有方法体(抽象方法) 变量没有初始化(抽象字段)定义抽象类和Java一样,在类前面加上abstract关键字// 定义抽象类abstract class 抽象类名 { // 定义抽象字段 val 抽象字段名:类型 // 定义抽象方法 def 方法名(参数:参数类型,参数:参数类型...):返回类型

2020-09-05 16:43:00 269

原创 Scala系列14:scala继承,重写,super,类型推断等使用详解

0.Scala继承scala语言是支持面向对象编程的,我们也可以使用scala来实现继承,通过继承来减少重复代码。0.1定义语法scala和Java一样,使用extends关键字来实现继承 可以在子类中定义父类中没有的字段和方法,或者重写父类的方法 类和单例对象都可以从某个父类继承语法class/object 子类 extends 父类 { ..}Copy示例0.2示例 | 类继承 定义一个Person类,再定义一个Student类,继承自Person类

2020-09-04 20:10:57 296

原创 Scala系列13:scala单例对象,main方法,伴生对象,apply方法等使用详解

0.单例对象scala中没有Java中的静态成员,我们想要定义类似于Java的static变量、static方法,就要使用到scala中的单例对象——object.0.1定义单例对象单例对象表示全局仅有一个对象(类似于Java static概念)在scala中定义单例对象和定义类很像,就是把class换成object 在object中定义的成员变量类似于Java的静态变量 可以使用object对象.成员变量或者对象 成员变量等方式直接引用成员变量0.1.1示例示例说明定义一个D

2020-09-04 15:20:29 386

原创 Scala系列12:Scala主构造器与辅助构造器使用详解与演示

0.类的构造器 跟Java一样,当我们创建类对象的时候,会自动调用类的构造器。之前我们创建类对象没有显示调用构造器,那是因为之前使用的都是默认构造器,此外,Scala中构造器分为主构造器和辅助构造器。我们接下来要学习如何自定义构造器。 同样,跟Java/C++一样,Scala可以有任意多的构造器,在Scala里,有一个主构造器和任意多的辅助构造器。1.主构造器我们学习过,Java的构造器,有构造列表和构造代码块class Person { // 成...

2020-09-03 19:07:47 387 1

原创 Scala系列11:Scala类与对象,成员方法与变量,修饰符等详解

0.类和对象scala是支持面向对象的,也有类和对象的概念。我们依然可以基于scala语言来开发面向对象的应用程序。0.1创建类和对象用法使用class来定义一个类 使用new来创建对象示例创建一个Person类,并创建它的对象步骤创建一个scala项目,并创建一个Object 添加main方法 创建类和对象实现在IDEA中创建项目,并创建一个Object(main方法必须放在Object中) 添加main方法 创建一个Person类object _01Cl

2020-09-03 17:08:38 364

原创 Scala系列10:函数式编程groupBy与排序sorted详解

0.Scala函数式编程我们将来使用Spark/Flink的大量业务代码都会使用到函数式编程。下面这些事开发中常用的函数式编程。注意这些函数都是操作 Scala 集合的,一般会进行两类操作:转换操作(transformation )和行动操作(actions)(有些人喜欢叫他为聚合操作)。第一种操作类型将集合转换为另一个集合,第二种操作类型返回某些类型的值。遍历( foreach ) 映射( map ) 映射扁平化( flatmap ) 过滤( filter ) 是否存在( exists )

2020-09-02 19:09:51 371

原创 Scala系列9:聚合操作reduce,filter,reduceLeft,reduceRight,fold的使用详解

0.Scala函数式编程我们将来使用Spark/Flink的大量业务代码都会使用到函数式编程。下面这些事开发中常用的函数式编程。注意这些函数都是操作 Scala 集合的,一般会进行两类操作:转换操作(transformation )和行动操作(actions)(有些人喜欢叫他为聚合操作)。第一种操作类型将集合转换为另一个集合,第二种操作类型返回某些类型的值。遍历( foreach ) 映射( map ) 映射扁平化( flatmap ) 过滤( filter ) 是否存在( exists )

2020-09-02 16:25:49 1526

原创 Scala系列8:函数式编程之map,flatten,flatmap的使用详解

0.Scala函数式编程我们将来使用Spark/Flink的大量业务代码都会使用到函数式编程。下面这些事开发中常用的函数式编程。注意这些函数都是操作 Scala 集合的,一般会进行两类操作:转换操作(transformation )和行动操作(actions)(有些人喜欢叫他为聚合操作)。第一种操作类型将集合转换为另一个集合,第二种操作类型返回某些类型的值。遍历( foreach ) 映射( map ) 映射扁平化( flatmap ) 过滤( filter ) 是否存在( exists )

2020-09-02 14:49:53 517

原创 Scala系列7:函数式编程之foreach,forall的使用详解

0.Scala函数式编程我们将来使用Spark/Flink的大量业务代码都会使用到函数式编程。下面这些事开发中常用的函数式编程。遍历( foreach ) 映射( map ) 映射扁平化( flatmap ) 过滤( filter ) 是否存在( exists ) 排序( sorted 、 sortBy 、 sortWith ) 分组( groupBy ) 聚合计算( reduce ) 折叠( fold )1. foreach的使用详解【1.1语法结构】foreach(f

2020-09-02 11:23:03 372

原创 Scala系列6:Scala中Array,BufferArray,元组,list,set,map等集合使用详解

Scala中集合类的序列有:数组,元组,列表,Set集,Map映射,其中数组,列表,Set,Map又分为可变和不可变两种。下面就此详细展开介绍使用。0.数组的使用详解scala中数组的概念是和Java类似,可以用数组来存放一组数据。scala中,有两种数组,一种是定长数组,另一种是变长数组。0.1 定长数组定长数组指的是数组的长度是不允许改变的。通过指定长度定义数组,语法格式如下:val/var 变量名 = new Array[元素类型](数组长度) //方式1:通过指定...

2020-09-01 17:09:25 346

原创 Scala系列5:轻松搞定Scala中方法与函数的区别与使用

0.方法介绍一个类可以有自己的方法, scala中的方法和Java方法类似。 但scala与Java定义方法的语法是不一样的, 而且scala支持多种调用方式。1.定义方法2.方法参数 *默认参数 *带名参数 *变长参数3.方法返回值类型推断4.方法调用方式 *后缀调用法 *中缀调用法 *花括号调用法 *无括号调用法 0.1.定义方法定义方法的语法格式:

2020-09-01 10:59:48 331

原创 Scala系列4:轻松搞定Scala中for,if,while,块表达式等

0.条件表达式 条件表达式一般就是if表达式, if表达式可以根据给定的条件是否满足, 根据条件的结果(真或假) 决定执行对应的操作。 scala条件表达式的语法和Java一样。0.1有返回值的if条件表达式尖叫提示:在scala中,跟Java不同, 条件表达式也是有返回值的scala> val sex = "male"sex: String = malescala> val result = if(sex == "male") 1 else 0result:...

2020-08-30 23:21:28 1424

原创 Scala系列3:轻松搞定Scala变量与数据类型,运算符等基础语法

0. Scala中的数据类型 因为Scala底层是Jvm,所以Scala和Java一样,有7种数值类型Byte、Char、Short、Int、Long、Float和Double(scala里无包装类型)和一个Boolean类型(都是大写的类型),其他Java支持的数据类型如String类型,Scala一般都支持。但是跟Java不同的是这些都是类,在Scala里并不刻意区分基本类型和引用类型。1.Scala中变量的使用与演示1.1 scala中变量的使用1.在scala中, 可以...

2020-08-30 08:03:12 1329

原创 Scala系列1:为什么大数据需要学习Scala?

0.什么是Scala? Scala是运行在 JVM 上的多范式编程语言, 同时支持面向对象和面向函数编程,早期, scala刚出现的时候, 并没有怎么引起重视, 随着Spark和Kafka这样基于scala的大数据框架的兴起, scala逐步进入大数据开发者的眼帘。 scala的主要优势是它的表达性。1.为什么使用scala?开发大数据应用程序(Spark程序、 Flink程序) 表达能力强, 一行代码抵得上Java多行, 开发速度快 兼容Java, 可以访问庞大的Java类库, 例如..

2020-08-29 21:08:39 1100

原创 Hive内嵌表生成函数UDTF:explode,posexplode,json_tuple,parse_url_tuple,stack

0.Hive内嵌表生成函数Built-in Table-Generating Functions (UDTF)普通的用户定义函数,如concat(),接受单个输入行并输出单个输出行。相反,表生成函数将单个输入行转换为多个输出行 Row-set columns types Name(Signature) Description T explode(ARRAY<T> a) E

2020-07-06 19:55:58 1939

原创 Hive内嵌字符处理函数:get_json_object,parse_url

1.Hive内嵌函数对Json字符和网址的解析处理 Return Type Name(Signature) Description string parse_url(string urlString, string partToExtract [, string keyToExtract]) Returns...

2020-07-06 19:08:42 1279

原创 Hive内嵌字符处理函数:regexp_extract,regexp_replace,split,replace,translate

1. Return Type Name(Signature) Description regexp_extract(string subject, string pattern, int index) Returns the string extracted using the p...

2020-07-06 18:25:56 1742

原创 Hive内嵌集合函数:size,map_keys,map_values,array_contains,sort_array等详解

0.hive官方函数解释 hive官网函数大全地址:HIVE官网函数大全地址Collection Functions Return Type Name(Signature) Description int size(Map<K.V>) Returns the number of elements in the map type. int ...

2020-07-06 17:42:15 2135

原创 真正让你明白Hive调优系列3:笛卡尔乘积,小表join大表,Mapjoin等问题
原力计划

0.Hive中的优化分类 真正想要掌握Hive的优化,要熟悉相关的MapReduce,Yarn,hdfs底层源码,明晰Hive的底层执行流程。真正让你明白Hive调优系列,会征对下面分类逐一介绍。大类1:参数优化文件输入前看是否需要map前合并小文件 控制map个数,根据实际需求确认每个map的数据处理量,split的参数等 Map输出是否需要启动压缩,减少网络传输,OOM处理等 控制redcue个数,控制每个reduce的吞吐量,OOM处理等 是否将common-join转换成...

2020-07-04 20:39:09 4386 4

原创 大多数开发人员都弄错的Hive与MapReduce小文件合并问题
原力计划

进来公司搞小文件治理(小于10Mb),小文件太多的危害就不此赘述了。公司的开发人员提供的小文件治理配置如下:-- 设置小文件合并set hive.merge.mapfiles=true;set hive.merge.mapredfiles=true;set hive.merge.size.per.task = 256000000 ;set hive.merge.smallfiles.avgsize= 256000000 ; 看上去配置的没啥问题,不管是Map-only,还...

2020-07-02 22:58:00 4117 3

原创 数据仓库常见建模方法与建模实例演示
原力计划

1.数据仓库建模的目的? 为什么要进行数据仓库建模?大数据的数仓建模是通过建模的方法更好的组织、存储数据,以便在 性能、成本、效率和数据质量之间找到最佳平衡点。一般主要从下面四点考虑访问性能:能够快速查询所需的数据,减少数据I/O 数据成本:减少不必要的数据冗余,实现计算结果数据复用,降低大数 据系统中的存储成本和计算成本 使用效率:改善用户应用体验,提高使用数据的效率 数据质量...

2020-04-14 15:52:09 10566 2

原创 真正让你明白Hive参数调优系列1:控制map个数与性能调优参数

本系列几章系统地介绍了开发中Hive常见的用户配置属性(有时称为参数,变量或选项),并说明了哪些版本引入了哪些属性,常见有哪些属性的使用,哪些属性可以进行Hive调优,以及如何使用的问题。以及日常Hive开发中如何进行性能调优。1.Hive有哪些参数,如何查看这些参数Hive自带的配置属性列表封装在HiveConfJava类中,因此请参阅该HiveConf.java文件以获取Hi...

2019-11-07 15:48:41 13787 13

原创 真正让你明白Hive参数调优系列2:如何控制reduce个数与参数调优

相比map个数的控制复杂性,reduce个数的设定要相对简单多了,reduce的个数一般最后决定了输出文件的个数,二者相等,如果想多输出文件的个数(这样文件变小,但有可能程序变慢),那么可以人为增加reduce个数。如果想减少文件个数,也可以手动较少reduce个数(同样可能程序变慢)。但实际开发中,reduce的个数一般通过程序自动推定,而不人为干涉,因为人为控制的话,如果使用不当...

2019-11-07 15:48:05 4099 3

原创 玩转CSS中浮动与定位的原理与使用

1. 文档流文档流,是指盒子按照html标签编写的顺序依次从上到下,从左到右排列,块元素占一行,行内元素在一行之内从左到右排列,先写的先排列,后写的排在后面,每个盒子都占据自己的位置。2. 浮动float特性1、浮动元素有左浮动(float:left)和右浮动(float:right)两种2、浮动的元素会向左或向右浮动,碰到父元素边界、浮动元素、未浮动的元素才停下来3、相邻浮...

2019-07-22 15:18:01 1067

原创 玩转CSS中块元素、内联元素、内联块元素

元素就是标签,布局中常用的有三种标签,块元素、内联元素、内联块元素,了解这三种元素的特性,才能熟练的进行页面布局。1.块元素块元素,也可以称为行元素,布局中常用的标签如:div、p、ul、li、h1~h6、dl、dt、dd等等都是块元素,它在布局中的行为:支持全部的样式 如果没有设置宽度,默认的宽度为父级宽度100%盒子占据一行、即使设置了宽度<!DOCTYP...

2019-07-22 11:21:48 5350 2

原创 轻松搞定CSS元素溢出的使用与注意事项

当子元素的尺寸超过父元素的尺寸时,需要设置父元素显示溢出的子元素的方式,设置的方法是通过overflow属性来设置。1.overflow的设置项1、visible 默认值。内容不会被修剪,会呈现在元素框之外。2、hidden 内容会被修剪,并且其余内容是不可见的,此属性还有清除浮动、清除margin-top塌陷的功能。3、scroll 内容会被修剪,但是浏览器会显示滚动条以便...

2019-07-22 10:46:19 664

原创 玩转页面布局与CSS盒子模型解析

1.页面布局概述布局也可以叫做排版,它指的是把文字和图片等元素按照我们的意愿有机地排列在页面上,布局的方式分为两种:1、table布局:通过table元素将页面空间划分成若干个单元格,将文字或图片等元素放入单元格中,隐藏表格的边框,从而实现布局。这种布局方式也叫传统布局,目前主要使用在EDM(广告邮件中的页面)中,主流的布局方式不用这种。2、HTML+CSS布局(DIV+CSS):主要...

2019-07-22 10:22:57 592

原创 玩转CSS的前生今生与基础语法,选择器的使用

1.为什么需要CSS? HTML 标签原本被设计为用于定义文档内容。通过使用 <h1>、<p>、<table> 这样的标签,HTML 的初衷是表达“这是标题”、“这是段落”、“这是表格”之类的信息。同时文档布局(比如字体啥颜色,是否缩进等样式)由浏览器来完成,而不使用任何的格式化标签。由于两种主要的浏览器(Netscape 和 Inter...

2019-07-21 19:35:11 4403

原创 玩转HTML中表单标签的使用

html中标签个数不多,但是标签的属性非常之多,所以实际除非专业做前端的,否则没必要把所有的属性都记下来,需要查查w3c文档即可,只需要掌握常见的用法,看得懂即可。详细请查阅:W3C官网网站表单用于搜集不同类型的用户输入,表单由不同类型的标签组成,相关标签及属性用法如下:1、<form>标签 定义整体的表单区域action属性 定义表单数据提交地址 met...

2019-07-18 16:03:22 1274 1

原创 玩转HTML图像,链接,列表,表格等标签

html的学习知道有哪些标签,怎么使用,其余就是如何将这些标签互相混合嵌套使用了。1.html图像img标签的使用 <img>标签可以在网页上插入一张图片,它是独立使用的标签,通过“src”属性定义图片的地址,通过“alt”属性定义图片加载失败时显示的文字,以及对搜索引擎和盲人读屏软件的支持。<img src="images/pic.jpg" alt="产品图...

2019-07-18 14:44:54 6117

原创 玩转html概述和基础标签使用

1.html是什么? HTML是 HyperText Mark-up Language 的首字母简写,意思是超文本标记语言,超文本指的是超链接,标记指的是标签,是一种用来制作网页的语言,这种语言由一个个的标签组成,用这种语言制作的文件保存的是一个文本文件,文件的扩展名为html或者htm,一个html文件就是一个网页,html文件用编辑器打开显示的是文本,可以用文本的方式编辑它,...

2019-07-18 11:31:52 1333 9

原创 玩转python中的GIL前世今生与核心用法剖析

1.GIL的前世今生1.1GIL的是什么? python是解释型语言,不用编译,运行时可以直接通过解释器进行解释执行了。类似linux中的bash解释器,所以python中也有很多解释器,如cpython(C语言实现),jpython等,只是默认的解释器Cpython,所以大家一般使用的python环境都是基于Cpython的。 我们所说的Python GIL...

2019-07-17 23:54:45 3764 4

原创 python连接操作mysql数据库使用详解

在python3中,有个模块pymysql,用户可以通过这个模块实现远程对mysql数据库的操作。1.python操作mysql流程架构2 .python操作mysql使用演示1.安装并且导入包pymysql,如果环境中没有安装pymysql包,可以直接pip3 install pymysql安装该模块,然后使用import pymysql查看是否安装正确。下面是基于py...

2019-07-16 10:58:58 1278

Python3.5官方文档中文版本chm格式

python3.5版本,官方文档中文版,已经 集成为chm格式,直接打开即可使用,更加方便好操作。免费下载吧

2018-09-06

牛大财有大才的留言板

发表于 2020-01-02 最后回复 2020-05-09

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人 TA的粉丝

提示
确定要删除当前文章?
取消 删除