javascript
基于SpringBoot 适合学习的开源社区平台
今天TJ君要給大家分享的是一個集合各種技術(shù)的開源社區(qū)平臺,Echo
平臺使用的主要技術(shù)有:SpringBoot + MyBatis + MySQL + Redis + Kafka + Elasticsearch + Spring Security,常見社區(qū)平臺中應(yīng)有的帖子、評論、私信、系統(tǒng)通知、點贊、關(guān)注、搜索、用戶設(shè)置、數(shù)據(jù)統(tǒng)計等模塊都可以支持實現(xiàn)。
前后端主要用到的技術(shù)棧有:
-
前端
-
Thymeleaf
-
Bootstrap 4.x
-
Jquery
-
Ajax
-
-
后端
-
Spring
-
Spring Boot 2.1.5 RELEASE
-
Spring MVC
-
ORM:MyBatis
-
數(shù)據(jù)庫:MySQL 5.7
-
分布式緩存:Redis
-
本地緩存:Caffeine
-
消息隊列:Kafka 2.13-2.7.0
-
搜索引擎:Elasticsearch 6.4.3
-
安全:Spring Security
-
郵件任務(wù):Spring Mail
-
分布式定時任務(wù):Spring Quartz
-
日志:SLF4J(日志接口) + Logback(日志實現(xiàn))
-
這些技術(shù)棧與功能列表的詳細(xì)對應(yīng)關(guān)系可從下圖看出:
TJ君簡單看了一下,如果要更進(jìn)一步詳細(xì)描述平臺已經(jīng)實現(xiàn)的功能的話,就是:
-
注冊
-
登錄 | 登出
-
動態(tài)生成驗證碼
-
記住我
-
-
賬號設(shè)置
-
修改頭像
-
修改密碼
-
-
過濾敏感詞
-
前綴樹
-
-
帖子模塊
-
發(fā)布帖子(過濾敏感詞)
-
分頁顯示所有的帖子
-
支持按照 “發(fā)帖時間” 顯示
-
支持按照 “熱度排行” 顯示(Spring Quartz)
-
-
查看帖子詳情
-
權(quán)限管理(Spring Security + Thymeleaf Security)
-
未登錄用戶無法發(fā)帖
-
“版主” 可以看到帖子的置頂和加精按鈕并執(zhí)行相應(yīng)操作
-
“管理員” 可以看到帖子的刪除按鈕并執(zhí)行相應(yīng)操作
-
“普通用戶” 無法看到帖子的置頂、加精、刪除按鈕,也無法執(zhí)行相應(yīng)操作
-
-
-
評論模塊
-
發(fā)布對帖子的評論(過濾敏感詞)
-
分頁顯示評論
-
發(fā)布對評論的回復(fù)(過濾敏感詞)
-
權(quán)限管理(Spring Security)
-
未登錄用戶無法使用評論功能
-
-
-
私信模塊
-
發(fā)送私信(過濾敏感詞)
-
私信列表
-
查詢當(dāng)前用戶的會話列表
-
每個會話只顯示一條最新的私信
-
支持分頁顯示
-
-
私信詳情
-
查詢某個會話所包含的所有私信
-
訪問私信詳情時,將顯示的私信設(shè)為已讀狀態(tài)
-
支持分頁顯示
-
-
權(quán)限管理(Spring Security)
-
-
統(tǒng)一處理 404 / 500 異常
-
普通請求異常
-
異步請求異常
-
-
統(tǒng)一記錄日志
-
點贊模塊
-
支持對帖子、評論/回復(fù)點贊
-
第 1 次點贊,第 2 次取消點贊
-
首頁統(tǒng)計帖子的點贊數(shù)量
-
詳情頁統(tǒng)計帖子和評論/回復(fù)的點贊數(shù)量
-
詳情頁顯示當(dāng)前登錄用戶的點贊狀態(tài)(贊過了則顯示已贊)
-
統(tǒng)計我的獲贊數(shù)量
-
權(quán)限管理(Spring Security)
-
未登錄用戶無法使用點贊相關(guān)功能
-
-
-
關(guān)注模塊
-
關(guān)注功能
-
取消關(guān)注功能
-
統(tǒng)計用戶的關(guān)注數(shù)和粉絲數(shù)
-
我的關(guān)注列表(查詢某個用戶關(guān)注的人),支持分頁
-
我的粉絲列表(查詢某個用戶的粉絲),支持分頁
-
權(quán)限管理(Spring Security)
-
未登錄用戶無法使用關(guān)注相關(guān)功能
-
-
-
系統(tǒng)通知模塊
-
通知列表
-
顯示評論、點贊、關(guān)注三種類型的通知
-
-
通知詳情
-
分頁顯示某一類主題所包含的通知
-
進(jìn)入某種類型的系統(tǒng)通知詳情,則將該頁的所有未讀的系統(tǒng)通知狀態(tài)設(shè)置為已讀
-
-
未讀數(shù)量
-
分別顯示每種類型的系統(tǒng)通知的未讀數(shù)量
-
顯示所有系統(tǒng)通知的未讀數(shù)量
-
-
導(dǎo)航欄顯示所有消息的未讀數(shù)量(未讀私信 + 未讀系統(tǒng)通知)
-
權(quán)限管理(Spring Security)
-
未登錄用戶無法使用系統(tǒng)通知功能
-
-
-
搜索模塊
-
網(wǎng)站數(shù)據(jù)統(tǒng)計(管理員專屬)
-
獨立訪客 UV
-
支持單日查詢和區(qū)間日期查詢
-
-
日活躍用戶 DAU
-
支持單日查詢和區(qū)間日期查詢
-
-
權(quán)限管理(Spring Security)
-
只有管理員可以查看網(wǎng)站數(shù)據(jù)統(tǒng)計
-
-
-
優(yōu)化網(wǎng)站性能
-
處理每次請求時,都要通過攔截器根據(jù)登錄憑證查詢用戶信息,訪問的頻率非常高。因此將已成功登錄的用戶信息在緩存 Redis 中保存一段時間,查詢用戶信息的時候優(yōu)先從緩存中取值;若緩存中沒有該用戶信息,則將其存入緩存;用戶信息變更時清除對應(yīng)的緩存數(shù)據(jù);
-
引入本地緩存 Caffeine,緩存熱帖列表和帖子的總數(shù),避免緩存雪崩(這里面還能再加一層二級緩存 Redis)。
-
本地部署
先確保一下環(huán)境都已安裝?Java 8、 MySQL 5.7、 Redis、 Kafka 2.13-2.7.0、 Elasticsearch 6.4.3
然后修改本地配置文件信息:
-
application-develop.properties:
-
MySQL
-
Spring Mail(郵箱需要開啟 SMTP 服務(wù))
-
Kafka:consumer.group-id(該字段見 Kafka 安裝包中的 consumer.proerties,可自行修改, 修改完畢后需要重啟 Kafka)
-
Elasticsearch:cluster-name(該字段見 Elasticsearch 安裝包中的 elasticsearch.yml,可自行修改)
-
七牛云(需要新建一個七牛云的對象存儲空間,用來存放上傳的頭像圖片)
-
-
logback-spring-develop.xml:
-
LOG_PATH:日志存放的位置
-
需要注意的是,每次運行需要打開如下軟件:
-
MySQL
-
Redis
-
Elasticsearch
-
Kafka
另外,還需要建好數(shù)據(jù)庫 greatecommunity,然后依次運行項目 sql 文件夾下的這幾個 sql 文件建立數(shù)據(jù)庫表:
同時針對每一個功能模塊,平臺作者還提供了自己的思維導(dǎo)圖,方便用戶理解:
例如注冊功能
登錄登出功能
幾乎每個功能都有,也方便小伙伴們進(jìn)行理解和學(xué)習(xí)。
最后看下實際的運行效果:
預(yù)祝大家學(xué)習(xí)愉快~~~項目地址如下:
https://github.com/Veal98/Echo
TJ君將之前發(fā)過的各種項目及工具進(jìn)行了整理,收錄到了GitHub項目,歡迎各位小伙伴光臨Star,地址如下:https://github.com/Wechat-TJ/TJ-WORLD-FORU
總結(jié)
以上是生活随笔為你收集整理的基于SpringBoot 适合学习的开源社区平台的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Apache http Server与T
- 下一篇: 大数据重新定义未来,2018 中国大数据