xxljob实战总结

快速入门XXL-JOB搞定分布式调度及面试问题 一、面试题 小T同学在面试的时候,面试官出了这样一个场景题:2017年我们系统是单机部署的,那时用户量不大,单体应用能满足当前业务需求。同时系统中有大量的定时任务(扣款、计算逾期、结算)。2018年初由于业务扩张用户量暴增,为了给用户更好的用户体验,系统采用集群部署,如下图所示: 系统集群部署后,第二天收到业务部门的投诉工单,工单反馈有用户被重复扣款多次,经过定位发现扣款服务集群部署的每个节点的定时都在00:00 分执行触发了一次扣款,而在实际业务中这种问题发生是不被允许的。请问该如何解决呢?.. 阅读详情

理论相关

概述

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

几个特性:

1、简单:支持通过Web页面对任务进行CRUD操作,操作简单,一分钟上手;
2、动态:支持动态修改任务状态、启动/停止任务,以及终止运行中任务,即时生效;
3、调度中心HA(中心式):调度采用中心式设计,“调度中心”自研调度组件并支持集群部署,可保证调度中心HA;
4、执行器HA(分布式):任务分布式执行,任务"执行器"支持集群部署,可保证任务执行HA;
5、注册中心: 执行器会周期性自动注册任务, 调度中心将会自动发现注册的任务并触发执行,每30秒清理一次注册表中的无效机器。同时,也支持手动录入执行器地址;
6、弹性扩容缩容:一旦有新执行器机器上线或者下线,下次调度时将会重新分配任务;
7、路由策略:执行器集群部署时提供丰富的路由策略,包括:第一个、最后一个、轮询、随机、一致性HASH、最不经常使用、最近最久未使用、故障转移、忙碌转移等;
8、故障转移:任务路由策略选择"故障转移"情况下,如果执行器集群中某一台机器故障,将会自动Failover切换到一台正常的执行器发送调度请求。
9、阻塞处理策略:调度过于密集执行器来不及处理时的处理策略,策略包括:单机串行(默认)、丢弃后续调度、覆盖之前调度;
10、任务超时控制:支持自定义任务超时时间,任务运行超时将会主动中断任务;
11、任务失败重试:支持自定义任务失败重试次数,当任务失败时将会按照预设的失败重试次数主动进行重试;其中分片任务支持分片粒度的失败重试;
12、任务失败告警;默认提供邮件方式失败告警,同时预留扩展接口,可方便的扩展短信、钉钉等告警方式;
13、分片广播任务:执行器集群部署时,任务路由策略选择"分片广播"情况下,一次任务调度将会广播触发集群中所有执行器执行一次任务,可根据分片参数开发分片任务;
14、动态分片:分片广播任务以执行器为维度进行分片,支持动态扩容执行器集群从而动态增加分片数量,协同进行业务处理;在进行大数据量业务操作时可显著提升任务处理能力和速度。
15、事件触发:除了"Cron方式"和"任务依赖方式"触发任务执行之外,支持基于事件的触发任务方式。调度中心提供触发任务单次执行的API服务,可根据业务事件灵活触发

架构

一次的完整执行流程

qte5Nj.png

1、“调度中心”向“执行器”发送http调度请求: “执行器”中接收请求的服务,实际上是一台内嵌jetty服务器,默认端口9999;
2、“执行器”执行任务逻辑;
3、“执行器”http回调“调度中心”调度结果: “调度中心”中接收回调的服务,是针对执行器开放一套API服务;

调度中心:负责管理调度信息,按照调度配置发出调度请求,自身不承担业务代码。调度系统与任务解耦,提高了系统可用性和稳定性,同时调度系统性能不再受限于任务模块;
支持可视化、简单且动态的管理调度信息,包括任务新建,更新,删除,GLUE开发和任务报警等,所有上述操作都会实时生效,同时支持监控调度结果以及执行日志,支持执行器Failover。
调度模块早期依赖于quartz,为了精简系统降低冗余依赖,和提供系统的可控度与稳定性;现在使用选择自研调度组件,类似于一个时间轮。
XXL-JOB中“调度模块”和“任务模块”完全解耦,调度模块进行任务调度时,将会解析不同的任务参数发起远程调用,调用各自的远程执行器服务。这种调用模型类似RPC调用,调度中心提供调用代理的功能,而执行器提供远程服务的功能。
执行模块:负责接收调度请求并执行任务逻辑。任务模块专注于任务的执行等操作,开发和维护更加简单和高效;接收“调度中心”的执行请求、终止请求和日志请求等;
执行器实际上是一个内嵌的Server,默认端口9999(配置项:xxl.job.executor.port)。
在项目启动时,执行器会通过“@XxlJob”识别Spring容器中“Bean模式任务”,以注解的value属性为key管理起来。
“执行器”接收到“调度中心”的调度请求时,如果任务类型为“Bean模式”,将会匹配Spring容器中的“Bean模式任务”,然后调用其execute方法,执行任务逻辑
"bean"模式原理:每个Bean模式任务都是一个Spring的Bean类实例,它被维护在“执行器”项目的Spring容器中。任务方法需要加“@XxlJob(value=”名称”)”注解,因为“执行器”会根据该注解识别Spring容器中的任务。

qtmPv6.png

触发

  1. 早期:基于quartz.现在:timewheel时间轮,这个时间轮本质就是一个Map<Integer, List>

  2. 触发算法:
    拿到了距now 5秒内的任务列表数据:scheduleList,分三种情况处理:for循环遍历scheduleList集合

(1)对到达now时间后的任务:(任务下一次触发时间+5s<now):直接跳过不执行; 重置trigger_next_time;

(2)对到达now时间后的任务:(任务下一次触发时间<now<任务下一次触发时间+5s):线程执行触发逻辑; 若任务下一次触发时间是在5秒内, 则放到时间轮内(Map<Integer, List> 秒数(1-60) => 任务id列表);再 重置trigger_next_time

(3)对未到达now时间的任务(任务下一次触发时间>now):直接放到时间轮内;重置trigger_next_time 。

  1. 时间轮数据结构: Map<Integer, List> key是秒数(1-60) value是任务id列表,具体结构如下图 :

qtmZUH.png

一致性保证

为了避免多个服务器同时调度任务, 通过mysql悲观锁实现分布式锁(for update语句)

1 setAutoCommit(false)关闭隐式自动提交事务

2 启动事务select lock for update(排他锁)

3 读db任务信息 -> 拉任务到内存时间轮 -> 更新db任务信息

4 commit提交事务,同时会释放for update的排他锁(悲观锁)

任务处理完毕后,释放悲观锁,准备等待下一次循环。

qtmWxx.png

Springboot整合xxljob

  1. 源码获取

    首先从GitHub上面将项目clone下来,如果网络问题导致速度慢也可以从Gitee上面拉取

    GitHub地址:https://github.com/xuxueli/xxl-job

    Gitee地址:https://gitee.com/xuxueli0323/xxl-job

    下载好之后将压缩包解压,然后通过IDEA打开,将Maven编译好后项目结构如下 xxl-job-admin 是调度中心 xxl-job-core是公共依赖 xxl-job-executor-samples 各个版本的执行器,推荐使用springboot版本
    qtnpdg.png

  2. 运行doc文件下的tables_xxl_job.sql 文件 新建了八张表

xxl_job_lock:任务调度锁表;
xxl_job_group:执行器信息表,维护任务执行器信息;
xxl_job_info:调度扩展信息表: 用于保存XXL-JOB调度任务的扩展信息,如任务分组、任务名、机器地址、执行器、执行入参和报警邮件等等;
xxl_job_log:调度日志表: 用于保存XXL-JOB任务调度的历史信息,如调度结果、执行结果、调度入参、调度机器和执行器等等;
xxl_job_log_report:调度日志报表:用户存储XXL-JOB任务调度日志的报表,调度中心报表功能页面会用到;
xxl_job_logglue:任务GLUE日志:用于保存GLUE更新历史,用于支持GLUE的版本回溯功能;
xxl_job_registry:执行器注册表,维护在线的执行器和调度中心机器地址信息;
xxl_job_user:系统用户表;
  1. 配置调度中心xxl-job-admin
    需要将其配置成自己需要的调度中心,通过该工程能够以图形化的方式统一管理任务调度平台上调度任务,负责触发调度执行。
    修改调度中心配置文件:/xxl-job/xxl-job-admin/src/main/resources/application.properties

