刚才排查出一个线上问题,极为严重,但是引发点却非常小,让人深省。

构造函数不写逻辑 这句话一直说,但是一直不理解原因,也确实没遇到过有问题的代码。但是今天却实实在在被坑了一大把,还是很长记性的,在这里记一下,以后警觉。

首先最开始我们的代码是这样的:

        Repayment vo = new Repayment();vo.setId(withholdvo.getRepaymentId());vo.setStatus(0);withholdService.updateRepayment(vo);

在这里是我写的代码,原意是更新一个Repayment的status。

一直运行也是正常的,但是后来我们同事加了句这样的代码:

public Repayment(){amount = BigDecimal.ZERO;amountPaid = BigDecimal.ZERO;capital = BigDecimal.ZERO;
}

然后,可怕的事情就发生了,在更新的时候,把原有的Repayment里应有的数据全都更新成了0。

这样就很严重了,改了一大堆的数据才修复,而且当时这个Bug不好找,找了好久才发现。

这种的操作还是应该在init方法执行,或者说可以有一个带参数的构造函数来处理。

BUG总结——【构造函数写逻辑】引发的极大的线上问题相关推荐

  1. 一个purge参数引发的惨案——从线上hbase数据被删事故说起

    一个purge参数引发的惨案--从线上hbase数据被删事故说起 在写这篇blog前,我的心情久久不能平静,虽然明白运维工作如履薄冰,但没有料到这么一个细小的疏漏会带来如此严重的灾难.这是一起其他公司 ...

  2. 写《2020年11月线上自行车业务分析报告》

    一.分析报告的背景: 2020年12月业务组组长需要向领导汇报2020年11月自行车销售情况,为精细化运营提供数据支持,能精准的定位目标客户群体. 二.分析目的: 1.如何制定销售策略,调整产品结构, ...

  3. 测试人员做到这几点,线上80%的BUG将落入你手,企业将避免重大风险

    BUG事故给敲了很大的警钟,也给公司带来重大损失,作为测试人员,我们如何提现发现线上BUG并及时解决,避免落入用户手中,给企业带来无法挽回的损失. 案例1: 1月20日凌晨,拼多多App因技术漏洞,用 ...

  4. java基础巩固-宇宙第一AiYWM:为了维持生计,做项目经验之~SSM项目错误集锦Part3(项目蹦+pg数据库坏+100%-->线上故障排查经验【业务bug第一步一定是先看日志,写好日志】)~整起

    项目中遇到的一个问题:项目忽然蹦了,用我们的域名登陆不上去了. 根据之前的经验,一般比如我们项目登不上去了或者数据库不上数据了(数据不更新),直接在Xshell上远程reboot一下,再重启一下tom ...

  5. MySQL排查篇:该如何定位并解决线上突发的Bug与疑难杂症?

    前面两章中,聊到了关于数据库性能优化的话题,而本文则再来聊一聊关于MySQL线上排查方面的话题.线上排查.性能优化等内容是面试过程中的"常客",而对于线上遇到的"疑难杂症 ...

  6. 从难免的线上bug说起代码的思考

    经常是某司线上又出bug了,然后是给公司造成多少损失,追根究底总是可以找到一些原因,诸如:写代码逻辑考虑不全面,或者代码有硬伤,也有测试不充分,甚至不测试都有,也有是运维的问题等等. 我对测试部专业, ...

  7. MyBatis版本升级引发的线上告警回顾及原理分析

    本文从一次MyBatis版本升级引发的线上告警开始讲起,然后针对告警定位过程.源码原理进行了深入的分析,并加入了不同版本的类比分析,最后结合实际工作做了一些经验总结,希望能对大家的工程实践有一定的帮助 ...

  8. python k线合成_手把手教你写一个Python版的K线合成函数

    手把手教你写一个Python版的K线合成函数 在编写.使用策略时,经常会使用一些不常用的K线周期数据.然而交易所.数据源又没有提供这些周期的数据.只能通过使用已有周期的数据进行合成.合成算法已经有一个 ...

  9. 走完线上 BUG 定位最后一公里

    简介:因为线上线下环境隔离的问题,线上的输入很多时候难以在日常环境中构造,定位 bug 效率低下.是否有简单快捷的办法呢? 一个小故事 周末12点的闹钟在回龙观均价3000的出租屋急促的响起,程序员小 ...

最新文章

  1. C++标准库简介(转)
  2. 2019ug最新版本是多少_UGNX将在2019年发布最新版本,也是最后一个版本,让人更意想不到的是它的这项新功能!...
  3. linux的系统架构,(转载)图解Linux系统的系统架构
  4. 利用 Selenium 自动化 web 测试【步骤详解】
  5. springboot 并发执行定时任务
  6. java swing 禁用鼠标事件_Java学习笔记:swing中树控件,设置树节点的图标,按钮美化,鼠标事件,禁止鼠标双击...
  7. 代码统计工具有哪几种_跟我学“Linux”小程序Web版开发(四):引入统计及Crash收集...
  8. linux删除grid数据文件,MongoDB进阶系列(13)——GridFS大文件的添加、获取、查看、删除...
  9. 【UML】活动图Activity diagram(转)
  10. maven 下载源码
  11. Metrics-Java版的指标度量工具
  12. 批处理脚本学习笔记——程序猿版
  13. SwiftyJSON解析本地JSON文件
  14. 【Apollo 6.0项目实战】Canbus模块
  15. kindeditor 加载 html,为kindeditor编辑器添加“引用”(blockquote)标签
  16. Python数据分析之pandas学习
  17. 有没有人给我讲解一下这个呀看不懂
  18. 单细胞 CUTTag 分析复杂组织中的组蛋白修饰和转录因子
  19. 尼康d850相机参数测试软件,尼康(Nikon)D850 单机数码相机ISO感光度评测-ZOL中关村在线...
  20. Flutter中如何利用StreamBuilder和BLoC来控制Widget状态

热门文章

  1. oracle 9i aix 迁移,Oracle 9i 在AIX上的安装 (转)
  2. revit2019 导出obj_revit、3dmax导出object文件软件操作说明.doc
  3. 无锡锡东2021高考成绩查询,2021年无锡高考成绩查询网址,无锡高考成绩查询系统时间安排...
  4. 高级php程序员面试题2019,2019最新PHP模拟面试题及答案
  5. 七十六、React中的TodoList和拆分组件,组件之间的传值
  6. 博士申请 | 加拿大麦吉尔大学丁俊老师招收机器学习全奖博士/硕士/实习生
  7. 亚马逊提出无监督虚拟增强句子表征学习框架,效果超越SimCSE
  8. ImageNet验证集6%的标签都是错的,MIT:十大常用数据集没那么靠谱
  9. 变分自编码器VAE:这样做为什么能成?
  10. ACM-ICPC 2017 Asia Nanning