扫二维码与项目经理沟通
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流
这叫范型,或者泛型!主要用去规定你这个则键雀集合中出亮改现的数据类型!例子:一个弯孙早可以装很多种食物,加上范型,比如是面,那么这个碗只能是装上面这类的食物的!
站在用户的角度思考问题,与客户深入沟通,找到龙口网站设计与龙口网站推广的解决方案,凭借多年的经验,让设计与互联网技术结合,创造个性化、用户体验好的作品,建站类型包括:网站设计、成都做网站、企业官网、英文网站、手机端网站、网站推广、主机域名、雅安服务器托管、企业邮箱。业务覆盖龙口地区。
如果你用的是eclipse可以用快捷键来抽灶纤取方法的,就是档团选中重行辩橘复的代码,然后按alt+shift+m,就解决你的代码重复问题。
public static Object getInnter(Object con){
Object re=null;
Field f;
try {
f = con getClass() getDeclaredField( inner )
f setAccessible(true)
re= f get(con) //取得内部包装的Connection
f setAccessible(false)
} catch Exception e) {
}
return re;
}
以上代码运行后 输出
con Class Type is: mchange v c p impl NewProxyConnection
Inner con Class Type is: mysql jdbc JDBC Connection
Data from DB:
o and o is same object
Data from DB:
上述代码中 首先从数据库连接池获得一个连接 发现连接类型并不是mysql的数据库连接 而是 mchange v c p impl NewProxyConnection 根据类名中可以推测 从数据库连接池中获得的连接只是一个代理 接着 通过反射 取得这个对象中名为inner的属性 并打印其Class类型 发现这才是真正的mysql连接 关闭NewProxyConnection连接 再向池中请求一个新的连接 同样获取该连接内部的实际数据库连接对象 发现 第一次使用的实际数据库连接对象o 和第二次使用的对象o 是完全相同的
这说明 前后两次数据库连接的请求均返回了相同的数据库连接 关闭NewProxyConnection连接时 并没有真正关闭数据库连接 而只是将数据库连接放入连接池保存 使得数据库连接在连接池中得到了复用 而从连接池返回的NewProxyConnection对象 只是对真实数据库连接的包装
除了线程池和数衫友据携腔库连接池 对于普通的Java对象 在必或隐槐要的时候 也可以进行池化管理 对于那些经常使用 并且创建很费时的大型对象来说 使用对象池维护 不仅可以节省获得对象实例的成本 还可以减轻GC频繁回收这些对象产生的系统压力 但对于生成对象开销很小的对象进行池化 反而可能得不偿失 维护对象池的成本可能会大于对象池带来的好处
注意 在JDK中 new操作的效率是相当高的 不需要担心频繁的new操作对系统有性能影响 但是new操作时所调用的类构造函数可能是非常费时的 对于这些对象 可以考虑池化
返回目录 Java程序性能优化 让你的Java程序更快 更稳定
编辑推荐
Java程序设计培训视频教程
J EE高级框架实战培训视频教程
J ME移动开发实战教学视频
Visual C++音频/视频技术开发与实战
Oracle索引技术
ORACLE G数据库开发优化指南
lishixinzhi/Article/program/Java/gj/201311/27800
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流