Java自动调用垃圾收集器,那么为什么我们需要手动调用垃圾收集?什么时候应该使用System.gc()
有时,当持久化obj时,其中一个字段太大而无法放入db字段,从而导致数据截断异常.在下面的代码中,我尝试捕获DataException并简单地清空该字段和重新保存.但是我在重新开始时遇到了异常.为什么会发生批量更新异常以及如何解决它?
public static void save(Object obj) throws Exception{
try{
beginTransaction();
getSession().save(obj);
commitTransaction();
}catch(Exception e){
e.printStackTrace();
rollbackTransaction();
throw e;
}finally{
closeSession(); //not needed, session obtained from sf.getCurrentSession() will auto close
}
}
public static void saveXXX(XXX rec){
try {
save(rec);
} catch (org.hibernate.exception.DataException e) {
e.printStackTrace();
saveXXX(rec, e); //causes an exception
} catch (Exception e) {
e.printStackTrace();
}
}
private static void saveXXX(WhoisRecord rec, DataException e) {
rec.setField(""); //empty out the problem field
saveXXX(rec);
例外:
org.hibernate.StaleStateException:批量更新从update [0]返回意外的行数; 实际行数:0; 预期:1
在org.hibernate.jdbc.Expectations $ … 所以我在思考这个问题(这是一个家庭作业/考试复习问题):
在a[j++] = ++i;不使用前/后增量运算符的情况下记下等效表达式.如果没有这样的表达式可以解释原因.
我能够想出以下内容:
a[j] = i+=1;
j+=1;
我想不出一种方法来增加一个[]中的j作为一个后增量而不是j+=1;后来使用,我相信会导致答案没有这样的表达式可以提供(因为它的两行代码而不是一行)和只是说明你没有post增量运算符就不能发布增量.
我错过了什么或者我是否正确?我只是想仔细检查一下.提前致谢.
编辑:感谢@James McNellis,他提供了一种方式
a[(j+=1)-1] = (i+=1);
我目前正在使用nvidia的驱动程序'nvidia-smi'附带的工具在GPU上进行性能监控.当我们使用'nvidia-smi -a'时,它将提供当前GPU信息的信息,包括GPU核心和内存使用情况,温度等,如下所示:
============== NVSMI LOG ==============
时间戳:星期二
2011年2月22日22:39:09
驱动程序版本:260.19.26
GPU 0:
Run Code Online (Sandbox Code Playgroud)Product Name : GeForce 8800 GTX PCI Device/Vendor ID : 19110de PCI Location ID : 0:4:0 Board Serial : 211561763875 Display : Connected Temperature : 55 C Fan Speed : 47% Utilization GPU : 1% Memory : 0%
我很好奇GPU和内存利用率是如何定义的?例如,GPU核心的利用率为47%.这意味着有47%的SM正在运作?或者所有GPU核心在47%的时间内忙碌而闲置其他53%的时间?对于内存,利用率是指当前带宽与最大带宽之间的比率,还是上次时间单位的繁忙时间比率?
我从官方网站下载了libsvm for MATLAB (我正在使用MATLAB 2010b)但是每当我运行make文件时,我得到:
>> make
Error svm.cpp: 13 syntax error; found `<' expecting `;'
Error svm.cpp: 13 skipping `<'
Error svm.cpp: 13 syntax error; found `T' expecting `;'
Error svm.cpp: 13 syntax error; found `>' expecting `;'
Error svm.cpp: 13 skipping `>'
Error svm.cpp: 13 syntax error; found `T' expecting `;'
Error svm.cpp: 13 syntax error; found `min' expecting `;'
Error svm.cpp: 13 syntax error; found `x' expecting `)'
Error svm.cpp: 13 skipping `x' `,' …Run Code Online (Sandbox Code Playgroud) 我有两个效果,我想一个接一个地运行,但我无法弄清楚如何$(this)从第一个效果传递给回调.
这就是我现在所拥有的:
if($(this).hasClass('flag')) {
$('someElement').slideUp();
$(this).slideDown();
}
Run Code Online (Sandbox Code Playgroud)
但我想要的是在slideUp完成后运行slideDown,即.
if($(this).hasClass('flag')) {
$('someElement').slideUp(function() {
$(this).slideDown();
});
}
Run Code Online (Sandbox Code Playgroud)
除了$(this)通过这一阶段现指someElement,而不是等按计划不起作用.
我如何参考我的原件element.flag.我尝试过使用,$this = $(this)但我认为我的语法必须错误.
有任何想法吗?
我正在编写一个使用AVAudioRecorder该类的应用程序.除了拨打电话外,它的效果很好.我按照苹果公司使用AVAudioRecorderDelegate方法的指导方针处理这个问题.
– (void) audioRecorderBeginInterruption:
– (void) audioRecorderEndInterruption:
Run Code Online (Sandbox Code Playgroud)
它工作得很好,直到中断结束,我试图通过再次调用记录方法来"恢复"记录(根据文档).然而,它并没有恢复我的录音,而是抛弃旧的录音,并在它的位置启动一个全新的录音.我无法找到解决这个问题的方法,如果有人想出来的话,或者苹果的错误AVAudioRecorder请告诉我.我真的希望我不必写这个AudioQueues.
谢谢
查看文档,我应该可以使用BGRA作为纹理的内部格式.我正在为纹理提供BGRA数据(使用GL_RGBA8_OES用于glRenderbufferStorage,因为它似乎不允许BGRA).但是,以下不起作用:
glTexImage2D(GL_TEXTURE_2D, 0, **GL_BGRA**, w, h, 0, GL_BGRA, GL_UNSIGNED_BYTE, buffer);
...
glReadPixels(0, 0, w,h, GL_BGRA, GL_UNSIGNED_BYTE,buffer, 0);
Run Code Online (Sandbox Code Playgroud)
虽然这给了我一个黑框:
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, w, h, 0, GL_BGRA, GL_UNSIGNED_BYTE, buffer);
...
glReadPixels(0, 0, w,h, **GL_BGRA**, GL_UNSIGNED_BYTE,buffer, 0);
Run Code Online (Sandbox Code Playgroud)
这确实有效,但蓝调/红色被反转(我向纹理提供BGRA数据):
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA,w, h, 0, GL_BGRA, GL_UNSIGNED_BYTE, buffer);
...
glReadPixels(0, 0, w,h, **GL_RGBA**, GL_UNSIGNED_BYTE,buffer, 0);
Run Code Online (Sandbox Code Playgroud)
...为什么我不能一直使用BGRA?我注意到glRenderbufferStorage似乎不接受任何BGRA格式......我真的很困惑.BGRA是我的数据中唯一合适的格式,因为它来自iphone的相机.
假设我有一个如下所示的2D数组:
GACTG
AGATA
TCCGA
Run Code Online (Sandbox Code Playgroud)
每个数组元素取自一个小的有限集(在我的例子中,DNA核苷酸 - {A, C, G, T}).我想以某种方式随机洗牌这个数组,同时保留行和列核苷酸频率.这可能吗?可以有效地完成吗?
[编辑]:我的意思是我想要生成一个新的矩阵,其中每一行的As,Cs,Gs和Ts的数量与原始矩阵的相应行数相同,并且每列具有相同数量的As,Cs,Gs和Ts作为原始矩阵的对应列. 置换原始矩阵的行或列通常不会实现此目的. (例如,对于上面的例子中,顶行有2 G秒,1的每一个A,C并且T,如果该行与第2行交换,在所得到的矩阵的最上一行将具有3个AS,1 G和1 T).
通过一次改变列来保持列频率,同样适用于行,这很简单.但这样做通常会改变另一种频率.
到目前为止我的想法: 如果可以选择2行和2列,以便这个矩形角落的4个元素具有模式
XY
YX
Run Code Online (Sandbox Code Playgroud)
对于一些对不同元件的X和Y,然后更换这些4个元素与
YX
XY
Run Code Online (Sandbox Code Playgroud)
将保持行频和列频.在顶部的示例中,这可以针对(至少)第1行和第2行以及第2列和第5列(其角部给出2x2矩阵AG;GA)以及第1行和第3行以及第1列和第4列(其角落给出GT;TG)进行.显然,这可以重复多次以产生一定程度的随机化.
推广一点,由行的子集和列的子集引起的任何"子矩形",其中所有行的频率相同并且所有列的频率相同,可以使其行和列置换以产生一个有效的完整矩形.(其中,只有那些至少改变了1个元素的子矩形实际上很有趣.)大问题:
这个问题涉及一组特殊情况,其中包含可能的元素集{0, 1}.人们提出的解决方案与我自己提出的解决方案类似,可能是可用的,但并不理想,因为它们需要任意数量的回溯才能正常工作.另外我担心只考虑2x2掉期. …