# java_20261027 **Repository Path**: burns/java_20261027 ## Basic Information - **Project Name**: java_20261027 - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-10-27 - **Last Updated**: 2026-10-27 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Java 知识动态演示站(Vue3 + SpringBoot + MySQL) 把 Java 知识点做成 **6 种可交互动态效果** 的完整全栈示例。数据由 SpringBoot 从 MySQL 读取, 前端分别使用 GSAP / Monaco+沙箱 / 逐行 Debug / Canvas / 时间线 / 拖拽实现。 ## 技术栈 - 后端:Java 17、Spring Boot 3.2、Spring JDBC、MySQL Connector/J - 前端:Vue 3、Vite 5、Vue Router、GSAP、Monaco Editor、Canvas、vuedraggable、marked - 数据库:MySQL 8(库名 `java_knowledge_site`,自动建库建表与幂等种子数据) ## 目录 ``` backend/ SpringBoot 工程(REST + 代码沙箱 + 启动初始化) frontend/ Vue3 + Vite 工程(五大动态案例页面) start-backend.ps1 / start-frontend.ps1 一键启动脚本 ``` ## 六大动态方案 | # | 知识点 | 实现技术 | 路由 | |---|--------|----------|------| | 1 | JVM 类加载与双亲委派 | SVG 区域 + GSAP 分步动画(播放/单步/回退/自动) | `/#/topic/classloader-animation` | | 2 | Java 代码在线运行 | Monaco Editor + 后端进程沙箱实时编译运行 | `/#/topic/code-runner` | | 3 | 在线代码可视化 Debug | 内置教学解释器逐行执行:当前行高亮、变量按作用域分组实时追踪、变化值变色、单步/连续/暂停 | `/#/topic/code-debug` | | 4 | 线程池工作原理 | Canvas 仿真(核心/最大/队列可调,含拒绝策略、线程回收) | `/#/topic/threadpool-sim` | | 5 | Spring Bean 生命周期 | 可点击时间线 + 自动播放 + 过场动画 | `/#/topic/bean-lifecycle` | | 6 | 类加载阶段排序 | vuedraggable 拖拽闯关 + 即时判分 | `/#/topic/drag-quiz` | ## 启动 前置:JDK 17、Maven、Node 18+、MySQL 8(默认 root/root,可用环境变量覆盖)。 ```powershell # 1) 后端(默认 8080,自动建库建表、写入种子数据) ./start-backend.ps1 # 或手动:cd backend; mvn -DskipTests package; java -Dfile.encoding=UTF-8 -jar target/java-knowledge-site-1.0.0.jar # 2) 前端(默认 5173,自动代理 /api -> 8080) ./start-frontend.ps1 # 或手动:cd frontend; npm install; npm run dev ``` 浏览器打开 http://localhost:5173 数据库连接可用环境变量覆盖:`DB_USER`、`DB_PASSWORD`。 ## REST 接口 - `GET /api/ping` 健康检查 - `GET /api/topics` 知识点列表 - `GET /api/topics/{type}` 知识点详情(含 markdown / config / 初始代码) - `POST /api/code/run` 在线运行 Java(body: `{"source":"..."}`,入口须为 `public class Main`) ## 代码沙箱安全说明(教学级) - 仅允许 `public class Main`、禁止 `package` 声明、限制代码长度; - 每次运行使用独立临时目录与独立 JVM 进程,设置 `-Xmx128m`、10s 超时强杀、输出截断; - 这是**进程级隔离**,并非强安全边界。面向公网/多租户生产环境请改为 Docker 或 judge0 等容器级隔离方案。