-
使用gateway时,要排除掉spring-boot-starter-web这个包,因为gateway是使用的webflux和spring-web有冲突。
-
使用nacos配置中心,要用bootstrap.properties,用bootstrap.yml看起来没错,但是某些时候就是会有问题,因为加载优先级为bootstrap.properties -> bootstrap.yml ->application.properties -> application.yml。所以需要在第一级,否则报错c.a.cloud.nacos.NacosConfigProperties : create config service error!。
-
sql 多列求和(+),如果某一列的值为空则会使结果为null,而此时如果再使用了SUM,这样SUM就会以为那一列的结果为null而最后的结果为null;可以选择分开SUM最后再加起来,这样就会减少出现null的可能性,但是假如有一列都是null那么最后的SUM也是null还是会有问题;还可以用ifnull(列名,0)这样来将空数据变成0。最好的办法其实是将这种为空的脏数据都清理掉。
-
gateway配置断言的uri必须把协议加上(如:http,https)不然会报java.lang.IllegalArgumentException: The parameter [www.xxxxxx.com] format is incorrect, scheme can not be empty
-
因为粗心,看错了官方文档,吧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: -
将数据导出成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(),不支持公式的求值。
-
-
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>>
,多用于去重合并相同属性下的对象,如同一天的购物账单。
- .filter()这个方法接收的参数是true或false。用某一个方法来计算对象的某个属性,返回true就可以将这个对象保留,false则将这个对象丢弃。如:
-
sql的group by统计,除了mysql以外,其他的数据库sql,只要使用的汇总数据的方法,就必须使用group by,同时所有select查询的字段,必须出现在group by中,否则就要使用统计方法,不然就会报错。