zoukankan      html  css  js  c++  java
  • 脏数据或者场景考虑不全面引发的生产问题

      就是一个简单的查询过滤接口,但是在上生产时却报了错,代码大致如下:

          if(board.getName() == null || board.getName() ==""){
                iterator.remove();
            }
          if(board.getPbiCode() == null || board.getPbiCode() == ""){
                iterator.remove();
            }
    很简洁的逻辑,就是使用迭代器移除不符合要求的对象,开发后测试没有什么问题,但是在联调时却发现,这个报错了。
    其原因就在于迭代器移除了2次,而测试代码告诉我们迭代器时不能移除多次的,这和List,Map,Set对象容器有这个本质的区别

      改成这样就不会报错了:

        if (board.getName() == null || board.getName() == "") {
                iterator.remove();
        } else if (board.getPbiCode() == null || board.getPbiCode() == "") {
                iterator.remove();
            }
    加了一个else,增加了代码的健壮性。

      这个问题原因在于迭代器的不支持对象的二次移除,以及数据库中有脏数据。

      在查看数据库是否与脏数据时,大体是两个表的查询。但是我老是想到子查询,查询出来的是一条记录,感觉写不出来这个sql。但是同事提醒了我,使用join查询,就可以联合两张表,查看是否存在数据缺失的问题了。同事的提醒,让我觉得我自己的mysql书白看了,竟然简单的sql使用都不会。还有一次就是where后面拼接的多个and的情况,我感觉写不出来,但是人家很快就写出口来了。这说明sql是一个很具有实践性的技术,要不断实践才能掌握。

  • 相关阅读:
    [模板] 循环数组的最大子段和
    [最短路][几何][牛客] [国庆集训派对1]-L-New Game
    [洛谷] P1866 编号
    1115 Counting Nodes in a BST (30 分)
    1106 Lowest Price in Supply Chain (25 分)
    1094 The Largest Generation (25 分)
    1090 Highest Price in Supply Chain (25 分)
    树的遍历
    1086 Tree Traversals Again (25 分)
    1079 Total Sales of Supply Chain (25 分 树
  • 原文地址:https://www.cnblogs.com/Robin008/p/12904910.html
Copyright © 2011-2022 走看看