我有这个:
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).我们可以做得更好吗?
这不能按预期工作(因为我试图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
我写的Scala插件的编辑,我用这将突出显示所有未使用的代码路径(可能是未使用defs,vals,classes和implicits),并为用户提供一个选项,以将其拔出了的.scala文件.
我怎样才能做到这一点?为了简化问题,我们假设我们只有一个单一的根级别.scala与库或任何其他代码的文件没有外部的依赖文件.
理想情况下,我希望这是一个SBT插件,给定一个这样的Foo.scala文件,将吐出Foo_min.Scala文件,删除所有未使用的代码.
我知道Guava有一个很棒的缓存库,但我正在寻找更多Scala /功能友好的东西,我可以做的事情cache.getOrElse(query, { /* expensive operation */}).我也查看了Scalaz的备忘录,但是没有lru到期.
我正在开发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
我正在使用Scala的Play 2.2.x. 我想要一个管理仪表板,它在一个漂亮的HTML图表GUI页面中显示CPU /内存,最近的HTTP请求列表,性能和负载指标,日志,服务器控制台等.我可以使用Play插件或Java EE插件吗?Takipi/NewRelic看起来不错,但它没有一个很好的HTTP日志UI.JavaMelody看起来也不错,但它适用于传统的Java EE应用程序而不是Play2 Scala应用程序.
我正在尝试打印插值的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)
注意:这个问题与此不重复
我试图在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) 我知道我可以简单地从迭代start到end和清除这些细胞,但我想知道,如果它(可能使用JNI-ED是任何更快的方式可能System.arrayCopy)?
scala ×6
java ×4
amazon-emr ×1
apache-spark ×1
arraycopy ×1
caching ×1
data-mining ×1
emr ×1
express ×1
jdbc ×1
lru ×1
monitoring ×1
node.js ×1
performance ×1
profiling ×1
reflection ×1
regex ×1
rest ×1
sbt ×1
scalameta ×1
slick ×1
slick-2.0 ×1
text ×1