数据采集服务ETL

注解

  • @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

启用线程池来批量执行

周期表达式

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值