Spring Boot 开发路线(更新中)

Spring Boot 开发路线

项目简介

这篇文章的顺序是按照我个人学习顺序写的,在大佬的眼里绝对是杂乱无章,但是由浅入深,对初学者应该会有一点帮助。

项目概述

这个项目的设计由我个人构建,所以在设计上可能会存在很多不合理的地方。

  • 项目主要实现:
    • 教师:发布任务、查看任务、编辑任务
    • 学生:查看、接受、签到、记录
  • 数据库
    • 管理员:
      • 管理员主表:用户名、密码、权限表ID(外键)
      • 权限表: 权限表ID、管理员管理等级、学生管理等级
    • 学生:
      • 系部表:系ID、系名称
      • 专业表:专业ID、专业名称、系ID(外键)
      • 班级表:班级ID、班级名称、专业ID(外键)
      • 学生表:学生ID、学生名称、学生性别、班级ID(外键)
    • 任务:
      • 任务主表:任务ID、任务描述、任务工时、签到码、已报名人数、报名开始时间、报名结束时间、任务开始时间
      • 任务详情表:学生ID+任务ID(联合主键)、签到状态、任务状态

项目结构

├─java
│  └─com
│      └─main
│          │  MainApplication.java
│          │  
│          ├─aspect
│          ├─config
│          │      kaptchaConfig.java
│          │      
│          ├─controller
│          │  ├─manager
│          │  │      ManagerController.java
│          │  │      ManagerLoginController.java
│          │  │      
│          │  └─student
│          │          CollegeController.java
│          │          
│          ├─dao
│          │      ClassDao.java
│          │      CollegeDao.java
│          │      JurisdictionDao.java
│          │      ManagerDao.java
│          │      MissionDetailDao.java
│          │      MissionOrderDao.java
│          │      StudentDao.java
│          │      SubjectDao.java
│          │      
│          ├─enums
│          │      RedisMapEnum.java
│          │      ResultEnum.java
│          │      
│          ├─exception
│          │      CollegeException.java
│          │      LoginException.java
│          │      
│          ├─form
│          │      CollegeForm.java
│          │      LoginForm.java
│          │      RegisterForm.java
│          │      
│          ├─handler
│          │      BaseExceptionHandler.java
│          │      UnknownExceptionHandler.java
│          │      
│          ├─repository
│          │      ClassRepository.java
│          │      CollegeRepository.java
│          │      ManagerRepository.java
│          │      MissionDetailRepository.java
│          │      MissionOrderRepository.java
│          │      StudentRepository.java
│          │      SubjectRepository.java
│          │      
│          ├─service
│          │  │  ClassService.java
│          │  │  CollegeService.java
│          │  │  ManagerLoginService.java
│          │  │  ManagerService.java
│          │  │  SubjectService.java
│          │  │  
│          │  └─impl
│          │          ClassServiceImpl.java
│          │          CollegeServiceImpl.java
│          │          ManagerLoginServiceImpl.java
│          │          ManagerServiceImpl.java
│          │          SubjectServiceImpl.java
│          │          
│          ├─utils
│          │      JsonUtil.java
│          │      ResultVOUtil.java
│          │      
│          └─vo
│                  ResultVO.java
│                  
└─resources
    │  application-busi.yml
    │  application-test.yml
    │  application.yml
    │  
    ├─static
    └─templates

创建项目

  1. 使用IDEA的 Spring Initializr 创建项目。
  2. 添加 web 依赖。
  3. 将 resource 下的 application.properties 改为 yml 文件 application.yml
  4. 为 application 配置文件添加不同的环境配置文件
    application.yml
    application-test.yml 用于测试环境
    application-busi.yml 用于商业环境
  5. 将 test 设为默认环境
    spring:
    	profiles:
    		active:test
    

数据库配置连接

配置

  1. 添加数据库依赖