qtnnwF.md.png

注意在数据库地址哪里加上时区属性,否则乱码

spring.datasource.url=jdbc:mysql://127.0.0.1:3306/xxl_job?Unicode=true&characterEncoding=UTF-8&serverTimezone=UTC
  1. 启动XxlJobAdminApplication类,访问http://localhost:8080/xxl-job-admin 默认账户admn,密码123456 登录后进入主页面

    qtnGy6.md.png

​ qtns6P.md.png

执行器管理

参数介绍:

AppName:是每个执行器集群的唯一标示AppName, 执行器会周期性以AppName为对象进行自动注册。可通过该配置自动发现注册成功的执行器, 供任务调度时使用;

名称:执行器的名称, 因为AppName限制字母数字等组成,可读性不强, 名称为了提高执行器的可读性;

排序: 执行器的排序, 系统中需要执行器的地方,如任务新增, 将会按照该排序读取可用的执行器列表;

注册方式:调度中心获取执行器地址的方式,

自动注册:执行器自动进行执行器注册,调度中心通过底层注册表可以动态发现执行器机器地址;

手动录入:人工手动录入执行器的地址信息,多地址逗号分隔,供调度中心使用;

机器地址:"注册方式"为"手动录入"时有效,支持人工维护执行器的地址信息;

  1. 在源码 xxl-job-executor-samples 下springboot模块下jobhandler层下面新建一个自己的定时任务测试。 只是控制台输出,xxl-job有自己的日志打印。

