问题1:springboot接收multipartfile文件时,使用子线程异步处理file文件出错
答:springboot中接收到multipartfile文件时,会存储到临时文件夹中,java -jar启动默认为/tmp/tomcat.xxx/;异步执行的时候,主线程结束,临时文件就会被清空了,所以会报错,解决办法为先把file文件转换成流或者base64字符串放入jvm内存中,进行后续操作![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/2e60e6fefc18763f26919a6b7573f8db.png#pic_center)
问题2:Mysql数据库导致CPU飙升问题
答:其中之一可能是索引问题,问题查找过程:show processlist 查看数据库sql一直执行的sql,大概率此sql就是问题所在,解释该sql查看extra:
其中using filesort,using temporary,using index最为常见,
出现前两种表示是需要优化的地方,出现第三种表示索引效率不错
1. Using filesort(九死一生的提示,需要尽快优化)
说明mysql会对数据使用一个外部的索引排序,而不是按照表内的索引顺序进行读取。mysql中无法利用索引完成的排序操作称为“文件排序”。
2. Using temporary(十死无生的提示,极大影响mysql性能,需要尽快优化)
使用了临时表保存中间结果,mysql在对查询结果排序时使用临时表。常见于排序order by和分组查询group by
3. Using index
表示相应的select操作中使用了覆盖索引(covering index),避免访问了表的数据行,效率不错!
如果同时出现using where,表明索引被用来执行索引键值的查找;
如果没有同时出现using where,表明索引用来读取数据而非执行查找动作。
对两个字段建立索引将其中一个字段作为where条件就符合键值查找
4. Using where表明使用了where过滤
问题3:idea更新Git代码报错,显示无merge,但是又让处理merge
答:有其他人提交了.gitignore的文件例如.idea的文件等等,删除git远程仓库的对应文件即可
问题4:mybatisplus插入报错Field ‘id’ doesn’t have a default value
答:@TableId注解:IdType AUTO(主键自增),NONE(无),INPUT(自行输入),ASSIGN_ID(雪花算法),ASSIGN_UUID(去下划线UUID) 默认为NONE,可以在yml中查看全局配置,如果配置为AUTO,数据库又不是自增的,则会报上面的错
1.数据库改为自增主键
2.添加@TableId改为别的方式
问题5:mybatis查询返回实体内含有LIst<类名>、List时的使用
答:使用resultMap,即可将数据库查询的list转换为单个实体,自动聚合相应的字段到list中,collection标签中包含两个关于javaBean的Type属性分别是ofType和javaType。其中ofType指定的这个List所存放的javaBean的类型,而javaType指定的当前这个配置的标签所对应的属性
问题6:(避坑)移动服务器bug:现象:前台其他的接口在浏览器都是通的,只有登录、注册接口不通,使用postman登录、注册也是通的,本地也是通的
移动服务器有安全机制:对于password、pass、pwd等关键词进行屏蔽,导致接口不通。
可能别的服务器同样有更多的敏感词,只能使用代码规避了。
问题7:HashMap<String,Object> 类型存入一个实体,取出实体报错 类型转换异常
问题8: java加载动态库失败问题(报错error while loading shared libraries)
1.检查动态库路径是否错误
2.如果动态库不在/lib或者/usr/lib目录下,请使用ldconfig命令加载动态库
往/lib和/usr/lib里面加东西,是不用修改/etc/ld.so.conf的,但是完了之后要调一下ldconfig,不然这个library会找不到。
想往上面两个目录以外加东西的时候,一定要修改/etc/ld.so.conf,然后再调用ldconfig,不然也会找不到。
PS:linux创建软连接命令: ln -s [dir1] [dir2] ,dir1是真实的文件夹,dir2是dir1的软链接
问题9: List的坑
List<String> strs = Arrays.asList();
方法返回的ArrayList不可以增删,因为它是Arrays中的内部类,
如果想要增删请使用Guava包下的
List<String> list = Lists.newArrayList(arrays);方法