
alibaba
Rubenyu
这个作者很懒,什么都没留下…
展开
-
Cookie时效性
错误案例 为避免反复登录对用户使用造成影响,同时兼顾访问安全,开发人员在Cookie中设定了一个有效期,会员在登陆12小时后,cookie就自动失效,但是cookie中的ID还是存在的。由于这些客户自己电脑上的时间不是正常北京时间,而是被客户改为 12小时后的原创 2011-07-06 08:12:21 · 4436 阅读 · 0 评论 -
清除排行榜缓存任务中,做循环处理时,每次都需要抓住异常记录日志
错误案例 for (String key : keys) { memberTopRankCache.remove(key); //这里可能抛出异常 log.info(key + " removed.");}错误分析 使用场景是批量处理业务过程中,有一个失败转载 2011-07-11 08:37:41 · 671 阅读 · 0 评论 -
Java代码不允许使用中文
错误案例 举例来说,如果我们应用涉及诚信通销售的中文信息散布在各处、,有一天我们对诚信通价格做了调整,那势必要查询所有代码,一旦有一处漏改,被很多用户看到,对用户和公司都会带来不良的影响。 错误分析 if(topDomainSelection.equals("请选择一个顶级域转载 2011-07-11 08:16:22 · 1939 阅读 · 0 评论 -
使用JDK的新特性遍历list中所有数据
错误案例 下列代码没有问题,但是这是一种老的写法,缺点是: 1、可读性不够好。 2、在list边界上容易遗漏:for循环中一定要考虑i=0开始 。 3、显示的方式把list中的元素转换成T类型。 List list = new ArrayList();for (int i =转载 2011-07-11 09:03:27 · 801 阅读 · 0 评论 -
字符串和多个char类型的字符相加比较问题
错误案例 【现象描述】表面看上去内容一样的字符串和单个字符拼接比对,结果永远为false 【错误代码】 "34".equals('3' + '4') 错误分析 当且仅当+操作符的操作数中至少有一个是String类型时,才会执行字符串连接操作;否则,执行加法。 如:在本例中'3'转载 2011-07-11 09:05:37 · 1071 阅读 · 0 评论 -
异常的错误使用导致性能问题
错误案例 现象描述: String strValue = (String) source; try { return new Integer(strValue); } catch (Exception e) { try {转载 2011-07-11 08:19:59 · 700 阅读 · 0 评论 -
数据流的读取
错误案例 现象描述:零批II期中在对支付宝进行回调的过程中发现经常性的有支付宝返回数据解析不完整,经过检查发现如下错误代码: InputStream is = postMethod.getResponseBodyAsStream();byte[] bytes = new byt转载 2011-07-11 08:35:39 · 1665 阅读 · 0 评论 -
循环体内包含了大量没有必要在循环中处理的语句或获取数据库连接或进行不必要的try-catch操作
错误案例 public class CheckCycle{ public void cycleInfo() { String[] Str = null; //获取各个部件的通知地址 Str = outNotify原创 2011-07-11 08:48:26 · 1495 阅读 · 0 评论 -
数据库操作、IO操作的资源没有及时释放
错误案例 public class ReleaseRes{ public void releaseDB () { Connection conn = null; APLResultSet rs = null; St原创 2011-07-11 08:42:07 · 2697 阅读 · 0 评论 -
价格精度问题
错误案例 (int)(Float.parseFloat(price)*100) 这样处理,对于8.90这样的价格会转化成889,实际应该是890才对 (int)(Double.parseDouble(price)*100) ,对于8.90转化的结果是对的,但是对于 1.15会把它转载 2011-07-11 08:54:29 · 1452 阅读 · 1 评论 -
Io流关闭问题
错误案例 常见的一种写法,针对每个catch都进行一次io流关闭。在关闭过程也未进行io流的空值判断。 try{ URL url = new URL("http://pm.china.alibaba.com/" + memberId); URLConnection c原创 2011-07-11 08:56:31 · 1784 阅读 · 0 评论 -
用StringBuffer/StringBuilder对字符串进行拼接
错误案例 在循环中大量使用字符串连接,会导致不必要的内存消耗和频繁的垃圾回收。 错误分析 错误的写法: String str = "";for (int i = 0; i < 1000; i++) { str += " " + i;}System.out.print原创 2011-07-08 09:12:19 · 2035 阅读 · 0 评论 -
serialVersionUID
在Java中,软件的兼容性是一个大问题,尤其在使用到对象串行性的时候,那么在某一个对象已经被串行化了,可是这个对象又被修改后重新部署了,那么在这种情况下, 用老软件来读取新文件格式虽然不是什么难事,但是有可能丢失一些信息。serialVersionUID 来解决这些问题,新增的s转载 2011-07-08 09:07:31 · 1068 阅读 · 0 评论 -
表增加字段的兼容性问题
错误案例 短信平台长短信小需求预发布时,发现短信的发送速度忽然变得很慢。 检查webx.log日志: Caused by: com.ibatis.common.exception.NestedRuntimeException: Error setting pr原创 2011-07-06 08:49:42 · 1492 阅读 · 0 评论 -
Bean之间的copy用BeanCopier
错误案例 现象描述:性能测试时,发现CPU占有率很高,经过jprofiler的分析,发现CPU大部分被BeanUtils占用了,成了性能瓶颈。 错误分析 工作中,经常会碰到两个bean之间的拷贝,如MemberDO拷贝到MemberVO BeanUtils.copyPropert转载 2011-07-08 08:39:04 · 10718 阅读 · 1 评论 -
善于利用工具类库
错误案例 现象描述:某PLA在代码review时,发现有一段代码相当复杂,看不明白是什么用途,最后找对应的开发了解,发现是要取两个集合中的交集。 错误分析 for(int i=0;i<idArray.length;i++){ while(checkedIdIt.hasNe原创 2011-07-08 08:59:34 · 722 阅读 · 0 评论 -
类修改后需要重新计算serialVersionUID值
错误案例 现象描述:某天发布后,发现旺铺不能访问了;最后经过开发工程师和架构师一起的跟踪发现,原因是从cache取出来的member对象对应的旺铺标志没有了。 是否拥有旺铺的标志是存放到member表multi_sign的一个字段中 错误分析 现在我们使用cache的地方有很多了原创 2011-07-08 09:09:04 · 3674 阅读 · 0 评论 -
Long和long在 IBatis里面的误用
错误案例 现象描述: 在DO中有一属性imageSize,定义成Long(Java的普通类)和long(Java里面的基本数据类型)在update操作时会有区别, <![CDATA[ IMAGE_SIZE = #imageSiz原创 2011-07-06 08:17:05 · 3306 阅读 · 0 评论 -
大数据量订正数据时,清空cache的问题
错误案例 【现象描述】 芝麻开门项目在周末两天的时间内共对1650万左右的数据进行了订正,订正当天应用正常。到了周一,由于中文站的访问量一下子增加,导致memcached写入死锁。从上午九点左右开始,发现阿里助手首页打开很慢,中午到下午两点响应时间进一步增加。原创 2011-07-06 08:27:38 · 686 阅读 · 0 评论 -
正则表达式必须做预编译
错误案例 现象描述:据校长的观察, Java5的正则表达式的实现可能会导致JVM的崩溃;在递归处理上性能极度低下 错误分析 错误原因: 1、Java5 自身带的实现,没有执行事实上perl标准,导致很多书写方式上和perl的表达不一样, 导致学习成本高 2、已经明确的观察到,Ja转载 2011-07-08 08:44:17 · 12964 阅读 · 1 评论 -
缓存的误用
错误案例 代码: //首先从缓存中获取推荐相册列表Long[] albumIds = (Long[]) recommendAlbumIdsCache.get(memberId);if (albumIds == null) { // 如果为空,则取数据库原创 2011-07-06 08:11:08 · 461 阅读 · 0 评论 -
代码中日志必须先判断级别
错误案例 现象描述:发现某些服务器的pv数不高,但服务器的load却不低,高于平均水平 错误分析 分析过程: 通过内存监控发现,GC的动作比较频繁,但无法找到原因,一次PLA偶然的发现了大量如log.debug(“memberId:” + member.getMemberId()原创 2011-07-08 08:23:52 · 3471 阅读 · 1 评论 -
不当事务代码引起的数据库死锁问题
错误案例 DBA反映IBANK线上数据库报警,检测到死锁,跟踪到发生死锁等待的两条SQL语句分别为: UPDATE WP_IMAGE_SORT SET GMT_MODIFIED = SYSDATE,IMAGE_IDS = #imageIds# || IMAGE原创 2011-07-06 09:11:13 · 5623 阅读 · 0 评论 -
使用entrySet遍历HashMap
错误案例 现象描述:在生成环境发现,偶尔生产环境的某台机器CPU使用率很高,经过定位发现是有一个大的HashMap(HashMap里面存放了大量数据,比如1W条)做循环引起的。 错误分析 遍历一个HashMap for(Iterator ite = map.keySet().it转载 2011-07-08 08:34:51 · 829 阅读 · 0 评论