Skip to content

Latest commit

 

History

4 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Blog System 个人博客系统

基于 SpringBoot3 + MyBatis + MySQL + Redis + Vue3 的前后端分离博客系统,支持 Docker Compose 一键部署。

在线演示http://8.156.66.224

技术栈

技术
后端 Spring Boot 3、MyBatis、MySQL 8.0、Redis 7、JWT、拦截器
前端 Vue 3(Composition API)、Vite、Element Plus、Pinia、Vue Router、Axios
部署 Docker Compose 四容器编排(MySQL / Redis / 后端 / 前端 Nginx)

功能模块

  • 用户:注册 / 登录(JWT + 登录拦截器),游客可读、登录后可评论
  • 文章:文章列表、详情、分类,浏览量统计
  • 分类 / 评论:文章分类管理,文章评论

核心设计

1. Redis 文章缓存(Cache-Aside)

  • 读文章详情:先查 Redis(key article:{id})→ 未命中查库并回写缓存(TTL 1h)
  • 防缓存穿透:不存在的文章缓存空值占位符
  • 文章更新 / 删除时删除缓存而非更新,规避并发写脏数据
  • 解决 Redis 反序列化 ClassCastException(保留 JSON 类型信息)

2. 浏览量防刷

  • Redis 记录「用户-文章」访问标记(TTL 1h),同一用户 1 小时内重复访问不计数
  • 浏览量自增用 UPDATE article SET view_count = view_count + 1 数据库原子操作,避免并发丢失更新

3. JWT 认证 + 拦截器

  • 登录签发 JWT,LoginInterceptor 统一校验并注入 userId
  • 读文章接口允许游客访问(userId 为 null 时跳过防刷逻辑,try-catch 兜底)
  • 前后端分离通过后端 CORS 配置解决跨域

数据库设计

usercategoryarticlecomment 四张表,建表脚本见 sql 目录。

快速启动

docker-compose up -d --build
# 前端 http://localhost  后端API http://localhost:8080

本地开发:

cd blog-backend && mvn spring-boot:run
cd blog-frontend && npm install && npm run dev

项目结构

blog-system/
├── docker-compose.yml
├── sql/                     # 建表 + 种子数据
├── blog-backend/            # SpringBoot3 后端
│   └── src/main/java/.../
│       ├── controller/      # REST 接口
│       ├── service/         # 业务逻辑(缓存、浏览量防刷)
│       ├── mapper/          # MyBatis 接口 + XML
│       ├── config/          # Redis/CORS/拦截器配置
│       └── common/          # 统一响应、JWT 工具
└── blog-frontend/           # Vue3 前端
    └── src/
        ├── views/ components/ api/ stores/
        └── utils/request.js # Axios 拦截器

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages