记录一次bug解决过程:else未补全致使数据泄露和代码优化

1、总结java

  1. 快捷键ctrl + alt + 四个方向键 --> 倒置屏幕
  2. 未补全else逻辑,倒置查询数据泄露
  3. 空指针是最容易犯的错误,数据的空指针,能够广泛采用三目运算符来解决
  4. SVN冲突解决关键字:<<<<<<< .working     =======     >>>>>>> .merge-right.r10329
  5. 线上实时查看日志的命令:tail -f -n 200 all.log

2、BUG描述:else逻辑未补全,倒置查询数据泄露数据库

在查询筛选参数的时候,有以下逻辑:app

            if (StringUtils.isNotBlank(logisticsOrder.getParentIds())) { // 所属复合单
                String[] ids = SqlStringUtil.sliptQueryStr(logisticsOrder.getParentIds());
                for (String id : ids) {
                    if (!StringUtils.isNumeric(id)) {
                        throw new ServiceException(ErrorCode.param_number);
                    }
                }

                List<Integer> orderIds = assetBeanMapperExt.getOrderIdsByParentIds(SqlStringUtil.formatInStr(logisticsOrder.getParentIds()));

                if (CollectionUtils.isNotEmpty(orderIds)) {
                    StringBuffer sb = new StringBuffer();
                    for (Integer orderId : orderIds) {
                        sb.append(orderId.toString());
                        sb.append(",");
                    }
                    if (StringUtils.isBlank(logisticsOrder.getQueryIds())) {
                        _map_result.put("queryIds", sb.substring(0, sb.length() - 1));
                    } else { // 工单编号、所属复核单 同时查询
                        _map_result.put("queryIds",
                                        sb.append(SqlStringUtil.formatInStr(logisticsOrder.getQueryIds())).toString());
                    }
                } else {
                    _map_result.put("queryIds", "-1");
                }
            }

因为未补全orderIds为空的逻辑,致使没有把参数传入,所以全量数据被查询了出来。所以要补全else状况,插入“-1”,作为查询条件。但这里同时要注意,若是数据库中该字段是无符号整型,那么就不能够这样作了。编辑器

3、BUG描述:空指针致使线上的bug工具

//SiteVo sourceSiteVo = siteMapperExt.getSiteFullInfo(Integer.valueOf(atomic.getOldSite()));
//SiteVo targetSiteVo = siteMapperExt.getSiteFullInfo(Integer.valueOf(atomic.getTargetSite()));
//RuleInfos ruleInfos = constructRuleInfos(sourceSiteVo, targetSiteVo);

  上述代码优化了线上空指针的问题,先查询,而后再构造。在构造过程当中,若是可能出现字段为空的状况,要记得用逻辑中要处理,而且要用三目运算符对其处理:null == sourceSiteVo.getSiteId() ? StringUtils.EMPTY : sourceSiteVo.getSiteId().toString()。优化

4、BUG描述:SVN冲突解决编码

  在主干和多分支开发的过程当中,在往平常发布代码的过程当中,会常常出现合并代码冲突的发生。在冲突的文件中,一般,冲突的地方会有三个标记其冲突位置:atom

<<<<<<< .working
 
=======

>>>>>>> .merge-right.r10329

  注意,在解决冲突的过程当中,建议使用notepad、visual code、sublime等工具来解决冲突,若是使用txt文本编辑器来解决冲突的话,一般会带来编码错误的:java:[1,0] illegal character: \65279,这样的话,能够依次退出当前分之,不要合并到主干truck分支上。即退出部署,再从新部署来尝试解决它。spa

5、线上实时查看日志的命令指针

tail -f -n 200 all.log

该命令表示,查看all.log文件中最后新增的200行的代码。

6、

相关文章
相关标签/搜索