小编Lui*_*ano的帖子

什么情况下最好使用无条件AND(而不是&&)

我想知道Java中的一些情况(或更一般地说:在编程中),当布尔表达式中首选使用unconditional AND(&)而不是条件版本(&&)时.

我知道它们是如何工作的,但我不能考虑使用单一的情况&是值得的.

java optimization

48
推荐指数
8
解决办法
2819
查看次数

Mongodb中的explain():"nscanned"和"nscannedObjects"之间的区别

我无法在Mongodb的explain查询输出中得到"nscanned"和"nscannedObjects"之间的确切区别.

关于MongoDB Explain文档,我可以阅读:

nscanned检查的项目数(文档或索引条目).项可能是对象或索引键.如果涉及"覆盖索引",则nscanned可能高于nscannedObjects.

nscannedObjects扫描的文档数.

这两个领域有什么不同?更具体的是,当我有一个使用BtreeCursor(一个索引)的查询时,究竟意味着什么,这两个字段有两个不同的值,例如:

{
    "cursor" : "BtreeCursor a_1_b_1",
    "isMultiKey" : false,
    "n" : 5,
    "nscannedObjects" : 5,
    "nscanned" : 9, 
    (...)
}
Run Code Online (Sandbox Code Playgroud)

我知道什么是" 覆盖索引".我想准确理解查询在上面的例子中做了什么.它是否通过("扫描")9个元素(nscanned = 9),其中所有元素都是索引条目并读取("检查")它们中只有5个(nscannedObjects = 5)的值来生成结果集?

mongodb

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

这个Reflection Java代码如何捕获System.out.println中的String?

你能解释一下执行这段代码会发生什么吗?我知道它打印出"G'Day Mate.",但是Reflection如何捕获System.out.println?堆栈/堆级别会发生什么?非常感谢.

   public static void main(String... args) {
          System.out.println("Hello World");
    }

    static {
        try {
           Field value = String.class.getDeclaredField("value");
           value.setAccessible(true);
           value.set("Hello World", value.get("G'Day Mate."));
        } catch (Exception e) {
          throw new AssertionError(e);
        }
    }
Run Code Online (Sandbox Code Playgroud)

java reflection

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

使用static final unmodifiable Set作为常量来检查变量值

我经常运行验证模式,有效的是,某些变量必须包含一个前缀值的值.

PSEUDO CODE:
    IF x == CONSTANT_1 || X == CONSTANT_2 || ... || x == CONSTANT_N
    THEN X is valid
Run Code Online (Sandbox Code Playgroud)

为了避免OR项链,我创建了一个静态的最终不可修改集,其中包含所有常量:

public final static String CONSTANT_1 = *value* ;
public final static String CONSTANT_2 = *value* ;
...
public final static String CONSTANT_N = *value* ;

public final static Set SET_OF_CONSTANTS = Collections.unmodifiableSet(new HashSet(){
    private static final long serialVersionUID = 1L;
    {
        add(CONSTANT_1); 
        add(CONSTANT_2);
        ...
        add(CONSTANT_3);
    }
});
Run Code Online (Sandbox Code Playgroud)

我按以下方式执行检查:

if(!SET_OF_CONSTANTS.contains(x)){ 
    //X NOT VALID 
}
Run Code Online (Sandbox Code Playgroud)

我想知道这是一个很好的编程实践,如果有任何替代方案,并且如果使用哈希表查询(理论上为O(1)而不是OR术语链)确实提高了性能,也可能代码的可读性.

java coding-style

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

没有密钥比较排序算法

在这个网页上我可以读到:

一些特殊情况算法(Programming Pearls中提到了一个例子)可以比O(n*log(n))更快地对某些数据集进行排序.这些算法不是基于比较被排序的项目和依赖技巧.已经表明,没有密钥比较算法可以比O(n*log(n))更好地执行.

这是我第一次听说非比较算法.可能有人给我的那些算法中的一个例子,并更好地解释他们是如何解决的问题排序快于O(n日志(n))的?该网页的作者正在谈论什么样的技巧?

欢迎任何链接到论文或其他好的来源.谢谢.

sorting

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

标签 统计

java ×3

coding-style ×1

mongodb ×1

optimization ×1

reflection ×1

sorting ×1