小编yur*_*ura的帖子

为什么Guava过滤器/转换函数有时返回可修改的视图,有些返回不可修改的视图?

例如,所有Lists,Collections2,Sets都返回一个可修改的视图 - 从视图集合中删除将删除原始项目.

这很好用:

List<Integer> list = Lists.newArrayList(1, 2, 3, 4, 5, 6, -1, -2, -3, -4);    
Collection<Integer> transform = Collections2.filter(
    list, new Predicate<Integer>() {
        public boolean apply(Integer input) {
            return input.intValue() > 0;
        }
    });
transform.clear();
Run Code Online (Sandbox Code Playgroud)

当我使用Iterables和Iterators方法过滤/转换时,我得到umodifiable视图(即所有这些代码重用UnmodifibleIterator).

这不起作用:

List<Integer> list = Lists.newArrayList(1, 2, 3, 4, 5, 6, -1, -2, -3, -4);
Iterable<Integer> transform = Iterables.filter(
    list, new Predicate<Integer>() {
        public boolean apply(Integer input) {
            return input.intValue() > 0;
        }
    });
Iterables.removeIf(transform, Predicates.<Object>alwaysTrue());
Run Code Online (Sandbox Code Playgroud)

我找不到Iterable和Collection/List/Set/Map之间的任何语义差异,那么为什么Guava中有如此不同的实现呢?

另一个奇怪的行为是第一种情况下的迭代器仍然不允许删除操作,但清除或删除/ removeAll工作正常.

java guava

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

为什么向mapreduce提交工作需要花费这么多时间?

因此通常对于20节点集群提交作业来处理3GB(200个分裂)的数据需要大约30秒并且实际执行大约1m.我想了解工作提交过程中的瓶颈是什么,并了解下一个报价

Per-MapReduce开销很重要:开始/结束MapReduce作业成本时间

我知道一些过程:1.数据拆分2. jar文件共享

hadoop mapreduce

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

Grails中的测试/开发模式上的自定义初始化

我想在BootStrap类中运行特定的登录,具体取决于当前使用的开发或测试模式.

我怎样才能做到这一点?

grails groovy

6
推荐指数
2
解决办法
2713
查看次数

我怎样才能确保数据在hadoop节点上均匀分布?

如果我将数据从本地系统复制到HDFS,我可以确定它是在节点间均匀分布的吗?

PS HDFS保证每个块将存储在3个不同的节点上.但这是否意味着我的文件的所有块将在相同的3个节点上排序?或者HDFS会为每个新块随机选择它们吗?

hadoop hdfs

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

大型scala代码库是否可维护?

我对scala有一些经验.我想将它介绍给10个成员的新项目.但是尽管scala具有所有表现力,但我不确定代码可以保持多么简单并转移给新的团队成员.目前我只研究了scala http://code.google.com/p/factorie/上的一个大项目和一些scala DSL(apache camel).所以我的问题是,与中级开发人员团队的java,python和groovy相比,scala可维护/可支持多少?

java maintainability scala

6
推荐指数
2
解决办法
931
查看次数

什么是最好的java库来编写自定义重构脚本?

我打算做大型项目的复杂重构,默认的ide功能还不够.如果可能,请提供教程链接.

语言:java,xml

我谈论java重构的程序化api

示例我在项目中创建了新的api,我想自动折射一些代码来使用它,即源代码转换为ast树

java eclipse ide refactoring automated-refactoring

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

为什么流折叠操作抛出内存异常?

我有以下简单的代码

 def fib(i:Long,j:Long):Stream[Long] = i #:: fib(j, i+j)
 (0l /: fib(1,1).take(10000000)) (_+_)
Run Code Online (Sandbox Code Playgroud)

它会抛出OutOfMemmoryError异常.我无法理解为什么,因为我认为所有部分都使用常量内存,即惰性评估流和foldLeft ...

这些代码也不起作用

fib(1,1).take(10000000).sum or max, min e.t.c.
Run Code Online (Sandbox Code Playgroud)

如何正确实现无限流并对其进行迭代操作?

Scala版本:2.9.0

另外scala javadoc说,foldLeft操作对于流是memmory安全的

  /** Stream specialization of foldLeft which allows GC to collect
   *  along the way.
   */
  @tailrec
  override final def foldLeft[B](z: B)(op: (B, A) => B): B = {
    if (this.isEmpty) z
    else tail.foldLeft(op(z, head))(op)
  }
Run Code Online (Sandbox Code Playgroud)

编辑:

使用迭代器的实现仍然无用,因为它会抛出$ {domainName}异常

   def fib(i:Long,j:Long): Iterator[Long] = Iterator(i) ++  fib(j, i + j)
Run Code Online (Sandbox Code Playgroud)

如何在Scala中正确定义无限流/迭代器?

EDIT2:我不关心int溢出,我只是想了解如何在scala中创建无限流/迭代器等而没有副作用.

scala scala-collections

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

如何一次导入几个隐含的?

我的应用程序有几个隐式上下文.喜欢

 import scala.collection.JavaConversions._    
  import HadoopConversion._   
etc
Run Code Online (Sandbox Code Playgroud)

现在我必须复制粘贴每个文件的所有导入.是否可以将它们组合在一个文件中并只进行一次导入?

scala

6
推荐指数
2
解决办法
571
查看次数

是否可以在hadoop中禁用排序?

我的工作不需要排序,只需要按键聚合信息.所以我认为如果可以禁用所有信息的排序,以提高性能.


注意:我不能将reducers count设置为零,因为我需要在许多映射器之间聚合数据.我只对一个减速机的排序结果不感兴趣.

hadoop mapreduce

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

在scala中使用enrich-my-library的最佳方法是什么?

这是实现它的两种不同方式.

一个更短

implicit def toR1(s:String) = new { def getLength = s.length)}
Run Code Online (Sandbox Code Playgroud)

第二是更长

class R2(s:String){def getLength2 = s.length)}
implicit def toR2(s:String) = new R2(s)
Run Code Online (Sandbox Code Playgroud)

哪一个更好?

scala enrich-my-library

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