qtnTXV.md.png

  1. 在任务管理里面新增任务,点击启动即可测试。执行器配置一般选择自动注册,会扫描出ip和port。

    任务管理参数

    参数介绍:

    执行器:任务的绑定的执行器,任务触发调度时将会自动发现注册成功的执行器, 实现任务自动发现功能; 另一方面也可以方便的进行任务分组。每个任务必须绑定一个执行器, 可在 “执行器管理” 进行设置。

    任务描述:任务的描述信息,便于任务管理;

    路由策略:当执行器集群部署时,提供丰富的路由策略,包括;
          FIRST(第一个):固定选择第一个机器;
          LAST(最后一个):固定选择最后一个机器;
          ROUND(轮询):;
          RANDOM(随机):随机选择在线的机器;
          CONSISTENT_HASH(一致性HASH):每个任务按照Hash算法固定选择某一台机器,且所有任务均匀散列在不同机器上。
          LEAST_FREQUENTLY_USED(最不经常使用):使用频率最低的机器优先被选举;
          LEAST_RECENTLY_USED(最近最久未使用):最久为使用的机器优先被选举;
          FAILOVER(故障转移):按照顺序依次进行心跳检测,第一个心跳检测成功的机器选定为目标执行器并发起调度;
          BUSYOVER(忙碌转移):按照顺序依次进行空闲检测,第一个空闲检测成功的机器选定为目标执行器并发起调度;
          SHARDING_BROADCAST(分片广播):广播触发对应集群中所有机器执行一次任务,同时系统自动传递分片参数;可根据分片参数开发分片任务;
      Cron:触发任务执行的Cron表达式;
      运行模式:
          BEAN模式:任务以JobHandler方式维护在执行器端;需要结合 “JobHandler” 属性匹配执行器中任务;
          GLUE模式(Java):任务以源码方式维护在调度中心;该模式的任务实际上是一段继承自IJobHandler的Java类代码并 “groovy” 源码方式维护,它在执行器项目中运行,可使用       @Resource/@Autowire注入执行器里中的其他服务;
          GLUE模式(Shell):任务以源码方式维护在调度中心;该模式的任务实际上是一段 “shell” 脚本;
          GLUE模式(Python):任务以源码方式维护在调度中心;该模式的任务实际上是一段 “python” 脚本;
          GLUE模式(PHP):任务以源码方式维护在调度中心;该模式的任务实际上是一段 “php” 脚本;
          GLUE模式(NodeJS):任务以源码方式维护在调度中心;该模式的任务实际上是一段 “nodejs” 脚本;
          GLUE模式(PowerShell):任务以源码方式维护在调度中心;该模式的任务实际上是一段 “PowerShell” 脚本;
      JobHandler:运行模式为 “BEAN模式” 时生效,对应执行器中新开发的JobHandler类“@JobHandler”注解自定义的value值;
      阻塞处理策略:调度过于密集执行器来不及处理时的处理策略;
          单机串行(默认):调度请求进入单机执行器后,调度请求进入FIFO队列并以串行方式运行;
          丢弃后续调度:调度请求进入单机执行器后,发现执行器存在运行的调度任务,本次请求将会被丢弃并标记为失败;
          覆盖之前调度:调度请求进入单机执行器后,发现执行器存在运行的调度任务,将会终止运行中的调度任务并清空队列,然后运行本地调度任务;
      子任务:每个任务都拥有一个唯一的任务ID(任务ID可以从任务列表获取),当本任务执行结束并且执行成功时,将会触发子任务ID所对应的任务的一次主动调度。
      任务超时时间:支持自定义任务超时时间,任务运行超时将会主动中断任务;
      失败重试次数;支持自定义任务失败重试次数,当任务失败时将会按照预设的失败重试次数主动进行重试;
      报警邮件:任务调度失败时邮件通知的邮箱地址,支持配置多邮箱地址,配置多个邮箱地址时用逗号分隔;
      负责人:任务的负责人;
      执行参数:任务执行所需的参数,多个参数时用逗号分隔,任务执行时将会把多个参数转换成数组传入;

    1. 点击执行 启动 即可查看日志和控制台

    项目中集成xxljob

    1. 在项目中引入依赖
    <dependency>
      <groupId>com.xuxueli</groupId>
      <artifactId>xxl-job-core</artifactId>
      <version>2.0.1</version>
    </dependency>
    
    

    2.将xxl-job-executor-sample-springboot这个模块下的XxlJobConfig复制一份到项目中,然后将相关配置设置好即可

qtui7D.md.png

定时任务框架xxl-job(使用、总结) 任务调度是指系统为了自动完成特定任务,在约定的特定时刻去执行任务的过程。有了任务调度即可解放更多的人力,而是由系统自动去执行任务。某电商系统需要在每天上午10点,下午3点,晚上8点发放一批优惠券。某银行系统需要在信用卡到期还款日的前三天进行短信提醒。某财务系统需要在每天凌晨0:10结算前一天的财务数据,统计汇总。12306会根据车次的不同,设置某几个时间点进行分批放票。如何实现任务调度?多线程方式,结合sleepJDK提供的API,例如:Timer、ScheduledExecutor。 阅读详情

相关推荐

SpringBoot整合XxlJob:从零构建企业级分布式任务调度平台(实战指南)

本文提供了一份SpringBoot整合XxlJob构建企业级分布式任务调度平台的实战指南。详细介绍了从零搭建调度中心、SpringBoot项目集成执行器、任务编排与管理,到分片广播、高可用部署等进阶实战的全过程,帮助开发者解决集群环境下的任务重复执行与调度难题,实现任务的集中管理与可视化监控。

weixin_29207533的博客 535

xxl-job详解

​ xxl-job是一个分布式的任务调度平台,其核心设计目标是:学习简单、开发迅速、轻量级、易扩展,现在已经开放源代码并接入多家公司的线上产品线,开箱即用。xxl是xxl-job的开发者大众点评的许雪里名称的拼音开头。​ xxl-job框架主要用于处理分布式的定时任务,其主要由调度中心和执行器组成。调度模块(调度中心):负责管理调度信息,按照调度配置发出调度请求,自身不承担业务代码。调度系统与任务解耦,提高了系统可用性和稳定性,同时调度系统性能不再受限于任务模块;

