Elastic-Job开发指南
大多数情况下,定时任务我们一般使用quartz开源框架就能满足应用场景。但如果考虑到健壮性等其它一些因素,就需要自己下点工夫,比如:要避免单点故障,至少得部署2个节点吧,但是部署多个节点,又有其它问题,有些数据在某一个时刻只能处理一次,比如 i = i+1 这些无法保证幂等的操作,run多次跟run一次,完全是不同的效果。 对于上面的问题,我曾经自行设计过一个基于zk分布式锁的解决方案: 1、每类定时job,可以分配一个独立的标识(比如:xxx_job) 2、这类job的实例,部署在多个节点上时,每个节点启动前,向zk申请一个分布式锁(在xxx_job节点下) 3、拿到锁的实例,才允许启动定时任务(通过代码控制quartz的schedule),没拿到锁的,处于standby状态,一直监听锁的变化 4、如果某个节点挂了,分布式锁自动释放,其它节点这时会抢到锁,按上面的逻辑,就会从standby状态,转为激活状态,小三正式上位,继续执行定时job。 这个方案,基本上解决了HA和业务正确性的问题,但是美中不足的地方有2点: 1、无法充分利用机器性能,处于standby的节点,实际上只是一个备胎,平时啥也不干 2、性能不方便扩展,比如:某个job一次要处理上千万的数据,仅1个激活节点,要处理很久 好了,前戏铺垫了这么久,该请主角登场了,elastic-job相当于quartz+zk的加强版,它允许对定时任务分片,可以集群部署(每个job的"分片"会分散到各个节点上),如果某个节点挂了,该节点上的分片,会调度到其它节点上。官网上有比较详细的教程,一般情况下,使用SimpleJob这种就可以了。 使用步骤: 前提:要先添加下面二个jar的依赖
compile "com.dangdang:elastic-job-lite-core:2.1.5"
compile "com.dangdang:elastic-job-lite-spring:2.1.5"
1、自己的job要继承自SimpleJob,然后实现void execute(ShardingContext shardingContext)。
public interface SimpleJob extends ElasticJob {/*** 执行作业.** @param shardingContext 分片上下文*/void execute(ShardingContext shardingContext);
}
注意这里面有一个shardingContext参数,看下源码:
/*** 分片上下文.* * @author zhangliang*/
@Getter
@ToString
public final class ShardingContext {/*** 作业名称.*/private final String jobName;/*** 作业任务ID.*/private final String taskId;/*** 分片总数.*/private final int shardingTotalCount;/*** 作业自定义参数.* 可以配置多个相同的作业, 但是用不同的参数作为不同的调度实例.*/private final String jobParameter;/*** 分配于本作业实例的分片项.*/private final int shardingItem;/*** 分配于本作业实例的分片参数.*/private final String shardingParameter;public ShardingContext(final ShardingContexts shardingContexts, final int shardingItem) {jobName = shardingContexts.getJobName();taskId = shardingContexts.getTaskId();shardingTotalCount = shardingContexts.getShardingTotalCount();jobParameter = shardingContexts.getJobParameter();this.shardingItem = shardingItem;shardingParameter = shardingContexts.getShardingItemParameters().get(shardingItem);}
}
这里面有2个很重要的属性:shardingTotalCount 分片总数(比如:2)、shardingItem 当前分片索引(比如:1),前面提到的性能扩容,就可以根据2个参数进行简单的处理,假设在电商系统中,每天晚上有个定时任务,要统计每家店的销量。商家id一般在表设计上是一个自增数字,如果总共2个分片(注:通常也就是部署2个节点),可以把 id为奇数的放到分片0,id为偶数的放到分片1,这样2个机器各跑一半,相对只有1台机器而言,就快多了。
伪代码如下:
public class TestJob implements SimpleJob {@Overridepublic void execute(ShardingContext shardingContext) {int shardIndx = shardingContext.getShardingItem();if (shardIndx == 0) {//处理id为奇数的商家} else {//处理id为偶数的商家}}
}
这个还可以进一步简化,如果使用mysql查询商家列表,mysql中有一个mod函数,直接可以对商家id进行取模运算
select * from shop where mod(shop_id,2)=0
如果把上面的2、0换成参数,mybatis中类似这样:
select * from shop where mod(shop_id,#{shardTotal})=#{shardIndex}
这样逻辑就转换到sql中处理了,java代码中把参数传进来就行,连if都可以省掉。
2、接下来看看如何配置
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns:reg="http://www.dangdang.com/schema/ddframe/reg"xmlns:job="http://www.dangdang.com/schema/ddframe/job"xsi:schemaLocation="http://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans.xsdhttp://www.dangdang.com/schema/ddframe/reghttp://www.dangdang.com/schema/ddframe/reg/reg.xsdhttp://www.dangdang.com/schema/ddframe/jobhttp://www.dangdang.com/schema/ddframe/job/job.xsd"><reg:zookeeper id="regCenter" server-lists="${zk_address}" namespace="my-xxx-job"base-sleep-time-milliseconds="1000"max-sleep-time-milliseconds="3000" max-retries="3"/><job:simple id="xxxJob" class="com.cnblogs.yjmyzz.XXXJob" registry-center-ref="regCenter"cron="${xxxJob_cornExpress}"sharding-total-count="2" sharding-item-parameters="0=A,1=B"/>...
</beans>
与常规的spring配置几乎没啥区别,几个要点如下:
a) 因为分片调度是基于zk的,所以要先配置zk注册中心,其中${zk_address}大家可以改成实际的zk地址列表,比如:10.x.x.1:2181,10.x.x.2:2181,10.x.x.3:2181
b) 每个job中的corn属性,就是quartz中的cornExpress表达式,然后sharding-total-count即总分片数,而sharding-item-parameters则是指定每个分片中的具体参数
(注:刚才的电商每天晚上算销量,这个case其实只用到了分片索引、分片数,并不需要参数,所以这里随便配置一个类似0=A, 1=B就可以了,如果有些业务场景,希望在知道分片索引的同时,还希望额外传一些参数进来,就可以在这里配置你希望的参数,然后在execute中,也能读到相应的参数)
3、控制台
elastic-job还提供了一个不错的UI控制台,项目源代码git clone到本地,mvn install就能得到一个elastic-job-lite-console-${version}.tar.gz的包,解压,然后运行里面的bin/start.sh 就能跑起来,界面类似如下:
通过这个控制台,可以动态调整每个定时任务的触发时间(即:cornExpress)。详情可参考官网文档-运维平台部分。
4、与spring-cloud/spring-boot的整合
如果是传统的spring项目,按上面的步骤就可以无缝整合了,如果是spring-cloud/spring-boot,则稍微要复杂点。
由于spring-boot倡导零xml配置,所以大部分配置就用代码替代了,先定义一个elasticJob的配置类:
@Data
@Configuration
public class ElasticJobConfig {@Value("${rxQuartz.app.zkAddress}")private String zkNodes;@Value("${rxQuartz.app.namespace}")private String namespace;@Beanpublic ZookeeperConfiguration zkConfig() {return new ZookeeperConfiguration(zkNodes, namespace);}@Bean(initMethod = "init")public ZookeeperRegistryCenter regCenter(ZookeeperConfiguration config) {return new ZookeeperRegistryCenter(config);}
}
上面这段代码,主要是解决zk注册中心的注入问题,然后各种xxxJob,由于要让spring自动注入,需要打上component注解
@Component("xxxJob")
public class XXXJob extends AbstractJob {...
}
然后在真正要用的地方,把他们组装起来
import com.dangdang.ddframe.job.api.simple.SimpleJob;
import com.dangdang.ddframe.job.config.JobCoreConfiguration;
import com.dangdang.ddframe.job.config.simple.SimpleJobConfiguration;
import com.dangdang.ddframe.job.lite.api.JobScheduler;
import com.dangdang.ddframe.job.lite.config.LiteJobConfiguration;
import com.dangdang.ddframe.job.lite.spring.api.SpringJobScheduler;
import com.dangdang.ddframe.job.reg.zookeeper.ZookeeperRegistryCenter;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;/*** @author: yangjunming*/
@Configuration
public class ElasticJobs {@Autowired@Qualifier("xxxJob")public SimpleJob xxxJob;@Autowiredprivate ZookeeperRegistryCenter regCenter;@Bean(initMethod = "init")public JobScheduler settlementJobScheduler(@Autowired @Qualifier("xxxJob") SimpleJob simpleJob,@Value("${xxxJob.billCronExpress}") final String cron,@Value("${xxxJob.shardingCount}") int shardingCount,@Value("${xxxJob.shardingItemParameters}") String shardingItemParameters) {return new SpringJobScheduler(simpleJob, regCenter, getLiteJobConfiguration(simpleJob.getClass(), cron, shardingCount, shardingItemParameters));}private LiteJobConfiguration getLiteJobConfiguration(final Class<? extends SimpleJob> jobClass, final String cron, final int shardingTotalCount, final String shardingItemParameters) {return LiteJobConfiguration.newBuilder(new SimpleJobConfiguration(JobCoreConfiguration.newBuilder(jobClass.getName(), cron, shardingTotalCount).shardingItemParameters(shardingItemParameters).build(), jobClass.getCanonicalName())).overwrite(true).build();}
}
job:simple命名空间属性详细说明
属性名 | 类型 | 是否必填 | 缺省值 | 描述 |
---|---|---|---|---|
id | String | 是 | 作业名称 | |
class | String | 否 | 作业实现类,需实现ElasticJob 接口,脚本型作业不需要配置 | |
registry-center-ref | String | 是 | 注册中心Bean 的引用,需引用reg:zookeeper 的声明 | |
cron | String | 是 | cron 表达式,用于配置作业触发时间 | |
sharding-total-count | int | 是 | 作业分片总数 | |
sharding-item-parameters | String | 否 | 分片序列号和参数用等号分隔,多个键值对用逗号分隔 分片序列号从 0 开始,不可大于或等于作业分片总数如: 0=a,1=b,2=c | |
job-parameter | String | 否 | 作业自定义参数 可以配置多个相同的作业,但是用不同的参数作为不同的调度实例 | |
monitor-execution | boolean | 否 | true | 监控作业运行时状态 每次作业执行时间和间隔时间均非常短的情况,建议不监控作业运行时状态以提升效率。因为是瞬时状态,所以无必要监控。请用户自行增加数据堆积监控。并且不能保证数据重复选取,应在作业中实现幂等性。 每次作业执行时间和间隔时间均较长的情况,建议监控作业运行时状态,可保证数据不会重复选取。 |
monitor-port | int | 否 | -1 | 作业监控端口 建议配置作业监控端口, 方便开发者dump作业信息。 使用方法: echo “dump” | nc 127.0.0.1 9888 |
max-time-diff-seconds | int | 否 | -1 | 最大允许的本机与注册中心的时间误差秒数 如果时间误差超过配置秒数则作业启动时将抛异常 配置为 -1 表示不校验时间误差 |
failover | boolean | 否 | false | 是否开启失效转移 仅 monitorExecution 开启,失效转移才有效 |
misfire | boolean | 否 | true | 是否开启错过任务重新执行 |
job-sharding-strategy-class | String | 否 | true | 作业分片策略实现类全路径 默认使用平均分配策略 详情参见:作业分片策略 |
description | String | 否 | 作业描述信息 | |
disabled | boolean | 否 | false | 作业是否禁止启动 可用于部署作业时,先禁止启动,部署结束后统一启动 |
overwrite | boolean | 否 | false | 本地配置是否可覆盖注册中心配置 如果可覆盖,每次启动作业都以本地配置为准 |
job:dataflow命名空间属性详细说明
job:dataflow命名空间拥有job:simple命名空间的全部属性,以下仅列出特有属性
属性名 | 类型 | 是否必填 | 缺省值 | 描述 |
---|---|---|---|---|
process-count-interval-seconds | int | 否 | 300 | 统计作业处理数据数量的间隔时间 单位:秒 |
concurrent-data-process-thread-count | int | 否 | CPU核数*2 | 同时处理数据的并发线程数 不能小于1 仅 ThroughputDataFlow 作业有效 |
fetch-data-count | int | 否 | 1 | 每次抓取的数据量 |
streaming-process | boolean | 否 | false | 是否流式处理数据
|
job:script命名空间属性详细说明,基本属性参照job:simple命名空间属性详细说明
job:script命名空间拥有job:simple命名空间的全部属性,以下仅列出特有属性
属性名 | 类型 | 是否必填 | 缺省值 | 描述 |
---|---|---|---|---|
script-command-line | String | 否 | 脚本型作业执行命令行 |
job:listener命名空间属性详细说明
job:listener
必须配置为job:bean
的子元素
属性名 | 类型 | 是否必填 | 缺省值 | 描述 |
---|---|---|---|---|
class | String | 是 | 前置后置任务监听实现类,需实现ElasticJobListener 接口 | |
started-timeout-milliseconds | long | 否 | Long.MAX_VALUE | AbstractDistributeOnceElasticJobListener型监听器,最后一个作业执行前的执行方法的超时时间 单位:毫秒 |
completed-timeout-milliseconds | long | 否 | Long.MAX_VALUE | AbstractDistributeOnceElasticJobListener型监听器,最后一个作业执行后的执行方法的超时时间 单位:毫秒 |
reg:bean命名空间属性详细说明
属性名 | 类型 | 是否必填 | 缺省值 | 描述 |
---|---|---|---|---|
id | String | 是 | 注册中心在Spring 容器中的主键 | |
server-lists | String | 是 | 连接Zookeeper 服务器的列表包括IP地址和端口号 多个地址用逗号分隔 如: host1:2181,host2:2181 | |
namespace | String | 是 | Zookeeper 的命名空间 | |
base-sleep-time-milliseconds | int | 否 | 1000 | 等待重试的间隔时间的初始值 单位:毫秒 |
max-sleep-time-milliseconds | int | 否 | 3000 | 等待重试的间隔时间的最大值 单位:毫秒 |
max-retries | int | 否 | 3 | 最大重试次数 |
session-timeout-milliseconds | int | 否 | 60000 | 会话超时时间 单位:毫秒 |
connection-timeout-milliseconds | int | 否 | 15000 | 连接超时时间 单位:毫秒 |
digest | String | 否 | 无验证 | 连接Zookeeper 的权限令牌缺省为不需要权限验证 |
如若内容造成侵权/违法违规/事实不符,请联系编程学习网邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
相关文章
- 【Android错误解决方案】解决java.lang.NoSuchMethodError: No static method getFont(Landroid/content/Context;....
文章目录【Android错误解决方案】解决java.lang.NoSuchMethodError: No static method getFont(Landroid/content/Context;....dependencies_apk.apk)----终极解决方案问题描述详细问题描述:解决方案 【Android错误解决方案】解决java.lang.NoSuchMethodError: No static meth…...
2024/3/19 22:15:21 - 2020-8-20 第一篇记录学习
LINUX安装配置(详细)版权声明:本文为转载文章,原文出处链接和如下。本文链接:https://blog.csdn.net/xu_benjamin/article/details/80998604LINUX安装配置(一)第一节, 目录 1、入门篇安装篇 2、进程篇 3、输入法篇 4、网络篇 5、安装内猫,上网篇 7、DNS服务器、局限网服…...
2024/3/23 18:01:40 - PPPOE技术详解
PPPOE技术详解PPPOE技术特点 PPPOE技术特点 PPPoE是利用以太网发送PPP包的传输方法和支持在同一以太网上建立多个PPP连接的接入技术。其结合了以太网和PPP连接的综合属性。 以太网是一种广播网络,在同一个以太网中,是很难管理两个主机的会话(比如异常下线,流量、在线时长等…...
2024/3/20 6:32:06 - 蓝牙定位技术使疫情期间接触更安全
随着疫情的进一步蔓延,蓝牙实时定位服务可以跟踪人员和物体的移动,监控进出,并改善生物控制和便利性。联系人跟踪 随着我们的前进,控制大流行的关键方面是接触者追踪。当某人的COVID-19测试呈阳性时,联系追踪者必须追踪过去两个星期与他们亲密接触的所有人,并安排对这些人…...
2024/3/27 23:06:51 - 网易考拉没有了,网易严选还会远吗?
文|陈曦来源 | 螳螂财经(ID:TanglangFin)时隔两个月,丁磊又直播带货了。8月15日,丁磊在抖音第二次为网易旗下电商平台严选带货,这次丁磊选择的搭档是大热综艺节目《乘风破浪的姐姐》中的两位姐姐——吴昕和金莎。尽管蹭上了一波姐姐们的热度,但这次丁磊抖音带货“二公”成…...
2024/3/19 22:45:10 - 轻型网络知识点
文章综述 一个文章综述,侵删 常用的模型压缩技术有: (1)奇异值分解(singular value decomposition (SVD)) (2)网络剪枝(Network Pruning):使用网络剪枝和稀疏矩阵 (3)深度压缩(Deep compression):使用网络剪枝,数字化和huffman编码 (4)硬件加速器(hardware a…...
2024/3/26 2:16:53 - FlashFXP,flashfxp连接失败
不同的站点服务器的设置参数不同,空闲连接自动断开的时间间隔值可能也不同,如果站点服务器设置的自动断开连接的时间值短就会出现频繁的断开连接现象。这时可以通过设置FlashFXP让其在空闲时自动向服务器发送指令来保持连接:单击菜单“选项→参数设置”,然后在打开的窗口中…...
2024/3/19 19:43:40 - Greenplum SQL问题重现利器 Minirepo
大家在使用Greenplum的过程中可能会遇到跑了某种SQL而导致数据库PANIC问题,或者数据库的执行计划并没有那么合理而导致SQL性能过慢的问题。 这样的时候,作为商业用户,可以联系VMware技术支持部门来获取帮助。Greenplum SQL 问题重现利器Minirepo可以帮我们断定问题是执行计划…...
2024/3/23 10:32:24 - 狂神说 Redis笔记
狂神说 Redis 一、Nosql概述 为什么使用Nosql1、单机Mysql时代90年代,一个网站的访问量一般不会太大,单个数据库完全够用。随着用户增多,网站出现以下问题数据量增加到一定程度,单机数据库就放不下了 数据的索引(B+ Tree),一个机器内存也存放不下 访问量变大后(读写混合)…...
2024/3/19 20:55:03 - MPLS由何而来?—Vecloud微云
90年代中期,随着IP技术的快速发展,Internet数据海量增长。但由于硬件技术存在限制,基于最长匹配算法的IP技术必须使用软件查找路由,转发性能低下,因此IP技术的转发性能成为当时限制网络发展的瓶颈。 为了适应网络的发展,ATM(Asynchronous Transfer Mode)技术应运而生。…...
2024/3/27 0:08:21 - 2020上半年中国高校公众号影响力排行榜
2020已然过半,因为新冠疫情,我们曾被迫经历了很长一段时间的停工停课。对广大学生们来说,这可能是有史以来第一次体验居家隔离上网课,有的甚至寒假连着暑假,整整一个学期都没有回过校园。对备战高考的考生来说,疫情的影响,让原本的高考推迟了一个月举行。现在高考顺利落…...
2024/3/23 19:38:42 - 《三十而已》告诉我们:在职场,混得越好,小人越多
作者丨布呐呐来源:视觉志(ID:iiidaily)推荐:PMP项目管理圈《三十而已》完结了,这部剧围绕着女性群体,讨论了家庭、婚姻等很多社会话题。最完美的全职主妇顾佳卖房抵债,带着孩子去茶厂重新生活;沪漂王漫妮完成对赌协议协议后,放弃店长职位,出国留学;单纯的本地女孩钟…...
2024/3/26 5:15:44 - 操作系统基础篇
一、概览 1.What&Why操作系统是管理计算机硬件和软件资源的计算机程序。 管理配置内存、决定资源供需顺序、控制输入输出; 提供让用户和系统交互的操作界面2.操作系统的基本功能统一管理计算机资源(处理器、IO设备、存储器、文件) 实现了对计算机资源的抽象,用户无需面…...
2024/3/20 0:25:08 - 如何成为一个合格的聚合支付代理商
2020年,注定是不平凡的一年,上半年的国内疫情,打乱了很多人的生活和工作节奏,让无数人,背负着生活的重担,艰难前行,失业的人越来越多,往昔热闹的街市,如今也变得萧条起来,大环境的异常,让我们不得不思考未来的出路在哪里,让更多的人在从业和择业时更加慎重,今天,…...
2024/3/19 23:31:12 - laya教程
laya商业级3d游戏开发大家好,我是杰,先介绍下自己 我是游戏开发前端程序,6年开发经验 2014-2018年从事U3D开发 2018年至今从事小游戏开发(LAYA引擎) 在小游戏领域单品注册用户超过600万的有4款 参与过的作品: 《怪物逃X》《空中飞X》《水枪奇X》 《滑板冲冲X》《蛋糕飞X》《…...
2024/3/19 19:47:26 - Node.js坑点杂谈(一)windows如何简单粗暴的安装和使用Redis
Node.js坑点杂谈(一)windows如何简单粗暴的安装和使用Redis 一、写在开头 依旧不会科学上网,从github下载redis就成了奢望,从redis官网却只能下载到Linux的。注意,原则上不推荐通过windows来使用redis(微软到现在也只是给windows提供了3.2的版本)。 二、解决问题 1.下载…...
2024/3/19 20:57:40 - Logstash输入之File、Redis、Filebeats、Kafka
logstash输入File、redis、filebeats、kafka 文章目录logstash输入File、redis、filebeats、kafkaLogstash输入之FileFile输入插件简介File输入插件配置选项通用配置选项File输入插件示例配置Logstash输入之RedisRedis插件简介Redis输入插件配置选项通用配置选项Redis输入插件示…...
2024/3/19 19:30:50 - PyQt5模块
QtCore模块涵盖了包的核心的非GUI功能,此模块被用于处理程序中涉及到的timg、文件、目录、数据类型、文本流、链接、mime、线程或进程等对象。QtGui模块涵盖多种基本图形功能的类;包括但不限于:窗口集、事件处理、2D图形、基本的图像和界面和文字文本。QtWidgets模块包含了一…...
2024/3/19 21:23:17 - 测试工程师真的不需要懂网络知识么?
导语:随着现在互联网公司的普及,越来越多的测试工程师从事 Web 应用测试和移动 APP 测试类的产品,更加偏向应用,所以导致越来越多的测试工程师对网络基础知道的甚少。我曾经做过一个小调查,大概 200 多个测试从业者中只有不到 20 人知道如 IP 协议和路由协议这样的基础网络…...
2024/3/19 22:49:04 - 【亚马逊面试题】二叉查找树的中序后继求一个最优解
给定一个二叉查找树(什么是二叉查找树),以及一个节点,求该节点在中序遍历的后继,如果没有则返回null保证p是给定二叉树中的一个节点。(您可以直接通过内存地址找到p)在线做题地址 样例 1: 输出: 2 解释: 1\2样例 2: 输入: {2,1,3}, node with value 1 输出: 2 解释: 2/ \1 …...
2024/3/19 22:42:56
最新文章
- 基于STM32C8T6的智能蓝牙小车控制设计
**单片机设计介绍,基于STM32C8T6的智能蓝牙小车控制设计 文章目录 一 概要二、功能设计设计思路 三、 软件设计原理图 五、 程序六、 文章目录 一 概要 基于STM32C8T6的智能蓝牙小车控制设计是一个综合了硬件与软件设计的项目,旨在实现小车的智能控制、…...
2024/3/29 16:57:54 - 梯度消失和梯度爆炸的一些处理方法
在这里是记录一下梯度消失或梯度爆炸的一些处理技巧。全当学习总结了如有错误还请留言,在此感激不尽。 权重和梯度的更新公式如下: w w − η ⋅ ∇ w w w - \eta \cdot \nabla w ww−η⋅∇w 个人通俗的理解梯度消失就是网络模型在反向求导的时候出…...
2024/3/20 10:50:27 - nginx部署视频服务(视频下载链接也ok),vue前端如何播放视频
浏览器点击链接就出现播放,我想利用前端vue,让其播放视频,怎么做? //播放视频viewVideo(row, type) {console.log("row", row);console.log("totalBatch", row.totalBatch, "idNumber", row.idNumber, "b…...
2024/3/29 7:00:30 - eclipse启动报错
报错: An error has occurred. See the log file C:\eclipse\1711430260036.log 原因: 因为 eclipse控制设置的jdk是1.6, 安装了jdk11后,系统默认jdk是jdk11,所以找不到对应的jdk6. 解决方法:将jdk11的配置 从 计…...
2024/3/28 16:55:32 - 416. 分割等和子集问题(动态规划)
题目 题解 class Solution:def canPartition(self, nums: List[int]) -> bool:# badcaseif not nums:return True# 不能被2整除if sum(nums) % 2 ! 0:return False# 状态定义:dp[i][j]表示当背包容量为j,用前i个物品是否正好可以将背包填满ÿ…...
2024/3/28 16:59:55 - 【Java】ExcelWriter自适应宽度工具类(支持中文)
工具类 import org.apache.poi.ss.usermodel.Cell; import org.apache.poi.ss.usermodel.CellType; import org.apache.poi.ss.usermodel.Row; import org.apache.poi.ss.usermodel.Sheet;/*** Excel工具类** author xiaoming* date 2023/11/17 10:40*/ public class ExcelUti…...
2024/3/28 4:39:34 - Spring cloud负载均衡@LoadBalanced LoadBalancerClient
LoadBalance vs Ribbon 由于Spring cloud2020之后移除了Ribbon,直接使用Spring Cloud LoadBalancer作为客户端负载均衡组件,我们讨论Spring负载均衡以Spring Cloud2020之后版本为主,学习Spring Cloud LoadBalance,暂不讨论Ribbon…...
2024/3/28 5:03:31 - TSINGSEE青犀AI智能分析+视频监控工业园区周界安全防范方案
一、背景需求分析 在工业产业园、化工园或生产制造园区中,周界防范意义重大,对园区的安全起到重要的作用。常规的安防方式是采用人员巡查,人力投入成本大而且效率低。周界一旦被破坏或入侵,会影响园区人员和资产安全,…...
2024/3/28 19:59:46 - VB.net WebBrowser网页元素抓取分析方法
在用WebBrowser编程实现网页操作自动化时,常要分析网页Html,例如网页在加载数据时,常会显示“系统处理中,请稍候..”,我们需要在数据加载完成后才能继续下一步操作,如何抓取这个信息的网页html元素变化&…...
2024/3/28 21:57:52 - 【Objective-C】Objective-C汇总
方法定义 参考:https://www.yiibai.com/objective_c/objective_c_functions.html Objective-C编程语言中方法定义的一般形式如下 - (return_type) method_name:( argumentType1 )argumentName1 joiningArgument2:( argumentType2 )argumentName2 ... joiningArgu…...
2024/3/28 9:07:44 - 【洛谷算法题】P5713-洛谷团队系统【入门2分支结构】
👨💻博客主页:花无缺 欢迎 点赞👍 收藏⭐ 留言📝 加关注✅! 本文由 花无缺 原创 收录于专栏 【洛谷算法题】 文章目录 【洛谷算法题】P5713-洛谷团队系统【入门2分支结构】🌏题目描述🌏输入格…...
2024/3/28 18:09:48 - 【ES6.0】- 扩展运算符(...)
【ES6.0】- 扩展运算符... 文章目录 【ES6.0】- 扩展运算符...一、概述二、拷贝数组对象三、合并操作四、参数传递五、数组去重六、字符串转字符数组七、NodeList转数组八、解构变量九、打印日志十、总结 一、概述 **扩展运算符(...)**允许一个表达式在期望多个参数࿰…...
2024/3/28 21:57:50 - 摩根看好的前智能硬件头部品牌双11交易数据极度异常!——是模式创新还是饮鸩止渴?
文 | 螳螂观察 作者 | 李燃 双11狂欢已落下帷幕,各大品牌纷纷晒出优异的成绩单,摩根士丹利投资的智能硬件头部品牌凯迪仕也不例外。然而有爆料称,在自媒体平台发布霸榜各大榜单喜讯的凯迪仕智能锁,多个平台数据都表现出极度异常…...
2024/3/29 10:46:22 - Go语言常用命令详解(二)
文章目录 前言常用命令go bug示例参数说明 go doc示例参数说明 go env示例 go fix示例 go fmt示例 go generate示例 总结写在最后 前言 接着上一篇继续介绍Go语言的常用命令 常用命令 以下是一些常用的Go命令,这些命令可以帮助您在Go开发中进行编译、测试、运行和…...
2024/3/28 10:24:59 - 用欧拉路径判断图同构推出reverse合法性:1116T4
http://cplusoj.com/d/senior/p/SS231116D 假设我们要把 a a a 变成 b b b,我们在 a i a_i ai 和 a i 1 a_{i1} ai1 之间连边, b b b 同理,则 a a a 能变成 b b b 的充要条件是两图 A , B A,B A,B 同构。 必要性显然࿰…...
2024/3/28 19:51:36 - 【NGINX--1】基础知识
1、在 Debian/Ubuntu 上安装 NGINX 在 Debian 或 Ubuntu 机器上安装 NGINX 开源版。 更新已配置源的软件包信息,并安装一些有助于配置官方 NGINX 软件包仓库的软件包: apt-get update apt install -y curl gnupg2 ca-certificates lsb-release debian-…...
2024/3/28 19:36:32 - Hive默认分割符、存储格式与数据压缩
目录 1、Hive默认分割符2、Hive存储格式3、Hive数据压缩 1、Hive默认分割符 Hive创建表时指定的行受限(ROW FORMAT)配置标准HQL为: ... ROW FORMAT DELIMITED FIELDS TERMINATED BY \u0001 COLLECTION ITEMS TERMINATED BY , MAP KEYS TERMI…...
2024/3/28 17:15:47 - 【论文阅读】MAG:一种用于航天器遥测数据中有效异常检测的新方法
文章目录 摘要1 引言2 问题描述3 拟议框架4 所提出方法的细节A.数据预处理B.变量相关分析C.MAG模型D.异常分数 5 实验A.数据集和性能指标B.实验设置与平台C.结果和比较 6 结论 摘要 异常检测是保证航天器稳定性的关键。在航天器运行过程中,传感器和控制器产生大量周…...
2024/3/29 9:27:12 - --max-old-space-size=8192报错
vue项目运行时,如果经常运行慢,崩溃停止服务,报如下错误 FATAL ERROR: CALL_AND_RETRY_LAST Allocation failed - JavaScript heap out of memory 因为在 Node 中,通过JavaScript使用内存时只能使用部分内存(64位系统&…...
2024/3/29 12:34:40 - 基于深度学习的恶意软件检测
恶意软件是指恶意软件犯罪者用来感染个人计算机或整个组织的网络的软件。 它利用目标系统漏洞,例如可以被劫持的合法软件(例如浏览器或 Web 应用程序插件)中的错误。 恶意软件渗透可能会造成灾难性的后果,包括数据被盗、勒索或网…...
2024/3/28 19:58:12 - JS原型对象prototype
让我简单的为大家介绍一下原型对象prototype吧! 使用原型实现方法共享 1.构造函数通过原型分配的函数是所有对象所 共享的。 2.JavaScript 规定,每一个构造函数都有一个 prototype 属性,指向另一个对象,所以我们也称为原型对象…...
2024/3/28 21:57:45 - C++中只能有一个实例的单例类
C中只能有一个实例的单例类 前面讨论的 President 类很不错,但存在一个缺陷:无法禁止通过实例化多个对象来创建多名总统: President One, Two, Three; 由于复制构造函数是私有的,其中每个对象都是不可复制的,但您的目…...
2024/3/29 11:55:06 - python django 小程序图书借阅源码
开发工具: PyCharm,mysql5.7,微信开发者工具 技术说明: python django html 小程序 功能介绍: 用户端: 登录注册(含授权登录) 首页显示搜索图书,轮播图࿰…...
2024/3/29 8:23:18 - 电子学会C/C++编程等级考试2022年03月(一级)真题解析
C/C++等级考试(1~8级)全部真题・点这里 第1题:双精度浮点数的输入输出 输入一个双精度浮点数,保留8位小数,输出这个浮点数。 时间限制:1000 内存限制:65536输入 只有一行,一个双精度浮点数。输出 一行,保留8位小数的浮点数。样例输入 3.1415926535798932样例输出 3.1…...
2024/3/28 9:26:43 - 配置失败还原请勿关闭计算机,电脑开机屏幕上面显示,配置失败还原更改 请勿关闭计算机 开不了机 这个问题怎么办...
解析如下:1、长按电脑电源键直至关机,然后再按一次电源健重启电脑,按F8健进入安全模式2、安全模式下进入Windows系统桌面后,按住“winR”打开运行窗口,输入“services.msc”打开服务设置3、在服务界面,选中…...
2022/11/19 21:17:18 - 错误使用 reshape要执行 RESHAPE,请勿更改元素数目。
%读入6幅图像(每一幅图像的大小是564*564) f1 imread(WashingtonDC_Band1_564.tif); subplot(3,2,1),imshow(f1); f2 imread(WashingtonDC_Band2_564.tif); subplot(3,2,2),imshow(f2); f3 imread(WashingtonDC_Band3_564.tif); subplot(3,2,3),imsho…...
2022/11/19 21:17:16 - 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机...
win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机”问题的解决方法在win7系统关机时如果有升级系统的或者其他需要会直接进入一个 等待界面,在等待界面中我们需要等待操作结束才能关机,虽然这比较麻烦,但是对系统进行配置和升级…...
2022/11/19 21:17:15 - 台式电脑显示配置100%请勿关闭计算机,“准备配置windows 请勿关闭计算机”的解决方法...
有不少用户在重装Win7系统或更新系统后会遇到“准备配置windows,请勿关闭计算机”的提示,要过很久才能进入系统,有的用户甚至几个小时也无法进入,下面就教大家这个问题的解决方法。第一种方法:我们首先在左下角的“开始…...
2022/11/19 21:17:14 - win7 正在配置 请勿关闭计算机,怎么办Win7开机显示正在配置Windows Update请勿关机...
置信有很多用户都跟小编一样遇到过这样的问题,电脑时发现开机屏幕显现“正在配置Windows Update,请勿关机”(如下图所示),而且还需求等大约5分钟才干进入系统。这是怎样回事呢?一切都是正常操作的,为什么开时机呈现“正…...
2022/11/19 21:17:13 - 准备配置windows 请勿关闭计算机 蓝屏,Win7开机总是出现提示“配置Windows请勿关机”...
Win7系统开机启动时总是出现“配置Windows请勿关机”的提示,没过几秒后电脑自动重启,每次开机都这样无法进入系统,此时碰到这种现象的用户就可以使用以下5种方法解决问题。方法一:开机按下F8,在出现的Windows高级启动选…...
2022/11/19 21:17:12 - 准备windows请勿关闭计算机要多久,windows10系统提示正在准备windows请勿关闭计算机怎么办...
有不少windows10系统用户反映说碰到这样一个情况,就是电脑提示正在准备windows请勿关闭计算机,碰到这样的问题该怎么解决呢,现在小编就给大家分享一下windows10系统提示正在准备windows请勿关闭计算机的具体第一种方法:1、2、依次…...
2022/11/19 21:17:11 - 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机”的解决方法...
今天和大家分享一下win7系统重装了Win7旗舰版系统后,每次关机的时候桌面上都会显示一个“配置Windows Update的界面,提示请勿关闭计算机”,每次停留好几分钟才能正常关机,导致什么情况引起的呢?出现配置Windows Update…...
2022/11/19 21:17:10 - 电脑桌面一直是清理请关闭计算机,windows7一直卡在清理 请勿关闭计算机-win7清理请勿关机,win7配置更新35%不动...
只能是等着,别无他法。说是卡着如果你看硬盘灯应该在读写。如果从 Win 10 无法正常回滚,只能是考虑备份数据后重装系统了。解决来方案一:管理员运行cmd:net stop WuAuServcd %windir%ren SoftwareDistribution SDoldnet start WuA…...
2022/11/19 21:17:09 - 计算机配置更新不起,电脑提示“配置Windows Update请勿关闭计算机”怎么办?
原标题:电脑提示“配置Windows Update请勿关闭计算机”怎么办?win7系统中在开机与关闭的时候总是显示“配置windows update请勿关闭计算机”相信有不少朋友都曾遇到过一次两次还能忍但经常遇到就叫人感到心烦了遇到这种问题怎么办呢?一般的方…...
2022/11/19 21:17:08 - 计算机正在配置无法关机,关机提示 windows7 正在配置windows 请勿关闭计算机 ,然后等了一晚上也没有关掉。现在电脑无法正常关机...
关机提示 windows7 正在配置windows 请勿关闭计算机 ,然后等了一晚上也没有关掉。现在电脑无法正常关机以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!关机提示 windows7 正在配…...
2022/11/19 21:17:05 - 钉钉提示请勿通过开发者调试模式_钉钉请勿通过开发者调试模式是真的吗好不好用...
钉钉请勿通过开发者调试模式是真的吗好不好用 更新时间:2020-04-20 22:24:19 浏览次数:729次 区域: 南阳 > 卧龙 列举网提醒您:为保障您的权益,请不要提前支付任何费用! 虚拟位置外设器!!轨迹模拟&虚拟位置外设神器 专业用于:钉钉,外勤365,红圈通,企业微信和…...
2022/11/19 21:17:05 - 配置失败还原请勿关闭计算机怎么办,win7系统出现“配置windows update失败 还原更改 请勿关闭计算机”,长时间没反应,无法进入系统的解决方案...
前几天班里有位学生电脑(windows 7系统)出问题了,具体表现是开机时一直停留在“配置windows update失败 还原更改 请勿关闭计算机”这个界面,长时间没反应,无法进入系统。这个问题原来帮其他同学也解决过,网上搜了不少资料&#x…...
2022/11/19 21:17:04 - 一个电脑无法关闭计算机你应该怎么办,电脑显示“清理请勿关闭计算机”怎么办?...
本文为你提供了3个有效解决电脑显示“清理请勿关闭计算机”问题的方法,并在最后教给你1种保护系统安全的好方法,一起来看看!电脑出现“清理请勿关闭计算机”在Windows 7(SP1)和Windows Server 2008 R2 SP1中,添加了1个新功能在“磁…...
2022/11/19 21:17:03 - 请勿关闭计算机还原更改要多久,电脑显示:配置windows更新失败,正在还原更改,请勿关闭计算机怎么办...
许多用户在长期不使用电脑的时候,开启电脑发现电脑显示:配置windows更新失败,正在还原更改,请勿关闭计算机。。.这要怎么办呢?下面小编就带着大家一起看看吧!如果能够正常进入系统,建议您暂时移…...
2022/11/19 21:17:02 - 还原更改请勿关闭计算机 要多久,配置windows update失败 还原更改 请勿关闭计算机,电脑开机后一直显示以...
配置windows update失败 还原更改 请勿关闭计算机,电脑开机后一直显示以以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!配置windows update失败 还原更改 请勿关闭计算机&#x…...
2022/11/19 21:17:01 - 电脑配置中请勿关闭计算机怎么办,准备配置windows请勿关闭计算机一直显示怎么办【图解】...
不知道大家有没有遇到过这样的一个问题,就是我们的win7系统在关机的时候,总是喜欢显示“准备配置windows,请勿关机”这样的一个页面,没有什么大碍,但是如果一直等着的话就要两个小时甚至更久都关不了机,非常…...
2022/11/19 21:17:00 - 正在准备配置请勿关闭计算机,正在准备配置windows请勿关闭计算机时间长了解决教程...
当电脑出现正在准备配置windows请勿关闭计算机时,一般是您正对windows进行升级,但是这个要是长时间没有反应,我们不能再傻等下去了。可能是电脑出了别的问题了,来看看教程的说法。正在准备配置windows请勿关闭计算机时间长了方法一…...
2022/11/19 21:16:59 - 配置失败还原请勿关闭计算机,配置Windows Update失败,还原更改请勿关闭计算机...
我们使用电脑的过程中有时会遇到这种情况,当我们打开电脑之后,发现一直停留在一个界面:“配置Windows Update失败,还原更改请勿关闭计算机”,等了许久还是无法进入系统。如果我们遇到此类问题应该如何解决呢࿰…...
2022/11/19 21:16:58 - 如何在iPhone上关闭“请勿打扰”
Apple’s “Do Not Disturb While Driving” is a potentially lifesaving iPhone feature, but it doesn’t always turn on automatically at the appropriate time. For example, you might be a passenger in a moving car, but your iPhone may think you’re the one dri…...
2022/11/19 21:16:57