小编del*_*met的帖子

Java中的并发数组

因此,Java中有一个并发的hashmap,其优点是不会锁定整个哈希表,而只是锁定它的一部分.我想知道阵列是否有这样的结构.特别是当调整阵列大小时,锁定整个阵列是不可取的,尤其是在实时应用中.还有什么吗?

java arrays concurrency

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

在EC2集群上安装Hbase/Hadoop

我知道我可以拆分安装了HadoopEC2集群(除非我错了).Hbase怎么?我可以预先制作Hadoop和Hbase吗?或者我需要弄脏手.如果不是一种选择,最佳选择是什么?Cloudera显然有两个包.这是要走的路吗?

谢谢您的帮助.

hadoop hbase amazon-ec2

13
推荐指数
2
解决办法
5032
查看次数

弹性地图减少外部罐子

因此,当直接使用hadoop时,很容易处理外部罐子.您有-libjars选项可以为您执行此操作.问题是你如何使用EMR做到这一点.必须有一种简单的方法.我认为CLI的-cachefile选项会这样做,但我无法以某种方式让它工作.任何人的想法?

谢谢您的帮助.

hadoop jar amazon-emr

8
推荐指数
2
解决办法
2445
查看次数

Scala函数与类二分法

我刚开始学习Scala.我对OO设计很满意,而功能编程却不那么简单; 虽然,我编程的时间足够长,FP对我来说也不是完全不自然.从我斯卡拉冒险的第一天开始,我就已经说过了,对OO和FP之间正在发生的明显辩证法感到不安.显然,人们可以一路走来.我的第一个倾向是将类看作是一种包含我想要传递的功能的包,这平衡了功能方面的尺度.我觉得必须有一种更好的方法来平衡这种行为.在这种情况下,我也不确定如何处理某些熟悉的情况.例如,如果我有以下(人工)类:

class ValueGenerator {
    def value() = {
        "1"
    }
    def value(line: String) = {
        line
    }
}
Run Code Online (Sandbox Code Playgroud)

在OO编程中,我会value在需要时用适当的签名调用,以获得我需要的结果.这些方法具有相同的签名,因为它们在逻辑上对应于类似的操作.在OO中,我会传递对象引用,接收ValueGenerator对象的方法将value根据情况调用右边的对象.据我所知,至少我的倾向是,在Scala中,规范是传递方法.但在这种情况下,虽然方法做同样的事情,但它们没有相同的签名,因此不能互相替换(或者它们可以吗?).换句话说,无论函数的签名如何,发送方方法都能决定要发送的函数吗?这似乎不太可能,因为接收器不知道如何调用它.在这种情况下,正确的行动是什么.或者一个人的直觉本能?在谈到OO和FB时,你会遵循一条经验法则吗?

作为旁注,很有意思的是,我的一位正在学习Scala的朋友在这个问题上有与我一样的确切想法(或缺乏).

oop functional-programming scala

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

使用Throwable以外的事情除了例外

我总是在错误的背景下看到Throwable/Exception.但是我可以想到扩展一个Throwablejust来打破一堆递归方法调用会非常好的情况.比如说,您试图通过递归搜索的方式在树中查找并返回一些对象.一旦你发现它粘在一些Carrier extends Throwable并抛出它,并在调用递归方法的方法中捕获它.

正面:您不必担心递归调用的返回逻辑; 既然你找到了你需要的东西,为什么还要担心如何将这个引用备份到方法堆栈中.

否定:您有一个不需要的堆栈跟踪.该try/catch块也变得违反直觉.

这是一个愚蠢的简单用法:

public class ThrowableDriver {
    public static void main(String[] args) {
        ThrowableTester tt = new ThrowableTester();
        try {
            tt.rec();
        } catch (TestThrowable e) {
            System.out.print("All good\n");
        }
    }
}

public class TestThrowable extends Throwable {

}

public class ThrowableTester {
    int i=0;

    void rec() throws TestThrowable {
        if(i == 10) throw new TestThrowable();
        i++;
        rec();
    }
}
Run Code Online (Sandbox Code Playgroud)

问题是,是否有更好的方法来达到同样的目的?另外,以这种方式做事有什么不妥之处吗?

java stack throw throwable

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

java新行替换

我想知道为什么我没有得到这个预期的结果:

String t = "1302248663033   <script language='javascript'>nvieor\ngnroeignrieogi</script>";
t.replaceAll("\n", "");
System.out.println(t);
Run Code Online (Sandbox Code Playgroud)

输出是:

1302248663033   <script language='javascript'>nvieor
gnroeignrieogi</script>
Run Code Online (Sandbox Code Playgroud)

所以我想知道为什么\n还有.有人知道吗?在某种程度上是特殊的吗?

编辑:

所以我遇到了将换行符与a匹配的问题.在正则表达式中,没有意识到使用DOTALL选项,所以我将在这里添加需要做的事情以供将来参考:

String text = null;
text = FileUtils.readFileToString(inFile);
Pattern p = Pattern.compile("<script language='javascript'>.+?</script>\n", Pattern.DOTALL);
text = p.matcher(text).replaceAll("");
out.write(text);
Run Code Online (Sandbox Code Playgroud)

java newline replaceall

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

使用Java中的并发性在光盘上创建键值存储

我需要读取一组文件并将其分解为键值对,并将这些文件保存为光盘上该键的(键,值列表),就像map-reduce范例一样.但是一切都在一台电脑上.例如,我可以在不同文件上写入不同的列表,并使用密钥命名文件.这似乎是一种非常糟糕的做事方式.首先,如果你有十亿个密钥,你将得到十亿个文件.显然这不会起作用,我需要某种内存映射.我还必须有不同的线程来做map工作,所以如果他们要写入这个相同的缓冲区,它们之间必须有某种同步.如果我有一个键值缓冲区映射,并通过缓冲区同步,那么线程不应该踩到彼此的脚趾,所以我认为该部分应该工作.问题是如何将值映射到光盘.如何编写与同一文件中不同键对应的缓冲区?如果有人能指出我正确的方向,我将不胜感激.我对这方面的了解非常可怜.再次感谢.

java concurrency file-io file file-mapping

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

而Java中的循环怪异

我注意到java(因此可能是C)对此没有任何问题:

while(condition1) {
    //do somethin'
} while(condition2);
Run Code Online (Sandbox Code Playgroud)

这是一样的:

while(condition1 && condition2) {
    //do somethin'
}
Run Code Online (Sandbox Code Playgroud)

java loops while-loop

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