最近在看《七周七语言》,适当了解一些C语言家族以外的编程语言也很有意思,下面记录一下各个语言的语法特点。
首先在/etc/hosts配置 127.0.0.1 [主机名]
scala结合面向对象和函数式两种编程范型,运行在JVM上
一,scala打开交互命令行,或者scala [filename.scala]执行
// 编译期间进行类型检查 def Loop { var i = 0 while(i < args.length) { println(args(i)) i = i + 1 } for(i <- 0 until args.length) { println(args(i)) } args.foreach { arg => println(arg) } } Loop
二,范围/元组
//通过元组赋值 > val (a,b) = (1,2) a: Int = 1 b: Int = 2 > val fruits = ("apple","banana") fruits: (java.lang.String, java.lang.String) = (apple,banana) > fruits._1 java.lang.String = apple > fruits._2 java.lang.String = banana
三,并发demo
主要结构包括actor和消息传递,actor拥有线程池和队列池。当发送一条消息给actor时,是将一个对象放到该actor的队列中,actor读取消息并采取行动。
import scala.actors._ import scala.actors.Actor._ case object Poke case object Feed class Kid() extends Actor { def act() { react { case Poke => { println("aaa") act } case Feed => { println("bbb") act } case Exit => { println("exit") } } } } val bart = new Kid().start val lisa = new Kid().start bart ! Poke lisa ! Poke bart ! Feed lisa ! Feed bart ! Exit lisa ! Exit
并发获取多个网页大小测试如下:
import scala.io._ import scala.actors._ import scala.actors.Actor._ //抓取网页计算大小 object PageLoader { def getPageSize(url: String) = Source.fromURL(url).mkString.length } val urls = List("http://www.baidu.com", "http://www.sogou.com", "http://www.so.com") //计时函数 def timeMethod(method: () => Unit) = { val start = System.nanoTime method() val end = System.nanoTime println("Method took " + (end - start)/1000000000.0 + " seconds.") } def getPageSizeSequentially() = { for(url <- urls) { println("Size for " + url + " : " + PageLoader.getPageSize(url)) } } def getPageSizeConcurrently() = { val caller = self for(url <- urls) { actor { caller ! (url, PageLoader.getPageSize(url)) } } for(i <-1 to urls.size) { receive { case (url, size) => println("Size for " + url + " : " + size) } } } println("Sequential run:") timeMethod { getPageSizeSequentially } println("Concurrent run:") timeMethod { getPageSizeConcurrently } /* 执行结果如下 Sequential run: Size for http://www.baidu.com : 10219 Size for http://www.sogou.com : 6702 Size for http://www.so.com : 17476 Method took 1.476279371 seconds. Concurrent run: Size for http://www.baidu.com : 10209 Size for http://www.sogou.com : 6702 Size for http://www.so.com : 17476 Method took 0.430095069 seconds. */
总结:
1,actor模型和线程池使用非常方便,消息传递语法与erlang类似
2,可以直接使用java库
其他参考
Getting Started with Scala
构建可伸缩系统 Scala vs Java
Code Examples for
Programming in Scala
嵌入shell脚本
#!/bin/sh exec scala "$0" "$@" !# object HelloWorld { def main(args: Array[String]) { println("Hello, world! " + args.toList) } } HelloWorld.main(args)运行方式:
相关推荐
这份“最新整理的大数据scala和spark视频教程”为想要深入理解和掌握这两个工具的学习者提供了宝贵的资源。 Scala(Scalable Language)是一种多范式编程语言,融合了面向对象和函数式编程的特性。它由Martin ...
Simple Scala DSLs,PPT,下载整理,最小分值。内容比较简单。
3. 模式匹配:Scala中的模式匹配非常强大,它不仅可以应用于简单的值,还可以应用于类层次结构。这一特性使得Scala在处理复杂数据结构时更为灵活和强大。 4. 函数式编程特性:Scala提供了丰富的函数式编程支持,...
- Monoids:介绍了一个简单的抽象概念,即在保持操作的结合律下,一个可以进行组合的数据结构。 - Monads:在函数式编程中,Monads是处理副作用和复杂性的一种强大抽象,是函数式编程中非常重要的概念。 - ...
这是我在Scala见面会上快速介绍的内容,它是关于所有内容的想法:Scala见面会 注意:当前唯一随附的适配器用于 ,请随时添加更多! :)我为什么要用这个? 该框架的灵感来自类似命名的。 当我们单独使用Scalatra时,...
这个“scalaQuery18情况总结代码”很可能是一个开发者在学习和使用ScalaQuery v1.8版本时所做的笔记和示例集合,经过两天的学习、实践和调试后整理出的成果。 在ScalaQuery中,主要的知识点包括: 1. **基本概念**...
优点:部署简单,不依赖其他资源管理系统。 缺点:可能有单点故障,需要自己配置 master HA。 调度模式 1. FIFO 调度模式 基本原理:按照先后顺序决定资源的使用,资源优先满足最先来的 job。 优点:适合长作业,...
在本系统中,我们关注的是电影受众分析,这涉及到收集、整理和分析与电影观众行为相关的数据。Scala是Spark的主要编程语言,它是一种静态类型的JVM语言,以其强大的函数式编程特性而被广泛用于大数据处理。 **一、...
它的设计哲学是简单性、健壮性和安全性。Java语法清晰,易于学习,同时提供了丰富的类库支持。Java程序经过编译后生成.class文件,这些文件包含了平台无关的字节码,可以在任何支持JVM的系统上运行。 【JVM内存结构...
总结来说,Playframework学习文档整理了如何使用该框架构建Web应用,它使用了MVC设计模式,并对RESTful架构提供了良好的支持,同时集成了WebSockets和Hibernate等技术,为开发提供了一个全功能的开发环境。...
里面包含四种模型(word2vec TF-IDF LDA CountVectorizer) 的helloworld代码和模型简单介绍,都是基于spark mllib的,包含python版本、scala版本和java版本的,是我运行通过后,整理成pdf的。这些代码没有问题,一般...
我已经厌倦了将照片手动整理到文件夹或相册中的工作,并且需要一个自动任务来将媒体文件从相机传输到PC上的照片文件夹中。我能想到的最简单的方案是按创建时间排序,然后按月分组。该系统相对易于实施,并为我工作。...
以上就是从给定文件中整理出的主要知识点,包括Scala列表方法、Spark MLlib线性回归算法参数、Spark GraphX图处理、PairRDD操作、DStream窗口操作、图的基本概念以及Scala面向对象特性等。这些知识点对于学习和掌握...
- **项目初始化**:介绍如何使用SBT(Scala Build Tool)创建包含Java和Scala示例的新项目。 - **代码示例**:提供具体的代码示例,演示如何在Java和Scala中使用OpenCV库。 **1.12 写一个简单的应用** - **应用...
Play框架支持多种编程语言,包括Java和Scala,使其成为开发高效Web应用的理想选择。 ### Play框架核心概念与功能 #### 主要概念 - **MVC应用模型**:Play框架遵循模型-视图-控制器(MVC)架构模式,将业务逻辑、...
Kotlin数据科学资源图书馆,媒体,... 项目描述一个从头开始的Kotlin机器学习算法的简单演示以及库实现如何将数学符号表达式转换为Kotlin代码可视化的Kotlin演示,客户等待时间模拟器模拟指定数量的收银员的客户等待时
"Go to"功能(如Go to Declaration)使得快速跳转到代码定义变得简单。 6. **单元测试**:内置JUnit和TestNG支持,方便编写、运行和调试单元测试,确保代码质量。 7. **集成开发环境**:集成了构建工具(如Maven、...
HHVM是Facebook开发的高性能PHP虚拟机,宣称比官方的快9倍,我很好奇,于是抽空简单了解了一下,并整理出这篇文章,希望能回答清楚两方面的问题:1.HHVM到底靠谱么?是否可以用到产品中?2.它为什么比官方的PHP快很...
- JVM能够支持多种动态类型语言,如Groovy、Scala、Ruby等,这些语言可以与Java代码无缝集成。 - 通过引入新的类文件格式和字节码指令,增强了JVM对于动态类型语言的支持能力。 3. **模块系统(Module System)** ...