1 Star 1 Fork 0

天天向上 / moti-blog

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
贡献代码
同步代码
取消
提示: 由于 Git 不支持空文件夾,创建文件夹后会生成空的 .keep 文件
Loading...
README

注意

你需要修改的地方:

  • qqconnectconfig.properties
  • com.moti.config.ElasticSearchConfig
  • com.moti.config.GiteeImgBedConfig
  • resources/application.yml

前言

哈喽大家好,我是莫提。最近新写了一个非常简约的个人博客系统。用了差不多快一个月吧(中间肯定有划水摸鱼的时间,哈哈)。这次的项目用了几个我之前没有用过的技术,也成功结合并实现了我的一些想法。个人觉得也是非常适合于初学者学习!

主要功能

文章方面

首先既然是个人博客系统,肯定要对写文章有一个非常友好的支持!不然感觉只好看不实用也是扯淡。不得不说现在使用MarkDown写文章的人是越来越来。哈哈,这篇文章其实也是用MarkDown写的!

在写文章方面,我开发的个人博客同样支持MarkDown的语法,使用的是目前一个比较好用的编辑器叫EditMd

在这个系统里面写的文章,把原文复制一下,就可以在任何支持MarkDown的文章轻松的发表,不需要改任何格式,也不需要重新上传图片。为什么嘞?因为我直接使用了码云当做我这个项目的图床(对外提供图片链接,通过链接就可以访问到这张图片)。这样如果之后再开发一个备份的功能就非常方便了!

为了更加友好的写博客,我自己还新增了从剪切板复制图片到输入框实现图片的粘贴上传。哈哈,我觉这个功能是很多个人开发的博客系统不具备的。

之后我还开发了一些作为博客系统必须具备的功能,比如编辑、存草稿、回收站、文集(文章分类)、标签、文章归档等等。这些功能其实和一般的博客系统都差不多,没啥好说的。

关于文章评论,读者看到后填写基本的信息之后就可以发表评论了。

后台可以对评论进行管理,比如查看、删除、回复这些,回复的时候可以选择是否向用户填写的邮箱发送回复邮件,及时通知留言者。

评论管理

查看与回复

发送邮件内容

在前提主页有一个站内搜索,访客可以在这里根据关键词搜索文章!之后的搜索结果也会高亮显示!这里用到了ElasticSearch搜索引擎,配置了好用的IK分词器之后搜索的结果会更加的准确!

用户方面

首先是登录,设计了两种登录方式,一个是用户名和密码,一个是QQ登录。诶?有的人可能很奇怪了,这怎么能用QQ登录呢?其实这个应该叫做绑定QQ,如果之前数据库里面没有QQ用户的信息,那么第一次登录的时候就将这个QQ的信息写到数据库实现绑定的功能,这应该叫先入为主

之后用户可以修改个人资料,直接上图吧~

上传完微信二维码和公众号二维码,之后可以在前台主页进行显示。

定时统计

项目中引入了Redis,我们就可以方便进行统计了,比如文章的阅读量,我只是简单的设计了刷新一次页面就算一次阅读。在没有引入Redis之前我是每次刷新,就更新数据库!非常不推荐! 现在我们就把今天的阅读量放到Redis中,然后写一个定时任务,把Redis中的数据写到数据库,这绝对算是一种优化吧~

定时任务

同样的原理,我们需要统计访客信息,统计访客的阅读记录与阅读次数(其实就是后台的访问与访客)。我们需要记录访客的IP地址和访问的文章以及阅读次数等等。其实这里我想把访客统计做的更加细致,能根据IP获取到地址的那种,但是找了几个免费的API,淘宝就有一个,能用是能用,但是访问的次数多了就获取不到数据了,哎,后来我就把这个功能删掉了,做成了现在比较简单的版本。

站点装扮

这里就比较简单了,直接上图~

主页部件

这个前台主页我是想做的既美观又实用,额,只能做成这样了,来个效果。

侧边开发了公告、本地天气、站内搜索、热门文章、标签云、文集、文章归档、友情链接、访客统计等。

阅读文章页面时长这样的

技术栈

主要功能上面已经说得差不多了,现在来讲讲这个项目用到了哪些技术。

前端

名称 技术点
基础 Html、Css、JavaScript、Jquery
UI框架 BootStrap
文本编辑器 EditMd
前台模板 Olympus
后台模板 Pike Admin

前台模板和后台模板我都已经上传到了我的QQ交流群。喜欢的可以去下载一波~

后端

名称 技术点
开发 SpringBoot、MyBatis
数据库 MySQL 5.7 + Druid
缓存 Redis + EhCache
消息队列 RabbitMq
搜索引擎 ElasticSearch
其他 邮件任务、定时任务、QQ登录、Lombok、Jrebel、码云API

项目难点

项目使用到了ElasticSearch搜索引擎,后台在对文章进行修改、删除时更新数据库的同时需要更新ElasticSearch,如果使用串 行修改会很影响效率。难点在于在不影响系统性能的情况下保证MySQL与ES的数据一致性。

解决

编写定时任务每天0点对ES进行数据重建,在文章做出更新后使用RabbitMq消息队列推送更新/删除的消息,分析场景最后我 使用了RabbitMq的Topic模型。编写更新消费者和删除消费者,使用同一个交换机,匹配不同的key对消息进行消费,实现对 ES中的数据进行同步。

结语

最后最后,决定把此项目开源!附上项目的Github地址😊。喜欢的话一定别忘了给我颗⭐。

空文件

简介

博客 展开 收起
取消

发行版

暂无发行版

贡献者

全部

近期动态

加载更多
不能加载更多了
1
https://gitee.com/makeprogress/moti-blog.git
git@gitee.com:makeprogress/moti-blog.git
makeprogress
moti-blog
moti-blog
master

搜索帮助