10年以后还看到这样的代码
2014-01-10 15:29
639 查看
while(rs.next()){
count++;
String ip = rs.getString("ip");
int port = rs.getInt("port");
String type = rs.getString("type");
LOG.debug(count+" get "+type+" proxy : "+ip+":"+port);
try{
checkSocksProxy(ip,port,type);
}catch (Throwable e){
LOG.info("check error, ",e);
}
}
我不是说直接用jdbc不好,有些特别的业务场景仅一个取数据操作,而且是每小时或一天取一下。完全可以直接用jdbc简化操作。
但是这里是在持有结果集没的释放连接的情况下去checkSocksProxy,这个操作要做几小时,而数据库连接就要在整个checkSocksProxy被占用。
如果真的上线,数据库立马被拖死。
以前没有orm工具时我们都会直接先导入到CacheedResultSet中立即释放连接,然后慢慢访问CacheedResultSet,现在orm框架如此成熟,每次数据请求可以直接获取一个容器,底层连接一定会被释放,这是最起码的原则。
count++;
String ip = rs.getString("ip");
int port = rs.getInt("port");
String type = rs.getString("type");
LOG.debug(count+" get "+type+" proxy : "+ip+":"+port);
try{
checkSocksProxy(ip,port,type);
}catch (Throwable e){
LOG.info("check error, ",e);
}
}
我不是说直接用jdbc不好,有些特别的业务场景仅一个取数据操作,而且是每小时或一天取一下。完全可以直接用jdbc简化操作。
但是这里是在持有结果集没的释放连接的情况下去checkSocksProxy,这个操作要做几小时,而数据库连接就要在整个checkSocksProxy被占用。
如果真的上线,数据库立马被拖死。
以前没有orm工具时我们都会直接先导入到CacheedResultSet中立即释放连接,然后慢慢访问CacheedResultSet,现在orm框架如此成熟,每次数据请求可以直接获取一个容器,底层连接一定会被释放,这是最起码的原则。
相关文章推荐
- 网上看到了这样一个代码,请问怎么用啊?
- Android 的这种浮动的框框式怎么实现的,并没有在java代码里看到这样的activty啊
- 兄弟,不要这样写服务器代码
- C#出现这样的提示:"并非所有的代码路径都返回值"
- 优雅编程之这样重构代码,你就“正常”了(十八)
- 代码在windows下运行只有12s,但是在linux下需要50s时,这样优化就可以解决
- 你在公司项目里面看到过哪些操蛋的代码?
- 网易校招第6题(看到一份比较好的代码)
- 我想用代码做一张这样的图片。
- 代码这样写更优雅(1)
- 我们的现状是看到任务马上写代码
- 这样写代码,怎一个__字了得。
- 看过这样的代码吗? 大部分人绝对看不懂!
- 代码这样写更优雅,15篇 Python 技术热文
- Longest Valid Parentheses 每每一看到自己的这段没通过的辛酸代码
- VC编程规范-程序员们都应该这样写代码
- 代码调用DruidDataSource来管理conn连接,同时声明了ThreadLocal对象来保存每次线程请求所获取的连接,这样可以避免每个new一个JDBC
- ——黑马程序员—— 编程时代码这样写才漂亮
- 检测到LoaderLock,正试图在OS加载程序锁内执行托管代码,不要尝试在DllMain或映像初始化函数内运行托管代码,这样会导致应用程序挂起。
- Python代码应该这样写