小编sma*_*007的帖子

Scala:在一个语句中将字符串写入文件

对于在Scala中读取文件,有

Source.fromFile("file.txt").mkString
Run Code Online (Sandbox Code Playgroud)

是否有一种等效和简洁的方法来将字符串写入文件?

大多数语言支持这样的东西.我最喜欢的是Groovy:

def f = new File("file.txt")
// Read
def s = f.text
// Write
f.text = "file contents"
Run Code Online (Sandbox Code Playgroud)

我想将代码用于从单行到短代码的程序.必须使用自己的库在这里没有意义.我希望有一种现代语言能让我方便地写一些文件.

有类似的帖子,但他们没有回答我的确切问题或专注于较旧的Scala版本.

例如:

scala scala-2.9

135
推荐指数
9
解决办法
10万
查看次数

功能编程 - 不变性是否昂贵?

问题分为两部分.第一个是概念性的.接下来在Scala中更具体地看待同一个问题.

  1. 在编程语言中仅使用不可变数据结构是否会使实现某些算法/逻辑在实践中本身具有更高的计算成本?这就意味着不变性是纯函数式语言的核心原则.还有其他因素会对此产生影响吗?
  2. 我们来看一个更具体的例子.Quicksort通常使用内存数据结构中的可变操作来教授和实现.如何以可靠的功能方式实现这样的事情,具有与可变版本相当的计算和存储开销.特别是在Scala中.我在下面列出了一些原油基准.

更多细节:

我来自命令式编程背景(C++,Java).我一直在探索函数式编程,特别是Scala.

纯函数式编程的一些主要原则:

  1. 职能是一等公民.
  2. 函数没有副作用,因此对象/数据结构是不可变的.

尽管现代JVM对于创建对象非常有效,并且垃圾收集对于短期对象来说非常便宜,但是最小化对象创建可能更好吗?至少在并发和锁定不是问题的单线程应用程序中.由于Scala是一种混合范例,如果需要,可以选择使用可变对象编写命令式代码.但是,作为一个花了很多年时间试图重用对象并最小化分配的人.我希望对那些甚至不允许这样的思想流派有一个很好的理解.

作为一个特例,我对本教程中的 代码片段感到有些惊讶6.它有一个Java版本的Quicksort,后面是一个整洁的Scala实现.

这是我尝试对实现进行基准测试.我没有做过详细的剖析.但是,我的猜测是Scala版本较慢,因为分配的对象数是线性的(每个递归调用一个).尾调用优化是否有可能发挥作用?如果我是对的,Scala支持自我递归调用的尾调用优化.所以,它应该只是帮助它.我正在使用Scala 2.8.

Java版本

public class QuickSortJ {

    public static void sort(int[] xs) {
      sort(xs, 0, xs.length -1 );
    }