<
<think>好的,用户现在想要了解如何用C/C++实现李峋同款的跳动爱心。之前用户已经询问过Qt串口通信,现在转向图形相关的爱心效果,可能用户对编程有较广泛的兴趣,或者在做某个项目需要结合硬件和图形界面。 首先,用户提到的“李峋同款跳动爱心”应该是指影视剧中的动态爱心效果,可能是一个在控制台或图形窗口中跳动爱心动画。需要确认用户的需求是控制台实现还是图形界面,比如使用OpenGL或者Qt的图形库。不过考虑到用户之前接触过Qt,可能更倾向于图形界面,但C/C++的控制台动画也是一种常见做法,尤其是使用ASCII字符来模拟动画。 接下来需要分析实现方法。控制台下的跳动爱心通常利用数学公式生成爱心的形状,结合颜色变化和动态缩放来模拟跳动效果。在Windows下可能需要使用Windows API来设置控制台颜色和光标位置,而Linux/macOS则可能使用ANSI转义码。 用户可能需要详细的步骤,包括爱心坐标的计算、控制台颜色的设置、动画循环的实现。同时需要代码示例,最好能跨平台或者注明不同系统的适配方法。另外,用户可能希望代码简洁,容易理解和修改。 考虑到用户可能没有图形库的经验,优先选择控制台实现,因为依赖较少,适合快速实现。但需要注意不同系统的兼容性,比如Windows和Unix-like系统在控制台处理上的差异。例如,Windows使用SetConsoleCursorPosition和SetConsoleTextAttribute,而其他系统使用ANSI转义码。 代码结构大致分为:初始化(隐藏光标、设置颜色)、计算爱心形状的坐标、动态调整爱心大小以实现跳动效果,以及循环刷新显示。可能需要用到数学公式,比如心形曲线的参数方程,或者使用预定义的字符矩阵来绘制爱心。 同时,需要处理用户的退出操作,比如检测按键事件来终止程序,或者在循环中设置退出条件。此外,动画的流畅性取决于刷新速率,可能需要使用睡眠函数来控制帧率。 最后,可能需要注意事项,比如编译时的平台相关代码处理,或者颜色不支持时的回退方案。用户可能还希望了解如何调整爱心的大小、颜色变化或跳动速度,所以代码中的参数应该易于修改。 总结来说,需要提供一个简洁的C/C++控制台程序,实现跳动爱心动画,包含跨平台处理,代码注释清晰,并解释关键步骤和数学原理,方便用户理解和自定义。</think>以下是一个用 C/C++ 实现的**控制台跳动爱心**代码(灵感来自《点燃我,温暖你》中李峋的爱心代码),结合数学公式与颜色动画效果,支持 Windows/Linux/macOS 平台: --- ### 代码实现 ```cpp #include <iostream> #include <cmath> #include <windows.h> // Windows 专用 API(Linux/macOS 可用 ANSI 转义码替代) // 设置控制台光标位置(跨平台建议使用 ncurses 库) void setCursorPos(int x, int y) { #ifdef _WIN32 HANDLE hConsole = GetStdHandle(STD_OUTPUT_HANDLE); COORD pos = { (SHORT)x, (SHORT)y }; SetConsoleCursorPosition(hConsole, pos); #else std::cout << "\033[" << y + 1 << ";" << x + 1 << "H"; // ANSI 转义码 #endif } // 隐藏光标 void hideCursor() { #ifdef _WIN32 HANDLE hConsole = GetStdHandle(STD_OUTPUT_HANDLE); CONSOLE_CURSOR_INFO cursorInfo; GetConsoleCursorInfo(hConsole, &cursorInfo); cursorInfo.bVisible = false; SetConsoleCursorInfo(hConsole, &cursorInfo); #else std::cout << "\033[?25l"; #endif } // 设置控制台颜色(示例仅 Windows,其他系统可用 ANSI) void setColor(int color) { #ifdef _WIN32 HANDLE hConsole = GetStdHandle(STD_OUTPUT_HANDLE); SetConsoleTextAttribute(hConsole, color); #else std::cout << "\033[38;5;" << color << "m"; #endif } // 爱心数学公式:笛卡尔心形线变形 bool heartShape(float x, float y, float scale) { x /= scale; y /= scale; float heart = pow(x*x + y*y - 1, 3) - x*x*y*y*y; return heart <= 0; } int main() { hideCursor(); float scale = 1.0; bool expanding = false; while (true) { // 清屏(简单模拟) system("cls"); // 动态缩放系数 scale += expanding ? 0.05 : -0.05; if (scale <= 0.5) expanding = true; if (scale >= 1.5) expanding = false; // 遍历坐标绘制爱心 for (float y = 1.5; y > -1.5; y -= 0.05) { for (float x = -1.5; x < 1.5; x += 0.025) { if (heartShape(x, y, scale)) { setColor(12); // 红色(Windows) std::cout << "*"; } else { std::cout << " "; } } std::cout << std::endl; } // 控制动画速度 Sleep(50); } return 0; } ``` --- ### 关键原理 1. **心形方程** 使用变形后的笛卡尔心形线公式: ```math (x^2 + y^2 - 1)^3 - x^2 y^3 \leq 0 ``` 当坐标点满足该不等式时,绘制爱心符号。 2. **动态缩放** 通过 `scale` 参数周期性变化(0.5~1.5),实现爱心的"跳动"效果。 3. **控制台动画** - 使用 `system("cls")` 清屏(实际项目建议用更高效方式) - 通过 `Sleep()` 控制帧率 - 隐藏光标避免闪烁 4. **颜色控制** Windows 使用 `SetConsoleTextAttribute`,其他系统可用 ANSI 转义码实现彩色输出。 --- ### 运行效果 - 控制台中会出现一个红色爱心,持续缩放跳动 - 类似影视剧中的终端动态效果(需调整参数优化动画流畅度) --- ### 跨平台适配建议 1. **Linux/macOS** - 安装 `ncurses` 库替代 Windows API - 使用 ANSI 转义码控制颜色和光标 - 将 `Sleep(50)` 改为 `usleep(50000)` 2. **增强效果** - 修改公式实现不同形状爱心 - 添加渐变颜色(如粉红到深红) - 增加随机粒子效果 如果需要完整跨平台版本或图形界面(如 OpenGL/Qt 实现),可以进一步补充说明!
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值