Scala拾趣--从Java7说开来

  我们知道,关于当前正在进行中的Java7在Java社区有很多讨论。其焦点集中在要不要在Java7中引入一些新的语言特性,尤其是闭包:不仅有要不要加入闭包的争论,还有采用那种实现方式的问题。在[url=http://www.iteye.com/news/598]javapolis举行的关于JAVA7语言特性投票的结果[/url]一文中列出了Java7中可能会加入的语言特性,那么我们先来看看在Scala中对于这些语言特性有何解决方式呢?
  首先把闭包撇出来,因为对闭包不甚了解,所以就不多说。不过以我的看法,因为Scala本身就支持函数式编程,而Java还需要向后兼容性的考虑,所以我觉得Java7中无论以那种方式来实现闭包,也不太可能比Scala中的实现更加有效,或更加优雅。
  下面我们就逐条来分析Java7中的十种语法提议:

[size=large][color=blue]1.Property declaration
2.Property access[/color][/size]
  这两条都是为了简化书写代码,这里用一个具体的例子来说明:
  考虑一个Person类,这个类有两个属性,一个是表示姓名的forename,在JAVA7中可能的实现方式:

public class Person {   
public property String forename;
public property int age;
}


  而使用Scala,则可以使用下列方式(参考资料:[url=http://scala.sygneca.com/code/defining-bean-properties]Defining a BeanProperty[/url]):

class Person(@BeanProperty var forename:String,@BeanProperty var age:Int)


  一行代码搞定!


[size=large][color=blue]3.Improve generics [/color][/size]
  Scala中也支持泛型,而且貌似比JAVA中的更灵活。不过其实现方式与目前的JAVA一样,都是使用擦除化。因此对于JAVA中泛型存在的一些问题,Scala中也存在(唔,至少这条提议中列出的两个问题在Scala中也同样存在。其他的我不太清楚,目前对Scala中的泛型理解尚浅)。


[size=large][color=blue]4.Access List and Map using [] [/color][/size]
  在Scala中可以像下面一样使用Map:

import scala.collection.mutable.HashMap
object MapAccess extends Application{
var map =new HashMap[Int,String]
map(0) ="Zero"
map += 1 -> "One"
map += 2 -> "Two"
var value =map(2)
println(value)
}

  可以看到,在Scala中可以通过map(key)来读取value,通过map(key) =value来写入值对...
  事实上,Scala中并没有对Map提供特别的语法支持。也就是说,对任意的类,你都可以像操作Map一样。只要你在一个类a中定义了apply方法,你就可以把这个类当作一个函数来使:
  a(something)
  这等价于:
  a.apply(something)
  如果你还定义了update方法,你就可以使用
  a(key) =value
  这等价于
  a.update(key,value)
  怎么样,不赖吧?

[size=large][color=blue]5,10.Null-handling and chaining [/color][/size]
  之所以有这两个提议,是由于在Java中存在null以及void类型的方法。在Java中,很多方法会返回一个null表示没有得到预期的结果或结果为空。事实上大部分情况这样做是不恰当的,这时抛出一个异常或返回一个表示“空”的对象(比如字符串“”,或空的List)可能更合理。而且这样造成的后果是对于很多方法调用后需要对其结果是否为null进行判断。
  幸运的是,Scala中没有这些问题。
  第一:在Scala中没有void,也就是说每个方法都会返回一个实实在在的对象(Java中的void在Scala中有一个对应的类Unit)。
  第二:对于标准的Scala程序,null不应该出现。相对应的Scala中有个Option类来处理这种返回结果为“空”的情形。
  这里我也不细说了,有兴趣的可以参看opensdp同学的 [url=http://www.iteye.com/topic/72517]用Scala语言中的 Option 对象来处理 null-like 返回值[/url]。


[size=large][color=blue]6.Extension methods[/color][/size]
  这个有点像Ruby中的“open class”,就是允许在不修改原有代码的情况下给已有的类添加新的方法。
  由于JAVA是静态类型语言,并且不允许两个名字完全一样的类的存在,所以在这一点的实现肯定会有很多限制,不可能做到像Ruby那样。目前有两种解决方案:
[quote="Neal Gafter的提议"]
example:

import static java.util.Collections.sort;
…
List<String> list = …;
list.sort();[/quote]
[quote="Peter Ahé's 的提议"]
"Declaration-Site Extension Methods"

example:

package java.util;
interface List<E> … {
…
void sort() import static java.util.Collections.sort;
…
}[/quote]
  第一种实现可以看成是static import的一种扩展;第二种实现同样用到了static import,并且需要修改已有代码。
  总之,这两种方案看起来都不甚优雅,甚至可以说丑陋。其意义也不大,并且对代码的可读性会造成一定的影响。
  那么我们来看看Scala中能够如何解决这个问题。Scala中有一个功能很强大的机制:隐式类型转换。这个机制威力巨大,用处远不止Extension methods,这里我只举个例子说明如何解决Extension methods,有兴趣的可以参看fakechris同学写的[url=http://www.iteye.com/topic/107445]scala学习笔记(5) -- implicit type[/url]

  在Ruby中,我们可以通过如下方式向String类中添加print_self方法:

class String
def print_self
puts self
end
end

  然后我们就可以对普通的String调用print_self方法:

"Daniel Spiewak".print_self    # prints my name

  那么Scala中怎末实现这个呢?很简单:

object StringTest extends Application{

"Eastsun".printSelf //对String调用printSelf方法

implicit def stringWrapper(s:String) =new {
def printSelf = println(s)
}
}

  并且在类StringTest可见的范围内,这个方法都是有效的。(参考资料:[url=http://www.codecommit.com/blog/scala/scala-for-java-refugees-part-6]Getting Over Java[/url])


[size=large][color=blue]7.String switch [/color][/size]
  在Scala中没有switch关键词,但是有另一个强大得多的机制(不过,也复杂得多):Pattern match。实现String switch功能,那只不过是小菜一根。

object MatchTest extends Application{

test("hello")

def test(obj:Any):Unit = obj match{
case 1|2|3|4 => println("A integer between 1 and 4")
case "hello" => println("Hi")
case _ => println("something else")
}
}



[size=large][color=blue]8.Typedef [/color][/size]
  唔,对于这个功能...但是Scala中恰好就有这样一个关键词type,typedef就是这个关键词的作用之一:

import scala.collection.mutable.HashMap
object TypeTest extends Application{
type ISMap =HashMap[Int,String]
var map =new ISMap
map(1) ="One"
}



[size=large][color=blue]9.Multi-catch [/color][/size]
  这里我们又可以来感受一下Scala中Pattern match的威力了:
import java.io.IOException
object ExceptionCatch extends Application{

exceptionCatch(ioexceptionThrow)

def ioexceptionThrow():Unit = throw new IOException

def exceptionCatch(func:()=>Unit) =
try{
func()
}catch{
case _:IllegalArgumentException|_:IllegalStateException => println("RuntimeException")
case _:IOException => println("IOException")
case _ => println("Something else")
}
}


  [size=large][color=blue]结论[/color]:[/size]可以看到,目前在JAVA中想方设法想要加入的语言特性,在Scala中要么是根本不需要的东西,要么是以一种更加优雅的方式实现了。但同时,在学习Scala的过程中,一方面感受到Scala语法所带来的巨大便利与威力,另一方面其语法比起JAVA来复杂了许多。譬如在Java中粗略来说有interface,abstract class与普通的class。而Scala中除了普通的class与abstract class还有case class,sealed class,trait,object这些类型的类。更不用说Scala中那些函数式有关的语法了。
  因此,可能有人会有疑问:有着这么复杂语法的语言有存在的必要吗?会不会成为下一个C++(恐龙)呢?Daniel Spiewak 在他的博客[url=http://www.codecommit.com/blog/scala/is-scala-really-the-next-c]Is Scala Really the Next C++?[/url]中也提出了这个问题,他的答案是否定的。主要的理由是:C++由于兼容的目的背上了C这个沉重的包袱,由于C的影响,很多语言特性不能很好的实现;而Scala不同,Scala与Java在源代码上是不兼容的,因此Scala可以更加自由的发挥。
  我比较赞同这个观点,同时觉得Java7不应该添加太多的东西进去了。虽然现在Java代码相对其他新式语言来说显得啰嗦,但是Java简单,这就是它最大的优点。如果Java即要考虑向后兼容性,又想把新的特性一股脑加进去,到后来只可能走向C++的老路。这些新的特性应该由JVM上的其他语言来实现,比如Groovy,比如Scala。你觉得呢?
  [color=red]PS:[/color]根据达尔文的理论,生物的进化包括[color=blue]遗传[/color]与[color=blue]变异[/color]。而目前的JAVA是只“遗传”不“变异”,这对于语言的进化也是很不好的。
Windows 7 下Scala运行环境的搭建 今天开始,要踏上大数据Spark的学习征程了,生命这么短,我们需要Spark Spark的内核使用Scala语言编写的,在编写Spark项目时,Scala也是最好的选择 第一步是Scala运行环境的搭建,安装步骤如下: 1  下载安装Java 7(需要注意系统版本,这里使用的系统是Windows 7的64位版本) http://www.oracle.com/technetwor 阅读详情

相关推荐

【Java 和 Scala】-- Java 与 Scala 的 Assert 断言对比

断言(Assertion)是一种用于在开发和测试阶段检查代码逻辑的机制。它通常用于验证程序的某些假设是否成立,若不成立,则会抛出错误或异常,以便开发者发现潜在的逻辑错误。在 Java 和 Scala 中,assert关键字用于进行断言检查,它通常只在调试或测试阶段启用,而不会影响生产环境的代码运行。

欢迎来到我的博客,一起探索代码里的世界! 1322

Linux基础环境搭建(CentOS7)- 安装Scala和Spark

Linux基础环境搭建(CentOS7)- 安装Scala及Spark 1 Scala下载及安装 Scala是一门多范式的编程语言,一种类似java的编程语言,设计初衷是实现可伸缩的语言 、并集成面向对象编程和函数式编程的各种特性。 Scala的下载 Scala下载链接:https://pan.baidu.com/s/1xe2u5W7k0XzZFX2r2Sk7Ag 提取码:pwu7 将下载的安装包通过Xftp传输到Linux虚拟机中 Scala安装 创建工作路径/usr/scala,下载scala安装包到

? 4万+

基于centos7的scala与spark的安装

Spark下载 安装scala 下载scala安装包,https://www.scala-lang.org/download/选择符合要求的版本进行下载,使用客户端工具上传到服务器上。解压: # tar -zxvf scala-2.13.0-RC2.tgz -C /usr/local/ 再次修改/etc/ bashrc件,添加如下内容: export SCALA_HOME=/usr/local...

onlylove777的博客 421

Scala深入浅出——从Java到Scala

本文适合有一定Java基础的,并想系统学习Scala的小伙伴借鉴学习。文章有大量实例,建议自己跑一遍。 Scala深入浅出——从Java到ScalaScala一、介绍1、什么是Scala?2、特点3、安装二、Scala特点三、scala的基本语法1、声明变量2、输出3、字符串4、数据类型4.1、scala类型层次结构5、标识符6、运算符7、表达式7.1、条件表达式7.2、块表达式7.3、循环7.3.1、for循环7.3.2、Breaks类7.3.3、while循环8、方法8.1、方法参数9、函数9.1、.

yZzc_XQ的博客 530

使用示波器通过串口抓取数据波形

当我们在软件上发送一个数据,需要在示波器上正确的显示发送数据的波形时,这个过程是需要按照软件上串口配置的参数对示波器进行调节的,本次使用的示波器(型号为RIGOL DS1102Z-E)外观如下图所示,本次对采集波形的调节主要用到以下几处按钮。具体是两条导线T+连接R+、T-连接R-,连接完毕后,打开XCOM软件,首先配置好参数后打开串口,如下所示,若在发送窗口发送数据在接收窗口可以实时显示到的话,证明串口的收发功能是正常的。1.CH1、CH2是示波器上的两个采集通道,本次波形采集使用的是CH1通道。

weixin_58061628的博客 1万+

【分子指纹】化学分子指纹的概念和应用(非常重要)

分子指纹(Molecular fingerprints)可以低计算成本的方式表示大规模化学数据集中化合物的化学(结构、物理化学等)性质。它们在将化学数据集中的分子转换为适合于计算方法的一致输入格式(bit向量或数值)方面发挥着重要作用。在这篇综述中,

DJJ5210的博客 1万+

Scala下载安装配置教程(Scala Windows上的安装,包括Linux上的安装)

2.2 重启IDE后,新建项目,就可以选择Scala,构建系统选择IntelliJ,jdk选择1.8,Scala SDK 这里第一次创建不会默认选择,你需要点击右边的创建,然后会出现你刚才下载好的Scala2.11.5,选择即可,最后点击创建。打开插件市场后,在搜索框输入Scala搜索,然后第一个就是下载,等待下载成功,然后重启IDE。打开设置,搜索Scala,选择Scala服务编译器,将JDK版本改为1.8即可。单击后打开,然后往下翻,找到需要的系统,进行下载。然后一路点击确定,退出编辑环境变量页面。

WBXNBNBNB的博客 6345

RedCap:一种通信技术的概述

总结起来,RedCap是一种基于数据包交换的通信技术,它提供了一种高效、可靠的数据传输机制。通过使用RedCap,我们可以轻松地发送和接收数据包,并确保数据的完整性和正确性。在上面的示例中,我们首先导入了RedCap库,并创建了一个RedCap实例。然后,我们定义了目标地址和源地址,并创建了一个数据包,其中包含了目标地址、源地址和要发送的数据。本文将介绍RedCap的基本原理和使用方法,并提供一些相关的源代码示例。RedCap还提供了其他一些功能,如数据包的重传机制、流量控制和拥塞控制等。

YgjWeb的博客 900

从Java 7 Futures到Scala的Akka演员

这篇博客文章将向您展示如何逐步从基于“ java 7 and jucFuture ”的实现过渡到“ 用scala解决方案编写的akka​​ actor ”。 这将需要四个步骤,分别是: Java 7和期货 Java 8和并行流 斯卡拉和期货 Scala和具有Ask模式的演员 Scala和演员(几乎)没有询问模式 完整的代码存储库可以在github上找到。 应用程...

165

CesiumForUnreal实现地形等高线效果

CesiumForUnreal实现地形等高线效果

专注GIS开发 3438

[系统安全] 十一.那些年的熊猫烧香及PE病毒行为机理分析

如果你想成为一名逆向分析或恶意代码检测工程师,或者对系统安全非常感兴趣,就必须要认真分析一些恶意样本。熊猫烧香病毒就是一款非常具有代表性的病毒,当年造成了非常大的影响,并且也有一定技术手段。本文将详细讲解熊猫烧香的行为机理,并通过软件对其功能行为进行分析,这将有助于我们学习逆向分析和反病毒工作。后续作者还将对其进行逆向调试,以及WannaCry勒索蠕虫、各种恶意样本及木马的分析。基础性文章,希望您喜欢!同时,本文部分实验参考姜晔老师的视频分析,真的非常佩服和值得去学习的一位老师。技术路上哪有享乐,为了提升安

杨秀璋的专栏 7328

scala java 转换_Java与Scala集合互转,Java中调用Scala集合,Scala中转换Java集合

摘要:Scala,Java,JavaConverters包括三种场景的转化Java脚本中,将Scala集合转化为Java集合Scala脚本中,将Scala集合转化为Java集合Scala脚本中,将Java集合转化为Scala集合JavaConverters隐式转换Scala提供了大量的方法来隐式转换所有主要的Java和Scala容器类型。其中提供了如下的双向类型转换Iterator ...

weixin_39595931的博客 1310

【C++PCL】点云文件读写

本文介绍 PCL 中 PCD 与 PLY 点云文件的读取、保存和字段检查,覆盖 PointXYZI、PointXYZRGB、ASCII、二进制及压缩二进制,并给出 C++11 实操代码与参数调试建议。

weixin_45196569的博客 42

scala安装

单击 【开始】,在输入框中输入cmd,然后"回车",输入 scala,然后回车,如环境变量设置ok,你应该能看到这些信息。设置 Path 变量:找到系统变量下的"Path"如图,单击编辑。右击我的电脑,单击"属性",进入如图所示页面。也就是 Scala 的安装目录,根据个人情况有所不同,如果安装在 C 盘,将 D 改成 C 即可。下载后,双击 exe 文件,一步步安装即可,安装过程你可以使用默认的安装目录。安装好scala后,系统会自动提示,单击 finish,完成安装。

2301_81071890的博客 1418

S32K144 UDSdoCAN 升级刷写实现笔记

本篇旨在描述如何开发“车规级”的软件升级程序,通过在S32K144平台上实现基于UDSdoCAN的刷写升级功能,带你一步步建立安全升级的“工程思维”,在这里既能收获经验还能获得工程源码、测试脚本,助你起飞,避坑提速!

汽车电子软件领域知识分享 812

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

Java与Scala集合互转,Java中调用Scala集合,Scala中转换Java集合

ScalaJava包括三种场景的转化。

qq_24428851的博客 1116

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

dask futures_从Java 7 Futures到Scala的Akka演员

dask futures 这篇博客文章将向您展示从基于Java 7 and jucFuture的实现逐步过渡到以Scala解决方案编写的akka​​ actor的样子。 这将需要四个步骤,分别是: Java 7和期货 Java 8和并行流 Scala和期货 Scala和具有Ask模式的演员 Scala和演员(几乎)没有询问模式 完整的代码存储库可以在github上找...

165

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

Gradle 7.3 发布,支持 Java 17 和 Scala 3

  Gradle 7.3 版本为 JVM 项目引入了声明性测试套件 API,添加了对使用 Java 17 构建项目的支持,并更新了 Scala 插件以支持 Scala 3。   Gradle 7.3 具体更新内容如下:   升级说明   通过更新你的 Wrapper,将你的构建转换为使用 Gradle 7.3。   ./gradlew wrapper --gradle-version=7.3   新功能和可用性改进   支持 Java 17Gradle 现在支持在 Java 17 上运行和构建。

woliuqiangdong的博客 1592

centos7 Scala安装

centos7 Scala安装 使用wget下载Scala压缩包 [root@master ~]# wget https://downloads.lightbend.com/scala/2.12.11/scala-2.12.11.tgz 解压Scala压缩包到/usr/local/src/ [root@master ~]# tar -zxvf scala-2.12.11.tgz -C /usr/local/src/ 将解压文件夹改名为scala [root@master ~]# mv /usr/loc

weixin_52661752的博客 1095

Scala和Java的语法差异

Scala作为基于jvm的语言,可以直接复用所有java的库资源,同时其具备函数式编程的特性以及脚本语言的特性,语法更加简洁。scala具备面向对象和函数式编程理念的混合体(这点和python有点像),从编写简单脚本到建立大型的系统,都是适用的。目前spark、kafaka等流行的大数据处理的软件都是由scala编写。本文从java工程师的角度,介绍一些scala语言和java语言差异点

8345

Scala安装

Scala是一种将面向对象和函数式编程结合在一起的高级语言,旨在以简洁、优雅和类型安全的方式表达通用编程模式。Scala功能强大,不仅可以编写简单脚本,还可以构建大型系统。Scala运行于Java平台,Scala程序会通过JVM被编译成class字节码文件,然后在操作系统上运行。其运行时候的性能通常与Java程序不分上下,并且Scala代码可以调用Java方法、继承Java类、实现Java接口等,几乎所有Scala代码都大量使用了Java类库。

2301_81664126的博客 505

Java大战Scala

目录 一:变量 二:函数 三:数据类型 四:集合 五:特殊符号 六:逻辑构建元件 七:极致的简写 八:scala中的书写规范与java区别 引言: 在今年进行职业规划中,选择了数据分析这一块儿作为以后的工作方向 结合更新效率,未来应用趋势,第一次主动的,自愿的选择了以Spark为核心的发展生态策略 此文仅是本人于scala的基础学习之后,在结合java开发及工作经验做的汇...

威少(微笑) 1679

linux(centos7)下安装 scala2.11.6

1、下载文件scala2.11.6.tgz         http://www.scala-lang.org/download/2.11.6.html 2、登陆linux        [root@master usr]#  创建文件夹存放scala        [root@master usr]# mkdir scala 上传文件到usr下面并解压       [root@

bahaidong的专栏 1万+

Scala Windows7、Windows10与Linux环境配置安装

目录 Windows7 Windows10 Linux 前置条件 java环境配置好: java -version 指令查看是否已经配置过java了 在配置过jdk的情况下,执行java -verbose指令,在打印出的文本最后两行可以看到jdk的安装路径 Windows7 具体的步骤 1) 首先把 jdk1.8 安装 2) 下载对应的 scala 安装文件 scala-2....

背离赤道、逆光而行 283

java sbt_scala-设置sbt以使用Java 7进行编译?

我使用virtualenv,它是Python生态系统中的工具。 简而言之,它是一个shell脚本,可让您轻松更改PATH变量,并在需要时返回到以前的状态。首先安装virtualenvwrapper(virtualenv的包装器):$ apt-get安装virtualenvwrapper现在为具有Scala-2.11的Java8创建一个虚拟环境。$ mkvirtualenv j8s11现在,调整〜/...

weixin_42641741的博客 188
上一篇: Scala—Java的避难所:第一部分:main(String[])
下一篇: Java之父James Gosling也使用Scala
JavaSxy
博客等级 码龄21年 1粉丝 25原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值