打字猴:1.700452231e+09
1700452231
1700452232 if(loginSuccess){
1700452233
1700452234 //登录成功,签到
1700452235
1700452236 Checker.sign(userName);
1700452237
1700452238 }else{
1700452239
1700452240 //登录不成功,记录日志
1700452241
1700452242 log.warn(userName+”,登录失败!”)
1700452243
1700452244 }
1700452245
1700452246 }
1700452247
1700452248 }
1700452249
1700452250 这是一个早期Web应用的典型验证代码,先验证用户是否登录成功,然后决定是否向Session中写入信息。在该BBS系统中,分析发现login和sign操作都非常耗时,那就首先跟踪login,代码如下:
1700452251
1700452252 class LoginBiz{
1700452253
1700452254 public void login(String_user, String_password){
1700452255
1700452256 //根据用户名获得用户对象
1700452257
1700452258 User u=userDao.getUserByUser(_user);
1700452259
1700452260 return u!=null&&u.getPasswd().equals(_password);
1700452261
1700452262 }
1700452263
1700452264 }
1700452265
1700452266 追踪到这里,发现从数据中取出用户对象的效率很低,但是数据库的CPU、内存、I/O都没有问题,而且没有到达最大连接数。继续追踪下去,终于发现问题了:数据库的版本和JDBC的版本不一致,虽然在进行所有的连接、执行SQL、断开等操作时都没有出现任何问题,但在多表的联合查询中速度非常慢。问题定位了,将其替换成数据库匹配的驱动程序,登录问题马上得到解决,并且其他所有性能慢的问题都解决了,归根结底其实都是数据库驱动问题引起的。
1700452267
1700452268 解决性能问题时,不要把所有的问题都摆在眼前,这只会“扰乱”你的思维,集中精力,找到那个“出头鸟”,解决它,在大部分情况下,一批性能问题都会迎刃而解,而且我们的用户关注最多的可能就是系统20%的功能,可能我们解决了这一部分,已经达到了用户的预期目标,也就标志着我们的优化工作可以结束了。
1700452269
1700452270 注意 解决性能优化要“单线程”小步前进,避免关注点过多而导致精力分散。
1700452271
1700452272
1700452273
1700452274
1700452275 编写高质量代码:改善Java程序的151个建议 [:1700438213]
1700452276 编写高质量代码:改善Java程序的151个建议 建议137:调整JVM参数以提升性能
1700452277
1700452278 我们写的每一段Java程序都要在JVM中运行,如果程序已经优化到了极致,但还是觉得性能比较低,那JVM的优化就要提到日程上来了。不过,由于JVM又是系统运行的容器,所以稳定性也是必须考虑的,过度的优化可能就会导致系统故障频繁发生,致使系统质量大幅下降。下面提供了四个常用的JVM优化手段,供你在需要时参考。
1700452279
1700452280 (1)调整堆内存大小
[ 上一页 ]  [ :1.700452231e+09 ]  [ 下一页 ]