weixin_44713306的博客 12万+

SpringBoot+SpringBatch+XXLJob实战:如何优雅处理50万级数据同步(附完整代码)

本文详细介绍了如何利用SpringBoot+SpringBatch+XXLJob组合实现50万级数据的高效同步,涵盖架构设计、分区处理机制、性能优化及容错策略。通过SpringBatch的分区处理和XXLJob的分布式调度,显著提升数据同步的可靠性和性能,并附完整代码示例,助力开发者解决大规模数据同步难题。

weixin_29215815的博客 407

SpringBoot项目集成xxljob全纪录(图文详解)

XXL-JOB是一个分布式任务调度平台,其核心设计目标是开发迅速、学习简单、轻量级、易扩展。现已开放源代码并接入多家公司线上产品线,开箱即用。 本文详解介绍了SpringBoot项目集成xxlJob的全过程,代码配置,XXLJOB配置等等。

小小张自由—>张有博 2万+

XXLJob调度SpringBatch任务避坑指南:从表结构设计到监控实战

本文深入探讨了在企业级应用中整合XXL-Job与SpringBatch进行任务调度的实战经验。文章不仅提供了从表结构优化、三种集成架构模式到资源隔离的完整解决方案,还重点分享了如何基于SpringBatch元数据表构建实时监控与告警体系,并针对生产环境中常见的故障场景提供了具体的排查思路与性能优化建议,是一份全面的避坑指南。

weixin_29215391的博客 353

DataXP实战:如何用Docker+XXLJob+DataX3.0搭建企业级数据同步平台(含完整部署指南)

本文详细介绍了如何使用Docker+XXLJob+DataX3.0构建企业级数据同步平台DataXP,包含完整的部署指南和性能优化建议。通过容器化部署和分布式调度,实现高效、稳定的数据同步系统,适用于各类企业数字化转型场景。

weixin_30872337的博客 397

电商系统实战:XXLJOB在订单超时处理中的最佳实践

最近在优化公司的电商系统时,遇到了订单超时自动取消的需求。经过一番摸索,最终选择了XXLJOB作为任务调度框架,效果很不错,今天就把我的实战经验分享给大家。它内置了XXLJOB等常用中间件,可以快速搭建和部署这类系统,大大降低了开发门槛。XXLJOB的分布式特性和完善的管理界面,让这类定时任务的开发和维护变得非常简单。运营可以随时调整超时时间,非常灵活。电商系统中,用户下单后如果长时间未支付,系统需要自动取消订单释放库存。对于处理失败的订单,我们会记录到重试表,由另一个低频任务(如每小时一次)负责重试。

NightshadeRaven21的博客 529

xxljob从入门到精通-全网段最全解说

XXL-JOB特性一览 基本概念 xxljob解决的是以下几个痛点: 1) 跑批处理监控无法可视化,当前跑批的状态是:成功?失败?挂起?进度?为什么失败/原因? 2)批处理任务不可重用,特别是无法对批处理任务做:定时?重复使用?频次?其中路由调度? 3)批处理任务无法做到网格计算(特别像:websphere ibm grid computing)即批处理任务本身可以做成集群、fail over、sharding 由其是批处理任务可以做成“网格计算”这个功能,有了xxljob后你会发觉特别强大

打造全国最全的AI Agent开发知识领域的博客 1万+

xxljob实战

底层依赖没有拷过来,缺包,缺啥包,自己去导,比如下下来的xxl-job模版项目中导就行了,这个可以从gitee上面下。可视化界面就注册过来了,在可视化界面,自己新增一个任务,有手就行的可视化界面,不需要多说,连字都看不懂就可以自杀了。用到了一个指令,网上搜一下,这个要改,把自己的maven仓库的命令(maven命名,网上有,自己搜下)放进去。进入可视化界面,新增执行器,最好和配置中的执行器名字要一样,自动注册,然后它会自动注册到那里去。ps:第二个方案,自己建一个模块,其他模块直接导入这个模块就可以了。

