**描述:**在html网页中有部分图片无法加载,而每一张图片的引用方式都是相同的,但是无法访问的图片的请求格式为json,能够正确访问的图片请求格式JEPG.
**解决:**jar包的处理问题,因为在本地运行是可以显示成功的,在服务器部署之后才出现这样的问题,重新打jar包时将target目录下的文件删除,在打新的jar包时不删除该目录下的文件其class等一些文件可能会保持不变,因而导致修改之后并没有变化
ps:将图片上传至阿里云OSS在网页中直接引用图片链接加载可以更迅速。
**描述:**刚部署的时候发现无法访问leavemessage这张表,报错显示的是不存在这张表
**解决:**我建立数据表时表名输入的是leaveMessage
,而建成之后并没有区分大小写,表名是leavemessage
.在mapper中我一开始写的语句是from leaveMessage
在IDEA本地测试时可以正常访问数据库,而部署之后严格区分。
描述:打开留言板时遇到了一个以前没有遇到过的奇怪现象,一直其他图层都可以显示出来唯独从js里添加的留言内容加载不出来,调试时提示Failed to decode downloaded font:***
,下载字体失败?!可是我没有设置字体啊!这让我怎么调?
**解决:**这个我是真的不知道怎么解决,就只有一个个排查,把jquery注释掉,问题依然存在,说明不是链接失效的问题。把css注释掉,还是存在。最后排到时我发现只要把他注释掉就可以了,再细查时发现是因为我footer里面的信息有空格的问题?!!!
**ps:**愿天堂的前端没有bug,或者找个女朋友写前端
//第一种无需任何参数
Authentication auth = SecurityContextHoler.getContext().getAuthentication();
String username = auth.getName();
//第二种注解方式,在方法参数中加入
@AuthenticationPrincipal Principal principal
principal.getName()
描述:前端手机验证码ajax请求,之后出现提交表单出现请求验证码的ajax,status为canceled。
解决:这是因为我在提交表单时需要用到手机验证码返回的一个值,所以应该用同步的请求方式,而ajax默认的为异步,应该设置为同步async:false
描述:加入了非maven依赖的jar包,之后项目打包无法成功
解决:在查询之后找到了这个帖子 使用IDEA将本地的Jar包添加到个人的maven仓库中 之后就可以成功打包了哦
**描述:**在前端刷新页面时,分页会不断变化,有时出现只显示一条内容,有时又显示所有内容,并且从10多页当作默认页。
**解决:**打印前端拿到的数据后发现是后端的问题,于是在后台打印分页json,出现下面问题
PageInfo{pageNum=1, pageSize=12, size=12, startRow=0, endRow=11, total=12, pages=1,
PageInfo{pageNum=1, pageSize=10, size=10, startRow=1, endRow=10, total=12, pages=2,
这pageSize
老是变来变去的,那我前面的PageHelper.startPage(pageNum,row);
一点用也没有,岂不是很没有面子?
于是将老大哥PageHelper.startPage(pageNum,row);
放到第一行试试,一开始我是拒绝的,不能说你让放我就放,我得试试他有没有效果,唉,你别说,这东西还挺好用的。真的pageSize
就不变了耶。
PageHelper.startPage(pageNum,row);
必须放在第一行吗?
再查阅一番之后得出:**PageHelper.startPage(pageNum,row);
**必须放在查询语句之前,并且只对该语句以后的第一个查询语句得到的数据进行分页,如果有两条查询语句,只对第一条查询语句生效
为我的网页增添音乐播放器之后,我的oss突然欠费,虽然只欠了0.25元,但是很莫名奇妙啊,查询订单之后,发现是我上传MP3格式之后晚上扣费。还是我读的书少啊!!!查阅了阿里云的OSS和腾讯的COS,现在的云储存对象都是使用的按量付费和包年包月两种,这些是针对外网流出,也就是我们常用的其他人访问OSS上的数据是计量收费的。不过对于普通的图片处理阿里云提供了10T的免费额度,超出之后额外计费。但是MP3格式的是属于视频格式就要扣我钱,还是吃了没有文化的亏T_T
具体收费请戳:阿里云OSS计费文档
整合redis时使用到的工具类中涉及到了redis中没有值时需要查询数据库,这就需要调用Mapper类的方法
public static T fromRedis(RedisOperations redisOperations, String redisKey, Class clazz, Supplier dbFunc, Object... object) {
T result = redisOperations.getVal(redisKey, clazz);
if(result == null) {
result = dbFunc.get();
if(result == null) {
logger.error("fetch " + clazz + " error, redisKey: " + redisKey);
return null;
}
valSerialize(redisOperations,redisKey,result,object);
}
return result;
}
Supplier< T > dbFunc就是redis没有数据时调用的mapper方法
那么怎么传入方法呢?
articles = CacheFetchUtils.fromRedisList(redisOperations,"AllArticlePartInfo",Article.class,()->articleMapper.getAllArticlePartInfo());
这是查找所有的文章,我要按照分类来查找呀,直接调用形参会出现Variable used in lambda expression should be final or effectively final
这样的报错
这是因为传入方法相当于使用了一个匿名内部类,而在java中匿名内部类的参数必须是final的,原因在于保证内部和外部类的数据一致性,因为编译的时候内部类和方法在同一级别上,所以方法中的变量或参数只有为final,内部类才可以引用。java8中则是不用定义为final,只要是同一级的系统会自动添加。java将这个功能称为:**Effectively final **功能。
错误代码:
public JSONObject getArticlePartInfoByCategory(String categoriesName, int rows, int pageNum) {
PageHelper.startPage(pageNum,rows);
List articles;
if ("".equals(categoriesName)){
articles = CacheFetchUtils.fromRedisList(redisOperations,"AllArticlePartInfo",Article.class,()->articleMapper.getAllArticlePartInfo());
categoriesName = "全部分类";
}else {
articles = CacheFetchUtils.fromRedisList(redisOperations,categoriesName + "Article",Article.class,()->articleMapper.getArticlePartInfoByCategory(categoriesName));
}
变量categoriesName
是一个形参,系统无法自动生成fianl,因此需要一个实参承载
正确代码
String finalCategoriesName = categoriesName;
articles = CacheFetchUtils.fromRedisList(redisOperations,categoriesName + "Article",Article.class,()->articleMapper.getArticlePartInfoByCategory(finalCategoriesName));