一、总结

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

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

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

            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”,做为查询条件。但这里同时要注意,如果数据库中该字段是无符号整型,那么就不可以这样做了。

三、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()。

四、BUG描述:SVN冲突解决

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

<<<<<<< .working

=======

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

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

五、线上实时查看日志的命令

tail -f -n 200 all.log

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

六、

记录一次bug解决过程:else未补全导致数据泄露和代码优化的更多相关文章

  1. 记录一次bug解决过程:velocity中获取url中的参数

    一.总结 在Webx的Velocity中获取url中参数:$rundata.getRequest().getParameter('userId') 在Webx项目中,防止CSRF攻击(Cross-si ...

  2. 记录一次bug解决过程:数据迁移

    一 总结 不擅长语言表达,勤于沟通,多锻炼 调试MyBatis中SQL语法:foreach 问题:缺少关键字VALUES.很遗憾:它的错误报的让人找不着北. 二 BUG描述:MyBatis中批量插入数 ...

  3. 记录一次bug解决过程:git深入学习和JDK8新特性

    一 总结 熟悉廖雪峰git基础; 由于git跟踪的是修改,而不是版本号:因此对于修改撤销的操作,文件在eclipse中依旧有>修改标记,这点不同于svn. 二 BUG描述:熟悉Git基础 在Gi ...

  4. 记录一次bug解决过程:规范变量名称和mybatis的使用以及代码优化

    一.总结 Mybatis中当parameterType为基本数据类型的时候,统一采用_parameter来代替基本数据类型变量. Mybatis中resultMap返回一个对象,resultType返 ...

  5. 记录一次bug解决过程:eclipse集成lombok插件

    一 总结 eclipse集成插件lombok: 启动Spring Boot项目: sublime全局搜索关键字:ctrl + shift + F JDK8中的lambda表达式使用 二 BUG描述:集 ...

  6. 记录一次bug解决过程:eclipse Installed JREs 配置引出的问题

    一 总结 eclipse Installed JREs 配置引出的问题:编译以来JDK,不是JRE spring boot内嵌tomcat运行程序,tomcat:run 二 Bug描述:eclipse ...

  7. 记录一次bug解决过程:resultType和手动开启事务

    一.总结 二.BUG描述:MyBatis中resultType使用 MyBatis中的resultType类似于入参:parameterType.先看IDCM项目中的实际使用案例代码,如下: // L ...

  8. 记录一次bug解决过程:可维护性和性能优化

    一.总结 使用某些变量的地方在2次以上的,强烈建议使用枚举值来维护变量,日后方便扩展. 查数据库的方法调用,能合并就净量去合并. 二.Bug描述 枚举变量的维护以及方法使用: public class ...

  9. 记录一次bug解决过程:mybatis中$和#的使用

    一.总结 mybatis中使用sqlMap进行sql查询时,经常需要动态传递参数.动态SQL是mybatis的强大特性之一,也是它优于其他ORM框架的一个重要原因.mybatis在对sql语句进行预编 ...

随机推荐

  1. UVA-146 ID Codes

    It is 2084 and the year of Big Brother has finally arrived, albeit a century late. In order to exerc ...

  2. css样式之border-radius

    border-radius 属性设置边框的园角 可能的值:像素,百分比 扩展延伸 html代码 <div></div> css代码 div { height: 200px; w ...

  3. 关于SMARTFORMS文本编辑器出错

    最近在做ISH的一个打印功能,SMARTFORM的需求本身很简单,但做起来则一波三折. 使用环境是这样的:Windows 7 64bit + SAP GUI 740 Patch 5 + MS Offi ...

  4. SAP CRM 树视图(TREE VIEW)

    树视图可以用于表示数据的层次. 例如:SAP CRM中的组织结构数据可以表示为树视图. 在SAP CRM Web UI的术语当中,没有像表视图(table view)或者表单视图(form view) ...

  5. BPM SharePoint解决方案分享

    一.需求分析 SharePoint作为微软推出的协同类平台产品,为客户提供了门户.内容.文档.流程.社区.搜索.BI等一系列的解决方案,然而其流程功能由于设计理念差异,不能完全满足客户的需求,主要原因 ...

  6. A/B Testing的简要知识

    A/B testing主要用来检测网站或者APP的两个版本中哪一个更好,它的中心思想是把流量一分为二,一份用作experiment group,访问新的版本,另一份用作control group,访问 ...

  7. 让 ASP.NET vNext 在 Mac OS 中飞呀飞。。。

    写在前面 阅读目录: 娓娓道来 Install ASP.NET vNext Command Line Tools 安装 Homebrew 使用 Homebrew,安装 KVM Install Subl ...

  8. .NET Portability Analyzer 已开源

    在一年前介绍过<介绍.NET 开发必备工具 .NET Portability Analyzer>,微软已经把代码开源到Github:https://github.com/Microsoft ...

  9. 如何快速开发SPA应用

    前言 web早已经进入了2.0时代了,如今的网页大有往系统应用级别的方向发展的趋势,再也不是以前的简单展示信息的界面了.如今很多webapp已经做到了原生应用的功能,并且运用自身的优势逐步取代之.HT ...

  10. 使用Metrics监控应用程序的性能

    在编写应用程序的时候,通常会记录日志以便事后分析,在很多情况下是产生了问题之后,再去查看日志,是一种事后的静态分析.在很多时候,我们可能需要了解整个系统在当前,或者某一时刻运行的情况,比如当前系统中对 ...