# sse-coding-server **Repository Path**: xindonhub/sse-coding-server ## Basic Information - **Project Name**: sse-coding-server - **Description**: No description available - **Primary Language**: Unknown - **License**: MulanPSL-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-10-09 - **Last Updated**: 2025-10-24 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 中山大学刷题平台 - 后端服务 ## 📖 项目简介 中山大学刷题平台后端服务是一个基于Go语言开发的高性能在线编程学习平台,支持题目管理、代码执行、用户管理、AI辅助编程等功能。系统采用现代化的微服务架构,具备企业级的高并发处理能力。 ## ✨ 核心功能 ### 🔐 用户认证系统 - 用户注册/登录/登出 - JWT Token认证 - 邮箱验证码验证 - 密码重置功能 - 用户角色管理(学生/教师/管理员) ### 📚 题目管理系统 - 题目CRUD操作 - 题目分类和标签 - 题目难度分级 - 测试用例管理 - 题目搜索和筛选 ### 💻 代码执行系统 - 多语言代码执行(C/C++/Java/Python/JavaScript/Go/Rust) - 在线代码编辑器 - 实时代码执行结果 - 代码提交和判题 ### 🤖 AI辅助功能 - AI代码补全 - AI编程助手对话 - 智能代码分析 - 学习建议推荐 ### 📊 用户系统 - 用户资料管理 - 学习进度跟踪 - 排行榜系统 - 收藏夹功能 ### 💬 社区功能 - 讨论区 - 题解分享 - 评论系统 - 公告发布 ## 🏗️ 技术架构 ### 核心技术栈 - **语言**: Go 1.24 - **Web框架**: Gin - **数据库**: MySQL 8.0 + GORM v2 - **缓存**: Redis - **认证**: JWT - **监控**: Prometheus - **日志**: 自定义日志系统 - **容器化**: Docker ### 架构特点 - **高并发**: 支持10,000+并发连接 - **高性能**: 数据库连接池优化,Redis缓存 - **高可用**: 优雅关闭,健康检查 - **可观测**: 完整的监控和日志系统 - **安全性**: 速率限制,安全中间件 ## 📁 项目结构 ``` backend/ ├── cmd/ # 应用程序入口 │ └── main.go # 主程序文件 ├── internal/ # 内部包 │ ├── config/ # 配置管理 │ ├── handler/ # HTTP处理器 │ │ ├── auth.go # 认证处理器 │ │ ├── user.go # 用户处理器 │ │ ├── question.go # 题目处理器 │ │ ├── execution.go # 代码执行处理器 │ │ ├── submission.go # 提交记录处理器 │ │ ├── solution.go # 题解处理器 │ │ ├── discussion.go # 讨论区处理器 │ │ ├── announcement.go # 公告处理器 │ │ └── ai_chat.go # AI对话处理器 │ ├── middleware/ # 中间件 │ │ ├── auth.go # 认证中间件 │ │ ├── cors.go # CORS中间件 │ │ ├── rate_limit.go # 速率限制中间件 │ │ ├── metrics.go # 性能指标中间件 │ │ ├── error_logger.go # 错误日志中间件 │ │ └── ... │ ├── model/ # 数据模型 │ │ ├── user.go # 用户模型 │ │ ├── question.go # 题目模型 │ │ ├── submission.go # 提交记录模型 │ │ └── ... │ └── router/ # 路由配置 │ └── router.go # 路由设置 ├── pkg/ # 公共包 │ ├── cache/ # Redis缓存 │ ├── database/ # 数据库连接 │ ├── logger/ # 日志系统 │ ├── metrics/ # 性能监控 │ ├── pool/ # 工作池 │ ├── http/ # HTTP工具 │ └── utils/ # 工具函数 ├── static/ # 静态文件 ├── uploads/ # 上传文件 ├── logs/ # 日志文件 ├── keys/ # 密钥文件 ├── config.yaml # 配置文件 ├── go.mod # Go模块文件 ├── go.sum # 依赖校验文件 ├── Dockerfile # Docker镜像构建文件 ├── docker-compose.yml # Docker Compose配置 └── README.md # 项目说明文档 ``` ## 🚀 快速开始 ### 环境要求 - Go 1.24+ - MySQL 8.0+ - Redis 6.0+ - Docker (可选) ### 本地开发 1. **克隆项目** ```bash git clone cd SYSU-question-server/backend ``` 2. **安装依赖** ```bash go mod download ``` 3. **配置数据库** ```bash # 创建数据库 mysql -u root -p CREATE DATABASE sysu_question_platform CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; ``` 4. **配置Redis** ```bash # 启动Redis服务 redis-server ``` 5. **修改配置文件** ```yaml # config.yaml database: host: localhost port: "3306" name: sysu_question_platform user: root password: your_password redis: host: localhost port: "6379" password: "" ``` 6. **生成JWT密钥** ```bash go run script/generate_key.go ``` 7. **运行服务** ```bash go run cmd/main.go ``` 服务将在 `http://localhost:8080` 启动 ### Docker部署 1. **构建镜像** ```bash docker build -t sysu-question-platform . ``` 2. **使用Docker Compose** ```bash docker-compose up -d ``` ## 📡 API接口 ### 认证接口 - `POST /api/v1/auth/register` - 用户注册 - `POST /api/v1/auth/login` - 用户登录 - `POST /api/v1/auth/logout` - 用户登出 - `POST /api/v1/auth/send-verification-code` - 发送验证码 - `POST /api/v1/auth/reset-password` - 重置密码 ### 用户接口 - `GET /api/v1/users/:id/profile` - 获取用户资料 - `PUT /api/v1/users/:id/profile` - 更新用户资料 - `GET /api/v1/users/ranking` - 用户排行榜 - `GET /api/v1/users/:id/submissions` - 获取用户提交记录 ### 题目接口 - `GET /api/v1/questions` - 获取题目列表 - `GET /api/v1/questions/:id` - 获取题目详情 - `POST /api/v1/questions/create` - 创建题目(教师) - `PUT /api/v1/questions/:id` - 更新题目(教师) - `DELETE /api/v1/questions/:id` - 删除题目(教师) ### 代码执行接口 - `POST /api/v1/execution/run` - 运行代码 - `POST /api/v1/execution/submit` - 提交代码 - `GET /api/v1/execution/languages` - 获取支持的语言 ### AI功能接口 - `GET /api/v1/ai/sessions` - 获取AI会话列表 - `POST /api/v1/ai/chat` - AI对话 - `POST /api/v1/ai/code-completion` - 代码补全 ### 系统接口 - `GET /health` - 健康检查 - `GET /metrics/status` - 性能监控 - `GET /ping` - 服务状态 ## ⚙️ 配置说明 ### 服务器配置 ```yaml server: host: localhost port: "8080" mode: debug # debug/release max_connections: 10000 keep_alive_timeout: 120s read_timeout: 30s write_timeout: 30s ``` ### 数据库配置 ```yaml database: host: localhost port: "3306" name: sysu_question_platform user: root password: your_password charset: utf8mb4 max_idle_conns: 50 max_open_conns: 500 conn_max_lifetime: 3600s conn_max_idle_time: 600s ``` ### Redis配置 ```yaml redis: host: localhost port: "6379" password: "" db: 0 pool_size: 100 min_idle_conns: 10 max_retries: 3 dial_timeout: 5s read_timeout: 3s write_timeout: 3s idle_timeout: 300s ``` ## 📊 性能特性 ### 高并发优化 - **数据库连接池**: 最大500连接,50空闲连接 - **Redis连接池**: 100连接池,智能重试机制 - **Goroutine工作池**: 多类型异步任务处理 - **HTTP连接优化**: 支持10,000+并发连接 ### 缓存策略 - **Redis缓存**: 用户信息、题目数据、会话管理 - **查询优化**: 预编译语句缓存 - **智能失效**: 自动缓存更新机制 ### 监控系统 - **Prometheus指标**: 请求数、响应时间、错误率 - **系统监控**: CPU、内存、Goroutine数量 - **业务监控**: 用户活跃度、题目热度 - **日志系统**: 多级别日志,错误追踪 ## 🔒 安全特性 ### 认证安全 - **JWT Token**: 无状态认证 - **密码加密**: bcrypt哈希 - **会话管理**: 安全的会话存储 ### 防护机制 - **速率限制**: 多级速率限制 - **CORS配置**: 跨域请求控制 - **输入验证**: 严格的参数验证 - **SQL注入防护**: GORM参数化查询 ### 安全监控 - **可疑请求检测**: 自动识别攻击行为 - **安全日志**: 记录安全事件 - **IP限制**: 基于IP的访问控制 ## 📈 监控和运维 ### 健康检查 ```bash # 检查服务状态 curl http://localhost:8080/health # 查看性能指标 curl http://localhost:8080/metrics/status ``` ### 日志查看 ```bash # 查看应用日志 tail -f logs/app.log # 查看错误日志 grep "ERROR" logs/app.log ``` ### 性能监控 - **Prometheus**: 指标收集 - **Grafana**: 可视化监控 - **日志分析**: ELK Stack ## 🧪 测试 ### 单元测试 ```bash go test ./... ``` ### 压力测试 ```bash # 使用ab进行压力测试 ab -n 10000 -c 100 http://localhost:8080/api/v1/questions # 使用wrk进行性能测试 wrk -t12 -c400 -d30s http://localhost:8080/api/v1/questions ``` ## 🚀 部署指南 ### 生产环境部署 1. **环境准备** ```bash # 安装Go 1.24+ # 安装MySQL 8.0+ # 安装Redis 6.0+ ``` 2. **配置优化** ```yaml # 生产环境配置 server: mode: release max_connections: 10000 database: max_open_conns: 500 max_idle_conns: 50 redis: pool_size: 100 ``` 3. **启动服务** ```bash # 编译 go build -o main cmd/main.go # 运行 ./main ``` ### Docker部署 ```bash # 构建镜像 docker build -t sysu-question-platform:latest . # 运行容器 docker run -d -p 8080:8080 \ -e DB_HOST=your_db_host \ -e DB_PASSWORD=your_password \ sysu-question-platform:latest ``` ## 🤝 贡献指南 1. Fork 项目 2. 创建功能分支 (`git checkout -b feature/AmazingFeature`) 3. 提交更改 (`git commit -m 'Add some AmazingFeature'`) 4. 推送到分支 (`git push origin feature/AmazingFeature`) 5. 打开 Pull Request ## 📄 许可证 本项目采用 MIT 许可证 - 查看 [LICENSE](LICENSE) 文件了解详情 ## 📞 联系方式 - 项目维护者: [Your Name] - 邮箱: [your.email@example.com] - 项目地址: [https://github.com/your-username/sysu-question-platform] ## 🙏 致谢 感谢所有为这个项目做出贡献的开发者和用户! --- **注意**: 这是一个教育项目,仅供学习和研究使用。在生产环境中使用前,请确保进行充分的安全测试和性能优化。