xxl-job对比其他定时任务处理器的优势

  1. 支持动态更新cron表达式
  2. 日志写入
  3. 任务失败通知
  4. 提供可视化监控
  5. 支持分布式任务

IOC的原理

项目启动的时候会扫描所有类是否包含容器化管理的注解,如果有先将类信息统一封装成BeanDefination的规范,然后通过反射机制调用空参构造函数进行实例化,然后进行依赖注入,调用初始化方法,以及postconstruct注解方法,进行aop增强,包装成bean对象后放入IOC容器中

xxxxxxxxxx public class Main {    public static volatile AtomicInteger INTEGER = new AtomicInteger(0);    public static void main(String[] args) throws InterruptedException {        // 原子类实现自增操作        for (int i = 0; i < 10; i++) {            new Thread(INTEGER::incrementAndGet).start();       }        Thread.sleep(5);        System.out.println(INTEGER.get());   }}java

1.项目启动不会扫描所有类,而是扫描包路径下带有@bean和@component类

2.不一定调用空参构造

3.依赖注入需要注意循环引用问题

4.postconstruct -> init -> 自定义init -> aop

5.放入一级缓存中Hashmap

spring和springboot的区别

有一个很好的比喻说的是springboot就像你直接购买的整机,而spring是你自己购买配件,自己组装的diy机子

  1. springboot本质就是一个基于spring的脚手架,能帮你忽略一些繁重的配置工作,包括数据库连接池、事务管理器等
  2. springboot的起步依赖也非常完善,自动帮你引入了web开发的各种依赖
  3. springboot内部还集成了tomcat,项目启动后打jar包就自动部署到tomcat上,spring还需要先打包war包,再部署到服务器上

kafka的实现机制

  1. 分为身缠在、broker、消费者
  2. 消息存储在patition中,每个topic之下有许多patition,消息写入是追加写,速度很快
  3. patition之间有主从,可以保证高可用
  4. 消费者主动pull,broker只需要记录每个patition的offset