1.map是转类型,reduce是排序和相加。
2.常量和变量进行字符串比较时,常量放前面。swich不能用于比较字符串
3.查看接口的访问时间,可以在调试f12中看
4.每次修改了接口,哪怕是很小很小的地方,也要和前端沟通好,不沟通好往往会造成一些问题;
5.在body自动更新的时候,没有传递相应的字段会导致一些问题。
今天没有传递整改单下面的问题的state,因为出于整改单问题状态字段在政府流程下没用就没传,但是出现了数据库自动补全状态导致整个整改单状态的变化的情况
6.stringutils.isnotempty包括了为空和""的情况。
7.前端body传来的内容,作为map,它的value不是只能为string,可以是对象或者list,要取List直接取就好了。
8.foreach和stream.collect.map()的区别是,。collect要返回结果,是往外走的,或者是map转后的结果,而foreach是不断往里走的,对每个个下面的每一个进行操作
9.在mongodb中每个文档都有一个objectId。
10.记得每天备份一下数据库
11.criteria的in和nin其实是计算两个集合的交集
12.查询数据返回异常信息的时候要和前端沟通好,返回空信息的方式最好一致,不要一个是异常信息的no data,一个是result为空的正常信息
13.page分页返回的数据在前端调用时,是每一页就调一次接口。返回page的data是当前页的数据,count是所有的数据条目。所以在查到分页数据以后再
进行筛选会出现问题。也就是count和显示的条目不一样。
13.sorted((x, y) -> (int) (y.getSmoke().getTotalAmount() - x.getSmoke().getTotalAmount()))
这是降序,从大到小
14.Paging.of(mongoTemplate.find(Query.query(criteria).with(new PageRequest(page, size)).with(new Sort(Sort.Direction.DESC,"createdTime")), Message.class),
mongoTemplate.count(Query.query(criteria), Message.class));
15.db.getCollection('user').update({"number":{"$regex":"^1013"}}, {$set:{"banned":true}}, false, true)
db.getCollection('user').remove("":"");
15.itext的chunk不换行,phrase会换行,paragraph能设置段前段后距离
16.一定要记得改了前端ip以后,要把Ip加入security中
17.消息队列是存放请求的队列的,不是发送消息
18.每天提交一次代码。增加一个新功能就提交一次代码,描述要写清楚,增加的类要写清楚注释,直观。像配置文件的一些信息,不用提交
19.项目从稳定到又一次开发,需要新建分支
20用map和foreach的关系。如果用map没有用变量来装结果,根本不会执行
21.公司的共用库里面的update(id,T)方法,更新时可能会丢失内部嵌套对象的id转成objectId。
22.flatmap可以把多个流合并成一个流。它的返回值必须是流
23.db.getCollection('score').update(
// query
{
"pollutionSourceId" : "5d75b9032797da0340668294"
},
// update
{$set: {"isRemoved":true}
},
// options
{
"multi" : true, // update only one document
"upsert" : false // insert a new document, if no existing document match the query
}
);
24.ctrl+f表内查找
25.nosql不适合多表关联查询。mysql可以
26..stream之前的list为空会报错吗
不会。但是如果是有积极求值的操作,就会出错,比如get().但是很奇怪,max等是可以的。
27.criteria中的字符串为某个值,使用的is
28.javabean中的字段,在使用lomba时,boolean不会自动生成get函数,有set。但是int,long可以有get和set
29.switch可以比较字符串
30.jpa就是持久层矿建,把javabean中的数据持久到数据库,并提供与sql没有紧密耦合的crud操作语句。是接口,hibernate是它的底层实现。
31.前端传requestParam时,字符串不用加双引号。所以postman这种情况不用加双引号
32.@configuration是加载容器时,配置上的。@component是只要有容器,就会有这个,相当于xml文件中的<bean>
33. 启动本地服务
mongod -f "C:\Program Files\MongoDB\Server\4.0\mongo.conf"
备份恢复
mongorestore -h <hostname><:port> -d dbname <path>
34.db.getCollection('user').update(
// query
{
$and:[{"username":{$ne:"panqi"}},{"username":{$ne:"admin"}}]
},
// update
{$set:{"isRemoved":true}
},
// options
{
"multi" : true, // update only one document
"upsert" : false // insert a new document, if no existing document match the query
}
);
35.c盘的权限操作,我是user用户
36.
mongoexport --host 192.168.0.121 --port 27017 --db env-assistor --collection polygon --out polygon.json
mongoimport --host 127.0.0.1 --port 27017 --db env-assistor --collection polygon --file polygon.json
37.
.map(ExhaustFacility::getTubeNumber)
ids.stream().forEach(this::delete);
!user.getRoles().stream().anyMatch(Consts.ROLE_ADMINISTRATOR::equalsIgnoreCase)
.map(ObjectId::new)
38.list.addall();
39.能用lamda的尽量用lamda。lamda中的map等可以写成上面形式的尽量写成上面形式。lamda中可以用表达式的尽量不要用方法体。
40.if else太长,可以用switch
41.记得用了redis以后,要开启redis服务。还要有相应的配置(yml文件中的以及相应的@configuration类)
redis-server.exe redis.windows.conf
42,windows中的路径用\,linux中用/,在程序语言中用\\
43. productPlans.stream()
.map(ProductPlan::getName)
.collect(Collectors.joining(",")))
44.user.getRoles().stream().noneMatch(Consts.ROLE_ADMINISTRATOR::equalsIgnoreCase))
45.stream的peek和map相比,就是多了返回值。
46. try {
future.get();
} catch (InterruptedException | ExecutionException e) {
e.printStackTrace();
}
47.Collections.singletonList("VOCs")集合转成list
48.一个 if 语句的括号从文件头到文件尾,并且大多数情况下,我们要进行验证的假设,只是属于偶然性事件,又或者我们仅仅想测试一下,一些最坏情况是否发生,所以这里有了 assert()。
assert 宏的原型定义在 assert.h 中,其作用是如果它的条件返回错误,则终止程序执行。
49.对于值为boolean的表达式在if语句中,不用让结果==true/false,直接根据值返回就可以。