    static void sort(int[] xs, int l, int r) {
      if (r >= l) return;
      int pivot = xs[l];
      int a = l; int b = r;
      while (a <= b){
        while (xs[a] <= pivot) a++;
        while (xs[b] > pivot) …
Run Code Online (Sandbox Code Playgroud)

java functional-programming scala

93
推荐指数
8
解决办法
8347
查看次数

I/O概念刷新与同步

我遇到过这两个术语,我对它们的理解似乎相互重叠.Flush与缓冲区一起使用,同步用于讨论文件到磁盘的持久更改.

在C中,fflush(stdin)确保清除缓冲区.并且fsync持久化将文件更改为磁盘.

如果这些概念不是普遍定义的,那就更喜欢linux,java的解释.

我发现了一个相关的帖子,但是我并没有真正回答我的问题.真的在Java中强制文件同步/刷新

java file-io operating-system

35
推荐指数
1
解决办法
2万
查看次数

33
推荐指数
1
解决办法
5894
查看次数

如何在JavaScript中实现原子操作(并发模型)?

说,我想在每次获得ajax响应时递增计数器.我不知道使用JavaScript异步事件的并发模型.有什么想法吗 ?

javascript concurrency javascript-events

14
推荐指数
1
解决办法
7508
查看次数

我如何通过svn提供html服务?(可以svn充当Web服务器吗?)

我已经将javadocs(html文件)签入svn.但是,当我通过浏览器访问html文件时,它被解释为文本.我该如何解决 ?

html svn

13
推荐指数
1
解决办法
5017
查看次数

sbt项目很难解决依赖关系

我的sbt项目需要超过15分钟

sbt clean compile
Run Code Online (Sandbox Code Playgroud)

我在AWS上的一台强大的机器上.我相当肯定它不是cpu或互联网带宽上的资源问题.此外,我已经运行了几次这个命令,因此填充了常春藤缓存.

这是我的所有构建相关文件

/build.sbt

name := "ProjectX"

version := "1.0"

scalaVersion := "2.10.5"

libraryDependencies += ("org.apache.spark" %% "spark-streaming" % "1.4.1")
  .exclude("org.slf4j", "slf4j-log4j12")
  .exclude("log4j", "log4j")
  .exclude("commons-logging", "commons-logging")
  .%("provided")

libraryDependencies += ("org.apache.spark" %% "spark-streaming-kinesis-asl" % "1.4.1")
  .exclude("org.slf4j", "slf4j-log4j12")
  .exclude("log4j", "log4j")
  .exclude("commons-logging", "commons-logging")

libraryDependencies += "org.mongodb" %% "casbah" % "2.8.1"

//test
libraryDependencies += "org.scalatest" %% "scalatest" % "2.2.4" % "test"

//logging
libraryDependencies ++= Seq(
  //facade
  "org.slf4j" % "slf4j-api" % "1.7.12",
  "org.clapper" %% "grizzled-slf4j" % "1.0.2",
  //jcl (used by aws sdks) …
Run Code Online (Sandbox Code Playgroud)

scala sbt

10
推荐指数
1
解决办法
3597
查看次数

窗口函数的 Mysql 解决方法

我有一个具有以下字段的事件表:

event_id
event_type 
event_time
Run Code Online (Sandbox Code Playgroud)

给定一个持续时间D和一个数字k,我需要对在任何相对持续时间窗口中发生的事件event_type多的所有K事件进行计数D。这基本上需要一个关于每个事件的滑动窗口。例如,我想要所有在任何 10 分钟内活动超过 5 个事件的 event_type。

我不知道如何在没有窗口函数的情况下解决这个问题。

(我使用的是 mysql 5.6。我说的是不到 100 万行的数据集。)

mysql sql

8
推荐指数
1
解决办法
1万
查看次数

scala quirky在这个while循环代码中

昨天,这段代码让我头疼.我通过逐行读取文件来修复它.有任何想法吗 ?

即使文件中的行数大于1,while循环也似乎永远不会被执行.

 val lines = Source.fromFile( new File("file.txt") ).getLines;

 println( "total lines:"+lines.size );

 var starti = 1;
 while( starti < lines.size ){
   val nexti = Math.min( starti + 10, lines.size  );

   println( "batch ("+starti+", "+nexti+") total:" + lines.size )
   val linesSub = lines.slice(starti, nexti)
   //do something with linesSub
   starti = nexti
 }
Run Code Online (Sandbox Code Playgroud)

scala

7
推荐指数
2
解决办法
532
查看次数

Java 中的相等性能( instanceOf 与 isAssignableFrom )

这个问题特别是关于各种实现替代方案的性能和在某种程度上的简洁性。

这篇关于实现平等权利的文章让我精神焕发。我的问题特别对应于canEqual(以确保等价关系)。

而不是重载 canEquals 方法以在层次结构中的每个类中使用 instanceOf (paramenter 的实例是编译时类)。为什么不只在顶级类中使用 isAssignableFrom(动态解析)。使代码更加简洁,您不必重载第三种方法。

虽然,这种替代方法有效。是否有任何我需要注意的性能注意事项?

enum Color {
    RED, ORANGE, YELLOW, GREEN, BLUE, INDIGO, VIOLET;
}
class Point {

    int x;
    int y;

    public Point(int x, int y) {
        this.x = x;
        this.y = y;
    }


    @Override public boolean equals(Object other) {
        boolean result = false;
        if (other instanceof Point) {
            Point that = (Point) other;
            //Option 1
            //result = (that.canEqual(this) && this.getX() == that.getX() && this.getY() == that.getY());
            //Option …
Run Code Online (Sandbox Code Playgroud)

java oop jvm scala equality

5
推荐指数
2
解决办法
5059
查看次数