m0_51798113的博客 869

XXLJOB定时任务管理平台实战指南

XXL-JOB是一个轻量级分布式任务调度平台,它以简单、易用、稳定、开源的特性获得IT从业者的青睐。核心概念的掌握是使用和深入开发XXL-JOB的前提。XXLJOB提供了灵活的调度策略配置,开发者可以根据实际需求自定义调度周期。例如,可以通过CRON表达式来设置复杂的调度逻辑。而调度策略的优化则涉及到任务执行效率的提升,比如合理安排任务的执行时间,避免资源竞争,以及使用XXLJOB的分片功能来实现负载均衡。

weixin_42599908的博客 1108

MEMS惯性传感器关键参数解析与误差优化策略

本文深入解析了MEMS惯性传感器的关键性能参数,如零偏稳定性、噪声与随机游走、振动整流误差等,并阐述了这些误差如何导致设备导航漂移、姿态不稳等问题。文章重点探讨了从硬件选型、系统设计到校准补偿、算法融合(如卡尔曼滤波)以及温度补偿等实战优化策略,旨在帮助工程师有效提升自动驾驶、无人机等设备的测量精度与稳定性。

weixin_28363123的博客 414

Java实战08之idea springboot 整合xxljob分布式任务调度平台

xxljob分布式任务调度平台

浪漫手机的博客 288

Ubuntu18.04 SoftRoCE安装教程

目标:创建两台Ubuntu18.04虚拟机,安装SoftRoCE环境,一台作为Server,一台作为Client,模拟RDMA通信环境,熟悉RDMA的通信方式。

GGGYL111的博客 1548

项目实战24—xxljob控制台不打印日志

1.首先,项目用到了xxljob,通过了解xxljob在项目中是如何工作的,xxljob会将日志持久化到数据库中,然后会从表中读取数据显示到控制台。遇到问题解决问题,我觉得前提是对所用的工具、技术的特性有个充分的了解,同时要有个平稳冷静的心态,逐步排查,最终解决问题。3.既然用到了数据库,这个时候也要查看数据库在项目中是如何工作的,如何发挥作用的。5.项目用到了主从数据库,问题最终定定位到了mysql主从读写不一致的问题。上面主库插入了一条数据,从库不进行同步的操作,因此判断为主从问题。

qq_44685392的博客 1023

基于STM32的家用新风系统智能控制器 | 保姆式教程 开源可复刻

本项目基于STM32F103C8T6核心控制器,完整实现了家用新风系统智能控制器的全功能开发,覆盖多传感器数据采集、双模式控制、PID调速、异常报警、掉电记忆等核心功能,全程采用保姆式无跳步教学,从硬件选型、接线、CubeMX配置、代码开发、调试排坑全流程拆解,跟着步骤一步步操作,就能顺利完成项目复刻

ZhongWeiXiang9的博客 464

【保姆级教程】不到一元32位芯片 DIY迷你时钟

基于不到一元的CH32V003F4P9芯片制作的迷你多功能时钟。

twen51的博客 1813

XxlJob 与达梦数据库集成实战:SQL 兼容性解决方案

本文详细介绍了XxlJob与达梦数据库集成的实战经验,重点解决SQL兼容性问题。通过版本选择、驱动配置、表结构适配和SQL映射文件改造等步骤,帮助开发者在国产化替代背景下实现XxlJob在达梦数据库上的稳定运行,提升分布式任务调度效率。

weixin_30839881的博客 425

反射机制——通过反射调用service中方法

需求:现在有一群service接口,有同一个方法名称,内部逻辑除了调用不同的调用自身的方法外其他基本都一致,那现在就需要一个独立的方法来勾勒出这个方法 1.SpringContextUtil package com.XXX.report.util; import org.apache.log4j.Logger; import org.springframework.beans.BeansE...

东天里的冬天 8520

