美文网首页
12 业务代码真的会有这么多坑?

12 业务代码真的会有这么多坑?

作者: 滔滔逐浪 | 来源:发表于2023-10-10 16:48 被阅读0次

    意识不到坑的存在,比如所谓的服务器不稳定很可能是代码问题导致的,很多时候遇到 OOM、死锁、超时问题在运维层面通过改配置、重启、扩容等手段解决了,没有反推到开发层面去寻找根本原因。

    有些问题只会在特定情况下暴露。比如,缓存击穿、在多线程环境使用非线程安全的类,只有在多线程或高并发的情况才会暴露问题。

    有些性能问题不会导致明显的 Bug,只会让程序运行缓慢、内存使用增加,但会在量变到质变的瞬间爆发。

    
    private static final ThreadLocal<Integer> currentUser = ThreadLocal.withInitial(() -> null);
    
    @GetMapping("wrong")
    public Map wrong(@RequestParam("userId") Integer userId) {
     //设置用户信息之前先查询一次ThreadLocal中的用户信息
     String before  = Thread.currentThread().getName() + ":" + currentUser.get();
     //设置用户信息到ThreadLocal
     currentUser.set(userId);
     //设置用户信息之后再查询一次ThreadLocal中的用户信息
     String after  = Thread.currentThread().getName() + ":" + currentUser.get();
     //汇总输出两次查询结果
     Map result = new HashMap();
     result.put("before", before);
     result.put("after", after);
     return result;
    }
    

    业务项目有两大特点: 工期紧、逻辑复杂,开发人员会更多地考虑主流程逻辑的正确实现,忽略非主流程逻辑,或保障、补偿、一致性逻辑的实现;

    往往缺乏详细的设计、监控和容量规划的闭环,结果就是随着业务发展出现各种各样的事故。

    学习:Java 核心技术面试精讲学习笔记

    相关文章

      网友评论

          本文标题:12 业务代码真的会有这么多坑?

          本文链接:https://www.haomeiwen.com/subject/ndawbdtx.html