基于Next.js + Spring Boot + Redis + MySQL + Elasticsearch 构建的面试刷题平台。
致力于面试刷题,帮助每个人成为八股大师🚀。。
持续更新中~
- 性能提升
- 运用 Druid 数据库连接池技术,有效管理数据库连接,减少连接创建和销毁的开销,提升系统性能。
- 结合 JD- HotKey 热 Key 探测技术,及时发现热点数据,优化系统对高频请求的处理。
- 利用 Redis 缓存技术,缓存常用数据,减少数据库查询次数,加快数据访问速度。
- 使用高级数据结构,进一步优化数据处理逻辑,提高系统整体性能。
- 安全保障
- 采用 Sa - Token 实现可靠的用户认证和授权机制,确保用户数据安全和操作合法性。
- 借助 Sentinel 进行流量控制和熔断处理,防止系统因突发大流量而崩溃,保障系统的稳定性和可用性。
- 通过动态 IP 黑白名单过滤技术,有效阻止恶意 IP 的访问,增强系统的网络安全性。
- 实现同端登录冲突检测,防止账号在多端异常登录,保护用户账号安全。
- 运用分级反爬虫策略,抵御恶意爬虫对系统内容的非法获取,确保平台数据的安全性。
- React 18 框架
- ⭐️ Next.js 服务端渲染
- ⭐️ Redux 状态管理
- Ant Design 组件库
- 富文本编辑器组件
- ⭐️ 前端工程化:ESLint + Prettier + TypeScript
- ⭐️ OpenAPI 前端代码生成
- Java Spring Boot 框架 + Maven 多模块构建
- MySQL 数据库 + MyBatis-Plus 框架 + MyBatis X
- Redis 分布式缓存 + Caffeine 本地缓存
- Redission 分布式锁 + BitMap + BloomFilter
- ⭐️ Elasticsearch 搜索引擎
- ⭐️ Druid 数据库连接池 + 并发编程
- ⭐️ Sa-Token 权限控制
- ⭐️ HotKey 热点探测
- ⭐️ Sentinel 流量控制
- ⭐️ Nacos 配置中心
- ⭐️ 多角度项目优化:性能、安全性、可用性
后端项目使用 SpringBoot 开发,需要安装 JDK 17 、 MySQL 数据库、Redis、Elasticsearch 。
在项目目录下的application.yml
修改自己的启动环境spring.profiles.active
= dev
然后找到同级文件application-dev.properties
,填写自己的环境配置(MySQL、Redis)。
前端项目使用 React 开发,需要安装 Node.js(Node 18 版本,请保持一致) 、npm 。
在项目目录下执行npm install
安装依赖,然后执行npm run start
启动项目。
- 管理员功能
- 题库管理:可轻松管理题库,包括创建新库、为不同场景准备题目集合。
- 题目管理:能在已有题库中添加多种类型题目。
- 题目详情:支持多种类型题目,包括单选、多选、判断、填空、编程等。
- 题解管理:为题目添加详细题解,助力用户学习。
- 用户功能
- 注册与登录:便捷注册登录,开启刷题。
- 分词检索题目:借助 Elasticsearch 分词检索快速找题。
- 在线刷题:在平台刷题,答题情况被实时记录。
- 刷题记录查看:通过日历图查看刷题历程和进度。
- 安全性
- 缓存热点与热 key:用三级缓存技术处理热点数据和热 key,监测访问频率,优化性能,保障稳定。
- 限流与熔断:运用限流与熔断机制,监控和控制流量,过载时防止系统崩溃。
- IP 管理:采用 IP 黑白名单技术,区分可信和恶意 IP,保障网络安全。
- 同端登录检测:通过同端登录检测机制,监控账号状态,防止异常登录,保护账号安全。
- 反爬虫策略:依据分级反爬虫策略,对访问请求监测,超限制先警告后封号,保护平台。
- 管理员功能
- 用户功能
- 安全性
如果您对本项目感兴趣,欢迎通过以下方式参与:
- Fork 本项目:在 GitHub 上 Fork 这个仓库到您自己的账号下。
- 创建分支:从您 Fork 的仓库中创建新的分支,用于开发新功能或修复问题。
- 提交代码:在本地完成代码开发后,将代码提交到您创建的分支上。
- 发起 Pull Request:向本项目的主仓库发起 Pull Request,我们会及时审核您的代码。
希望这个项目能为您带来丰富的学习体验和收获,感谢您的关注和支持!