Tag: scala

Scala遗传算法(GA)库中的模拟二进制交叉(SBX)交叉算子

我在一个很小的研究团队工作,用Scala创建/改编遗传算法库,用于使用Scientific Worklow System进行分布式计算,在我们的例子中,我们使用开源OpenMole软件( http://www.openmole.org/ )。 最近,我尝试理解并重新实现在JMetal Metaheuristics库( http://jmetal.sourceforge.net/ )中编写的SBX交叉运算符,以使其在我们的Scala库中的function版本中进行调整。 我写了一些代码,但是我需要我们的建议或者你对在Java库中定义的SBX的validation,因为源代码( svn中的src )看起来不像这里写的原始等式: http : //citeseerx.ist。 psu.edu/viewdoc/download?doi=10.1.1.33.7291&rep=rep1&type=pdf ,第30页,附件A 第一个问题,我不了解JMetal的java版本,为什么他们使用两个不同的beta值? beta1在方程中使用min [(y1-yL),…]和的第一个arg 使用min […,(yu – y2)]的第二个arg的beta2 ) Beta 1和2用于计算alpha值和2(所以这里和jmetal我们还有两个alpha不同的值alpha1和2)… 同样的问题/问题,我们在jmetal两个计算betaq (java代码)或Deb方程,结果: 第二个问题,符号的含义是什么 用于(2)和(3)程序中的SBX伪算法,与简单β的区别? 特别是当我们想要计算交叉父母的孩子/后代时,就像这里: 编辑 更正no-op if / else块 jmetal中的代码作者给了我Nsga-II算法原始源代码的链接,他解释我Deb的SBX描述与他的实现不同:/ http://www.iitk.ac.in/kangal/codes.shtml 我不明白jmetal和原始源代码中的描述和实现之间的区别,你有解释吗? 正确if / else返回map 开始翻译成scala class SBXBoundedCrossover[G <: GAGenome, F Double = _.nextDouble) extends CrossOver [G, […]

Play / Akka与Java OutputStreams集成

我在写一个游戏! 暴露REST API的应用程序,允许用户生成PDF报告。 我受到使用旧Java API进行实际报告生成的要求的限制。 该库有一个方法generate(OutputStream out, …) ,即它需要一个java.io.OutputStream来编写生成的报告。 我的问题是将它与Play / Akka集成以提供Chunked Encoding中的内容。 为此,我需要创建一个Enumerator[Array[Byte]] ,它以某种方式包含Java库中的OutputStream 。 我提出了一个使用PipedOutputSteam / PipedInputStream二人组的工作解决方案,使用Enumerator.fromStream将库的输出传递给Enumerator.fromStream 。 我想知道是否有更好的方法来实现这一点,但我似乎无法在Akka或Play中找到一个明确的例子! 将枚举器与OutputStream集成的文档。 我知道Java库的阻塞IO是设计更好的解决方案的限制因素,但也许有一种更简洁的方法来做到这一点。 有什么想法吗? 跟进 假设我使用Enumerator.outputStream ,那么将实际报告生成移动到另一个actor(可能在另一台机器上)的安全方法是什么? 例如,我猜测发送OutputStream是不安全的(并且只能在本地工作)。

invokedynamic和隐式方法

正如我在阅读这篇关于JDK 7中新的invokedynamic字节码指令的post所理解的那样,它可以调用对象类中没有静态定义的对象上的方法,并将这些方法调用解析为某些具体的静态方法。其他类通过拦截方法调用目标分辨率(post给出一个例子)。 这是否意味着Java 7类可以拥有像Scala这样的隐式方法? 如果不是,Scala中的隐式方法解析与invokedynamic方法解析有何不同?

为什么在java中你不需要创建这些json读/写?

如果我错了,请纠正我,但是当使用Java而不是Spring MVC时,您不必创建这些额外的类来将Java类映射到JSON,将JSON映射到类。 你为什么要在Play with Scala中这样做? 它与Scala有关吗? case class Location(lat: Double, long: Double) implicit val locationWrites: Writes[Location] = ( (JsPath \ “lat”).write[Double] and (JsPath \ “long”).write[Double] )(unlift(Location.unapply)) implicit val locationReads: Reads[Location] = ( (JsPath \ “lat”).read[Double] and (JsPath \ “long”).read[Double] )(Location.apply _)

scala和java中的枚举器vs迭代器

Enumerator和Iterator有什么区别? 根据我的理解, Enumerator不是Java中enum的精美别名。 相反,它似乎是一种类似于Iterator的遍历技术。 那么有人能够比较和对比Enumerator和Iterator吗? 另外,我在Play看到了一种用法 val data = getDataStream val dataContent: Enumerator[Array[Byte]] = Enumerator.fromStream(data) 编辑: 我倾向于认为Enumerator为我们提供了实际的数据块,而Iterator给出了指向已经分块的数据的指针,例如列表。 但我不相信那是这样的。

在后续Java调用Play 2.0的fakeRequest中保持会话

我正在寻找一种在我的Java测试中使用Play 2.0的fakeRequest时保留会话的方法,但是在基于Scala的JAR中调用方法时我的尝试失败了。 基于Scala问题中提到的拉取请求, 在测试期间向会话添加值(FakeRequest,FakeApplication) ,我认为以下内容可能适用于Java: public Session getSession(Result result) { play.api.mvc.Cookies scalaCookies = play.api.test.Helpers.cookies(result.getWrappedResult()); play.api.mvc.Cookie scalaSessionCookie = scalaCookies.get(play.api.mvc.Session.COOKIE_NAME()).get(); scala.Option optionalCookie = scala.Option.apply(scalaSessionCookie); // Compiles fine, but fails with NoSuchMethodError: play.api.mvc.Session scalaSession = play.api.mvc.Session.decodeFromCookie(optionalCookie); return new play.mvc.Http.Session(Scala.asJava(scalaSession.data())); } 这编译得很好,但在运行测试时它让我: java.lang.NoSuchMethodError: play.api.mvc.Session.decodeFromCookie(Lscala/Option;)Lplay/api/mvc/Session; 作为Scala newby,我真的不知道我是否接近。 我认为 ,Scala会话确实通过CookieBaker公开(特征)该方法 。 请注意,我不一定要找到一种方法来运行上面的代码; 以上只是获得会议的第一步(可能)。 接下来我可能会尝试使用类似play.api.mvc.Session.encodeAsCookie(session)类的东西将它传递给后续请求。 喜欢ZenTasks演示 : @Test public void testLoginAndMore() { […]

IntelliJ 14 Java和Scala ClassNotFoundException

我最近升级到IntelliJ 14 ,然后添加了Scala支持。 我的主文件停止运行。 例如,GUI文件,它没有错误,是一个完全自包含的hello world风格,用于测试此错误: Exception in thread “main” java.lang.ClassNotFoundException: GUI 这没有任何意义,而且我非常沮丧的是,IntelliJ开发人员正在懈怠而不是自动检测解决方案。 我已经尝试了一切来解决它。 从设置,编译器到从头开始制作项目。 从头开始制作它时我只有一点运气,但是一旦我开始添加我的其他文件(甚至没有被使用的文件!),它就会以错误开始。 似乎原始项目模块之外的任何文件(在创建测试修复的新项目时)都不会运行,从而产生ClassNotFoundException。 这可能与我的另一个问题有关: https : //stackoverflow.com/questions/27516673/cannot-run-file-located-out-of-main-module-intellij-14-java-scala

Scala的内部类和Java的内部/嵌套类之间有什么区别?

Scala如何以不同于Java的嵌套,静态或非静态类的方式处理内部类?

为什么Scala的尾递归慢于Java?

使用尾递归进行简单加法的Scala代码 def add(list : List[Int],sum:Int):Int = { //Thread.dumpStack() if (list.isEmpty) { sum } else { val headVal = list.head add(list.tail, sum + headVal) } } 下面是递归模式下添加的java代码。 public static int add(List list, Integer sum) { // Thread.dumpStack(); if (list.isEmpty()) { return sum; } else { int headVal = list.remove(0); return add(list, sum + headVal); } } […]

在Eclipse项目中混合AspectJ和Scala

任何人都能够在Eclipse 3.6中将Scala和AspectJ(AJDT)完美地结合在一起? 似乎Scala的织布工与AspectJ的织布工冲突。 我希望我只是缺少一些东西。 编辑:在同一个项目中很好地玩