# 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