由一个漏洞引发的思考
最近项目比较紧,没时间来写博客,意味着思考少了。两件事:
1、struts2最近爆出了一个漏洞,线上版本必须修补。但是线上的版本源代码已经不可恢复了,新版本代码又没开发、测试完成,代码版本管理没有做好,即使是自己一个人做项目也应该管理好代码。版本控制非常重要,虽说上一个版本不一定好!
2、新版程序发现一个问题,这个问题是在开发过程中很容易忽略掉的,而且必须放在并发访问中才能出现的问题。另外,由于日志输出没做好,导致调试很费劲。简单描述下该问题:
三句话:
1)从连接池获取一个连接
2)将字符型数字转换为整型数字
3)获取连接,查询数据,释放连接
问题出现在第二句话上,当第二句转换失败抛异常时,并未被处理,而是直接抛回给上层调用方法,所以,连接更本就不会被释放掉,就出现了资源枯竭,死锁的状态。
总结下:
真应该好好学习java啊 多线程 异常处理和异常处理对于程序的影响 程序执行流程 动态代理 线程池死锁 还有什么链接生成、关闭 如何查看resin堆栈信息
先把异常处理 和 适当输出日志 弄好,这个是靠经验的!