只显示主题贴

做数据库操作,免不了出现以下代码来释放数据库资源 finally{ if(rs!=null){ try{ rs.close(); }catch(Exception ex){ log(ex); } } if(st!=null){ try{ st.close(); }catch(Exception ex){ log(ex); } } if(conn!=null){ try{ conn.close(); }catch(Exception ex){ ...
maybe723 写道Class a=ClassA.class; Object o=a.newInstance(); //不这样如何获得初值 Field f=a.getDeclaredField("field0"); f.setAccessible(true); System.out.print(f.get(o)); 关键是调用 newInstance,本身也是 class.getConstructor().invoke()出来的玩意,那么构造函数尤其是比如默认构造函数如何知道这些值的初值??显然应该在类文件里面保存一个常量池,保存了这些值才对 不过我是这么认为,但是Class类没有提供A ...
如果是在常量池里面恐怕无法回收,至少我是没找到方法 如果是new String()当GC调用且该对象无强引用的时候有可能被回收,实际上也就不用管了
………… 可能我没说清楚,我的意思是,当类未实例化的时候…… 也就是比方说,我拿到ClassA.class这个Class对象时如何获取初值 当然,ClassA.class.newInstance().getDeclaredMethod("someString").invoke()的确可以…… 总而言之多谢了,一个下午都没找到Class类里面类似功能的API,包括Javassist里的CtClass类,所以……一会直接考虑这样做算了
比如定义如下class public class ClassA{ private int field0=100; } ClassA应该保存了field0的默认值100,但是无论Class或者Field类的API都未提供如何拿到这个默认值的方法。有知情人望告知一下,谢谢
加入索引后的测试结果出来了,很遗憾……加入(id, field0, field1)索引后,引入一个 id>xxx 的条件就能提高效率的想法依然TMD扯淡!!
假定考虑一个500万的一张表,其中包括三个字段: id:long field0:varchar field1:int 那么分页SQL如下,取第一万页的内容 String sql1="select * from table_A where field0 like 'value 2%' and field1>125111299 and field1<858233449 limit 300000,30"; 测试结果,当未建立索引的时候,大约是5-8秒左右,建立索引后大约是1秒左右 结论很简单,建立索引的必须性。数据大约占硬盘空间为600M,加入索引(field0,field1)之后 ...
ddandyy 写道运行一个DAO UPDATE的时候 居然会发给另一个DAO ROLLBACK命令 你不觉得诡异么 貌似我想了想解决的办法就是如此……简单的改了一下模拟的测试用的业务逻辑,第一时间执行 sql1 ,隔4秒执行 sql2 public Object call() throws Exception { while(true){ Thread.currentThread().sleep(timeOut); try{ conn.createStatement().executeUpdate(sql1); }catch(SQLEx ...
ddandyy 写道死锁确实是数据库锁定 但是你这样就说他是数据库级别................就过分了吧........ 死锁完全是因为业务问题 再好的数据库 发两条SQL过去 该死锁还是死锁 多谢多谢 呃……我说错了,应该不说是数据库级别,或者说,应该是dao层或者持久层关注的东西。 这种问题应该很常见,于是觉得JDBC应该提供了解决方案,比如,简单来说,我想当然的认为既然JDBC检测到了死锁问题,那么哪些资源冲突Connection应该清除,那么实际上Connection可以存储一次事务前几次的操作,然后“rollback”直到释放这些资源,再然后比如 wait(1000 ...
情况大概是这样的 表table_A,和表table_B,在分属不同的业务逻辑中会以不同顺序进行更新 比如 业务逻辑business_X: getConnection; update table_A; update table_B; commit or rollback; 业务逻辑business_Y: getConnection; update table_B; update table_A; commit or rollback; 测试代码我用几个线程并发进行顺序的控制,关键代码如下 public class TestRun implements Callable< ...
airfan
搜索本博客
博客分类
最近加入圈子
最新评论
评论排行榜