近期遇到的一些问题

  1. 使用gateway时,要排除掉spring-boot-starter-web这个包,因为gateway是使用的webflux和spring-web有冲突。

  2. 使用nacos配置中心,要用bootstrap.properties,用bootstrap.yml看起来没错,但是某些时候就是会有问题,因为加载优先级为bootstrap.properties -> bootstrap.yml ->application.properties -> application.yml。所以需要在第一级,否则报错c.a.cloud.nacos.NacosConfigProperties : create config service error!。

  3. sql 多列求和(+),如果某一列的值为空则会使结果为null,而此时如果再使用了SUM,这样SUM就会以为那一列的结果为null而最后的结果为null;可以选择分开SUM最后再加起来,这样就会减少出现null的可能性,但是假如有一列都是null那么最后的SUM也是null还是会有问题;还可以用ifnull(列名,0)这样来将空数据变成0。最好的办法其实是将这种为空的脏数据都清理掉。

  4. gateway配置断言的uri必须把协议加上(如:http,https)不然会报java.lang.IllegalArgumentException: The parameter [www.xxxxxx.com] format is incorrect, scheme can not be empty

  5. 因为粗心,看错了官方文档,吧predicates设置的值当作yml的格式用了:但是其实它的参数是用的=相当于-后面的内容全是值,而不是key和value的组合。报错Binding to target [Bindable@11653e3b type = java.util.List<org.springframework.cloud.gateway.handler.predicate.PredicateDefinition>, value = ‘provided’, annotations = array[@javax.validation.constraints.NotEmpty(message={javax.validation.constraints.NotEmpty.message}, groups=[], payload=[]), @javax.validation.Valid()]] failed:

  6. 将数据导出成excel表格,有xls和xlsx两种文件类型 ,本人建议都使用xlsx。因为xls是excel2003以前的格式,xlsx是excel2007及以后的文件格式。xls已经很老了,以前选择它是很多人的excel版本太老,但是现在已经2021了,不要再用xls了。xls一个工作表最大存储量只有256列,65536行。而xlsx支持16384列,1048576行。

    • java要想导出xls文件,就需要使用HSSFWorkbook这个类。

    • 导出xlsx文件就有两个类可以选择XSSFWorkbook、SXSSFWorkbook。

      a. 前者虽然是导出xlsx数据,但是其实际处理中并没有多太多,一般在七万行到八万行左右会报错,因为这个类是将数据全部读到内存,在内存处理完以后再放进文件中,就非常有可能出现OOM内存溢出。
      b. 后者则是将每一行数据读出来处理以后就放进文件中,当前行存储完毕以后才读取下一行,这样就避免了OOM。但是同样出现一个问题就是,没法合并单元格,如果是一行的单元格合并还可以,跨行合并就束手无策了。同时不支持Sheet.clone(),不支持公式的求值。

  7. stream()一些使用方法。

    • .filter()这个方法接收的参数是true或false。用某一个方法来计算对象的某个属性,返回true就可以将这个对象保留,false则将这个对象丢弃。如:.filter(o-> IsNotNull(o.getName())) 这样就可以排除名字是null的数据,IsNotNull方法要在外面定义,不能像js一样临时定义。
    • .sorted()这个方法接收的参数是0,1,-1,实际上是0,大于0,小于0三个参数。当返回0时,此次遇到的两个对象大小相同,保持当前顺序不变,大于1则将此次遇到的对象1放到对象2后面,小于1则保持二者比较顺序不变。o和-1的区别是,前者是list的当前顺序,-1是两个比较对象的前后顺序。两个比较对象是与list的顺序相反的,例如[“aa”,“bb”,“cc”],比较时是比较(“bb”,“aa”)->(“cc”,“bb”)。
    • collect(Collectors.toMap()) 可以通过指定当前对象的某个属性,生成以这个属性为key,对象为value的Map
    • collect(Collectors.groupingBy()) 可以通过指定当前对象的属性,生成以这个属性为key,对象集合为value的Map<属性,List<Object>>,多用于去重合并相同属性下的对象,如同一天的购物账单。
  8. sql的group by统计,除了mysql以外,其他的数据库sql,只要使用的汇总数据的方法,就必须使用group by,同时所有select查询的字段,必须出现在group by中,否则就要使用统计方法,不然就会报错。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值