XXL-JOB详解(整合springboot)保姆级教程

news2024/11/26 20:23:28

文章目录

  • XXL-JOB简介
    • XXL-JOB是什么
    • 为什么需要任务调度平台,而不用传统的 Timer 与 Quartz
    • 为什么选择XXL-JOB,不选择elasticjob
  • ==学习之前必看,少走很多弯路==
  • 安装XXL-JOB
    • 一、源码编译(Windows)
      • 1、拉取源码:[xxl-job: 一个分布式任务调度平台](https://gitee.com/xuxueli0323/xxl-job?_from=gitee_search)
      • 2、导入IDEA,查看一下目录
      • 3、初始化数据库,配置数据库连接信息(在本地导入上图中的sql文件,并把配置文件给改好)
      • 4.1、编译运行
      • 4.2、jar包运行(这样就可以直接部署到Linux服务器上了)
        • (1)打包
        • (2)在xxl-job-admin打开jar包目录
        • (3)打开cmd,使用`java -jar xxl-job-admin-2.4.0-SNAPSHOT.jar`命令
        • (4)访问`http://localhost:8080/xxl-job-admin/toLogin`
    • 二、Docker安装(Linux)
      • 1、初始化数据库(把数据库安装到Linux服务器)(当然你有更好的方式最好,比如我觉得宝塔就非常的快,但这里我就带大家再熟悉一下mysql的知识点)
        • (1)、上传sql文件到linux服务器中(使用工具:宝塔面板、filezilla、Xftp都可以)
        • (2)、在mysql中创建`xxl-job`的表
        • (3)、mysql创建新用户并授权,开放权限允许其他ip访问(因为docker容器与宿主机是分开的,所有相当于是用外网连接的mysql)
          • 方法一:把root用户放开给所有人使用,不推荐,不安全
          • 方法二:创建新用户并授权
      • 2、docker启动xxl-job
        • (1)、拉取镜像(可以跳过,因为直接run的话也可以拉取镜像)
        • (2)、执行命令
        • (3)、查看docker运行状态
        • (4)、开放4090端口,记得开放mysql的3306端口哦
          • 方法一:
          • 方法二:
          • 方法三:==推荐==
          • 方法四:
        • (5)、访问 `http://ip地址:4090/xxl-job-admin`
    • PS:如果要修改 XXL-JOB 账号密码的话,可以先在右上角点击修改密码(因为密码是加密的,直接改数据库话,要按照他的规格来整理,很麻烦),账号的话就在数据库里面修改就好了
  • 使用XXL-JOB(集成SpringBoot)(==必须两个服务都在本地,或者都在服务器端==)
    • SpringBoot配置:
      • 一、导入maven依赖
      • 二、配置yaml
      • 三、XxlJobConfig配置类
      • 四、Demo.java
    • XXL-JOB配置(与上文的yaml文件结合着看)
      • 一、看一下自己的 IPV4 地址:cmd中使用`ipconfig`
      • 二、配置执行器
      • 三、配置任务管理(配合Demo.java看)Cron表达式我放最后了
      • 四、测试
      • 五、查看运行结果
  • Cron生成器(一般不自己写,所以只需要稍微了解下就行):[在线Cron表达式生成器)](http://cron.ciding.cc/)
    • Cron学习:
  • 如果本文带给了你帮助,请点个赞吧
  • 参考文章:

XXL-JOB简介

有兴趣的小伙伴可以去看一下他的官网:分布式任务调度平台XXL-JOB (xuxueli.com)

在这里插入图片描述

XXL-JOB是什么

XXL-JOB是一个分布式任务调度平台,其核心设计目标是开发迅速、学习简单、轻量级、易扩展。现已开放源代码并接入多家公司线上产品线,开箱即用。

为什么要叫 XXL 呢?答:是因为他的作者的名字叫许雪里,使用了名字的缩写

分布式任务调度平台是什么呢?答:一个定时任务实现方案

在平时的业务场景中,经常有一些场景需要使用定时任务,比如:

时间驱动的场景:某个时间点发送优惠券,发送短信等等。批量处理数据:批量统计上个月的账单,统计上个月销售数据等等。固定频率的场景:每隔5分钟需要执行一次。所以定时任务在平时开发中并不少见,而且对于现在快速消费的时代,每天都需要发送各种推送,消息都需要依赖定时任务去完成,

为什么需要任务调度平台,而不用传统的 Timer 与 Quartz

在Java中,传统的定时任务实现方案,比如Timer,Quartz等都或多或少存在一些问题:

  • 不支持集群、不支持统计、没有管理平台、没有失败报警、没有监控等等而且在现在分布式的架构中,有一些场景需要分布式任务调度:

  • 同一个服务多个实例的任务存在互斥时,需要统一的调度。

  • 任务调度需要支持高可用、监控、故障告警。

  • 需要统一管理和追踪各个服务节点任务调度的结果,需要记录保存任务属性信息等。

显然传统的定时任务已经不满足现在的分布式架构,所以需要一个分布式任务调度平台,目前比较主流的是elasticjob和xxl-job。

为什么选择XXL-JOB,不选择elasticjob

跟xxl-job不同的是,elasticjob是采用zookeeper实现分布式协调,实现任务高可用以及分片。

  • xxl-job环境依赖于mysql,elasticjob依赖于ZooKeeper,这也是最大的不同。

  • elasticjob是无中心化的,通过ZooKeeper的选举机制选举出主服务器,如果主服务器挂了,会重新选举新的主服务器。因此elasticjob具有良好的扩展性和可用性,但是使用和运维有一定的复杂;xxl-job则相反,是通过一个中心式的调度平台,调度多个执行器执行任务,调度中心通过DB锁保证集群分布式调度的一致性,这样扩展执行器会增大DB的压力,但是如果实际上这里数据库只是负责任务的调度执行。但是如果没有大量的执行器的话和任务的情况,是不会造成数据库压力的。实际上大部分公司任务数,执行器并不多(虽然面试经常会问一些高并发的问题)。

相对来说,xxl-job中心式的调度平台轻量级,开箱即用,操作简易,上手快,与SpringBoot有非常好的集成,而且监控界面就集成在调度中心,界面又简洁,对于企业维护起来成本不高,还有失败的邮件告警等等。这就使很多企业选择xxl-job做调度平台。

学习之前必看,少走很多弯路

我先讲一下xxl-job的运行原理(我自己的理解):xxl-job是一个网页,用来处理注册在里面的请求,并每过多长的时间(自己设置)就会传递一个值给springboot,这样就会出现一个问题:xxl-job要在局域网下才能连接成功。

向下面的docker安装方法,就是典型的例子,本地的服务(springboot)是连接不上服务器端的

为什么?:很简单个理由就是,在同一个网段下(本地),xxl-job可以给本地服务(springboot)发送服务;但如果xxl-job是在服务器上,那么你能跟他通信,但他不能给你通信,意思就是他ping你的ip是ping不通的

解决方法1:先在本地做测试的环境,服务器上的也做一样的配置,本地把服务(springboot)打包后,上传服务器,那么两个服务器直接就可以建立联系,或者上传到同一服务器上,组成服务器的本地环境

解决方法2:进入服务器上的xxl-job访问不了本地的,是因为本地不能被外网访问,那么就用内网穿透工具,让外网服务器可以访问本地端口就行

安装XXL-JOB

在这里我讲两种安装方式:

  • 源码编译(Windows)
  • Docker安装(Linux)

一、源码编译(Windows)

1、拉取源码:xxl-job: 一个分布式任务调度平台

2、导入IDEA,查看一下目录

在这里插入图片描述

3、初始化数据库,配置数据库连接信息(在本地导入上图中的sql文件,并把配置文件给改好)

在这里插入图片描述

在这里插入图片描述

4.1、编译运行

访问http://localhost:8080/xxl-job-admin/toLogin

进入管理页面。默认账号/密码:admin/123456。

在这里插入图片描述

4.2、jar包运行(这样就可以直接部署到Linux服务器上了)

不知道怎么做的朋友可以看(两者选其一看就行,第二种方法比较小白,我相信学到xxl-job的朋友这些都可以了解过,如果忘记了,看第一篇就好了):

使用Linux命令行发布springboot、javaWeb项目_我认不到你的博客-CSDN博客_linux springboot jar 发布

宝塔搭建SSM(Web项目也一样)和Springboot项目,超详细图解_我认不到你的博客-CSDN博客_宝塔怎么部署ssm redis项目

在配置好mysql的情况下,打成jar包,使用java -jar jar包名字运行。

(1)打包

在这里插入图片描述

(2)在xxl-job-admin打开jar包目录

在这里插入图片描述

(3)打开cmd,使用java -jar xxl-job-admin-2.4.0-SNAPSHOT.jar命令

在这里插入图片描述

(4)访问http://localhost:8080/xxl-job-admin/toLogin

在这里插入图片描述

二、Docker安装(Linux)

不知道怎么安装docker的小伙伴可以看看这篇:Linux(CentOS 7)安装Docker和Docker Compose,并配置docker镜像_我认不到你的博客-CSDN博客

1、初始化数据库(把数据库安装到Linux服务器)(当然你有更好的方式最好,比如我觉得宝塔就非常的快,但这里我就带大家再熟悉一下mysql的知识点)

(1)、上传sql文件到linux服务器中(使用工具:宝塔面板、filezilla、Xftp都可以)

(2)、在mysql中创建xxl-job的表

# 一、登录
# 登录mysql方式1  -p 后面不要有空格!!!!!!!!!!!!!!!!!!!!
mysql -u用户名 -p密码
# 登录mysql方式2 
mysql -u用户名 -p # 回车后填写密码


# 二、创建字符集为 utf8mb4 的数据表 别忘了 ; !!!!!!!!!!!!!!!!!!!!!
CREATE DATABASE `xxl_job` DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
# 三、查看表
SHOW DATABASES;

# 成功案例
# mysql> CREATE DATABASE `xxl-job` DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
# Query OK, 1 row affected (0.04 sec)
# 
# mysql> SHOW DATABASES;
# +--------------------+
# | Database           |
# +--------------------+
# | information_schema |
# | mysql              |
# | performance_schema |
# | sql120_48_77_24    |
# | sys                |
# | xxl-job            |
# +--------------------+
# 6 rows in set (0.00 sec)

# 四、把sql导入
# 1、进入指定数据库
use xxl-job;
# 2、选中导入路径 source /路径/tables_xxl_job.sql; 
source /www/wwwroot/tables_xxl_job.sql;
# 3、查看是否导入成功
show tables;

#成功案例
# mysql> show tables;
# +--------------------+
# | Tables_in_xxl_job  |
# +--------------------+
# | xxl_job_group      |
# | xxl_job_info       |
# | xxl_job_lock       |
# | xxl_job_log        |
# | xxl_job_log_report |
# | xxl_job_logglue    |
# | xxl_job_registry   |
# | xxl_job_user       |
# +--------------------+
# 8 rows in set (0.00 sec)

# 五、退出 mysql 编辑:键盘的 Ctrl+D
Ctrl+D

(3)、mysql创建新用户并授权,开放权限允许其他ip访问(因为docker容器与宿主机是分开的,所有相当于是用外网连接的mysql)

方法一:把root用户放开给所有人使用,不推荐,不安全
mysql> show databases;
mysql> use mysql;
mysql> update user set host = '%'  where user = 'root';
mysql> select hosh,user from user;
mysql> exit
方法二:创建新用户并授权

① 创建用户:CREATE USER 'xxl'@'%' IDENTIFIED BY '123456';

# 创建用户
mysql> CREATE USER 'username'@'host' IDENTIFIED BY 'password';
# 例子 dog 用户供所有人访问
mysql> CREATE USER 'xxl'@'%' IDENTIFIED BY '123456';

说明: username:你将创建的用户名
host:指定该用户在哪个主机上可以登陆,如果是本地用户可用localhost,如果想让该用户可以从任意远程主机登陆,可以使用通配符%
password:该用户的登陆密码,密码可以为空,如果为空则该用户可以不需要密码登陆服务器

② 授权:GRANT ALL ON xxl_job.* TO 'xxl'@'%';

# 授权
mysql> GRANT privileges ON databasename.tablename TO 'username'@'host' 
# 例子
mysql> GRANT SELECT, INSERT ON test.user TO 'pig'@'%';
mysql> GRANT ALL ON *.* TO 'pig'@'%';

说明: privileges:用户的操作权限,如SELECT,INSERT,UPDATE等,如果要授予所的权限则使用ALL
databasename:数据库名 tablename:表名,如果要授予该用户对所有数据库和表的相应操作权限则可用表示,如.*

③ 完成用户的创建后,请记得刷新系统权限表;

mysql> flush privileges;

2、docker启动xxl-job

(1)、拉取镜像(可以跳过,因为直接run的话也可以拉取镜像)

docker pull xuxueli/xxl-job-admin:2.3.0

(2)、执行命令

docker run -d --name xxl-job-admin -p 4090:8080 \
-e PARAMS="\
--spring.datasource.url=jdbc:mysql://ip地址:3306/xxl_job?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true&serverTimezone=Asia/Shanghai \
--spring.datasource.username=xxl \
--spring.datasource.password=123456" \
-v /usr/local/xxl-job/admin/logs:/data/applogs \
--privileged=true \
--name xxl-job \
xuxueli/xxl-job-admin:2.3.0

(3)、查看docker运行状态

[root@instance-yusr6p10 ~]# docker ps
CONTAINER ID   IMAGE          COMMAND                  CREATED              STATUS              PORTS            NAMES
ae7a23e761d9   xuxueli/xxl-job-admin:2.3.0   "sh -c 'java -jar $J…"   About a minute ago   Up About a minute   0.0.0.0:4090->8080/tcp, :::4090->8080/tcp   xxl-job-admin

(4)、开放4090端口,记得开放mysql的3306端口哦

方法一:
#  关闭防火墙;不推荐
systemctl top firewalld
方法二:

命令含义:

–zone #作用域

–add-port=1935/tcp #添加端口,格式为:端口/通讯协议

–permanent #永久生效,没有此参数重启后失效

# 1、开启防火墙
systemctl start firewalld
# 2、开放指定端口(比如4090端口)
firewall-cmd --zone=public --add-port=4090/tcp --permanent
# 3、重启防火墙
firewall-cmd --reload
# 4、查看端口号
netstat -ntlp   #查看当前所有tcp端口·
netstat -ntulp |grep 1935   #查看所有1935端口使用情况·
方法三:推荐
# 开放4090端口 
/sbin/iptables -I INPUT -p tcp --dport 4090 -j ACCEPT
# 禁用端口
/sbin/iptables -I INPUT -p tcp --dport [port] -j DROP
# 指定ip开放端口
/sbin/iptables -I INPUT -h [ip] -p tcp --dport [port] -j ACCEPT
# 指定ip禁用端口
/sbin/iptables -I INPUT -h [ip] -p tcp --dport [port] -j DROP
# 查看现有设置
/sbin/iptables -L
# 清除现有设置
/sbin/iptables -F
方法四:
-A INPUT -m state --state NEW -m tcp -p tcp --dport 4090 -j ACCEPT
 
service iptables restart

(5)、访问 http://ip地址:4090/xxl-job-admin

在这里插入图片描述

PS:如果要修改 XXL-JOB 账号密码的话,可以先在右上角点击修改密码(因为密码是加密的,直接改数据库话,要按照他的规格来整理,很麻烦),账号的话就在数据库里面修改就好了

在这里插入图片描述

使用XXL-JOB(集成SpringBoot)(必须两个服务都在本地,或者都在服务器端

SpringBoot配置:

一、导入maven依赖

        <!-- xxl-job-core -->
        <dependency>
            <groupId>com.xuxueli</groupId>
            <artifactId>xxl-job-core</artifactId>
            <version>2.4.0-SNAPSHOT</version>
        </dependency>

二、配置yaml

xxl:
  job:
    admin:
      addresses: http://localhost:8080/xxl-job-admin
    accessToken:
    executor:
      appname: zpa-job
      #ip: 10.123.1.53
      port: 9999
      # 日志地址
      logpath: /data/applogs/xxl-job/jobhandler
      # 日志保存时间
      logretentiondays: 30

三、XxlJobConfig配置类

@Configuration
@Slf4j
public class XxlJobConfig {
 
    @Value("${xxl.job.admin.addresses}")
    private String adminAddresses;
 
    @Value("${xxl.job.executor.appname}")
    private String appName;
 
    /*@Value("${xxl.job.executor.ip}")
    private String ip;*/
 
    @Value("${xxl.job.executor.port}")
    private int port;
 
    @Value("${xxl.job.accessToken}")
    private String accessToken;
 
    @Value("${xxl.job.executor.logpath}")
    private String logPath;
 
    @Value("${xxl.job.executor.logretentiondays}")
    private int logRetentionDays;
 
 
    @Bean(initMethod = "start", destroyMethod = "destroy")
    public XxlJobSpringExecutor xxlJobExecutor() {
        log.info(">>>>>>>>>>> xxl-job config init.");
        XxlJobSpringExecutor xxlJobSpringExecutor = new XxlJobSpringExecutor();
        xxlJobSpringExecutor.setAdminAddresses(adminAddresses);
        xxlJobSpringExecutor.setAppName(appName);
        //xxlJobSpringExecutor.setIp(ip);
        xxlJobSpringExecutor.setPort(port);
        xxlJobSpringExecutor.setAccessToken(accessToken);
        xxlJobSpringExecutor.setLogPath(logPath);
        xxlJobSpringExecutor.setLogRetentionDays(logRetentionDays);
 
        return xxlJobSpringExecutor;
    }
 
}

四、Demo.java

@Component
public class XxlDemoHandler {
    @XxlJob("Demo")
    public ReturnT<String> demo(){
        String param = XxlJobHelper.getJobParam();
        XxlJobHelper.log("测试开始");
        System.out.println();
        System.out.println();
        System.out.println();
        System.out.println(param);
        System.out.println("测试完成!!!!!!!!!!!!!!!!!!!!!!!!!!!!");
        System.out.println();
        System.out.println();
        System.out.println();
        XxlJobHelper.log("测试开结束");
        return ReturnT.SUCCESS;
    }
}

XXL-JOB配置(与上文的yaml文件结合着看)

一、看一下自己的 IPV4 地址:cmd中使用ipconfig

在这里插入图片描述

二、配置执行器

在这里插入图片描述

三、配置任务管理(配合Demo.java看)Cron表达式我放最后了

在这里插入图片描述

四、测试

在这里插入图片描述

在这里插入图片描述

五、查看运行结果

springboot:

在这里插入图片描述

xxl-job:

在这里插入图片描述

在这里插入图片描述

Cron生成器(一般不自己写,所以只需要稍微了解下就行):在线Cron表达式生成器)

Cron学习:

Cron表达式简单学习

如果本文带给了你帮助,请点个赞吧

参考文章:

3千字带你搞懂XXL-JOB任务调度平台 (baidu.com)

Failed to restart iptables.service: Unit not found.

分布式调度平台启动报错:com.xxl.rpc.util.XxlRpcException: xxl-rpc request data empty. - 灰信网(软件开发博客聚合) (freesion.com)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/90127.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

NR HARQ(二) CBG HARQ-ACK codebook

这篇开始看下HARQ-ACK codebook的相关内容&#xff0c;先看CBG-based HARQ-ACK codebook。那第一个关注点就是CBG 的划分规则&#xff0c;这部分内容主要在38.213 9.1.1章节中&#xff0c;PDSCH和PUSCH 的CBG 划分规则基本是一样的&#xff0c;这里以PDSCH为例介绍。 PDSCH 和P…

MyBatis-Plus之通用枚举

系列文章目录 Mybatis-PlusSpringBoot结合运用_心态还需努力呀的博客-CSDN博客MyBaits-Plus中TableField和TableId用法_心态还需努力呀的博客-CSDN博客 MyBatis-Plus分页查询&#xff08;快速上手运用&#xff09;_心态还需努力呀的博客-CSDN博客_mybatis plus分页查询 MyBa…

CyclicBarrier 多线程处理数据

文章目录前言需求环境准备单线程处理多线程处理总结前言 开发中&#xff0c;我们经常会遇到处理批量数据&#xff0c;最后把处理成功和失败的数据结果记录下来。普通方法一个循环就可以搞定这个需求&#xff0c;但是面临大量数据单个线程去处理可能面临很大的瓶颈&#xff0c;…

怎么进行视频配音?建议收藏这些配音方法

最近我的朋友向我求助&#xff0c;他想要自己制作一个视频&#xff0c;但是视频里面有些片段需要配音&#xff0c;可是他又不想用自己的声音来配音。一方面担心容易NG&#xff0c;需要录制很多遍&#xff0c;会浪费较多的时间&#xff1b;另一方面是&#xff0c;如果视频录制和…

​单张图像三维人脸重建必备入门face3d—3DMM

作者&#xff1a;小灰灰 来源&#xff1a;投稿 编辑&#xff1a;学姐 本次的例子是将pipeline生成的图片作用于3DMM&#xff0c;重新拟合成新的图片。 load model 3DMM的表达式&#xff1a; &#x1d446;̅ ∈ &#x1d445;3&#x1d45b;是平均人脸形状&#xff0c;&#x…

国产网关apisix安装

1、安装docker 参考&#xff1a;centos7安装docker_代码手艺人老羊的博客-CSDN博客 2、下载包&#xff08;从github&#xff09; # Download the Docker image of Apache APISIX git clone https://github.com/apache/apisix-docker.git 3、安装 # Switch the current di…

单点登录设计

01 单系统登录机制 1、http无状态协议 web应用采用browser/server架构&#xff0c;http作为通信协议。http是无状态协议&#xff0c;浏览器的每一次请求&#xff0c;服务器会独立处理&#xff0c;不与之前或之后的请求产生关联&#xff0c;这个过程用下图说明&#xff0c;三…

JavaScript高级 |彻底搞懂原型对象

本文已收录于专栏⭐️ 《JavaScript》⭐️ 学习指南&#xff1a;对象的原型函数的原型new操作符将方法放原型里constructor总结梳理原型对象内存表现完结散花参考文献对象的原型 JavaScript 当中每个对象都有一个特殊的内置属性[[prototype ]] ,这个特殊的对象可以指向另外一个…

科技云报道:畅想无人化运维的AIOps,还有多远的路要走?

科技云报道原创。 在IT行业&#xff0c;运维人常常自我调侃“赚着5k的月薪&#xff0c;操着5千万的心&#xff0c;名下挂着5亿的资产”。 机房的暖通、网络、综合布线&#xff0c;系统的监控告警、故障响应等一大堆繁杂琐碎的工作&#xff0c;充斥着运维人的日常。 与开发和产…

自定义Feign的配置

SpringBoot虽然帮我们实现了自动装配&#xff0c;但是也是支持自定义配置的。 Feign运行自定义配置来覆盖默认配置&#xff0c;可以修改的默认配置如下&#xff1a; 配置Feign日志有两种方式 方式一&#xff1a;配置文件方式 1&#xff09;全局生效 feign:client:config:defa…

【愚公系列】2022年12月 Elasticsearch数据库-ELK添加SQL插件和浏览器插件(二)

文章目录前言一、ELK添加SQL插件和浏览器插件1.配置插件2.浏览器插件3.Elasticsearch术语介绍4.测试SQL插件和浏览器插件前言 下载SQL插件地址&#xff1a;https://github.com/NLPchina/elasticsearch-sql 我们选择7.15.2版本&#xff0c;ES页选择7.15.2版本把最后面的下载链…

车间调度|基于遗传算法的柔性车间调度(Matlab代码实现)

目录 1 概述 2 遗传优化算法 3 车间调度 4 运行结果 5 参考文献 6 Matlab代码实现 1 概述 调度通过合理安排生产资源,以缩短生产时间和提高资源利用率为目的,在生产系统中扮演着重要的角色。作业车间调度问题(Job-shop Schedu-ling Problem&#xff0c;JSP)是一类经典…

1996-2020年全国31省农村电力和农田水利建设相关数据

1996-2020年全国31省农村电力和农田水利建设相关数据 1、1996-2020年 2、范围&#xff1a;31省 3、指标包括&#xff1a; 乡村办水电站、装机容量、发电量、农村用电量、有效灌溉面积、旱涝保收面积、机电排灌面积、实际耕地灌溉面积、新增耕地灌溉面积、节水灌溉面积、新增…

2023年第六届先进控制,自动化与机器人国际会议(ICACAR 2023)

2023年第五届先进控制&#xff0c;自动化与机器人国际会议&#xff08;ICACAR 2023&#xff09; 重要信息 会议网址&#xff1a;www.icacar.org 会议时间&#xff1a;2023年4月14-16日 召开地点&#xff1a;中国北京 截稿时间&#xff1a;2023年2月28日 录用通知&#xf…

排序子序列

1 题目来源&#xff1a; 牛客网&#xff1a;排序子序列 2 题目描述  牛牛定义排序子序列为一个数组中一段连续的子序列,并且这段子序列是非递增或者非递减排序。牛牛有一个长度为n的整数数组A,他现在有一个任务是把数组A分为若干段排序子序列,牛牛想知道他最少可以把这个数组分…

Ashampoo Burning Studio创建可启动磁盘

Ashampoo Burning Studio创建可启动磁盘 Ashampoo的产品通常适合质量&#xff0c;但在其中&#xff0c;它是世界上最好的软件之一&#xff0c;名为Ashampoo Burning Studio。与著名的Nero程序相比&#xff0c;该软件几乎一无是处&#xff0c;所有用于制作、写入和复制光盘的软件…

Python Tutorial——模块

如果你从Python解释器中退出&#xff0c;并且再次进入&#xff0c;你会发现你以前定义的函数和变量都已经丢失了。所以&#xff0c;如果你想写一个在某种程度上更长的程序&#xff0c;使用一个文本编辑器来准备解释器的输入会使情况有所好转&#xff0c;并且使用文件代替输入来…

最简单的方式实现Zotero文件同步+坚果云在多台电脑设备之间

应用场景&#xff1a; 放假回家&#xff0c;只带了笔记本搞科研的好童靴&#xff0c;发现实验室台式机的zotero中的PDF没办法在笔记本上读取。于是探索了一下午如何不重新在网页上保存下载台式机中的PDF&#xff0c;轻松获取异地的文献。 方式一&#xff1a; 氪金付费zotero…

参数估计与假设检验

推断统计&#xff1a;研究如何利用样本数据来推断总体特征 描述统计&#xff1a;描述一组数据的特征 参数估计&#xff1a;利用样本信息估计总体特征 假设检验&#xff1a;利用样本信息判断对总体的假设是否成立 一.参数估计 就是对于总体指标的估计 估计&#xff1a;根据…

免费l2接口有多少种类型?

免费l2接口是一个预先定义的函数&#xff0c;它的目的是让开发人员和开发人员无需访问源代码&#xff0c;也无需访问源代码&#xff0c;也无需理解其内部工作。免费l2接口有多少种类型&#xff1f; 有四种类型的股票l2接口: RPC&#xff1a;通过处理(或任务)共享的数据缓冲区…