小编yur*_*ura的帖子

如何在运行时将动态方法添加到Grails域对象而不创建插件?

在ref文档中,我发现只有例子

class ExamplePlugin {
  def doWithDynamicMethods = { applicationContext ->
        application.controllerClasses.each { controllerClass ->
             controllerClass.metaClass.myNewMethod = {-> println "hello world" }
        }
  }
}
Run Code Online (Sandbox Code Playgroud)

但是我不想为这样的代码创建插件......

grails grails-plugin

3
推荐指数
1
解决办法
2775
查看次数

为什么lucene不需要复合索引,但关系数据库呢?

Lucene为每个领域存储索引.因此,当我们执行查询"fld1:a AND fld2:b"时,我们将迭代Termdocs进行第一学期和第二学期.这不可能更快.在数据库的情况下,fld1和fld2的两个separete索引将运行缓慢,只使用一个.在这种情况下,DB需要fld1和fld2的复合键.

我的问题是.为什么DB不能使用Lucene索引算法执行布尔查询,如果它与DB索引一样快并且不需要不同的列组合?

Lucene Boolean Query搜索的一些细节:它使用接口TermDoc.使用两种方法的主要思想boolean skipTo(int)和方法boolean next().因此它不依赖于术语顺序(流行或非流行术语),因为这些方法调用的计数总是最不常见的术语(由于skipTo方法).所以没有必要在分层复合索引中,它不会带来任何额外的性能.

TermDocs t1 = searcher.docs(fld1:a);
TermDocs t2 = searcher.docs(fld2:b); 
int doc = -1;
t1.next(); t2.next();
while(t1.doc()!=-1 && t2.doc()!=-1) {
if(t1.doc()<t2.doc()) {
  if(!t1.skipTo(t2.doc)) return;
}
if(t2.doc()<t1.doc()) {
 if(!t2.skipTo(t1.doc)) return;
}
if(t1.doc()==t2.doc()) {
println("found doc:"+t1.doc());
t1.next()
}
}
Run Code Online (Sandbox Code Playgroud)

database lucene indexing relational-database

3
推荐指数
1
解决办法
1264
查看次数

如何在Scala中编写聚合模式?

假设我有Iterator[A](大小是无限的)并且我想从中得到Iterator[B]类型A的一些后续值被聚合的地方.

示例:我有字符串列表:

Iterator(
    "START",
    "DATA1",
    "DATA2",
    "DATA3",
    "START",
    "DATA1",
    "DATA2",
    //.. 10^10 more records
)
Run Code Online (Sandbox Code Playgroud)

我想加入从START到NEXT START的字符串.即编写解析器.

Iterator(
"START DATA1 DATA2 DATA3",
"START DATA1 DATA2",
    //.. 10^10 / 5 more records
)
Run Code Online (Sandbox Code Playgroud)

我知道如何强制执行此操作,但我想用scala高阶函数完成它.有任何想法吗?

PS EIP Aggregate http://camel.apache.org/aggregator2.html.

design-patterns scala aggregate-functions

3
推荐指数
2
解决办法
540
查看次数

与scala并行创建地图的最佳方法是什么?

假设我有一个应该转换为Map的集合,但不是像map方法那样一对一的方式.

var map = collection.mutable.HashMap()
for (p <- dataList.par) {
  if(cond1(p)) {
    map += (p, true)
  } else {
    // do nothing
  }
}
Run Code Online (Sandbox Code Playgroud)

我想出了几个解决方案,想知道什么是最好的.

  1. map.synchronize { map += (p, true) }

  2. 使用actor更新地图.但我不知道如何等待所有演员任务完成

  3. yield Some(p) or None然后跑foreach { case Some(p) => map += (p, true)}.但是,如果第一个迭代器来自并行集合,我不知道如何使它成为顺序.

parallel-processing scala scala-collections

3
推荐指数
2
解决办法
1250
查看次数

如何为类编写Scala匹配器?

假设我有以下代码

def get[T](name:String)(implicit mf:ClassManifest[T]):T = mf.erasure match {
     case classOf[Boolean] => obj.getBoolean(name)
     case classOf[Int] => obj.getInt(name)
   }
Run Code Online (Sandbox Code Playgroud)

现在代码不起作用,因为 classOf[Int] 是无效的匹配值。

scala pattern-matching

3
推荐指数
1
解决办法
402
查看次数

为什么google-collections包含语义相同的函数和奇怪的泛型?

为什么google-collections或guava包含语义上相同的功能?例:

static
<T> Predicate<T>
and(Predicate<? super T>... components) 

static
<T> Predicate<T>
and(Predicate<? super T> first, Predicate<? super T> second) 
Run Code Online (Sandbox Code Playgroud)

即所有可以接受多个参数的函数.

第二个问题为什么这些函数的定义使用泛型<? super T>而不是<T>

java generics guava

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

如何在单个JVM中运行hadoop多线程方式?

我有4个核心桌面,并希望使用我的所有内核用于使用hadoop进行本地数据处理.(即,有时候我有足够的能力在本地处理数据,有时候我会向集群提交相同的工作).

默认情况下,hadoop本地模式只运行一个映射器和一个reducer,因此我的本地作业非常慢.我不希望首先在单台机器上设置集群,因为"痛苦"配置,其次我每次都要创建jar.如此完美的解决方案是如何在一台机器上运行嵌入式Hadoop

PS伪分布式模式是不好的选择,因为它将创建具有单个节点的集群,因此我将只获得一个映射器,我不得不花费一些时间来进行其他配置.

hadoop jvm mapreduce

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

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

What is most popular ajax framework for modern days?

If I'm developing a client side application with heavy load, what is the most appropriate choice of Ajax framework?

javascript ajax

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

如何使用junit 4运行scala测试?

我无法使用IDEA运行以下代码

@Test
class CompanyURLTest extends Assert {
  @Test
  def test = assert(false);

}
Run Code Online (Sandbox Code Playgroud)

它运行,但J-Unit表示没有测试运行

unit-testing scala junit4 scala-2.8

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

如何扩展静态最终番石榴实用程序类?

当我使用common-collections时,我已经完成了对这些工具的自定义扩展,例如:

class MyCollectionUtils extends CollectionsUtils {
static myutilityMethod()
static removeDublicate(..)
static myPredicate(...)
}
Run Code Online (Sandbox Code Playgroud)

在这种情况下CollectionsUtils,我只有一个导入的所有功能和我的扩展方法!

在guava中,所有静态实用程序类都是final.

扩展番石榴收集API的最佳方法是什么?例如,新的常用谓词,集合工厂等,集合组合器.

java inheritance guava

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

是否可以将匹配scala操作与变量一起使用?

可能重复:
为什么Scala中的模式匹配不适用于变量?
范围内变量的模式匹配(Scala)

例如,我有代码

def equals(value1:String, value2:String) = value1 match {
 case value2 => true
 case _ => false
}
Run Code Online (Sandbox Code Playgroud)

我找到了解决方法,但我并不喜欢语法

def equals(value1:String, value2:String) = value1 match {
 case v if v == value2 => true
 case _ => false
}
Run Code Online (Sandbox Code Playgroud)

scala pattern-matching

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