Scala入门之六:泛型
转载 本文介绍了Scala的Trait。除了从父类集成代码外,Scala中的类还允许从一个或者多个traits中导入代码。 对于Java程序员来说理解traits的最好方法就是把他们当作可以包含代码的接口。 本文源自Michel Schinz和Philipp Haller所写的A Scala Tutorial for Java programmers,由Bearice成中文。第一篇为Scala简单做了一下入门,第二篇描述Scala对象,第三篇对Scala类做了一些介绍。第四篇介绍了Scala的模式匹配,第五篇则介绍Scala的Trait。下面是最后一部分,讲述Scala的泛型。Scala的泛型是Scala最大的优势之一。 8 Scala的泛型 我们在这文章将要学习Scala的最后一个特性是泛型。Java程序员们可能最近才知道这个东西,因为这个特性是在Java1.5中才被加入的。 泛型是一种可以让你使用类型参数的设施。例如当一个程序员正在实现一个链表时,将不得不面对诸如如何决定链表中节点保存数据的类型之类的问题。正由于这是一个链表,所以往往会在不同的环境中使用,因此,我们不能草...
Scala入门之四:模式匹配和条件类
本文介绍了Scala的模式匹配。模式匹配的基本思想就是试图对一个值进行多种模式的匹配,并且在匹配的同时将匹配值拆分成若干子项,最后对匹配值与其子项执行某些代码。 本文源自Michel Schinz和Philipp Haller所写的A Scala Tutorial for Java programmers,由Bearice成中文。第一篇为Scala简单做了一下入门,第二篇描述Scala对象,第三篇对Scala类做了一些介绍。这一篇将介绍Scala中的一个重要特性:Scala的模式匹配。 6 Scala的模式匹配和条件类 树是在程序中常用的一个数据结构。例如编译器和解析器常常吧程序表示为树;XML文档结构也是树状的;还有一些集合是基于树的,例如红黑树。 接下来我们将通过一个计算器程序来研究树在Scala中是如何表示和操纵的。这个程序的目标是处理一些由整数常量、变量和加号组成的简单的算数表达式,例如1 + 2 和 (x + x ) + (7 + y )。 我们首先要决定如何表示这些表达式。最自然的方法就是树了,树的节点表示操作符(在这里只有加法),而树的叶节点表示值(这里表示常数...
Spark实践笔记1:环境准备
ubuntu server镜像,ParallelsDesktop下快速安装。采用12.04 server 32位版本,手动安装,使用英文语言,时区选中国,预装服务选了 openssh 修改root用户密码,启用root账户:sudo passwd root 。此后使用root用户操作。 设置静态IP:vim /etc/network/interfaces root@ubuntu1:~# more /etc/network/interfaces# This file describes the network interfaces available on your system# and how to activate them. For more information, see interfaces(5).# The loopback network interfaceauto loiface lo inet loopback# The primary network interfaceauto eth0#iface eth0 ine...
Spark实践笔记2:Hadoop安装
Hadoop下载:我选择了hadoop2.7.0 将hadoop-2.7.0.tar 上传到ubuntu1里去,并将hadoop解压到/usr/local/hadoop mkdir /usr/local/hadooptar xvf hadoop-2.7.0.tar -C /usr/local/hadoop/ 修改 ~/.bashrc 文件,增加环境变量: export HADOOP_HOME=/usr/local/hadoop/hadoop-2.7.0export PATH=${JAVA_HOME}/bin:${HADOOP_HOME}/bin:$PATH 导入配置使其生效:source ~/.bashrc 创建必要的目录 mkdir ${HADOOP_HOME}/dfsmkdir ${HADOOP_HOME}/tmpmkdir ${HADOOP_HOME}/dfs/datamkdir ${HADOOP_HO...
Spark实践笔记3:Spark集群搭建
scala的安装 下载安装包:我选择2.11.6版本 上传到ubuntu1中并解压,配置环境变量,增加SCALA_HOME,并在PATH里增加对应BIN tar xvf scala-2.11.6.tar -C /usr/localcd /usr/localmv scala-2.11.6 scalavim ~/.bashrcexport SCALA_HOME=/usr/local/scalapath里增加 $ {SCALA_HOME} /binsource ~/.bashrc 把scala拷贝到其他两台机器,并配置环境变量 scp -r scala ubuntu2:/usr/localscp -r scala ubuntu3:/usr/local 验证scala安装成功 scala -version spark安装 下载安装包:我选择1.3.1版本 上传到ubuntu1中并解压,配置环境变量,增加SPARK_HOME,并在PATH里增加对应BIN。使用source命令使配置生效 tar xzvf spark-1.3.1-bin-ha...
Spark实践笔记4:用Spark-shell做交互式分析
首先在MASTER机器上启动hadoop及spark;把位于${SPARK_HOME}下的README.md文件put到HDFS/data目录下;启动spark-shell,启动spark-shell时需要指定MASTER机器,否则执行后续命令会报错:${SPARK_HOME}/bin/spark-shell –master spark://ubuntu1:7077scala> val textFile = sc.textFile(“/data/README.md”)textFile.count()textFile.first()能看到,程序正常执行,而且执行第二个命令first的速度比第一个命令count要快很多。通过Spark-shell的web能看到任务信息。 个人理解:val定义了一个RDD(弹性分布式数据集)textFile。RDD拥有自己的一些actions,如count、first、take、countByKey、reduce等,可以直接调用。RDD还有一种操作类型叫 tran...
Spring Boot过滤返回的数据
考虑这样的场景:对于同一个Model类,在不同的api中需要返回不同的字段。该如何优雅的实现呢? 解决方案采用JsonView,根据定义自动实现字段的过滤。 具体方法 创建一个view类,声明一个summary接口,summary接口继承summary用来演示扩展 public class View { public interface Summary {} public interface Summary2 extends Summary{}} 在model上使用注解,定义view中需要呈现的列 public class Article { @JsonView(View.Summary.class) private String id; @JsonView(View.Summary2.class) private String title; private String content; // 省略getter setter} 通常在RES...
keras神经网络算法预测销量高低实践
基于样本数据周末,促销,天气,销量,进行深度学习。最终得出销量与周末、促销、天气的关系模型。并展示了神经网络算法对分类的预测。 以下为代码: import pandas as pd In [2]: filename = ‘/Users/frontc/book/ppdam/sales_data.xls’ In [3]: data = pd.read_excel(filename,index_col=u’序号’) In [4]: # 数据规整 data[data == u’好’] = 1 data[data == u’是’] = 1 data[data == u’高’] = 1 data[data !=1 ] = 0 In [5]: x = data.iloc[:,:3].as_matrix().astype(int) # 自变量 y = data.iloc[:,3].a...
ngnix+uwsgi+flask
Flask开发应用不难,部署不容易。网上的资料很多,但坑也很多。我纪录一下要点,以及那些坑。 安装uwsgi,最好采用 pip install flask-uwsgi,在对应的虚拟环境里安装 nginx新版本,我用的是nginx/1.0.15中,配置文件是在/etc/nginx/conf.d中 一个典型的run.py如下: 应用的名字要as成application。否则uwsgi出现找不到app的异常,即使你在uwsgi的配置文件里指定了callable=xxx。 run里不要带任何参数 from pm import app as application if __name__ == '__main__': application.run() 下面是一个典型的uwsgi.ini配置: [uwsgi] module = wsgi --这是run.py的名字,去掉后缀名 master = true processes = 4 socket = /web/pm/pm.sock --这里指定了一...
pandas逻辑回归建模
基于样本数据(年龄、教育、工龄、地址、收入、负债率、信用卡负债、其他负债、违约),挖掘显著影响违约的因子。步骤如下: import pandas as pd In [2]: filename = ‘/Users/frontc/book/ppdam/bankloan.xls’ In [3]: data = pd.read_excel(filename) In [29]: data Out[29]: 年龄 教育 工龄 地址 收入 负债率 信用卡负债 其他负债 违约 0 41 3 17 12 176 9.3 11.359392 5.008608 1 1 27 1 10 6 31 17.3 1.362202 4.000798 0 2 40 1 15 14 55 5.5 0.856075 2.168925 0 3 41 1 15 14 120 2.9 2.658720 0.821280 0 4 24 2 2 0 28 17.3 1.787436 3.056564 1 5 41 2 5...
