工作之经验之谈4

  1. 对于一些类型或者步骤,一般使用整数类型作为值。为了防止新增类型或步骤,一般可以可定义不连续值。例如:0 10 20 30 等,如果有新增类型或者步骤,可以定义值为2,3,4等。

  2. 自动化代码生成工具

  3. 如果定义字段类型为int,在使用Integer转换的时候,会默认调用方法将Integer转换为int,如果Integer为null,会报空指针异常。需要判断是否为null。

  4. 使用spring MVC传递参数时,如果报400错误,可能是类型转换错误,请确认传递的参数类型是否一致。

  5. 详细的注释:每个参数什么意思;有哪些情况需要处理;如果有Map,map的key和value值有哪些;使用
    换行

  6. static静态方法或静态代码块,进行数据初始化

  7. service引用别的service,尽量不要引用别的mapper

  8. git的使用

  9. map中key值为字符串时,按int型排序:

    Map sortMap = new TreeMap<>(new Comparator() {

        public int compare(String o1, String o2) {
               return Integer.parseInt(o1)-Integer.parseInt(o2);
    
     };
    

    });

  10. token认证,拦截器。使用基于 Token 的身份验证方法,在服务端不需要存储用户的登录记录。大概的流程是这样的:

    1). 客户端使用用户名跟密码请求登录

    2). 服务端收到请求,去验证用户名与密码

    3). 验证成功后,服务端会签发一个 Token,再把这个 Token 发送给客户端

    4). 客户端收到 Token 以后可以把它存储起来,比如放在 Cookie 里或者 Local Storage 里

    5). 客户端每次向服务端请求资源的时候需要带着服务端签发的 Token

    6). 服务端收到请求,然后去验证客户端请求里面带着的 Token,如果验证成功,就向客户端返回请求的数据

    token:加密 ; 请求时携带 ; 缓存起来

  11. 模拟post请求:amber 和 postman

  12. 使用guava中的工具类

  13. 使用泛型,简化代码

  14. 使用lombok中的@Data减少setter和getter方法

  15. 实体类继承

  16. 自动构建工具,jenkins

  17. 相同的代码提取成复用方法

  18. 缓存不变的内容,例如:区域、城市

  19. 数据库插入或者更新,时间自动生成

  20. 分页封装,将设计分页的内容提取出来,例如:放到intercept和ThreadLocal中

  21. 员工/岗位:查询员工使用员工,查询上下级关系使用岗位。岗位保存历史信息,同一个员工的每个时间段只有一个处于激活状态。

  22. 封装返回对象

  23. mybatis:

    HashMap: