mongodb 2.2中引入的聚合框架是否比map/reduce有任何特殊的性能改进?
如果是,为什么,如何以及多少?
(我已经为自己做过测试了,性能几乎相同)
我的一个朋友被问到一个问题
从一亿个数字中检索最大前100个数字
在最近的一次面试中.你有什么想法想出一个有效的解决方法吗?
有一个包含10G(1000000000)个整数的文件,请找这些整数的中位数.你有2G内存来做这件事.有人能想出一个合理的方法吗?谢谢!
使用new RegExp("regex");和/same_regex/测试目标字符串之间有什么区别吗?我问这个问题,因为我在使用这两种方法时得到了不同的验证结果.以下是我用于验证电子邮件字段的代码段:
var email="didxga@gmail.comblah@foo.com";
var regex1 = new RegExp("^[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?$");
var regex2 = /^[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?$/;
//using RegExp object
if(regex1.test(email)) {
console.log("email matched regex1");
} else {
console.log("email mismatched regex1");
}
//using slash notation
if(regex2.test(email)) {
console.log("email matched regex2");
} else {
console.log("email mismatched regex2");
}
我得到了两个不一致的结果:
email matched regex1 email mismatched regex2
我想知道这里是否有任何差异,或者我在这个具体例子中省略了什么?
有关可执行示例,请参阅此处
请参阅以下代码段:
Long first_begin = System.currentTimeMillis();
// first nested loops
for (int i = 0; i < 10; i++) {
for (int j = 0; j < 1000000; j++) {
// do some stuff
}
}
System.out.println(System.currentTimeMillis() - first_begin);
// second nested loops
Long seconde_begin = System.currentTimeMillis();
for (int i = 0; i < 1000000; i++) {
for (int j = 0; j < 10; j++) {
// do some stuff
}
}
System.out.println(System.currentTimeMillis() - seconde_begin);
Run Code Online (Sandbox Code Playgroud)
我想知道为什么第一个嵌套循环比第二个嵌套循环慢?
问候!
重要的提示!:我很抱歉,当我第一次提出这个问题时,我意外地将变量j从1开始,我做了修正.
更新:循环中没有任何特定的逻辑,我只是做一些测试,实际上这是一个在面试中提出的问题,面试官提示我改变循环的顺序以获得更好的性能.顺便说一句,我使用的是JDK1.5.经过一些测试我现在更加困惑,因为程序的结果不一致---有时第一个循环比第二个循环运行得快,但大部分时间它比第二个循环运行得慢.
可以通过"刷新"操作和"窗口关闭"操作触发卸载事件.有没有办法区分实际触发它的动作?在我的情况下,我想忽略Refresh动作.能否请您深入了解一下工作原理是什么?
我注意到已经有这样的问题了,但似乎它们都没有得到解决.因此我再次提出这个问题,希望有些聪明人可以解决这个问题.
Spring支持程序化事务,使我们能够对TX管理进行细致的控制.根据Spring Documentation,可以通过以下方式使用程序化TX管理:
1.利用Spring的TransactionTemplate:
transactionTemplate.execute(new TransactionCallbackWithoutResult() {
protected void doInTransactionWithoutResult(TransactionStatus status) {
try {
updateOperation1();
updateOperation2();
} catch (SomeBusinessExeption ex) {
status.setRollbackOnly();
}
} });
Run Code Online (Sandbox Code Playgroud)
2.直接利用PlatformTransactionManager(将一个PlatformTransactionManager实现注入DAO):
DefaultTransactionDefinition def = new DefaultTransactionDefinition();
def.setName("SomeTxName");
def.setPropagationBehavior(TransactionDefinition.PROPAGATION_REQUIRED);
//txManager is a reference to PlatformTransactionManager
TransactionStatus status = txManager.getTransaction(def);
try {
updateOperation1();
updateOperation2();
}
catch (MyException ex) {
txManager.rollback(status);
throw ex;
}
txManager.commit(status);
Run Code Online (Sandbox Code Playgroud)
为简化起见,假设我们正在处理JDBC数据库操作.
我想知道updateOperation1(),updateOperation2()在第二个片段中发生的任何数据库操作,无论是用JDBCTemplate或实现JDBCDaoSupport,如果没有,操作实际上不在任何事务中执行,是吗?
我的分析是,如果我们不使用JDBCTemplate或者JDBCDaoSupport,我们不可避免地会从数据源管理中创建/检索连接.我们得到的连接当然不是PlatformTransactionManager底层管理事务所使用的连接.
我挖了Spring源代码和skim相关的类,发现PlatformTransactionManager它将尝试检索包含在ConnectionHolder其中的返回的连接TransactionSynchronizationManager.我也发现JDBCTemplate并 …
这不难理解String.class.getClass(),这意味着返回aClass Object,表示String Object的运行时类.但是在调用时会发生什么Class.class.getClass(),我可以将其理解为返回表示Class对象本身的运行时类的Class对象吗?如何在Java反射API中实现?
您将获得一个具有Integral类型值的大数组,如何以时间效率方式将其中的所有零值移动到数组的前部?
例如0,1,72,3,0,5,9,0,6,51,0,3 ---> 0,0,0,0,1,72,3,5,9,6,51, 3
问候!
在Java中,我有一个整数数组.有没有快速的方法将它们转换为字符串?
IE int[] x = new int[] {3,4,5}
x toString()应该产生"345"
java ×4
algorithm ×3
arrays ×2
javascript ×2
class ×1
events ×1
integer ×1
mapreduce ×1
mongodb ×1
nested-loops ×1
performance ×1
reflection ×1
refresh ×1
regex ×1
slash ×1
spring ×1
string ×1
transactions ×1