【项目实战典型案例】24.xxljob控制台不打印日志排查

admin权限启动jar包后,xxljob控制台不会打印日志。root权限启动jar包后,xxljob控制台打印日志。解决问题要有全局观要从科学的角度去思考问题:先确定边界,然后遍历。

山赶着山,山山漫漫结成关 2867

【LVGL】学习笔记--(3)界面切换以及显示优化

界面切换和帧率优化

sinat_33408502的博客 1万+

从零构建PEMFC仿真模型:MATLAB/Simulink中的模块化拆解与系统集成

本文详细介绍了如何在MATLAB/Simulink环境中从零构建质子交换膜燃料电池(PEMFC)仿真模型,包括电化学模型、气体供应系统和热管理系统的模块化实现。通过多物理场耦合技巧和系统集成策略,帮助工程师和研究者高效开发PEMFC控制策略,优化性能并实现实时仿真。

weixin_29294975的博客 360

项目实战典型案例24——xxljob控制台不打印日志排查

本篇博客是对xxljob控制台不打印日志排查进行的总结和进行的改进。目的是将经历转变为自己的经验。通过博客的方式分享给大家,大家一起共同进步和提高。全局观、需要系统性学习,宏观了解xxljob可以从架构图入手:对于xxljob控制台不打印日志的排查,一开始的方向有些错误,不清楚控制台日志是持久化到数据库中,再从数据库查询出来的。日志记录的重要性:如果没有日志进行那么无法进行问题定位和解决问题。反应到工作学习上也是如此。五:升华。

理想主义的花最终会盛开在浪漫主义的土壤里,我的热情永远不会熄灭在现实的平凡之中,我们终将上岸,阳光万里。 1596

YOLOv11改进 | 注意力篇 | YOLOv11引入24年ECCV的自调制特征聚合注意力模块(SMFA),并构建C2PSA_SMFA

1.SMFA介绍1.1 摘要:基于Transformer的图像复原方法由于Transformer的自注意(self-attention,SA)特性能够更好地挖掘非局部信息,从而获得更好的高分辨率图像重建效果,因此具有重要的应用价值。然而,关键点积SA需要大量的计算资源,这限制了其在低功耗器件中的应用。此外,模拟退火机制的低通特性限制了其捕获局部细节的能力,从而导致平滑的重建结果。

tsg6698的博客 952

xxljob 日志_分布式任务调度平台XXLJOB实战图文代码详解

前段时间项目上需要用到任务调度,对比了Quartz的不足与XXL-JOB优缺点,整体上:XXL-JOB比Quartz更轻量化,更易上手,还具有可视化界面以及在任务调度、日志管理、弹性扩容缩容、执行器HA(分布式)、邮件报警、运行报表、全异步、跨平台、国际化、容器化、线程池隔离等方面更加人性化。一、源码下载地址:下载xxl-job源码xxl-job源码地址:https://...

weixin_39612220的博客 889

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

springboot3 xxljob 定时任务入门与实战

XxlJob 是一款由国内开发者许雪里(xxlmr)开源的分布式任务调度框架,基于 Java 开发,具有轻量级、高可用、易扩展、易用性强等特点,广泛应用于微服务架构下的定时任务、批量任务、异步任务调度场景。XxlJob(XXL 代表 "Xuxueli Job")是一款开源的分布式任务调度平台,旨在解决单体调度框架的单点故障、任务堆积、分布式部署困难等问题。

小郑的专栏 944

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

一行一行代码带你阅读,xxljob, 若依vue基础项目,若依vue-plus 项目,实战项目的 视频课程

本人自己录制的一行一行代码解释源码的课程,适合小白,么有阅读过源码,或者不知道咋阅读源码的小伙伴。本课程 有,视频,笔记,加了注释的源码。

一天不写代码难受的博客 1224

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

上一篇: 详解mnist数据集进行手写数字识别-tensorflow入门
下一篇: docker基于centos7镜像安装python3.7.9
高小秋
博客等级 码龄10年 60粉丝 56原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值