核心功能(指自己感兴趣的功能)使用
这个功能吹爆!搬家好用多了!
除了标题混入了奇怪的东西,基本上格式没有什么问题。
这个模块刚打开就给了一个大逼斗。
搜索了一下使用的oshi。没用过,并且没有搜索到这个问题的答案,感觉会很费时并且线上是正常的。那就摆烂吧。。。
模块使用了Quartz这个作业调度框架,可以根据写好的cron表达式,定时执行配置的任务。
先看看作者留下的几个必填的定时任务。
/**
* 自动更新阅读数,每天凌晨四点更新数据
* @author blue
* @date: 2021/8/18 17:58
*/
public void updateReadQuantity(){
// 获取带阅读量的前缀key集合
List<BlogArticle> blogArticles = new ArrayList<>();
Map<String, Object> map = redisService.getCacheMap(ARTICLE_READING);
// 取出所有数据更新到数据库
for (Map.Entry<String, Object> stringEntry : map.entrySet()) {
...省略
}
articleService.updateBatchById(blogArticles);
}
很明显就是从redis中取出所有的文章点击数据,并且更新保存。再根据ARTICLE_READING这个关键字查询到是何时插入到redis中。
/**
* 获取文章详情
* @return
*/
@Override
public ResponseResult webArticleInfo(Integer id) {
...省略
//增加文章阅读量
threadPoolTaskExecutor.execute(() -> this.incr(id.longValue(),ARTICLE_READING));
return ResponseResult.success(blogArticle);
}
/**
* 增加文字阅读量或标签点击量
* @return
*/
public void incr(Long id,String key) {
Map<String, Object> map = redisService.getCacheMap(key);
Integer value = (Integer) map.get(id.toString());
// 如果key存在就直接加一
if (value != null) {
map.put(id.toString(),value+1);
}else {
map.put(id.toString(),1);
}
redisService.setCacheMap(key,map);
}
到这里就很清晰了,在查看详情的时候就对文章的点击数进行了统计,并且还是调用线程池去进行执行。
基本同上,略。
跟踪了一下代码,发现这个功能是给私密文章结合公众号使用的,在公众号上获取验证码后可一天免获取。暂时无用,略过。
配置类为DruidConfig
,在其中加入自己的ip,否则不会显示。最大的作用查看sql执行时长,查找满sql。
嗯。redis的监控。路径:/system/home/cache
在系统配置里配置邮件地址,邮箱授权码获取方式百度就好,比较不一样的邮箱不一样。
重启项目后在前台登录测试发送验证码,成功。
以文章置顶接口为例,之前文章置顶接口是未配置权限的。找到接口上方的@SaCheckPermission("/system/article/top")
,表示权限路径是/system/article/top
。
Es个人还是比较好奇的,工作中接触的比较少,没有深入使用过,测试了下功能直接报错。。。。
找到 **ElasticsearchUtil **这个类,发现下面的save根本没引用过。。。
这应该是作者留下的考验吧。。辣么分别在文章的增删改处增加es的增删改。再进行新增,已经自动建好了索引,并且有值了。
PS: 写在最后,从这开始博客搭建环节就结束了,其实还有第三方登录跳转没接,但是感觉也不需要,就这样吧。下面开始就是boot转cloud alibaba环节。