Scala的基本概念 先讲讲Scala里头几个概念Classes, Traits, Objects and Packages. Class和Java中的很像,只不过Scala中Class不能有static members.还有个叫做case的特殊类. Object跟Class也很像,只不过它只能有一个instance,它可以有 static members. Traits跟Java中的Interface很像,不过它可以有concrete members, i.e. method implemen…
PS:本文PDF版在这里(格式更好看一些).最新的源代码请在本页面文末下载,PDF中的链接不是最新的. 用C表达面向对象语言的机制——C#版 我一直认为,面向对象语言是对面向过程语言的封装.如果是这样,那么就应该能够用C来模拟C#的代码风格,写出面向对象形式的代码.本文逐步展示了与C#对应的C代码是如何实现的. 1. 目标 面向对象语言的三大特性(封装.继承.多态)中,封装和继承的C版写法需要研究,而多态似乎不关乎新的写法. 所以本文就展示如何用C来模拟C#的封装.继承.虚方法.关键字as和in…
用C表达面向对象语言的机制2——颠覆你对方法调用的看法! 源代码在文末.推荐阅读本文PDF版,格式更好看. 在上一篇<用C表达面向对象语言的机制——C#版>中,我们获知了如何用C表达面向对象语言的机制,证明了面向对象语言是对面向过程语言的封装.今天有幸看到<颠覆你对方法调用的看法!>,于是继续用C来模拟此文中的代码,看看“颠覆”的背后是什么. 1. 目标 本文展示用C的union来模拟C#的一些代码的写法. 2. 用union代替FieldOffset 例如如下的C#代码. Man…
Spark小课堂Week5 Scala初探 Scala是java威力加强版. 对Java的改进 这里会结合StreamingContext.scala这个代码说明下对Java的改进方面. 方便测试方式,增加了可以指定位置的作用域. 成员变量声明,构造方法,get.set方法一体化. []表示泛型,不是<> class StreamingContext private[streaming] ( 
 sc_ : SparkContext, 
 cp_ : Checkpoint,
 batchDur…
面向对象语言的一个基本特征是它们都有类,类是C#(这类语言)中的一种复杂数据类型. 类代表一组具有公共属性和行为的对象. 在C#中定义一个类是非常简单的,只需使用class关键字并按格式来定义即可. class Person { //类成员定义 } 默认情况下,如果class关键字前没有显式地指定访问修饰符,则类的访问修饰符为internal,表示仅在当前项目内可被访问.   除了使用internal修饰符来修饰类外,还可以为类指定private.protecded.public.abstrac…
·oop(面向对象程序设计)中最常用到的概念有 1.对象,属性,方法 1>(对象:具体事物或抽象事物,名词) 2>(属性:对象的特征,特点,形容词) 3>(方法:对象的动作,动词) 2.类 1> 在现实生活中,相似的对象之间往往都有一些共同的组成特征.例如蜂鸟和老鹰都具有鸟类的特征,因此他们可以 被统称为鸟类. 2>在OOP中,类实际上就是对象的设计蓝图或者制作配方. 3>对象这个词,也称为实例,老鹰是鸟类的一个实例.我们能基于相同的类创建出许多不同的对象,因为类更多的…
java反射并不是什么高深技术,面向对象语言都有这个功能. 面向对象语言都有这个功能,而且功能也很简单,就是利用jvm动态加载时生成的class对象,去获取类相关的信息 2.利用java反射可以调用类的私有方法么?private()方法 答:可以,class取出method,method继承executable类,executable类继承AccessibleObject类,AccessibleObject有个setAccessiable()设置这个方法是否可访问. 则设置成true,就可将pr…
面向对象编程风格深受广大开发者喜欢,尤其是以 C++, Java 为典型代表的编程语言大行其道,十分流行! 有意思的是这两中语言几乎毫无意外都来源于 C 语言,却不同于 C 的面向过程编程,这种面向对象的编程风格给开发者带来了极大的便利性,解放了劳动,松耦合,高内聚也成为设计的标准,从而让我们能够更加愉快地复制粘贴,做代码的搬运工,很多第三方工具开箱即用,语义明确,职责清晰,这都是面向对象编程的好处! Go 语言也是来源于 C 语言,不知道你是否也会好奇 Go 语言是否支持面向对象这种编程风格呢…
1- 集合类(collection) 系统地区分了可变的和不可变的集合. scala.collection包中所有的集合类 可变集合(Mutable) 顾名思义,意味着可以修改,移除或者添加一个元素. scala.collection.mutable 中的所有集合类: 不可变集合(Immutable) 对不可变集合的操作(修改,添加,删除某个集合元素),都是返回一个新的集合,原来的集合不会发生改变. 由于“永远不会被改变”的特性,可以说不可变集合是线程安全的. Scala在默认情况下采用的是不可…
函数式编程的崛起 函数式编程中的“值不可变性”避免了对公共的可变状态进行同步访问控制的复杂问题,能够较好满足分布式并行编程的需求,适应大数据时代的到来. 函数是第一等公民 可以作为实参传递给另外一个函数 可以作为返回值 可以赋值给变量 可以存储在数据结构里 def greeting() = (name: String) => { s"Hello" + " " + name } //> greeting: ()String => String gre…