Tag: scala

Scala解析器组合器与ANTLR / Java生成的解析器?

我正在为一个主要用Scala编写的应用程序编写表达式解析器。 我在Scala中构建了AST对象,现在需要编写解析器。 我听说过Scala的内置解析器组合器,以及ANTLR3,我想知道:哪个可以提供更好的性能和编写代码的简易性? 至今: ANTLR专业人士 知名 快速 外部DSL ANTLRWorks(用于解析器语法调试/测试的优秀IDE) ANTLR缺点 基于Java(Scala互操作可能具有挑战性,任何经验?) 在运行时需要很大的依赖关系 Parser combinator专业人士 Scala的一部分 少一个构建步骤 不需要运行时依赖; 例如,已经包含在Scala的运行时库中 解析器组合器缺点 内部DSL(可能意味着执行速度较慢?) 没有ANTLRWorks(提供很好的解析器测试和可视化function) 有什么想法吗? 编辑:此表达式解析器解析代数/微积分表达式。 它将在最终确定的Android应用程序Magnificalc中使用。

Scala / Play:将JSON解析为Map而不是JsObject

在Play Framework的主页上,他们声称“JSON是一等公民”。 我还没有看到证据。 在我的项目中,我正在处理一些相当复杂的JSON结构。 这只是一个非常简单的例子: { “key1”: { “subkey1”: { “k1”: “value1” “k2”: [ “val1”, “val2” “val3” ] } } “key2”: [ { “j1”: “v1”, “j2”: “v2” }, { “j1”: “x1”, “j2”: “x2” } ] } 现在我明白Play正在使用Jackson来解析JSON。 我在我的Java项目中使用Jackson,我会做这样简单的事情: ObjectMapper mapper = new ObjectMapper(); Map obj = mapper.readValue(jsonString, Map.class); 这样可以很好地将我的JSON解析为Map对象,这就是我想要的 – 字符串和对象的映射,并允许我轻松地将数组转换为ArrayList 。 Scala / Play中的相同示例如下所示: […]

Spark – foreach Vs foreachPartitions何时使用什么?

我想知道foreachPartitions是否会产生更好的性能,因为更高的并行度,与foreach方法相比,考虑到我正在流经RDD以便对累加器变量执行一些求和的情况。

用于代数的Java / Scala库,数学

你能告诉我一些灵活,强大而又快速的库,它可以覆盖SciPy(性能和function)。 我发现SciPy很有表现力 – 但我想在Scala中尝试一些东西。 我读了一些关于Scala的内容 – 但不像SciPy那样精彩。 任何替代品? 也许Java库?

function范式中的动态编程

我正在寻找关于项目欧拉的问题三十一 ,请问,有多少不同的方法可以使用任意数量的1p,2p,5p,10p,20p,50p,£1(100p)和£的硬币赚2英镑2(200p)。 有递归解决方案,例如Scala中的这个解决方案(Pavel Fatin) def f(ms: List[Int], n: Int): Int = ms match { case h :: t => if (h > n) 0 else if (n == h) 1 else f(ms, n – h) + f(t, n) case _ => 0 } val r = f(List(1, 2, 5, 10, 20, 50, 100, 200), 200) […]

正确的设计在阿卡。 – 消息传递

我已经阅读了一些关于akka如何以及为何不保证邮件传递的post。 文档 ,本次讨论和关于小组的其他讨论确实很好地解释了它。 我对akka很新,并希望知道一个案例的合适设计。 例如,假设我在不同的机器上有3个不同的演员。 一个是烹饪书籍,另一个是历史,最后一个是技术书籍。 我在另一台机器上有一个主演员。 假设有一个查询主要参与者搜索我们是否有一本书可用。 主actor向3个远程actor发送请求,并期望结果。 所以我这样做: val scatter = system.actorOf( Props[SearchActor].withRouter(ScatterGatherFirstCompletedRouter( routees=someRoutees, within = 10 seconds)), “router”) implicit val timeout = Timeout(10 seconds) val futureResult = scatter ? Text(“Concurrency in Practice”) // What should I do here?. //val result = Await.result(futureResult, timeout.duration) line(a) 简而言之,我已经向所有3个远程演员发送了请求,并期望在10秒内得到结果。 应该采取什么行动? 假设我在10秒钟内没有得到结果,我是否应该再次向所有人发送新请求? 如果within上述时间within是不成熟的。 但我不知道预先花了多少时间。 如果within时间足够但信息被删除了怎么办? 如果我没有within时间within得到回复并再次重新发送请求。 像这样的东西,它仍然是异步的: […]

Spark 1.5.1,Cassandra Connector 1.5.0-M2,Cassandra 2.1,Scala 2.10,NoSuchMethodError番石榴依赖

