• 生产环境中遇到过什么问题?或者有没有自己解决什么问题比较自豪的


    这个问题老让我不知道说什么

    真的说,好像也不是没有,就是觉得说不出口,哈哈

    1、服务器无端爆了(内存占用过高)

    • 线程过多导致的,说明没有用线程池或者用了缓存线程池,或者用了指定数量过高的线程池
    • 老年代gc频繁,是占用了大量资源的对象被移到了老年代;通常最好在新生代GC会快点
    • 老版本的JDK中可能存在引用对象无法被GC的情况

    2、死锁,由于设置了超时时间,所以在具有容错性的程序中并不会被明显感知

    • 用到了多线程,并发
    • 线程不安全的类 - (其实企业应用好像一般不是因为这个)
    • 资源使用顺序问题,循环依赖(事务)
    1. 至少用使用乐观锁保证不产生脏数据
    2. 通过分解事务,和调整顺序等方式来规避

    3、慢sql

    • 距离排序超级慢,因为要读取出所有表记录(扫描全表),并计算距离 - 解决方式:折衷方案:1、通过分区域查询来减少查询数据量 2、通过缓存机制来避免一次查询缓慢的操作(因为用了阿里云的数据库,实际上数据库做了这个缓存功能,第二次查询就快了很多)
    • 多表查询,超级复杂,且性能低下 - 采用solr将复杂度降低,也就是把多级结构变成单级结构,查询起来比较快(提现了一个恒久不变的规则:写的慢了,一般读的就快了)
    • order by字段导致的查询缓慢问题 - 尽量不要使用函数、最好是有索引的字段、最好是数值类

    4、第三方接口问题

    • 坑爹第三方自己编码写死,还告诉我们错误的 编码。会不会吐血?因为HttpClient里面自动根据传回的编码格式解码,你说给我个错误的编码我能解码吗
    • json数据传在参数中,没有写清楚。问题是有的json数据直接在body,有的在参数里面。是不是会被搞疯?
    • 接口频率超限,明明是高频接口,却限制了频率,哭不哭?
    • 机票出票失败有两个隐藏流程,第一次是供应商出票失败,第二次是平台重新分派出票失败。第二次才算真的失败。 不告诉你,你会知道吗?

    顺便说句,我接过最好的接口是同程的火车票接口,人也很靠谱。

    然后接的比较简单的是顺丰的接口,直接用WSDL生成代码,有的第三方示例代码都没有,不知道自己是怎么测试的

    5、一些愚蠢的犯错

    • 代码写死某个变量参数
    • 没有判空,java8建议多用Optional
    • boolean取反了

    6、emjoy表情无法写入数据库 -修改数据库编码集或者过滤掉emjoy表情即可

    7、Spring声明事务不生效

    • 内部方法调用,事务是没办法生效的,为啥呢?因为AOP事务是通过代理的,内部的方法没有拦
    • 多个嵌套的事务,有其中一个抛出异常,虽然捕获了,然而,还是会回滚

    8、数据被错误覆盖了

    • 其实就是并发的问题,脏数据 - 用乐观锁可以避免

    解决的一些问题:

    1、简化了一个商品页面的脚本代码,使得代码重新变得容易维护,封装了规格算法

    2、提供了一个简单的订单模块的框架,大体上就是通过:模板模式来限定每个不同的订单模块需要实现的算法,比如确认订单、取消订单等,或者订单支付所要执行的所有步骤放到子类中去实现,具体的开发人员根据负责的模块去进行扩展;封装了支付方式:采用策略模式和静态工厂方法来提供不算支付方式的服务

    3、将quartz并入分布式任务,不过说实话这块不好用;后续微服务也不太建议用这个方式

      

     

  • 相关阅读:
    [CF] Final Exam Arrangement
    [原创]9宫格填数字
    第二次结对编程作业
    第11组 团队展示
    第一次结对编程作业
    第一次个人编程作业
    第一次博客作业
    第二次结对编程作业
    第10组 团队展示
    第一次个人编程作业
  • 原文地址:https://www.cnblogs.com/gabin/p/13491271.html
Copyright © 2020-2023  润新知