Skip to content

constheng/NiuNiuJavaGuide

 
 

Repository files navigation

Java八股随身刷

面向 Java 实习/校招用户的多人云端八股复习工具。

功能

  • 用户注册/登录 — Sa-Token 认证,多设备同步学习进度
  • 题库分类 — 按 Java基础、JVM、并发编程、Spring、MySQL、Redis 等分类浏览
  • 随机抽题 — 全库随机、分类随机、高频题、错题、未掌握题加权抽取
  • 题目详情 — 先思考再查看答案,支持简答/详解/常见追问
  • 掌握度标记 — 不会 / 不熟 / 会了 三级标记
  • 收藏功能 — 收藏重要题目方便复习
  • 错题复习 — 自动收集不会/不熟题目
  • 模拟面试 — 随机抽 10 题模拟面试,生成报告
  • 学习统计 — 进度、掌握度分布、完成率
  • 搜索 — 关键词搜索题目

架构

┌───────────────┐       ┌──────────────────────────────────┐
│  Android App  │──────▶│  Spring Boot 后端 (:8080)        │
│  Kotlin +     │  HTTP │  - Sa-Token 认证                 │
│  Jetpack      │◀──────│  - MyBatis-Plus + MySQL          │
│  Compose      │       │  - 加权随机抽题算法               │
│  + Retrofit   │       │  - Redis Session                 │
└───────────────┘       └──────────────────────────────────┘

技术栈

后端 (backend/)

  • Spring Boot 3.2 + Java 17
  • MyBatis-Plus ORM
  • MySQL 8 数据库
  • Redis 会话存储
  • Sa-Token 认证鉴权
  • Hutool 工具库

Android (app/)

  • Kotlin + Jetpack Compose (Material 3)
  • Retrofit + OkHttp 网络请求
  • DataStore Token 持久化
  • MVVM 架构
  • Navigation Compose 路由

快速启动

1. 后端

# 创建 MySQL 数据库
mysql -u root -p < backend/src/main/resources/db/schema.sql
mysql -u root -p < backend/src/main/resources/db/data.sql

# 修改数据库和 Redis 连接配置
# 编辑 backend/src/main/resources/application.yml

# 启动
cd backend
mvn spring-boot:run

2. Android

1. 修改服务器地址: app/.../network/RetrofitClient.kt 中的 BASE_URL
   - 模拟器: http://10.0.2.2:8080/
   - 真机同 Wi-Fi: http://<电脑IP>:8080/
   - 公网部署: https://your-domain.com/
2. 用 Android Studio 打开项目根目录
3. Sync Gradle → Run app

项目结构

Javaguide/
├── backend/                          # Spring Boot 后端
│   ├── pom.xml
│   └── src/main/java/com/javaguide/server/
│       ├── ServerApplication.java
│       ├── config/                   # Sa-Token + MyBatis-Plus 配置
│       ├── common/                   # Result 统一响应 + 异常处理
│       ├── entity/                   # User, Question, UserQuestionRecord
│       ├── mapper/                   # MyBatis-Plus Mapper
│       ├── dto/                      # 请求 DTO
│       ├── vo/                       # 响应 VO
│       ├── service/                  # 业务逻辑 + 加权随机算法
│       └── controller/               # REST API
│
├── app/                              # Android 客户端
│   └── src/main/java/com/javaguide/app/
│       ├── network/                  # Retrofit API + TokenManager
│       ├── viewmodel/                # MVVM ViewModels
│       ├── ui/
│       │   ├── theme/                # Material 3 主题
│       │   ├── components/           # 通用 UI 组件
│       │   ├── screens/              # 所有页面 (含登录注册)
│       │   └── navigation/           # 路由定义
│       ├── JavaGuideApp.kt
│       └── MainActivity.kt

API 接口

方法 路径 说明 鉴权
POST /api/auth/register 注册 ×
POST /api/auth/login 登录 ×
POST /api/auth/logout 登出
GET /api/auth/me 当前用户
GET /api/questions/categories 分类列表
GET /api/questions/list 题目列表(分页)
GET /api/questions/{id} 题目详情
GET /api/questions/search 搜索
GET /api/questions/random 加权随机抽题
GET /api/questions/review 错题/不熟题
GET /api/questions/favorites 收藏列表
GET /api/questions/interview 模拟面试抽题
POST /api/record/update 更新掌握度
POST /api/record/favorite/{id} 切换收藏
POST /api/record/view/{id} 记录浏览
GET /api/record/stats 学习统计

题库扩充

question 表 INSERT 新记录即可,所有用户立即可见:

INSERT INTO question (title, short_answer, detail_answer, category, sub_category, tags, difficulty, importance, frequency, follow_up_questions)
VALUES ('题目标题', '简短答案', '详细答案', '分类', '二级分类', '标签1,标签2', 2, 5, 5, '追问1|追问2');

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages

  • Vue 39.8%
  • JavaScript 26.2%
  • Java 24.5%
  • CSS 6.5%
  • Python 1.5%
  • HTML 0.5%
  • Other 1.0%