Spark环境的新手(对Maven来说还是新手)所以我正在努力解决如何正确发送我需要的依赖项。 看起来Spark 1.5.1有一个guava-14.0.1依赖,它试图使用,而且isPrimitive是在15+中添加的。 确保我的优步jar获胜的正确方法是什么? 我在我的spark-defaults.conf中尝试过spark.executor.extraClassPath无济于事。 复制到[问题]: Spark 1.5.1 + Scala 2.10 + Kafka + Cassandra = Java.lang.NoSuchMethodError:但对于Maven来说(还没有回复评论) 剥下我的依赖关系: com.google.guava guava 18.0 org.apache.commons commons-compress 1.10 com.esotericsoftware.kryo kryo 2.21 org.objenesis objenesis 2.1 org.apache.spark spark-core_2.10 1.5.0 org.slf4j slf4j-log4j12 log4j log4j org.apache.spark spark-sql_2.10 1.5.0 com.datastax.spark spark-cassandra-connector_2.10 1.5.0-M2 使用以下方法为我的JAR添加所有依赖项: org.apache.maven.plugins maven-shade-plugin 2.3 package shade org.apache.hadoop:* org.apache.hbase:* *:* META-INF/*.SF META-INF/*.DSA META-INF/*.RSA […]

从Java / Scala实例化Rhinoscript Native Objects

我正在尝试提高javascript片段评估程序的性能。 这些脚本片段可以引用存在于类似json的对象图(IE:Json AST)的字符串键控映射中的任意数量的变量。 我正在使用JDK 1.6和嵌入式Rhinoscript引擎(v1.6R2)。 目前,处理采用以下forms: 解析代码段以发现引用变量的名称 从地图中检索变量并将其序列化为json字符串 Json字符串被分配给脚本开头的类似命名的变量 评估增强的脚本 我试图找出如何跳过json序列化阶段并创建直接Rhinoscript本机对象放置在脚本的“绑定”中。 然后,所需的步骤是: 解析代码段以发现引用变量的名称 从地图中检索变量并将其转换为原生Rhinoscript等价物 本机对象放置在绑定中 用所述绑定评估原始脚本 你知道我在哪里可以找到如何实例化原生rhinoscript对象的文档或示例吗? 如果你想修补我的scala学习项目可能会有所帮助。 我想出的任何答案都应该出现在那里…… http://subversion.assembla.com/svn/freshcode_public/learn_scala/datastore/src/test/scala/pkg/script 提前致谢。

http获取身体请求

我知道你不应该发送带有正文的HTTP GET请求,但是ceilometer web api迫使我这样做。 我正在开发一个ceilometer scala客户端,所以我需要一个scala / java方法来生成一个获取请求。 到目前为止,我尝试使用beeClient( http://www.bigbeeconsultants.co.uk )和使用httpConnection的普通Java但我收到404错误。 在curl中,我可以通过这种方式实现结果: curl -X GET -H “X-Auth-Token: ..long long token here..” -H “Content-Type: application/json” -d ‘{“q”: [{“field”: “resource”, “op”: “eq”, “value”: “gdfsf”}]}’ http://137.204.57.150:8777/v2/meters/ 这是我使用java HttpURLConnection的scala代码: import java.io._ import java.net._ val token = “myToken” val url = new URL(“http://137.204.57.150:8777/v2/meters/”) val body = “{\”q\”: [{\”field\”: \”resource\”, \”op\”: […]

在AWT队列线程中调试exception

我正在开发一个Swing应用程序,其中包含执行自定义绘制的组件 当我在绘制代码中犯了一些错误并抛出exception时,情况很难调试。 弹出窗口显示exception信息,而不是被调试器捕获。 此外, 线程似乎重新启动 ,并且由于编码错误的结果exception,它会一次又一次地显示。 当我很幸运地切换到调试器时(这很困难,因为越来越多的弹出窗口随着应用程序获取绘制请求而不断出现),调试控制台会向我显示一个exception信息,例如: 严重:线程中抛出未捕获的exception[AWT-EventQueue-0,6,main] ….堆栈如下 我的应用程序是用Scala编写的,我使用的是IntelliJ IDEA 14.我的未捕获的主线程exception由调试器处理得很好(我在Java Exception Breakpoints启用了Any exception断点的Uncaught exception ),但AWT线程中的exception不是。 我已经尝试过安装一个处理程序,如下所述我如何检测何时在Java中全局抛出exception? 回答 ,但我的处理程序似乎没有被触发。 我想实现以下(按重要性顺序): 避免AWT线程在exception时重新启动,或者至少阻止弹出窗口显示 在调试器中处理未捕获的exception,而不是在控制台中打印 (注意:虽然这是Scala应用程序,但我认为Java的行为是相同的,因此Java标记)。