小编pat*_*rit的帖子

在Java中寻找最长的正则表达式匹配?

我有这个:

import java.util.regex.*;

String regex = "(?<m1>(hello|universe))|(?<m2>(hello world))";
String s = "hello world";

Pattern pattern = Pattern.compile(regex);
Matcher matcher = pattern.matcher(s);
while(matcher.find()) {
  MatchResult matchResult = m.toMatchResult();
  String substring = s.substring(matchResult.start(), matchResult.end());
  System.out.println(substring);
}
Run Code Online (Sandbox Code Playgroud)

上面只打印,hello而我想要打印hello world.

解决这个问题的一种方法是重新排序组,String regex = "(?<m2>(hello world))|(?<m1>(hello|universe))"但我无法控制我的情况下的正则表达式...

那么找到最长匹配的最佳方法是什么?一个显而易见的方法是检查s这里提到的所有可能的子串(有效地找到正则表达式的所有重叠匹配)的长度并选择第一个但是就是这样O(n^2).我们可以做得更好吗?

java regex

15
推荐指数
1
解决办法
3578
查看次数

在文本中查找与给定关键字具有最高相似度的子字符串

假设我有这个text = I love apples, kiwis, oranges and bananas和searchString = kiwis and bananas相似度算法Jaccard索引.如何有效地找到text与其具有最高相似性的子串searchString.

基本上我试图找到与我拥有的关键字列表匹配的文本部分(文本有高错误,拼写错误,额外符号和空格).

text machine-learning data-mining string-algorithm

14
推荐指数
2
解决办法
584
查看次数

Scala:通过包外的结构类型访问包可见方法

这不能按预期工作(因为我试图run从外部调用包私有Services):

object Services {
 class HelloPrinter {
   private[Services] def run = "Hello"
  }  
}

val obj = new Services.HelloPrinter
Run Code Online (Sandbox Code Playgroud)

但是,令人惊讶的是这有效:

val obj: {def run: String} = new Services.HelloPrinter
obj.run
Run Code Online (Sandbox Code Playgroud)

我会说,它是编译器中的一个错误,因为HelloPrinter由于包可见性规则而与结构类型不匹配,所以它根本不应该编译!

这是程序编译但抛出运行时异常(java.lang.NoSuchMethodException)的情况:

class HelloPrinter {
  private[HelloPrinter] def run = "Hello"
}  

val obj: {def run: String} = new HelloPrinter
obj.run
Run Code Online (Sandbox Code Playgroud)

这是我缺少的语言功能或规则,还是合法的Scala中的错误?

reflection scala access-modifiers nosuchmethoderror structural-typing

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

Scala工具删除所有未使用的代码

我写的Scala插件的编辑,我用这将突出显示所有未使用的代码路径(可能是未使用defs,vals,classesimplicits),并为用户提供一个选项,以将其拔出了的.scala文件.

我怎样才能做到这一点?为了简化问题,我们假设我们只有一个单一的根级别.scala与库或任何其他代码的文件没有外部的依赖文件.

理想情况下,我希望这是一个SBT插件,给定一个这样的Foo.scala文件,将吐出Foo_min.Scala文件,删除所有未使用的代码.

static-analysis scala sbt unused-variables scalameta

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

Scala中的LRUCache?

我知道Guava有一个很棒的缓存库,但我正在寻找更多Scala /功能友好的东西,我可以做的事情cache.getOrElse(query, { /* expensive operation */}).我也查看了Scalaz的备忘录,但是没有lru到期.

java caching scala lru

12
推荐指数
3
解决办法
7638
查看次数

如何从Express路由映射中自动生成API文档?

我正在开发nodejs + Express中的REST API,我一直在README文件中记录我的API,我想知道是否可以自动化它.例如:

app.get('/path/to', dosomething);
app.post('/path/to/:somethingelse', scream);
Run Code Online (Sandbox Code Playgroud)

我想让它自动生成这个

GET: /path/to dosomething
POST: /path/to/:somethingelse scream
Run Code Online (Sandbox Code Playgroud)

rest self-documenting-code literate-programming node.js express

11
推荐指数
3
解决办法
9690
查看次数

Play框架:服务器监控和性能管理页面

我正在使用Scala的Play 2.2.x. 我想要一个管理仪表板,它在一个漂亮的HTML图表GUI页面中显示CPU /内存,最近的HTTP请求列表,性能和负载指标,日志,服务器控制台等.我可以使用Play插件或Java EE插件吗?Takipi/NewRelic看起来不错,但它没有一个很好的HTTP日志UI.JavaMelody看起来也不错,但它适用于传统的Java EE应用程序而不是Play2 Scala应用程序.

java monitoring profiling scala playframework

11
推荐指数
1
解决办法
6295
查看次数

在Slick中打印插值SQL查询

我正在尝试打印插值的Slick2 SQL语句进行调试,我得到的只是带有问号的那个

def query(name: String) = sql"SELECT MAX(age) FROM users WHERE name = $name".as[Int]
println(query("Bob").getStatement)   
Run Code Online (Sandbox Code Playgroud)

以上打印出来:

SELECT MAX(age) FROM users WHERE name = ?
Run Code Online (Sandbox Code Playgroud)

我怎样才能打印出来:

SELECT MAX(age) FROM users WHERE name = 'Bob'
Run Code Online (Sandbox Code Playgroud)

注意:这个问题与不重复

scala jdbc prepared-statement slick slick-2.0

11
推荐指数
2
解决办法
1569
查看次数

如何在Amazon EMR上运行Spark Scala代码

我试图在Amazon EMR上运行以Scala编写的以下Spark代码:

import org.apache.spark.{SparkConf, SparkContext}

object TestRunner {
  def main(args: Array[String]): Unit = {
    val conf = new SparkConf().setAppName("Hello World")
    val sc = new SparkContext(conf)

    val words = sc.parallelize(Seq("a", "b", "c", "d", "e"))
    val wordCounts = words.map(x => (x, 1)).reduceByKey(_ + _)
    println(wordCounts)
  }
}
Run Code Online (Sandbox Code Playgroud)

这是我用来将上述代码部署到EMR的脚本:

#!/usr/bin/env bash

set -euxo pipefail

cluster_id='j-XXXXXXXXXX'

app_name="HelloWorld"

main_class="TestRunner"
jar_name="HelloWorld-assembly-0.0.1-SNAPSHOT.jar"
jar_path="target/scala-2.11/${jar_name}"
s3_jar_dir="s3://jars/"
s3_jar_path="${s3_jar_dir}${jar_name}"
###################################################

sbt assembly

aws s3 cp ${jar_path} ${s3_jar_dir}

aws emr add-steps --cluster-id ${cluster_id} --steps Type=spark,Name=${app_name},Args=[--deploy-mode,cluster,--master,yarn-cluster,--class,${main_class},${s3_jar_path}],ActionOnFailure=CONTINUE
Run Code Online (Sandbox Code Playgroud)

但是,退出几分钟后在AWS中根本不产生任何输出!

这是我的控制器的输出:

2016-10-20T21:03:17.043Z INFO Ensure step 3 …
Run Code Online (Sandbox Code Playgroud)

scala amazon-web-services amazon-emr emr apache-spark

11
推荐指数
1
解决办法
2881
查看次数

将Java数组中任意范围的元素设置为null的最快方法是什么?

我知道我可以简单地从迭代startend和清除这些细胞,但我想知道,如果它(可能使用JNI-ED是任何更快的方式可能System.arrayCopy)?

java performance java-native-interface arraycopy

11
推荐指数
1
解决办法
582
查看次数