我想知道Java中的一些情况(或更一般地说:在编程中),当布尔表达式中首选使用unconditional AND
(&
)而不是条件版本(&&
)时.
我知道它们是如何工作的,但我不能考虑使用单一的情况&
是值得的.
我无法在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)的值来生成结果集?
你能解释一下执行这段代码会发生什么吗?我知道它打印出"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) 我经常运行验证模式,有效的是,某些变量必须包含一个前缀值的值.
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术语链)确实提高了性能,也可能代码的可读性.
在这个网页上我可以读到:
一些特殊情况算法(Programming Pearls中提到了一个例子)可以比O(n*log(n))更快地对某些数据集进行排序.这些算法不是基于比较被排序的项目和依赖技巧.已经表明,没有密钥比较算法可以比O(n*log(n))更好地执行.
这是我第一次听说非比较算法.可能有人给我的那些算法中的一个例子,并更好地解释他们是如何解决的问题排序快于O(n日志(n))的?该网页的作者正在谈论什么样的技巧?
欢迎任何链接到论文或其他好的来源.谢谢.