# study **Repository Path**: zizizilan/study ## Basic Information - **Project Name**: study - **Description**: 这是一个基于java的用于学习的后端项目 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2024-09-22 - **Last Updated**: 2025-07-31 ## Categories & Tags **Categories**: Uncategorized **Tags**: h2数据库, JPA ## README # Study 这是一个基于java的用于学习的后端项目 ## 星图 关系型数据库: Mysql, Oracle, PostgreSQL, 人大金仓, H2 非关系型数据库(NoSQL): Redis, MongoDB, Elasticsearch ORM: Mybatis, Mybatis-PLUS, JPA, QueryDSL, Hibernate, Spring-Data-JPA 脚手架:Spring, SpringBoot, SpringMVC, SpringCloud, JavaFX 安全框架: Shiro, Spring Security, JWT 注册中心: Alibaba Nacos, Apache Zookeeper, Netflix Eureka 定时任务: Quartz, XXLJob 文档处理: EasyExcel, POI 加密解密、编码: GitHub jasypt, Apache AES, BASE64 HTTP请求: JSON: Jackson, FastJSON 验证码: 数据迁移: Spoon HDFS、MapReduce、HBase、Hive、Sqoop ## 目录 ### 整合框架系列 1. [SpringBoot整合H2数据库](./study-9203-h2-mp/SpringBoot整合H2数据库.md) 2. [SpringBoot整合Mybatis-PLUS](./study-9203-h2-mp/SpringBoot整合Mybatis-PLUS.md) 3. [SpringBoot整合JPA](./study-9204-jpa/SpringBoot整合JPA.md) 4. [SpringBoot整合QueryDSL](./study-9204-jpa/SpringBoot整合QueryDSL.md) 5. EasyExcel、POI 6. Shiro 权限控制 7. Quartz 8. Google Authentication 9. 服务器可用性测试 test 10. dockerfile的使用 docker test 11. 12. Loading... ## SpringBoot整合H2数据库 - 整合、Mybatis PLUS查询、分页 - 基于`Spring事件监听`初始化表 - 远程访问数据库 ## SpringBoot整合JPA - 简化`CRUD`操作 - - Loading... ## Excel - 优雅的校验excel中的数据 excel ## 定时任务解决方案(三种) ### 1. Spring Framework 实现 Spring Framework 实现的定时任务功能主要由 **Spring Task 模块** 提供,基于 JDK 提供的 `ScheduledExecutorService` (执行器)实现,使用简单轻量,适用于**单体服务或单节点运行的定时任务场景**。**模块**:`spring-context`,**实现类**:`org.springframework.scheduling.annotation.SchedulingConfiguration` | 组件 | 描述 | | ---------------------- | -------------------------------- | | @EnableScheduling | 开启定时任务支持 | | @Scheduled | 标注任务方法 | | TaskScheduler | 接口,调度器核心组件 | | ScheduledTaskRegistrar | 注册和管理任务的工具类 | | SchedulingConfigurer | 接口,可定制任务线程池等调度细节 | #### 使用方式 依赖(无需额外引入) ```xml org.springframework.boot spring-boot-starter org.springframework spring-context ``` 开启方式 ```java @Configuration @EnableScheduling public class ScheduleConfig { } ``` 然后你可以直接在任何 Bean 上添加 `@Scheduled` 注解: ```java @Component public class MyTask { @Scheduled(cron = "0 0 * * * ?") // 每小时执行一次 public void executeTask() { System.out.println("执行定时任务"); } } ``` #### 支持的调度方式 | 注解写法 | 说明 | | --------------------------------------------------- | -------------------------- | | `@Scheduled(cron = "...")` | 使用 cron 表达式 | | `@Scheduled(fixedRate = 5000)` | 上一次开始后 5 秒再次执行 | | `@Scheduled(fixedDelay = 5000)` | 上一次结束后 5 秒再次执行 | | `@Scheduled(initialDelay = 1000, fixedRate = 3000)` | 延迟 1 秒后每 3 秒执行一次 | #### 自定义线程池 目的:避免默认线程池太小。默认的 `ScheduledExecutorService` 线程池只有 1 个线程,多个任务会阻塞排队。因此建议自定义线程池 ```java @Configuration @EnableScheduling public class TaskSchedulerConfig implements SchedulingConfigurer { @Override public void configureTasks(ScheduledTaskRegistrar registrar) { // 自定义线程池 ThreadPoolTaskScheduler scheduler = new ThreadPoolTaskScheduler(); scheduler.setPoolSize(5); // 并发任务数 scheduler.setThreadNamePrefix("schedule-task-"); scheduler.initialize(); registrar.setTaskScheduler(scheduler); } } ``` #### 特性与限制 | 特性 / 限制 | 说明 | | -------------------- | -------------------------------------------- | | ✅ 支持 cron 表达式 | 精确到秒级 | | ✅ 支持多任务并发调度 | 每个 `@Scheduled` 都是一个独立线程 | | ⚠️ 单节点有效 | 不支持集群环境自动协调,多节点会重复执行任务 | | ⚠️ 不支持任务持久化 | 任务在内存中运行,应用重启后不保留状态 | | ⚠️ 不支持动态注册 | 定时任务是静态的,不能在运行中增删任务 | ### 2. Quartz Quartz 是一个强大、灵活的 **企业级任务调度框架**,用于在 Java 应用中实现定时任务执行,适用于复杂调度需求 #### 组件 | 组件 | 描述 | | ----------- | ------------------------------------ | | `Job` | 要执行的任务逻辑(你写的业务代码) | | `Trigger` | 任务的触发规则(时间、频率) | | `Scheduler` | 调度器,管理 Job 和 Trigger 的执行 | | `JobDetail` | Job 的元信息(如名称、分组、参数等) | | `JobStore` | 存储任务信息的方式(内存/数据库) | #### 调度原理 - **线程池**(默认 SimpleThreadPool)用于并发执行任务 - **Trigger 调度策略**(cron、simple 等)决定触发时间 - **JobStore** 管理任务存储(支持 RAMJobStore 和 JDBCJobStore) - **Scheduler 调度器**协调一切 > Quartz 会定期扫描 Trigger 表,根据触发时间将任务派发给线程池执行。 > RAMJobStore:存储在内存中,速度快,重启丢失 > JDBCJobStore:持久化到数据库,可用于集群 #### 主要特性 | 功能 | 描述 | | ------------------ | -------------------------------------------------- | | ✅ 支持多种调度策略 | 支持 Cron 表达式、简单循环、日历等 | | ✅ 支持任务持久化 | 可将任务存储在数据库中 | | ✅ 支持集群调度 | 多节点协调执行任务(需配置数据库) | | ✅ 动态增删改任务 | 运行中可手动注册、暂停、删除任务 | | ✅ 支持任务分组 | Job 和 Trigger 可分组管理 | | ✅ 支持任务参数传递 | JobDataMap 支持携带参数 | | ✅ 支持并发控制 | 通过 `@DisallowConcurrentExecution` 控制单线程执行 | | ✅ 支持任务监听器 | 任务执行前后可以监听回调(日志、告警) | #### SpringBoot集成 ....loading ### 3. XXLJob ## 验证码解决方案 # dap7 CustomWidget 自定义小部件 Privilege 特权 谷歌令牌认证 https://blog.csdn.net/tanyu159/article/details/119698790 https://mp.weixin.qq.com/s?__biz=MzU5MzU5NjkzNg==&mid=2247497726&idx=1&sn=f1e763802dfe03e794a151de7ed35133&chksm=ffce8b3494c41d5bc011cd73db4e324762a9e223494fe1a929e8ee561cb6d72b743a855abb4b&scene=126&sessionid=1730798189#rd