zoukankan      html  css  js  c++  java
  • wh-研发功能复盘

    1.复杂排序功能

      功能介绍:大概的场景是:查询的结果包括几种不同的列表变量,需要根据不同属性列表里面的命中情况来进行排序。

      解决方案:将需要排序的内容转化为排序属性,如果属性很多可以定义一个包含所有排序属性的类,将该类组装进列表对应的类型当中。有了排序属性之后,使用thenComparing方法逐个排序即可。

    2.toMap方法的使用

      将一个list转化成Map的时候,可以使用toMap方法,这个方法后面可以跟一个具体键值重复的冲突覆盖规则函数。

    3.复杂查询功能

      功能介绍:一个人员信息查询的接口,这个接口的入参是人名和标识码的组合,然后根据参数包含的类型,去到对应的数据源(业务库,Mapp, wiki)中查询出对应的结果。

      实现方案:设计统一的查询接口,针对每种不同的数据源给出不同的数据实现(策略模式)。查询时,根据传入的参数获取对应的实现对象(工厂方法)。

    4.对查询的结果(内存结果,为入到业务库)做状态标记

      功能介绍:鉴于3的需求,这里用户需要对从各种数据源中查询出来的结果做标记,然而查询的结果不一定在业务库当中(来自其它数据源)

      实现方案:将用户需要标记的数据结果转为json后生成其MD5加密的值与状态一起存入库中,这样对于查询出来的同样结果,计算MD5后与库中值比对后即可还原状态。

      注意事项:查询结果可能会包含其它属性:如排序字段,状态字段,这些由查询字段衍生出来的字段需要再加密之前排除。

           由于是加密操作,要确保单个被加密的查询结果是不会变化的,而且序列化为json字符串的方法也要是稳定的(如,转为json后,属性字段的排序不能变化)。

      优劣:劣势:1.增加查询时间成本,查询出的结果为展示状态还需要额外计算MD5以及查库比对。

         优势:无需将查询结果入库保存,MD5的值是定长的(无需使用大字段来存如原始值)。

  • 相关阅读:
    Springmvc:(八)拦截器
    单例模式最终推荐写法-线程安全
    mybatis源码解析-日志适配器
    java基本类型与byte字节数组的转换(包含大端,小端)
    spring boot mybatis 报错Invalid bound statement (not found)解决过程
    mysql中联合索引中的自增列的增长策略
    软件设计六大原则个人理解记录
    spring boot mybatis+ vue 使用POI实现从Excel中批量导入数据
    spring boot 使用POI导出数据到Excel表格
    spring boot 整合JPA多数据源
  • 原文地址:https://www.cnblogs.com/singular/p/14942738.html
Copyright © 2011-2022 走看看