Scala
文章平均质量分 75
一只懒得睁眼的猫
励志成为一个技术大牛!
展开
-
大数据系列修炼-Scala课程38
大数据系列修炼-Scala课程38核心内容: 1、List伴生对象操作方法代码实战1、List伴生对象操作方法代码实战List的object(伴生对象)中常用的方法: 1>apply:构造一个List实例对象 2>range:指定一个范围是左闭右开的List对象,同时可以指定两个元素之间的步长 3>zip:拉链操作、unzip:反拉链操作、将之前zip获得的集合结果进行反操作、生成两个Lis原创 2016-09-20 21:15:27 · 1287 阅读 · 0 评论 -
大数据系列修炼-Scala课程39
大数据系列修炼-Scala课程39核心内容: 1、ListBuffer、ArrayBuffer、Queue、Stack操作代码实战1、ListBuffer、ArrayBuffer、Queue、Stack操作代码实战1>ListBuffer、ArrayBuffer分别是List与Array的新版本,在ListBuffer、ArrayBuffer中可以对List与Array进行更加灵活、高效的操作;原创 2016-09-21 16:48:16 · 2034 阅读 · 0 评论 -
大数据系列修炼-Scala课程40
大数据系列修炼-Scala课程40核心内容: 1、Set、Map、TreeSet、TreeMap操作代码实战1、Set、Map、TreeSet、TreeMap操作代码实战1>在scala当中,对于集合而言,一般有可变集合与不可变集合。所谓可变集合就是每次操作都是作用于原有集合之上,例如当我们 向集合中追加一个元素时,原有集合就会新增加一个新的元素;所谓不可变集合即集合本身是不可变的,例如当我们向原创 2016-09-21 16:48:43 · 1533 阅读 · 0 评论 -
大数据系列修炼-Scala课程41
大数据系列修炼-Scala课程41核心内容: 1、List继承体系实现内幕和方法操作源码揭秘1、List继承体系实现内幕和方法操作源码揭秘在Scala集合内部中的很多实现将涉及到Scala中非常重要的一些特性,这些特性与Java有很大的不同,具体表现为: 1>List本身是一个抽象类,而抽象类不能定义出抽象类的实例对象,实际上我们使用的是List的Object伴生对象,即伴生对象的 apply原创 2016-09-22 10:01:37 · 1509 阅读 · 0 评论 -
大数据系列修炼-Scala课程42
大数据系列修炼-Scala课程42核心内容: 1、Scala中泛型类、泛型函数、泛型在Spark中的广泛应用1、Scala中泛型类、泛型函数、泛型在Spark中的广泛应用1>泛型类在声明的时候无须指明具体的数据类型,只有在使用的时候才需要指明具体的数据类型 2>任何数据类型都是Any的子类 3>在Java当中,如果一个类要声明为一个泛型类,这个类的后面要有<>,里面有相应的标识符; 在Sca原创 2016-09-22 10:02:02 · 1373 阅读 · 0 评论 -
大数据系列修炼-Scala课程43
大数据系列修炼-Scala课程43:类型参数的广泛应用核心内容: 1、Scala中类型变量Bounds代码实战及其在Spark中的应用源码解析1、Scala中类型变量Bounds代码实战及其在Spark中的应用源码解析1>所谓泛型类就是在类定义的时候,在类名的后面加一个[],在[]中指定它的类型为一个未知的类型,即T。此时就说这个类是一个泛型类。 2>类型变量的限定(界定)分为两种类型:类型变量原创 2016-09-23 11:17:08 · 1690 阅读 · 0 评论 -
大数据系列修炼-Scala课程44
大数据系列修炼-Scala课程44核心内容: 1、Scala中View Bounds代码实战及其在Spark中的应用源码解析1、Scala中View Bounds的重要应用1>在scala的类型变量限定当中,Int,Double类型本来是不是Comparable[T]的子类,但是通过视图界定<%,Int,Double类型可以隐式 的转换为Comparable[T]的子类。 注意:只有Java中原创 2016-09-23 11:17:39 · 1423 阅读 · 0 评论 -
大数据系列修炼-Scala课程45
大数据系列修炼-Scala课程45核心内容: 1、Scala中Context界定代码实战及其在Spark中的应用源码解析1、Scala中Context界定操作代码实战在视图界定中(T<%V),T到V实际上存在着一个隐式的转换,但是这个用法看起来有点麻烦,所以我们引出上下文界定 1>[T:Ordering]的含义:正如视图界定中那样,T本身是一个泛型,此时存在一个隐式的转换,这个值就是Orderi原创 2016-09-23 18:34:16 · 1443 阅读 · 0 评论 -
大数据系列修炼-Scala课程46
大数据系列修炼-Scala课程46核心内容: 1、scala中ClassTag、Manifest、ClassManifest、TypeTag的具体应用1、scala中ClassTag、Manifest、ClassManifest、TypeTag的具体应用1>泛型T在编写与编译的时候不能确定出具体的数据类型,但是虚拟机在运行的时候必须要指定出T具体的数据类型,因为我们的scala是 运行在Java原创 2016-09-24 12:18:57 · 1561 阅读 · 0 评论 -
大数据系列修炼-Scala课程47
大数据系列修炼-Scala课程47核心内容: 1、Scala中的多重界定代码实战及其在Spark中的应用源码解析1、Scala中的多重界定核心重点总结在Scala当中,类型变量涉及到很多内容,比如:类型变量的上下界(<:上界 >:下界)、视图界定(T<%V)、上下文界定(T:V)等,然而这些 内容是可以混合使用的,例如一个类型变量它可以同时拥有上界和下界。常用的几种混合描述方式: 1>T >:原创 2016-09-24 12:19:30 · 1527 阅读 · 0 评论 -
大数据系列修炼-Scala课程48
大数据系列修炼-Scala课程48核心内容: 1、Scala类型约束代码实战及其在Spark中的应用源码解析1、Scala类型约束的使用1>在scala中,常见的两种类型约束: A =:= B 含义:表示A类型等同于B类型 A <:< B 含义:表示A类型是B类型的子类 A <:< B从整体上可以理解A<:B,但是实际上A <:< B比A<:B更加严格, 因为编译器在编译级别就会进行类型判断原创 2016-09-25 10:29:29 · 1477 阅读 · 0 评论 -
大数据系列修炼-Scala课程49
大数据系列修炼-Scala课程49核心内容: 1、Scala中型变(Variance)代码实战解析及其在Spark中的应用源码解析1、Scala中型变(Variance)核心重点总结1>在Java当中,若具体类型之间有相应的子类关系,在相应的泛型当中并没有相应的子类关系;然而在Scala当中, 通过型变的语法机制,可以保证在相应的泛型当中也有相同的子类关系,或者相反的子类关系;其中相同的子类关系原创 2016-09-25 10:30:03 · 1469 阅读 · 0 评论 -
大数据系列修炼-Scala课程50
大数据系列修炼-Scala课程50核心内容: 1、Scala中的Variance变化点1、Scala中可变的(Variance)、协变、逆变的相关概念1>相同的子类关系叫做协变,相反的子类关系叫做逆变 2>逆变or协变指的是A[]这种泛型的数据类型,可变还是不可变指的仍是A[]这种泛型的数据类型 3>如果一个泛型类型A[]支持协变的或逆变的,则称这个范型类型A[]为可变的,否则为不可变的 4原创 2016-09-25 20:07:16 · 1321 阅读 · 0 评论 -
大数据系列修炼-Scala课程51
大数据系列修炼-Scala课程51核心内容: 1、Scala中链式调用风格的实现代码实战及其在Spark编程中的广泛应用1、Scala中链式调用风格操作代码实战1>在scala当中,我们之所以能做到链式编程,是因为我们用了type(即所谓的单例类型)的方式,将一些方法调用串联起来。 2>在scala当中,任何类对象都有一个type属性,这种type属性可能返回的是类或者对象或者为空值。 3>在原创 2016-09-26 15:39:11 · 1265 阅读 · 0 评论 -
大数据系列修炼-Scala课程52
大数据系列修炼-Scala课程52核心内容: 1、Scala中的路径依赖代码实战1、Scala中的路径依赖操作代码实战1>内部类可以访问外部类的私有成员的原因:内部类隐含的含有外部类的实例,因为拥有外部类的实例,所有可以访问 外部类的私有成员。 2>Java中的内部类对象是属于外部类的,而Scala中的内部类对象是属于外部类对象的,scala真正做到了万物皆对象 3>在Scala当中,对象的原创 2016-09-26 15:39:39 · 1247 阅读 · 0 评论 -
大数据系列修炼-Scala课程53
大数据系列修炼-Scala课程53核心内容: 1、Scala中的结构类型实战解析1、Scala中的结构类型操作代码实战1>结构类型是指一组关于抽象的方法或字段或类型的规格的说明,这些抽象的方法或字段或类型是我们传进的参数或者说 要使用的对象必须具备的:即传进来的参数或对象必须具备相应的抽象方法或字段或类型。 简单来说:结构类型就是限制参数是某种类型. 2>def init(obj: {def原创 2016-09-27 15:21:01 · 1347 阅读 · 0 评论 -
大数据系列修炼-Scala课程54
大数据系列修炼-Scala课程54核心内容: 1、Scala中复合类型实战详解1、Scala中复合类型操作代码实战1> A extends B with C with D 的语法含义:A类型是一个复合的数据类型,既是B又是C又是D的子类型,即要求A既具有 B、又具有C、又具有D的功能。Java中的语法解读不同于此。 2>Scala中的_with_with_with这种复合的数据类型符合实际应用原创 2016-09-27 15:21:27 · 1250 阅读 · 0 评论 -
大数据系列修炼-Scala课程55
大数据系列修炼-Scala课程55核心内容: 1、Scala中Infix Type操作代码实战1、Scala中Infix Type操作代码实战1>中值类型常用在泛型当中和中值表达式当中。 2>Infix Type就是中值类型,所谓中值类型就是带有两个参数的类型;之所以叫做中值类型,是因为类型的名称 写在了两个参数的之间,这种方式具有阅读性。 3>中值类型在实际使用的时候,类型参数写在这两个参原创 2016-09-27 15:21:56 · 1313 阅读 · 0 评论 -
大数据系列修炼-Scala课程56
大数据系列修炼-Scala课程56核心内容: 1、Scala中Self Types(this)操作代码实战1、Scala中Self Types操作代码实战1>每个类本身都有一个this指针,通过this指针可以引用自身的实例;在自身类型当中,self不是关键字,是this的别名, 具有更强的可读性。 2>在Scala当中,可以在类中、特质中、object中对自身类型this进行限制约束。 c原创 2016-09-28 14:43:03 · 1109 阅读 · 0 评论 -
大数据系列修炼-Scala课程57
大数据系列修炼-Scala课程57核心内容: 1、Scala中的依赖注入Dependency Injection操作代码实战1、Scala中的依赖注入Dependency Injection操作代码实战1>所谓依赖,就是在写程序或者构建系统的时候,我们的程序或者系统往往是由不同的组件组装起来的,而不同的组件之间 存在着依赖的关系,所谓依赖的关系就是使用别人的组件,并在程序运行的时候被注册进来。原创 2016-09-28 14:43:35 · 1200 阅读 · 0 评论 -
大数据系列修炼-Scala课程58
大数据系列修炼-Scala课程58核心内容: 1、Scala中抽象类型(Abstract Types)操作代码实战1、Scala中抽象类型(Abstract Types)操作代码实战1>在Scala当中使用type关键字定义抽象类型,所谓抽象类型就是没有指明具体类型的类型 2>Scala中的抽象类型可以在trait(特质)、class、abstract class中进行定义,并在子类中进行实现原创 2016-09-29 08:07:27 · 1258 阅读 · 0 评论 -
大数据系列修炼-Scala课程59
大数据系列修炼-Scala课程59核心内容: 1、Scala中隐式转换初体验实战详解以及隐式转换在Spark中的应用源码解析1、Scala中隐式转换初体验操作代码实战1>Scala中的隐式转换本质上相当于C语言中的强制类型转换以及Java中的自动装箱技术的应用扩展 2>Scala中隐式转换的由来:我们想使用某一个类(B)中的特殊的方法,但是自身类(A)又没有提供这样的一个方法,通过隐式转换,原创 2016-09-29 08:08:03 · 1320 阅读 · 0 评论 -
大数据系列修炼-Scala课程60
大数据系列修炼-Scala课程60核心内容: 1、Scala中隐式参数操作代码实战1、Scala中隐式参数操作代码实战1>所谓隐式参数就是在函数或方法中的参数前面加上implicit修饰符,这样的参数叫做隐式参数 2>若在参数的前面含有implicit修饰符,编译器就会自动寻找相应的隐式值作为默认值(缺省值)进行传递。 3>隐式参数的运行机制:若函数的参数只传进部分参数,编译器就会自动在其作用原创 2016-09-29 14:07:27 · 1242 阅读 · 0 评论 -
大数据系列修炼-Scala课程61
大数据系列修炼-Scala课程61核心内容: 1、Scala中的隐式参数与隐式转换的联合使用操作代码实战1、Scala中的隐式参数与隐式转换的联合使用def biggerT(implicit m:T=>Ordered[T]) = ……的含义: 1>bigger是一个泛型函数,并且是一个柯里化函数,并且函数的第二个参数是一个函数(隐式函数呢)。 2>m是一个隐式参数,这个隐式参数指向一个匿名函数原创 2016-09-30 09:32:08 · 1279 阅读 · 0 评论 -
大数据系列修炼-Scala课程62
大数据系列修炼-Scala课程62核心内容: 1、Scala中上下文界定内幕中的隐式参数与隐式转换的操作代码实战1、Scala中上下文界定内幕中的隐式参数与隐式转换的操作代码实战1>T:Ordering的含义:在上下文界定中说明只要存在T:Ordering,那么就存在一个隐式值,这个隐式值就是Ordering[T],这个隐式值 Ordering[T]会作用在当前的作用域中,在作用域中的所有方法都原创 2016-09-30 09:32:44 · 1498 阅读 · 0 评论 -
Intellij安装scala插件详解
参考博客: 1、http://wwwlouxuemingcom.blog.163.com/blog/static/20974782201321953144457/ 2、http://blog.csdn.net/stark_summer/article/details/42460527本次具体实现过程: intellij IDEA本来是不能开发Scala程序的,但是通过配置是可以的,但是通过in转载 2016-09-30 16:49:49 · 47720 阅读 · 10 评论 -
大数据系列修炼-Scala课程63
大数据系列修炼-Scala课程63核心内容: 1、Scala中隐式类操作代码实战1、Scala中隐式类操作代码实战1>scala中的隐式类是对类功能增强的一种形式。 2>scala中的隐式类、隐式函数、隐式参数、隐式值常放在单例对象object中。 3>单例对象中可以构建静态的属性和方法,还可以构建静态的类,若想使用单例对象中的静态类,import导入即可。4>隐式类相比于隐式转换用的较少,但原创 2016-09-30 18:00:48 · 1666 阅读 · 1 评论 -
大数据系列修炼-Scala课程64
大数据系列修炼-Scala课程64核心内容: 1、Scala中隐式对象操作代码实战1、Scala中隐式对象操作代码实战1>所谓隐式对象,就是在object对象前面有implicit关键字 2>隐式对象可以作为隐式值进行使用 3>只有类这种数据类型才可以做方法的参数类型,object是不能做函数中参数的类型的 4>有隐式参数,必须有隐式值实例程序1:abstract class A{原创 2016-10-01 18:02:07 · 1611 阅读 · 0 评论 -
大数据系列修炼-Scala课程65
大数据系列修炼-Scala课程65核心内容:Scala中的操作规则与如何更好的使用隐式转换操作代码实战1、Scala中的操作规则与如何更好的使用隐式转换操作代码实战1>Scala中如何更好的使用隐式转换:通过伴生类与伴生对象机制,编译器将会自动导入隐式转换, 而无需用户手动导入隐式转换。 2>Scala中的操作规则: 1、要想成为隐式转换,必须标记为implicit关键字,implicit可以原创 2016-10-02 18:55:00 · 1560 阅读 · 0 评论 -
大数据系列修炼-Scala课程66
大数据系列修炼-Scala课程66核心内容: 1、Java中的并发编程 2、Scala并发编程实战初体验1、Java并发编程的问题1、Java中的并发编程基本上满足了事件之间相互独立,但是事件能够同时发生的场景的需要。 2、Java中的并发编程是基于共享数据和加锁的一种机制,即会有一个共享的数据,然后有若干个线程去访问这个共享的数据(主要是对 共享的数据进行修改),同时Java利用这种加锁的原创 2016-10-02 19:31:41 · 1437 阅读 · 0 评论 -
大数据系列修炼-Scala课程67
大数据系列修炼-Scala课程67核心内容: 1、Scala并发编程匿名Actor、消息传递、偏函数实战解析操作代码实战1、Scala中并发编程之匿名Actor的创建与实现机制1>匿名Actor的创建方式: 通过工具方法actor来创建,并通过while(true)不断循环自己的邮箱,然后用receive这个偏函数进行消息的模式匹配并进行处理。 2>Actor的工作机制:在实现的过程中,Act原创 2016-10-03 17:03:01 · 1285 阅读 · 0 评论 -
大数据系列修炼-Scala课程68
大数据系列修炼-Scala课程68核心内容: 1、Scala中的原生线程Actor、基于Actor的Case class的消息传递和Actor模型认知以及相应的优化方式1、Scala中的原生线程Actor、基于Actor的Case class的消息传递和Actor模型认知1、Scala的原生线程(即主线程)可以看做是一个Actor,当它需要接受并处理消息的时候,直接调用Actor伴生对象的self原创 2016-10-04 10:10:09 · 1329 阅读 · 0 评论 -
大数据系列修炼-Scala课程69
大数据系列修炼-Scala课程69核心内容: 1、Scala并发编程之react、loop的相关用法操作代码实战1、Scala并发编程之react、loop操作代码实战1>所谓执行一个线程,就是执行本线程所对应的run(act)方法,若run(act)方法里面的代码执行完毕,线程默认就会得到 回收(销毁),因此为了使线程得到重用,即不被销毁、回收,我们常常将run(act)方法里面的代码块加上一原创 2016-10-04 14:34:55 · 1379 阅读 · 0 评论 -
大数据系列修炼-Scala课程70
大数据系列修炼-Scala课程70核心内容: 1、Scala界面GUI编程操作代码实战1、Scala界面GUI编程操作代码实战1>SimpleSwingApplication这个类里面定义了一些GUI框架运行时的一些设置,设置里包含了main方法,所以编程的时候不用在设置相应的main方法。 2>title与text与contents是相应组件的属性,这是scala语言的特性。实例程序1:Sca原创 2016-10-06 09:34:50 · 1261 阅读 · 0 评论 -
大数据系列修炼-Scala课程71
大数据系列修炼-Scala课程71核心内容: 1、Scala界面Panel、Layout相关用法操作代码实战1、Scala界面Panel、Layout相关用法操作代码实战1>界面其实是一个界面树,界面本身不应该处理事件。 2>容器内部组件的排列方式,即容器内部组件的位置和大小的设定,称为容器的布局。 3>在GUI当中用来控制容器里面的组件到底以什么方式进行排列与组合,或者说用来控制容器里面组件原创 2016-10-06 09:35:39 · 1196 阅读 · 0 评论 -
大数据系列修炼-Scala课程72
大数据系列修炼-Scala课程72核心内容: 1、Scala界面事件处理编程实战详解操作代码实战1、Scala界面事件处理编程实战详解操作代码实战1、Scala中的事件模型与Java中的事件模型处理机制是相似的: 即组件在默认情况下是不会产生反应的,如果想让一个组件产生反应,必须做两件事情: ①首先必须能够监听到用户对组件(界面)的点击操作 ②监听到相应事件之后,可以对事件进行相应的处理原创 2016-10-06 09:36:48 · 1285 阅读 · 0 评论 -
大数据系列修炼-Scala课程73
大数据系列修炼-Scala课程73核心内容: 1、Scala界面和事件处理编程进阶实战1、Scala界面和事件处理编程进阶实战1>Scala当中的GUI框架是对Java中Swing框架的一个封转实例程序1:Scala的GUI结合文件选择器进行编程object App1 extends SimpleSwingApplication{ //本程序是结合文件选择器使用的!!! val f原创 2016-10-06 09:37:24 · 1287 阅读 · 0 评论 -
大数据系列修炼-Scala课程74
大数据系列修炼-Scala课程74核心内容: 1、从Spark源码的角度思考Scala中的模式匹配1、从Spark源码的角度思考Scala中的模式匹配1>在声明case class的过程中,若在扩展的属性前面没有加修饰符var或者val,默认的修饰符为val,意味着在消息传递的 过程中属性是不可变的,因此特别适合消息传递。 2>当我们在声明case class的时候,case class的内部原创 2016-10-07 12:26:44 · 978 阅读 · 0 评论 -
大数据系列修炼-Scala课程75
大数据系列修炼-Scala课程75核心内容: 1、模式匹配下的for循环操作代码实战1、模式匹配下的for循环操作代码实战1>在scala当中,模式匹配也常与for循环进行结合使用。实例程序:object App8{ def main(args:Array[String]):Unit= { val list = List(10,20,30,40,50) f原创 2016-10-07 12:27:13 · 1057 阅读 · 0 评论 -
大数据系列修炼-Scala课程76
大数据系列修炼-Scala课程76核心内容: 1、模式匹配下的赋值语句操作代码实战1、模式匹配下的赋值语句操作代码实战1>元组是很重要的,对于一个函数来说,有可能会返回几个值,我们常用tuple中定义的几个变量来接受 函数返回的数值。实例程序1:object App8{ def main(args:Array[String]):Unit= { var a@b = "S原创 2016-10-07 12:28:03 · 1253 阅读 · 0 评论