1.fastJson:
错误:使用JSONObject.toJsonString(reqeuest),本来想打印request的请求参数,但是确报500,不知道怎么回事。
分析:fastJson很流行,自己用起来也很顺手,之前一直使用来打印对象的值,但是这次在调试总确报错退出,不知道为什么。去简单看了源码,JSON和JSONObject具有继承关系,JSON中有很多静态方法,如toJSONString,parse方法等。
可以看到,如果对某些对象不熟悉,使用toJSONString是会报错的。比如错误的get方法。可以使用JSONType来进行注解。还有有value为空时,key不显示的问题。可以通过SerilizeFeature设置。
参考博文:https://www.cnblogs.com/yougewe/p/9433438.html,
https://www.jianshu.com/p/f96e257c7682,
https://www.cnblogs.com/yibutian/p/9473095.html
2.数据库查询性能问题:
错误:服务切换到doker上后,架构师让查看一个api的调用时间为什么那么长。
自己本地调用一下,确实时间很长。中间有一个JSON.parse的方法。我猜这是耗时操作,然后想直接将结果放进对象后返回,改动很大,都想放弃了。然后去看了这个方法,调用了7次数据库操作,然后采用System.currentTimeMillis打印每一个时间,发现一个方法特别长,大概有10s以上。点开这个方法,我震惊了,这里面是for循环中套用for循环,然后调用Mapper方法。
根据打印时间,一次数据库的操作时间大概为50ms,10次:0.5s,100次:5s。所以访问数据库,IO文件等才是一般耗时操作,像parse在内存中计算,都是很快的。