Fork me on GitHub

笔记

  1. 所有整型包装类对象之间值的比较,全部使用equals方法比较。对于 Integer var = ? 在-128至127范围内的赋值,Integer 对象是在 IntegerCache.cache产
    生,会复用已有对象,这个区间内的 Integer 值可以直x接使用==进行判断,但是这个区间之外的所有数据,都会在堆上产生,并不会复用已有对象,,推荐使用 equals 方法进行判断。

    1
    2
    3
    4
    5
    6
    7
    8
    Integer var1 = 22;
    Integer var2 = 22;
    var1 == var2 //true
    var1.equals(var2) //true
    Integer var3 = 222;
    Integer var4 = 222;
    var3 == var4 //false
    var3.equals(var4) //true
  2. 本地打包成功,启动无报错,登录显示空白页面.发布到服务器正常
    本地配置路径不对,服务器用的单独的配置文件
    各种情况都已经考虑到了,都已经排查.但是没有考虑到是路径问题.不细心!!!!有的时候可能就是一个很小的问题导致的各种无厘头问题,但是自己往往会忽略掉这些不起眼的问题的存在

  3. 注意mysql表字段类型为timestamp时(字段定义为not null并且没有默认值的时候)系统会自动加 DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP属性

  4. 中航分支开发测试完成,大合版出现获取不到用户信息,其他页面正常获取用户信息,知道问题,不知道如何下手查找排查问题,后来发现是云信那边修改了applicationContext-security.xml文件,把url加了白名单
    考虑spring以及mvc的拦截器和过滤器的配置是否有改动.

  5. 多台服务器免密登录,非root账户免密登录另外一台root账户的机器,解决不同用户名之间的问题
    在.ssh/目录下新建config文件,指定Host和user,例如:

    • Host slave01
      • HostName 192.168.0.A
      • User root
    • Host slave02
      • HostName 192.168.0.B
      • User root

    在povosdi账户下直接ssh 192.168.0.A 相当于ssh root@192.168.0.A,如果不加config文件,相当于ssh povosdi@192.168.0.A

  6. NameNode启动成功,两个DataNode启动不了,Active Nodes数量显示为0,两个原因:

    • 两个DataNode的core-site.xml中fs.defaultFS应该为master:9000,而不应该是各自的ip:port(slave01:9000)
    • master的防火墙没有开放9000端口,导致DateNode一直连不上NameNode,暴力解决方法,直接关闭防火墙(不建议)
      1
      2
      3
      4
      <property>
      <name>fs.defaultFS</name>
      <value>hdfs://master:9000</value>
      </property>
  1. 程序编译打包正常,页面各种系统错误,报错找不到数据库的某些记录.
    原因:有人修改数据库记录导致修复数据库相关表之后正常.

  2. 数据库新建表的时候注意指定字符集和字符排序集,否则会使用数据库的默认值,如果两张表的字符排序集不一样的话写出来的sql可能会有问题。报错:
    Illegal mix of collations (utf8_unicode_ci,IMPLICIT) and (utf8_general_ci,IMPLICIT) for operation ‘=’
    修改数据库配置文件mysqld.cnf,在[mysqld]下增加

    1
    2
    character_set_server = utf8mb4
    collation_server =utf8mb4_unicode_ci

    建表经常使用的是以下这种:

    1
    2
    create table(
    )ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci ROW_FORMAT=COMPACT;
  3. 后端字段是string,导出格式是csv,数字字段太长会显示科学计数法。解决办法,在后端的字段后边加上制表符”\t”

  4. 开发的时候遇到枚举类型的时候,添加新的枚举类最好是在不改变原来枚举类型顺序的前提下新增。
    因为你中间插入的话会影响到原来的枚举顺序,如果这些枚举有写到表的话,会造成数据缺失。

  5. 项目启动报错,有生产消费端,原因是生产消费端代码不一致导致的,重新打包发布,还是报错。
    忘记清空队列,清空队列后正常

  6. 正常生成job,但是不请求贷后接口。
    之前的job还在缓存里边,清掉缓存后正常。

  7. 服务正常,nginx正常,接口请求一直404,起初怀疑nginx配置错误,后来排除,最终发现是代码是老代码,接口不存在。重新拉代码打包发布之后正常。
    先检查配置,正常可以服务器或者本地curl一下

  8. 走队列回调,生产者正常,消费者正常回调,往队列push消息一直push不进去,最终发现是队列配置异常。交换机配置不对。

  9. 数据库数据正常,其中有个String转BigDecimal的方法,类型转换catch异常,返回0。string类型转换最好trim一下。

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    public BigDecimal parseValue(){
    try{
    if(StringUtils.isBlank(this.value)){
    return BigDecimal.ZERO;
    }
    BigDecimal valueBigDecimal = new BigDecimal(this.value);
    return valueBigDecimal;
    }catch (Exception e) {
    return BigDecimal.ZERO;
    }
    }
  10. 考虑到线上数据库,mq等版本差异,语法会有差异

  11. 解决jar包版本问题,先查看项目jar包依赖

    1
    mvn dependency:tree

    然后在这个jar包里排掉有问题的jar包,再重新引用一个合适版本的jar包就ok

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
     <dependency>
    <groupId>com.zufangbao</groupId>
    <artifactId>coffer</artifactId>
    <version>1.0.0-SNAPSHOT</version>
    <exclusions>
    <exclusion>
    <groupId>xerces</groupId>
    <artifactId>xercesImpl</artifactId>
    </exclusion>
    </exclusions>
    </dependency>
    <!-- https://mvnrepository.com/artifact/xerces/xercesImpl -->
    <dependency>
    <groupId>xerces</groupId>
    <artifactId>xercesImpl</artifactId>
    <version>2.11.0</version>
    </dependency>
    </dependencies>
  12. 修改表字段名称的时候注意组合索引是否引用这个字段,否则该列会从组合索引中删除掉,引起组合索引失效或者各种各样的问题。

  13. 放款的时候正常接受请求,但是citi校验没通过,检查代码逻辑没问题,后来发现是citi连的数据库有问题。排查业务问题的思路,先检查代码逻辑,确认没问题之后检查配置项。




-------------本文结束感谢您的阅读-------------
坚持原创技术分享,您的支持将鼓励我继续创作!