每日一记
- @Async 使用
- jwt
- MySQL的int(1) 与 int(20)
@Async 使用
基本介绍:
是spring的注解,用于方法和类,加了这个注解后,那么在使用该类/方法时,会创建一个新的线程去执行,即实现多线程。
使用流程:
- 在启动类或者含有@configuration注解的类上,添加@EnableAsync注解。
- 在方法/类上添加@Async即可
使用细节:
-
线程池的任务执行顺序:
注意:默认使用spring的线程池---SimpleAsyncTaskExecutor
-
如何创建线程池:
- 重新实现接口AsyncConfigurer
- 继承AsyncConfigurerSupport
- 配置由自定义的TaskExecutor代替内置的任务执行器(文末介绍如何实现)
-
该注解失效原因:
- 使用该注解的方法非public
- 注解返回值只能是void 或 future
- 方法有static修饰
- 启动类没加@EnableAsync
- 在使用该注解的方法上写@Transactional是无效的,但在该方法所调用的其他方法上加@Transactional是有效的。
jwt
简答介绍:
全名:JSON Web Token。是一种开放标准,常用于身份验证及授权。
组成:Header(token 类型 及 算法名称) + Payload(包含的信息) + Signature(保信息传递过程中不被更改)
使用(不进行细节介绍,网上代码很多);
MySQL的int(1) 与 int(20)
这里做一下区分:
主要是零填充,括号里的数字是数字的位数,如果达不到,就在左侧填充数字0;
exp :
对于int(1) 和 int(4) 来说
如果保存12;
那么int(1) 的效果是 12
而 int(4) 的效果是 0012
@Configuration
public class AsyncConfig {
@Value("比较推荐从配置里读")
private Integer queueSize;
@Value("从配置里读")
private Integer coreSize;
@Value("从配置里读")
private Integer maxSize;
@Value("从配置里读")
private Integer keepAlive;
@Value("从配置里读")
private String threadNamePrefix;
public Executor asyncExecutor(){
ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor();
executor.setCorePoolSize(coreSize); // 核心线程数量
executor.setMaxPoolSize(maxSize); // 线程最大数量(包括非核心线程数量)
executor.setKeepAliveSeconds(keepAlive); // 非核心线程存活时间 单位 s
executor.setQueueCapacity(queueSize); // 任务队列的长度
executor.setThreadNamePrefix(threadNamePrefix); // 线程名字的前缀,方便观察和查找
return executor;
}
}
标签:int,每日,private,一记,线程,Value,executor,注解
From: https://www.cnblogs.com/strind/p/17934683.html