写代码时遇到的坑

Posted by 大雁小鱼的博客 on October 12, 2018

在编写代码过程中有时会遇到非常恶心的代码,这些代码在正常情况下是可以运行的,但在异常情况下会出现你事先没有想到的情况,让你措手不及。作为一个合格的程序员,应当要对各种异常情况有一个清晰的认识,知道存在哪些异常情况,知道这些异常情况会对系统产生怎样的影响,这很大程度上靠经验和自我学习。以下尽我所能罗列一些坑代码

  • 被拉长的数据库事务
     @Transactional
     void function(){
         //1. 操作数据库
         //2. 连接网络,请求数据
         //3. 操作数据库
     }
    

    该代码有一个致命缺点,如果网络不好,第二步的网络请求会超时,而这个操作又在数据库事务中,导致这个事务被拉长,如果事务的超时时间短于网络连接的超时时间的话,一旦数据库事务超时就会发生数据库锁表,且这个锁除非手动删除,否则一直存在的严重问题(相关数据就无法读取和写入了)。所以结论是不要在事务中执行耗时的操作,切记啊!

  • 枚举和类的区别 枚举可以直接用==,而类是不能用==的,所以在将枚举转化为类的时候是有坑的,就是==失效