JdbcTemplate中的queryforInt/queryforLong方法在Spring 3.2中已弃用.我无法找出使用这些方法替换现有代码的最佳做法的原因或内容.
一种典型的方法:
int rowCount = jscoreJdbcTemplate.queryForInt(
"SELECT count(*) FROM _player WHERE nameKey = ? AND teamClub = ?",
playerNameKey.toUpperCase(),
teamNameKey.toUpperCase()
);
Run Code Online (Sandbox Code Playgroud)
好的,上面的方法需要重写如下:
Object[] params = new Object[] {
playerNameKey.toUpperCase(),
teamNameKey.toUpperCase()
};
int rowCount = jscoreJdbcTemplate.queryForObject(
"SELECT count(*) FROM _player WHERE nameKey = ? AND teamClub = ?",
params, Integer.class);
Run Code Online (Sandbox Code Playgroud)
显然,这种弃用使JdbcTemplate类更简单(或者它?).QueryForInt总是一种方便的方法(我猜)并且已经存在了很长时间.为什么删除它.结果代码变得更加复杂.
在Windows上运行Eclipse Indigo,Tomcat 7 - 使用eclipse wtp插件在ROOT上下文中运行Web应用程序我遇到了这个间歇性问题,其中eclipse无法找到已编译的JSP.它在首次访问JSP时发生,除非通过停止Tomcat服务器并清理Work目录和项目目录,否则无法解析.编译版本在eclipse目录结构中:
.metadata\.plugins\org.eclipse.wst.server.core\tmp0\work\Catalina\localhost\_\org\apache\jsp\WEB_002dINF\...
Run Code Online (Sandbox Code Playgroud)
但它仍然会产生这个错误.
经过一些研究后,我发现这个相关的线程似乎只是在应用程序部署在ROOT上时才会出现问题.
http://comments.gmane.org/gmane.comp.jakarta.tomcat.user/208071
并输入了一个错误:https: //bugs.eclipse.org/bugs/show_bug.cgi?id = 334977
有没有人有类似的问题,并知道解决方案?
当我在Nexus 7上对所有应用程序转储所有权限时,我获得了保护级别为0(正常),1(危险),2(签名)的权限(如预期).3(SIGNATURE_OR_SYSTEM)*下没有记录任何内容.
但是也有很多权限,其保护级别设置为'18',一些权限设置为'50'.
我找不到关于这些值代表什么的任何文档.有人知道吗?
*它没有记录3岁以下的任何东西.
这些是记录的:
android.permission.ACCESS_CACHE_FILESYSTEM - 18
android.permission.ACCESS_CHECKIN_PROPERTIES - 18
android.permission.ACCESS_DOWNLOAD_MANAGER - 18
android.permission.ACCESS_DOWNLOAD_MANAGER_ADVANCED - 18
android.permission.ACCESS_MTP - 18
android.permission.ALLOW_ANY_CODEC_FOR_PLAYBACK - 18
android.permission.BACKUP - 18
android.permission.BIND_APPWIDGET - 18
android.permission.BIND_DIRECTORY_SEARCH - 18
android.permission.BIND_KEYGUARD_APPWIDGET - 18
android.permission.BIND_REMOTEVIEWS - 18
android.permission.BIND_WALLPAPER - 18
android.permission.CALL_PRIVILEGED - 18
android.permission.CHANGE_COMPONENT_ENABLED_STATE - 18
android.permission.CHANGE_CONFIGURATION - 18
android.permission.CONNECTIVITY_INTERNAL - 18
android.permission.CONTROL_LOCATION_UPDATES - 18
android.permission.CRYPT_KEEPER - 18
android.permission.DELETE_CACHE_FILES - 18
android.permission.DELETE_PACKAGES - 18
android.permission.DOWNLOAD_CACHE_NON_PURGEABLE - 18
android.permission.GLOBAL_SEARCH - 18
android.permission.INSTALL_LOCATION_PROVIDER - 18
android.permission.INSTALL_PACKAGES - 18
android.permission.MANAGE_USB - …Run Code Online (Sandbox Code Playgroud) 当我使用不同的浏览器"查看源代码"时,我的网页似乎总是有很多空格并且格式错误.我正在使用JSP开发Java Web应用程序.
我怎样才能确保当我'查看源代码'时,我看到格式良好的HTML?
编辑:
当我说格式化时我的意思是:
我得到这样的事情:
<div>
<p>some text</p>
</div>
Run Code Online (Sandbox Code Playgroud)
当我想要的时候:
<div>
<p>some text</p>
</div>
Run Code Online (Sandbox Code Playgroud)
在我的JSP(使用包含)中,一切都很好地格式化.
换句话说,我不希望线程等待它无法访问锁(如在同步中),我想线程执行只是在它无法获得锁时立即返回.
像这样简单的布尔锁可能允许多个线程访问.
private static boolean lockAvailable = true;
private boolean acquireLock() {
if(lockAvailable) {
lockAvailable = false;
return true;
}
return false;
}
Run Code Online (Sandbox Code Playgroud)
我错过了什么吗?实现这一目标的最佳/最简单方法是什么?
编辑:
谢谢你指出信号量(!)
所以再看一遍这段代码是防弹吗?
private final static Semaphore lock = new Semaphore(1, true);
public void tryAndDoSomething() {
if(lock.tryAcquire()) {
try {
// only single thread can access here at one time
} finally {
lock.release();
}
}
}
Run Code Online (Sandbox Code Playgroud)
更新:
我意识到我需要可重入的功能,所以我创建了一个简单的非阻塞重入.为任何对您如何执行此操作感兴趣的人发布代码.任何想要这种功能的人当然应该使用现有的 Java类java.util.concurrent.locks.ReentrantLock:
import java.util.concurrent.atomic.AtomicBoolean;
import java.util.concurrent.atomic.AtomicInteger;
/**
* SimpleNonBlockingLock ensures that only a single thread can call …Run Code Online (Sandbox Code Playgroud) 我有一个MySql数据库实例和一个Account表维护一个Balance字段.我有多个Java应用程序,每个都使用Jdbc连接到数据库,可能会增加或减少Balance字段的值.如何确保读取,计算和更新Balance值以及此过程是单独发生的,并且"了解"可能正在执行相同操作的任何其他Java进程?
java ×6
jdbc ×2
jsp ×2
android ×1
browser ×1
concurrency ×1
database ×1
eclipse-wtp ×1
html ×1
jdbctemplate ×1
mysql ×1
semaphore ×1
spring ×1
tomcat ×1