注解
- @Primary
在spring中使用注解,常使用@Autowired,默认是根据类型Type来自动注入的。但有些特殊情况,对于同一个接口,可能会有几种不同的实现类,而默认只会采取其中一种的情况下@Primary就可以版主Spring来选择优先注入哪一个类。另一种做法是使用@Qualifier注解来制定一个bean的名字。
数据源
DataSource接口,作用是建立与数据库的连接,当在应用程序中访问数据库时,不必再编写连接数据库的代码,直接引用DataSource获取数据库连接对象即可。
数据源与数据库连接池
数据源建立多个数据库连接,这些数据库连接会保存在数据库连接池中,当需要访问数据库时,只要从数据库中取出空闲的数据库连接,当程序访问数据库时,数据库连接会放回数据库连接池中。
数据源DataSource与JNDI
数据源DataSource是JNDI资源的一种,就是将“Data Source”字符串名称与真正的DataSource对象绑定起来,方便获取。
数据库连接池的优势
解决使用JDBC访问数据库技术的问题:
1、频繁建立数据库连接与断开数据库库,会消耗大量的资源和时间,降低性能。
2、数据库的连接需要用户名和密码等等,这些需要一定的内存和CPU的开销。
泛型
类型擦除
java的泛型基本上都是在编译器这个层次上实现的,在生成的字节码中是不包含泛型中的类型信息的,使用泛型的时候加上类型参数,在编译器编译的时候会去掉,这个过程为类型擦除。
类型通配符
多用于类库的开发,在java源码里可以看到很多通配符的使用。通配符是用“?”代替具体的类型参数。例如 集合类接口List<?>在逻辑上是List、List等所有List<具体类型实参>的父类。
// 通配符也会进行类型擦除,即向上擦除到Object类。
// 简单来说
// <? extends T>表示该通配符所代表的类型是T类型的子类。
// <? super T> 表示该通配符所代表的类型是T类型额父类。
阿里巴巴Java开发规约规定:
泛型通配符<? extends T>作为返回值时,此写法的泛型集合不能使用add方法,而<? super T>不能使用get方法,作为接口赋值时易出错。
Comparable接口
参考:https://blog.csdn.net/tolcf/article/details/52229068
构建者设计模式
参考:https://blog.csdn.net/weixin_42615154/article/details/107609967
线程池的使用
配置线程池的Bean
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import java.util.concurrent.LinkedBlockingDeque;
import java.util.concurrent.ThreadPoolExecutor;
import java.util.concurrent.TimeUnit;
@Configuration
public class ThreadPoolConfig {
@Value("&{max-blocking-queue-size}")
private Integer queueSize;
@Bean
public ThreadPoolExecutor handlerJSONArrayThreadPool() {
int processors = Runtime.getRuntime().availableProcessors();
ThreadPoolExecutor pool = new ThreadPoolExecutor(processors, processors * 2, 1, TimeUnit.SECONDS, new LinkedBlockingDeque<>(queueSize));
return pool;
}
}
使用
int size = infos.size();
List<Future<String>> futures = new ArrayList<>(size);
for (int i = 0; i < size; i++) {
Future<String> future = pool.submit(callable);
futures.add(future);
}
mybatis执行器
参考:https://blog.csdn.net/weixin_42615154/article/details/110243053