PLAY2.6-SCALA(九) WebSockets】的更多相关文章

WebSockets是一种支持全双工通信的套接字.现代的html5通过js api使得浏览器天生支持webSocket.但是Websockets在移动端以及服务器之间的通信也非常有用,在这些情况下可以复用一个已经存在的TCP连接. 1.处理WebSockets 一般Play通过action来处理http请求,但是WebSockets是完全不同的,没法使用action来处理. Play处理WebSockets的机制是建立在Akka Streams之上的.一个WebSockets被抽象为Flow,接…
个人看到对比play1.x和play2.x比较的文章中,写的最深入,最清晰的一个.转自:http://freewind.me/blog/20120728/965.html 为了方便群中的Play初学者们,写了一篇入门引导,以帮助初学者尽快了解Play.本文之前发在另一个网站,因为觉得有些不便,还是转到博客上. 欢迎来到play的世界,在这里你将体验到与传统SSH开发网站不一样的感受.我将把我学习play的感受与经验分享给大家,希望能对大家(特别是初学者)有所帮助. Play是一个非常有创造力.让…
我的web开发最强组合:Play1+angularjs+bootstrap ++ (idea + livereload) 时间 2012-12-26 20:57:26  Freewind.me原文  http://freewind.me/blog/20121226/1167.html 首先说明我开发web的情况: 个人开发 前后端全部自己搞定 网站类型多为传统多页面程序 注重开发效率 Javascritp能力不强 美术细胞很少 由于每个人情况不同,选择技术及方案的重点也不同,所以内容仅供参考.对…
1. 关于这篇系列 这篇系列不是Play框架的Hello World,由于这样的文章网上已经有非常多. 这篇系列会首先结合实际代码介绍Play的特点以及适用场景.然后会有几篇文章介绍Play与Spring,JPA(Hibernate)的集成,以及一些Play应用的最佳实践. 这期间会在Github上提供一个脚手架项目.方便感兴趣的朋友直接动手尝试. 最后会简单分析Play的部分源码.帮助大家理解黑盒子的内部机制. 我水平有限,有错误欢迎指出. 2. Play介绍 Play Framework是一…
Play Framework是一个开源的Web框架,背后商业公司是Typesafe.要介绍Play之前,首先理清Play的两个不同的分支. Play 1.x 使用Java开发,最新版本是1.3.1,只支持Java项目.从11年开始就进入了维护阶段,新项目一般不考虑使用Play1. Play 2.x 使用Scala和Java开发,同时支持Java和Scala项目. 这里主要介绍最新的Play2.4 for Java.有一点需要提前说明,虽然Play2主要由Scala开发,但是对于项目中的一般开发人…
一.本章要点 文法定义中的二选一.拼接.选项和重复在Scala组合子解析器中对应|.~.opt和rep 对于RegexParsers而言,字符串字面量和正则表达式匹配的是词法单元 用^^来处理解析结果 在提供给^^的函数中使用模式匹配来将-结果拆开 用~>或<~来丢弃那些在匹配后不再需要的词法单元 repsep组合子处理那些常见的用分割符分割开的条目 基于词法单元的解析器对于解析器那种带有保留字和操作符的语言很有用.准备好定义你自己的词法分析器 解析器是消费读取器并产出解析结果:成功.失败或错…
一.本章要点 Source.fromFile(...).getLines.toArray输出文件的所有行; Source.fromFile(...).mkString以字符串形式输出文件内容; 将字符串转换为数字,可以用toInt或toDouble方法; 使用Java的PrintWriter来写入文件; ”正则“.r是一个Regex对象; 如果你的正则表达式包含反斜杠或引号的话,用”“”...“”“; 如果正则模式包含分组,你可以用如下语法提取内容:for(regex(变量1,...,变量n)<…
模式匹配 case _ =>不能放在函数的中间必须放在最后,否则scala会编译不通过 在case 里面使用if守卫 在模式匹配中获取输入的数据(在匹配不到的情况下) 对类型进行匹配 case class的使用 会自动伴生对象生成apply不用new 而且自动生成类似javaBean东西…
引言 Scala是一门既面向对象,又面向过程的语言,Scala的函数式编程,就是Scala面向过程最好的佐证.也真是因此让Scala具备了Java所不具备的更强大的功能和特性. 而之所以Scala一直没有替代Java,一是因为Java诞生早,基于Java开发了大量知名的工程,并且最重要的是Java现在不只是一门编程语言,而是一个庞大的技术生态圈,所以未来十年内Scala也不会完全替代Java,但是Scala会在自己特有的领域大发光彩.   将函数赋值给变量 Scala中函数是一等公民,可以独立定…
本章主要讲Scala中的类型参数化.本章主要分成三个部分,第一部分实现一个函数式队列的数据结构,第二部分实现该结构的内部细节,最后一个部分解释其中的关键知识点.接下来的实例中将该函数式队列命名为Queue. 一.函数式队列 函数式队列是一种具有以下三种操作方法的数据结构,并且这些操作都必须在常量时间内完成: head,返回该队列中的第一个元素 tail,返回除第一个元素之外的所有元素组成的新队列 enqueue,将新元素加入原有队列从而得到一个新队列 函数式队列不同于可变队列(mutable q…
文件正则表达式&练习 1. 编写一小段Scala代码,将某个文件中的行倒转顺序,将最后一行作为第一行,依此类推 程序代码: import scala.io.Source import java.io.PrintWriter   object ReverseLines extends App {   val filename="File.txt"   val RefileName="ReverseFile.txt"     val source=Source.…
文件和正则表达式 摘要: 在本篇中,你将学习如何执行常用的文件处理任务,比如从文件中读取所有行或单词,或者读取包含数字的文件等.本篇的要点包括: 1. Source.fromFile(...).getLines.toArray输出文件的所有行 2. Source.fromFile(...).mkString以字符串形式输出文件内容 3. 将字符串转换为数字,可以用tolnt或toDouble方法 4. 使用java的PrintWriter来写入文本文件 5. "正则",r是一个Rege…
一.泛型 1.泛型的介绍 泛型用于指定方法或类可以接受任意类型参数,参数在实际使用时才被确定,泛型可以有效地增强程序的适用性,使用泛型可以使得类或方法具有更强的通用性.泛型的典型应用场景是集合及集合中的方法参数,可以说同java一样,scala中泛型无处不在,具体可以查看scala的api. 2.泛型类.泛型方法 泛型类:指定类可以接受任意类型参数. 泛型方法:指定方法可以接受任意类型参数. 3.示例 1.定义泛型类 /* 下面的意思就是表示只要是Comparable就可以传递,下面是类上定义的…
Scala中方法名可以包含几乎所有字符,还可以对操作符+赋予新的含义 上面例子中136行,用下划线来表示“缺省初始化值” 上面151行和153行都是通过圆点表示法进行调用 157行和159行用中缀表示法进行调用,和数学表达式一样.…
本节主要内容 Scala Mavenproject的创建 Scala JDBC方式訪问MySQL Slick简单介绍 Slick数据库编程实战 SQL与Slick相互转换 本课程在多数内容是在官方教程上改动而来的,官方给的样例是H2数据库上的.经过本人改造,用在MySQL数据库上,官方教程地址:http://slick.typesafe.com/doc/2.1.0/sql-to-slick.html 1. Scala Mavenproject的创建 本节的project项目採用的是Maven P…
作者:摇摆少年梦 配套视频地址:http://www.xuetuwuyou.com/course/12 本节主要内容 隐式參数中的隐式转换 函数中隐式參数使用概要 隐式转换问题梳理 1. 隐式參数中的隐式转换 前一讲中,我们提到函数中假设存在隐式參数,在使用该函数的时候假设不给定相应的參数,则编译器会自己主动帮我们搜索相应的隐式值,并将该隐式值作为函数的參数,这里面事实上没有涉及到隐式转换.本节将演示怎样利用隐式參数进行隐式转换.以下的代码给定的是一个普通的比較函数: object Implic…
一.继承 1.1 Scala中的继承结构 Scala中继承关系如下图: Any是整个继承关系的根节点: AnyRef包含Scala Classes和Java Classes,等价于Java中的java.lang.Object: AnyVal是所有值类型的一个标记: Null是所有引用类型的子类型,唯一实例是null,可以将null赋值给除了值类型外的所有类型的变量; Nothing是所有类型的子类型. 1.2 extends & override Scala的集成机制和Java有很多相似之处,比…
一.继承 1.1 Scala中的继承结构 Scala 中继承关系如下图: Any 是整个继承关系的根节点: AnyRef 包含 Scala Classes 和 Java Classes,等价于 Java 中的 java.lang.Object: AnyVal 是所有值类型的一个标记: Null 是所有引用类型的子类型,唯一实例是 null,可以将 null 赋值给除了值类型外的所有类型的变量; Nothing 是所有类型的子类型. 1.2 extends & override Scala 的集成…
trait的abstract override使用: 当我看到abstract override介绍的时候也是一脸懵逼,因为快学scala,只介绍了因为TimestampLogger中调用的super.log依旧是个abstract class,所以必须在方法前加上abstract和override.但是并没有具体介绍如何使用,然后查阅了其他文档,才明白使用方法. 下面的代码定义了超类LoggerEmpty,这个定义意味着该特质只能混入扩展LoggerEmpty的类中. 在特质中声明抽象方法中有…
减少代码重复 所有的函数都被分割成通用部分,它们在每次函数调用中都相同,以及非通用部分,在不同的函 数调用中可能会变化.通用部分是函数体,而非通用部分必须由参数提供.当你把函数值用做参数时,算法的非通用部分就是它代表的某些其它算法.在这种函数的每一次调用中,你都可以把不同的函数值作为参数传入,于是被调用函数将在每次选用参数的时候调用传入的函数值.这种高阶函数:higher-order function——带其它函数做参数的函数——给了你额外的机会去组织和简化代码. 高阶函数的一个好处是它们能让你…
1 filter filter:将符合要求的数据(筛选)放置到新的集合中 应用案例:将 val names = List("Alice", "Bob", "Nick") 集合中首字母为'A'的筛选到新的集合. 思考:如果这个使用传统的方式,如何完成? val names = List("Alice", "Bob", "Nick") def startA(s:String): Boolea…
1 带有具体实现的特质 说明:和Java中的接口不太一样的是特质中的方法并不一定是抽象的,也可以有非抽象方法(即:实现了的方法). 2 带有特质的对象,动态混入 1)除了可以在类声明时继承特质以外,还可以在构建对象时混入特质,扩展目标类的功能 2)此种方式也可以应用于对抽象类功能进行扩展 3)动态混入是Scala特有的方式(java没有动态混入),可在不修改类声明/定义的情况下,扩展类的功能,非常的灵活,耦合性低 . 4)动态混入可以在不影响原有的继承关系的基础上,给指定的类扩展功能. 3 叠加…
1 概念的说明 1)在scala中,方法和函数几乎可以等同(比如他们的定义.使用.运行机制都一样的),只是函数的使用方式更加的灵活多样. 2)函数式编程是从编程方式(范式)的角度来谈的,可以这样理解:函数式编程把函数当做一等公民,充分利用函数. 支持的函数的多种使用方式. 3)面向对象编程是以对象为基础的编程方式. 4)在scala中函数式编程和面向对象编程融合在一起了 . 方法.函数.函数式编程和面向对象编程关系分析图 2. 函数的定义 定义: 为完成某一功能的程序指令(语句)的集合,称为函数…
简介 sparkStream官网:http://spark.apache.org/docs/latest/streaming-programming-guide.html#overview sparkStream是构建在spark core之上的实时流处理框架,它支持很多的数据源,如: 你可以从kafka等各种数据源中实时获取数据流,然后经过spark计算,持久化或者实时的dashBoard展示. sparkStream的实时计算其实也可以称为微批处理计算,它将数据流按照一定的时间段分割成小批的…
目录 前言 图像渲染 总结 参考链接 一.前言        前面几篇文章讲解了如何使用Geotrellis进行数据处理.瓦片生成等,今天主要表一下如何使用Geotrellis进行栅格渲染.        昨日完成了两种数据叠加生成瓦片的工作,然而在进行瓦片渲染的时候始终得不到想要的漂亮的颜色效果,由于这块代码是从之前Geotrellis官方DEMO中拷贝过来的,从未进行深究,所以折腾半天也没能实现,无奈那么就看源代码吧,在源代码中找到了这样一篇文档(rendering.md),里面详细讲述了在…
Git Bash+ConEmu可以模拟Linux强大的命令行.不过在结合Scala和Play时,需要注意如下事项: 1. Scala的安装在64位操作系统下,默认会放在“C:\Program Files (x86)\”.更改此目录使其安装在没有空格和没有括号的目录下. 2. chmod a+x scala,使此脚本具有执行权限. 3. 安装完Play2后,因为路径原因会出现“Could not find configuration file ../framework/sbt/sbt.boot.p…
HTML5被看做是Web开发者创建流行Web应用的利器,增加了对视频和Canvas 2D的支持.HTML5的诞生还让人们重新审视浏览器专用多媒体插件的未来,如Adobe的Flash和微软的Silverlight,HTML5为实现这些插件的功能提供了一种标准化的方式. 虽然HTML5标准尚未开发完成,但是随着开发者对HTML5的兴趣日渐浓厚,开发工具提供商也开始跟进.以下介绍的9款应用工具已经能够帮助开发者在程序中集成HTML5功能. 一.Adobe Edge 目前还处于预览阶段的Adobe Ed…
Scala 是什么?(What is scala?)   引用百度百科对于scala的定义: Scala是一门多范式的编程语言,一种类似java的编程语言,设计初衷是实现可伸缩的语言.并集成面向对象编程和函数式编程的各种特性.   scala 是一种纯面向对象的编程语言,但是与java不同,其还无缝结合了命令式编程以及函数式编程.scala的出现,抹平了这些编程范式之间严格的界限.与java相比,scala更为简洁,实现一个相同的功能,也许scala的代码行数只需要java的五分之一甚至十分之一…
目    录 一.Scala概述 二.Scala数据类型 三.Scala函数 四.Scala集合 五.Scala伴生对象 六.Scala trait 七.Actor 八.隐式转换与隐式参数 九.Scala JDBC 由于整理的篇幅较长,所以文章计划分三次发布. 一.Scala概述 1. Scala简介 Scala是一种针对JVM将函数和面向对象技术组合在一起的编程语言.所以Scala必须要有JVM才能运行,和Python一样,Scala也是可以面向对象和面向函数的.Scala编程语言近来抓住了很…
目    录 一.Scala概述 二.Scala数据类型 三.Scala函数 四.Scala集合 五.Scala伴生对象 六.Scala trait 七.Actor 八.隐式转换与隐式参数 九.Scala JDBC 由于整理的篇幅较长,所以文章计划分三次发布.第一部分的内容请转至系列(一). 四.Scala集合 1. Scala集合概述 Scala对集合的操作就是Spark程序的实现方式.Spark中有一个RDD(Resilience弹性的.Distributed分布式.DataSet数据集),…