精华内容
下载资源
问答
  • 使用Quartz实现定时任务(包含管理界面)

    万次阅读 多人点赞 2019-01-01 18:43:34
    ")来实现的,至于监控方面的,没有,就是通过在定时任务代码里面打一些日志,特别重要的定时任务,失败了额外发个邮件通知下,人工补偿。然后他又问了下现在需要重构定时任务,你有没有什么想法?然后我就简单的...

    引言

    年底出去面试的的时候,被问到如下问题: 定时任务是如何实现的?定时任务是如何监控的?因为我们项目中的定时任务就是使用Spring的@Scheduled(cron = "0 59 23 * * ?")来实现的,至于监控方面的,没有,就是通过在定时任务代码里面打一些日志,特别重要的定时任务,失败了额外发个邮件通知下,人工补偿。然后他又问了下现在需要重构定时任务,你有没有什么想法?然后我就简单的说了下,最好是提供个可视化界面,可以动态的操作定时任务,尤其是监控方面。当晚回来后找了些资料,无意间在"纯洁的微笑"博主分享的一篇博文中讲到了这个,他的博文原文地址找不到了,他上面是基于spring项目实现的,本人根据quartz的api在springboot中重新实现了个,项目地址:https://github.com/simonsfan/springboot-quartz-demo。该项目用springboot+mybatis+mysql+quartz实现的,提供定时任务可视化动态添加、修改、执行,并提供定时任务监控,界面大致如图:

    定时任务列表展示简图
    定时任务执行情况简图
    定时任务执行失败详情简图

    关于这个项目, 还有些地方需要完善,比如定时任务的查找、分页展示、我这里均没有实现,如果你在实际项目中需要使用,请自行完善下,还有比如更新定时任务执行情况记录表quartz_task_records的时机,需要再斟酌斟酌。如有任何疑问,欢迎留言讨论。


    上手Quartz

    关于quartz,可在官网http://www.quartz-scheduler.org/documentation/quartz-2.2.x/tutorials/查看,这里着重要说的是其中几个比较重要的:

    1、maven引quartz依赖

    <!--quartz依赖-->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-quartz</artifactId>
    </dependency>
    

    2、quartz核心组件包括

    • Scheduler:与quartz schedule交互的主要api
    • Job:Scheduler执行组件需要实现的接口
    • JobDetail:用于定义实现了Job接口的实例
    • Trigger:用于执行给定作业的计划的组件
    • JobBuilder:用于构建JobDetail实例,或者说定义Job的实例
    • TriggerBuilder:用于构建触发器实例

    使用示例代码:

    /**
     * 实现Job接口,重写execute方法
     */
    public class QuartzJobFactory implements Job {
    
    	protected Logger logger = Logger.getLogger(QuartzJobFactory.class);
    	
    	@Override
    	public void execute(JobExecutionContext context) throws JobExecutionException {
    		//TODO 这里是定时任务逻辑
    		logger.info("=================我是定时任务,每隔5秒执行一次==============");
    	}
    }
    /**
     * @ClassName QuartzService
     * @Description 系统初始化触发定时任务
     * @Author simonsfan
     * @Date 2019/1/1
     * Version  1.0
     */
    @Component
    public class QuartzService {
    
        private static final Logger logger = LoggerFactory.getLogger(QuartzService.class);
        private final String CRON_TIME = "*/5 * * * * ?";
        private final String TRIGGER_KEY_NAME = "00000000001";
    
        @PostConstruct
        public void taskInit() {
            logger.info("=========系统初始化加载定时任务开始========");
            try {
                SchedulerFactory schedulerFactory = new StdSchedulerFactory();
                Scheduler scheduler = schedulerFactory.getScheduler();
                TriggerKey triggerKey = TriggerKey.triggerKey(TRIGGER_KEY_NAME, Scheduler.DEFAULT_GROUP);
                JobDetail jobDetail = JobBuilder.newJob(QuartzJobFactory.class).withDescription("quartz测试定制化定时任务").withIdentity(TRIGGER_KEY_NAME, Scheduler.DEFAULT_GROUP).build();
                CronScheduleBuilder cronScheduleBuilder = CronScheduleBuilder.cronSchedule(CRON_TIME);
                CronTrigger cronTrigger = TriggerBuilder.newTrigger().withIdentity(triggerKey).withSchedule(cronScheduleBuilder).build();
                scheduler.scheduleJob(jobDetail, cronTrigger);
                scheduler.start();
                logger.info("=========初始化定时任务加载完成=========");
            } catch (Exception e) {
                logger.info("==============初始化加载定时任务失败==============" + e);
                e.printStackTrace();
            }
        }
    
    }

    1、系统初始化加载这里是使用@PostConstruct注解触发,也可以通过实现InitializingBean接口的方式;

    2、调度器Scheduler实例是通过new构造的,也可以直接注入类SchedulerFactoryBean,如下

    /**
     * @ClassName QuartzService
     * @Description 系统初始化触发定时任务
     * @Author simonsfan
     * @Date 2019/1/1
     * Version  1.0
     */
    @Component
    public class QuartzService implements InitializingBean {
    
        private static final Logger logger = LoggerFactory.getLogger(QuartzService.class);
        private final String CRON_TIME = "*/5 * * * * ?";
        private final String TRIGGER_KEY_NAME = "00000000001";
    
        @Autowired
        private SchedulerFactoryBean schedulerFactoryBean;
    
        @Override
        public void afterPropertiesSet() throws Exception {
            logger.info("=========系统初始化加载定时任务开始========");
            try {
                Scheduler scheduler = schedulerFactoryBean.getScheduler();
                TriggerKey triggerKey = TriggerKey.triggerKey(TRIGGER_KEY_NAME, Scheduler.DEFAULT_GROUP);
                JobDetail jobDetail = JobBuilder.newJob(QuartzJobFactory.class).withDescription("quartz测试定制化定时任务").withIdentity(TRIGGER_KEY_NAME, Scheduler.DEFAULT_GROUP).build();
                CronScheduleBuilder cronScheduleBuilder = CronScheduleBuilder.cronSchedule(CRON_TIME);
                CronTrigger cronTrigger = TriggerBuilder.newTrigger().withIdentity(triggerKey).withSchedule(cronScheduleBuilder).build();
                scheduler.scheduleJob(jobDetail, cronTrigger);
                logger.info("=========初始化定时任务加载完成=========");
            } catch (Exception e) {
                logger.info("==============初始化加载定时任务失败==============" + e);
                e.printStackTrace();
            }
        }
    }

    如果是spring配置文件项目,则需要将SchedulerFactoryBean注入到spring中:

     <bean id="schedulerFactoryBean" class="org.springframework.scheduling.quartz.SchedulerFactoryBean" />

    核心功能

    下面来详细讲解下这个springboot-quartz-demo里面是如何做的。还是围绕着功能点来看,如开头截图所示,主要有: 定时任务展示、新增、修改、暂停或启动、立刻运行、详情(监控),首先新建了三张表,如下:

    分别用来记录-定时任务基础信息、执行情况、执行出错信息。然后是主要的执行定时任务逻辑编写,写在实现了Job接口的QuartzMainJobFactory类中:

    定时任务主要逻辑类

    这里设置了采用Http或Kafka的方式来执行定时任务里面的具体逻辑,方式可以自己扩展或替换,主要还是针对你的定时任务类型及现有的项目架构来具体选型。

    books 1、展示和新增功能就不用说了,直接对quartz_task_informations表select和insert即可。

    books 2、初始化加载,就是说,每次重启系统,要把之前建的定时任务加载进quartz的Scheduler调度器,他这里采用的就是@PostConstruct注解,在注入service前就先加载:

    初始化加载定时任务代码简图

    books 3、修改功能,这个要注意的是修改前一定要先暂停这个定时任务才能修改,然后就是注意下并发修改的情况,加入了乐观锁控制

    修改定时任务代码简图

    books 4、实时暂停或启动定时任务,启动表示使定时任务立刻生效,就是把该定时任务加入任务调度系统中;而暂停本质就是从任务调度系统中删除此定时任务

    暂停或启动定时任务代码简图

    books 5、立刻运行定时任务,这里使用到了AtomicInteger原子类来标识"立即运行定时任务"这个操作是否出现成功,关于AtomicInteger的一些知识,请移步至https://blog.csdn.net/fanrenxiang/article/details/80623884

    立即运行一次定时任务代码简图

    books 6、监控详情,如上所说,quartz_task_records表和quartz_task_errors表分别用来记录定时任务每次执行情况和执行失败的定时任务信息,每当定时任务跑成功一次(不管成功与否)都持久化到quartz_task_records表,每失败一次(这里的标志就是AtomicInteger)持久化至quartz_task_errors表,这样每次执行的定时任务都能被比较好的"监控",这两个保存操作夹杂在"立即运行一次" 和 "QuartzMainJobFactory类" 代码中。

    定时任务执行情况简图
    定时任务执行失败原因简图

    补充:

    1、有小伙伴反馈说,当定时任务的执行时间超过了任务执行周期,这个正在执行的定时任务是什么状态?被抛弃杀死进程了?还是正常执行?关于这点,我在上面的项目测试了下,把定时任务的执行时间表达式改为"*/3 * * * * ?"每3秒执行一次定时任务,但是在任务执行逻辑中加入Thread.currentThread().sleep(5000);模拟定时任务执行时长要消耗5秒,测试结果是:超过3s的任务会继续执行,而下一个任务开始时间会变成这个任务执行完成后的5秒,依次类推,也就是说类似于时间表达式改为了"*/5 * * * * ?"的执行效果了。

    2、我自己还想到的一个问题是: 当使用http方式调用定时任务逻辑时,如果接口逻辑过于复杂导致处理时间过长,或者可能是IO密集计算型任务,这个时候怎么办?还没验证,后期再补吧。


    来波广告: 推荐个微信公众号:720电影社,里面可以免费获取电影、电视剧资源,欢迎关注。


    books quartz官网:http://www.quartz-scheduler.org/documentation/quartz-2.2.x/tutorials/

    books springboot版本项目地址:https://github.com/simonsfan/springboot-quartz-demo

    books spring项目版本地址:https://github.com/justdojava/zx-quartz

    books 推荐阅读:elastic search搜索引擎实战demo:https://github.com/simonsfan/springboot-quartz-demo,分支:feature_es

    books 推荐阅读:分布式环境下保证定时任务单点运行:https://blog.csdn.net/fanrenxiang/article/details/79990386

    展开全文
  • 同时大概知道如何使用keras和Colab使用免费GPU的伙伴们。 问题: 1,为什么要用BERT,什么是bert4keras工具? BERT最近几年大火,因为提供了高效的预训练方法。许多NLP任务上取得了非常好的效果。 但是现在的BERT...

    背景:

    目标:快速上手实现一个基于BERT和CRF的命名实体识别(NER)任务。

    适宜人群:希望使用Bert来进行NER任务的NLP初学者。同时大概知道如何使用keras和Colab使用免费GPU的伙伴们。

    问题:

    1,为什么要用BERT,什么是bert4keras工具包?

    BERT最近几年大火,因为提供了高效的预训练方法。许多NLP任务上取得了非常好的效果。
    
    但是现在的BERT并不是很好使用,就算是想要做一个小的demo,入门也不是特别简单。
    
    所以所以我们使用苏剑林大佬的bert4keras。苏老师的基本思想是,比起其他的神经网络框架,keras相对来说要更加容易使用一些。所以他将bert和keras结合了起来便于大家上手做相关任务。
    

    2,为什么要用CRF?

    之前看到知乎,有人完全扎进了高大上的各种模型,当别人提到CRF模型的时候不屑一顾,称之为“啥年代了还看着几十年前的玩意儿”。但是在序列标注领域,CRF的使用频率十分高。
    
    宗成庆老师在《统计自然语言处理》一书说到:
    

    “由于该方法(CRF)简便易行,而且可以获得较好的性能,因此受到很多学者的青睐,已被广泛地应用于人名、地名和组织机构等各种类型命名实体的识别,并在具体应用中不断得到改进,可以说是命名实体识别中最成功的方法。”

    想要学习CRF大概原理的伙伴可以从bert4keras的创造者苏剑林大佬博看一下他所写的系列文章~:https://kexue.fm/archives/4695
    
    具体的推导可以从李航老师HMM章节开始看起可能帮助更大。
    

    3,NER任务是什么?常见数据集标注格式?

    命名实体识别(NER)可以看做是序列标注的一种。其他的序列标注包括像:词性标注、自动分词等。NER(named entity recognition)的本质其实就是从文本识别某些特定实体指称的边界和类别。这些特定的实体可以是:人名、地名、组织机构名、时间和数字表达(包括时间、日期、货币量和百分数等)。
    
    同时NER的常见的数据集标注格式也同其他的机器学习任务不大一样。一般以字为单位。
    
    以下图的人民日报的NER标注数据为例:对于“海南公司飞行部”,我们认为是一个组织实体名。所以在开始的字符进行“B-ORG”的标注,“B”表示begin,标注的开始。“I-ORG”表示实体名后续字符。文本中其余无关字符都标记为“O”。
    

    在这里插入图片描述
    人民日报的NER标注数据
    4,为何使用Colab?

    因为可以薅羊毛使用免费GPU~哈哈!
    
    如果不清楚如何使用Colab的小伙伴可以自行查找一下。
    

    步骤:

    1,在colab下载必要的第三方包以及Bert模型

    要点1:使用colab的./content空间的技巧。
    我们可以直接较占空间的bert模型(300mb)下载到正运行的`./content`空间内。笔者体验在colab下载是十分快的,往往可以达到几十mb每秒的下载速度。下载好的文件可以在左侧的文件栏看到下载的文件。大家可以把bert模型和自己的数据集都放上去便于使用。
    

    colabcolab的文件栏查看文件

    要点2:使用 pip 来下载bert4keras。
    要点3:下载 BERT 模型。

    很简单,按照下述的代码块就可以把数据集合bert模型都下载到运行空间了。需要注意的是,这里下载的BERT模型是专门用于中文的BERT模型。用于处理中文相关任务。

    在这里插入图片描述使用wget等命令下载和解压bert模型

    2,整理数据集并调整格式

    要点1:每个文本之间的分割为\n,图示如下。

    在这里插入图片描述
    每个文本之间的分割为\n

    要点2:注意标注方法。
    后续代码是根据人民日报的数据集来处理的。由于人民日报中的NER标注是BIO的。大伙在使用其他规则的命名实体的数据集的时候可能需要注意。例如像是下图的数据集,就是BIOES的标注方法。处理方式也简单,确保标注的开头只有B、I、O三个字母就行了。
    

    在这里插入图片描述非人民日报NER数据集示例

    要点3:将数据集上载到colab上

    3, 搭配代码

    代码来源:其实就是bert4keras,使用bert+CRF
    
    代码地址:https://github.com/bojone/bert4keras/blob/master/examples/task_sequence_labeling_ner_crf.py 
    

    4, 载入数据集并配置模型;

    在这里插入图片描述
    代码块:载入数据
    在这里插入图片描述
    代码块:bert配置文件

    5,训练模型以及模型预测

    训练要点:
    使用人民日报数据集时候batch_size为32可能会崩,笔者后来调成了10。大伙可以基于自己的数据集多尝试。
    
    模型预测:
    使用代码中的`named_entity_recognize`方法,传入文本就可以得到标注效果了!
    
    笔者使用了其他的数据集实验了一下,最后的f1可以达到近90。下图为其他文本的标注效果。可以看到预测结果还是不错的
    

    文本的标注效果文本的标注效果

    代码:

    https://github.com/dengxc1220/bert4keras_ner_demo

    欢迎大家多捧场,来star

    同时大家注意,Google Colab可直接从github打开Jupyter notebooks,只需将“http:// github.com/”替换为“https:// colab.research.google.com/github/”,就会直接加载到Colab中 。

    展开全文
  • 1、下载安装金币助手 2、打开无障碍服务和悬浮窗权限,授权给金币助手 3、打开金币助手,开始运行 功能: 自动执行淘金币所有浏览任务 自动执行[逛好店领一大波金币]任务 (包含... 自动执行[逛农场领免费水果].

    最新软件下载,详见群文件,长期更新
    QQ群号:636677598
    或者直接点击链接加群:https://jq.qq.com/?_wv=1027&k=8rmAofkO

    微信:baohuikf

     

    1、下载安装金币助手

    2、打开无障碍服务和悬浮窗权限,授权给金币助手

    3、打开金币助手,开始运行

    功能:

    • 自动执行淘金币所有浏览任务
    • 自动执行[逛好店领一大波金币]任务 (包含浏览10s+10金币任务/收藏店铺+10金币)
    • 自动执行[逛蚂蚁庄园喂小鸡]任务
    • 自动执行[签到领取话费充值金]任务
    • 自动执行[淘宝成就签到任务]
    • 自动执行[淘宝人生逛街领能量]掷色子任务 (需截图权限)
    • 自动执行[逛农场领免费水果]任务 (需截图权限)
    • 浏览任务完成立即返回,无需额外等待

    华为P30Pro + 淘宝v9.16.0 (华为P30Pro屏幕大小为1080x2340,此分辨率对特殊任务支持最佳) 测试运行正常,可以完成任务,获得淘金币!

    如果不能正常运行,可以使用淘宝V9.16.0以及以下版本APP!

     

    展开全文
  • 15个免费好用的抓工具

    千次阅读 2019-09-20 17:04:36
    Hping是最受欢迎和免费的抓工具之一。它允许你修改和发送自定义的ICMP,UDP,TCP和原始IP数据包。此工具由网络管理员用于防火墙和网络的安全审计和测试。 HPing可用于各种平台,包括Windows,MacOs X,Linux,...

    1. Hping

    Hping是最受欢迎和免费的抓包工具之一。它允许你修改和发送自定义的ICMP,UDP,TCP和原始IP数据包。此工具由网络管理员用于防火墙和网络的安全审计和测试。

    HPing可用于各种平台,包括Windows,MacOs X,Linux,FreeBSD,NetBSD,OpenBSD和Solaris。

    下载Hping: http://www.hping.org/

    2. Ostinato

    Ostinato是一个开源和跨平台网络包生成器和分析工具。它带有GUI界面,使其易于使用和理解。它支持Windows,Linux,BSD和Mac OS X平台。您也可以尝试在其他平台上使用它。

    该工具支持最常见的标准协议。请参阅下面的支持协议列表

    • Ethernet/ 802.3 / LLC SNAP
    • VLAN(with QinQ)
    • ARP,IPv4,IPv6,IP-in-IP a.k.a IP隧道(6over4,4over6,4over4,6over6)
    • TCP,UDP,ICMPv4,ICMPv6,IGMP,MLD
    • 任何基于文本的协议(HTTP,SIP,RTSP,NNTP等)

    通过使用Ostinato,你可以轻松地修改任何协议的任何字段。这个数据包工具也被称为第二个Wireshark。

    下载Ostinato: http://ostinato.org/

    3. Scapy

    Scapy是另一种不错的交互式数据包处理工具。这个工具是用Python编写的。它可以解码或伪造大量协议的数据包。Scapy是一个值得尝试的工具。您可以执行各种任务,包括扫描,跟踪,探测,单元测试,网络发现。

    下载Scapy: http://www.secdev.org/projects/scapy/

    4. Libcrafter

    Libcrafter非常类似于Scapy。这个工具是用C ++编写的,使得更容易创建和解码网络数据包。它可以创建和解码大多数一般协议的数据包,捕获数据包和匹配请求或回复。这个工具可以多线程执行各种任务。

    下载Libcrafer: https://code.google.com/p/libcrafter/

    5. Yersinia

    Yersinia是一个强大的网络渗透测试工具,能够对各种网络协议进行渗透测试。如果你正在寻找抓包工具,你可以试试这个工具。

    下载yersinia: http://www.yersinia.net/

    6. packETH

    packETH是另一个数据包处理工具。它是一个Linux GUI的以太网工具。它允许你快速创建和发送数据包序列。与此列表中的其他工具一样,它支持各种协议来创建和发送数据包。你还可以设置数据包数量和数据包之间的延迟,还可以在此工具中修改各种数据包内容。

    下载packETH: http://packeth.sourceforge.net/

    7. Colasoft Packet Builder

    Colasoft Packet Builder也是一个用于创建和编辑网络数据包的免费工具。如果你是网络管理员,你可以使用此工具来测试你的网络。它适用于所有可用版本的Windows操作系统。

    下载 Colasoft Packet Builder: http://www.colasoft.com/download/products/download_packet_builder.php

    8. Bit-Twist

    Bit-Twist是一种不太流行但好用的工具,用于在实时流量中重新生成捕获的数据包。它使用tcpdump跟踪文件(.pcap文件)在网络中生成的数据包。它带有跟踪文件编辑器,允许你更改捕获的数据包中的任何特定字段。网络管理员可以使用此工具测试防火墙,IDS和IPS,并对各种网络问题进行故障排除。你可以尝试一下这个工具。

    下载Bit-Twist: http://bittwist.sourceforge.net/

    9. Libtins

    Libtins也是一个很好的工具,用于制作,发送,嗅探和解析网络数据包。这个工具是用C++编写的。C++开发人员可以扩展此工具的功能,使其更强大,更有效地执行其任务。

    下载Libtins: http://libtins.github.io/

    10. Netcat

    Netcat也是一个流行的工具,可以在TCP或UDP网络中读取和写入数据。它可以创建几乎所有种类的网络连接与端口绑定。

    这个工具最初被称为Hobbit,并于1995年发布。

    下载Netcat: http://nc110.sourceforge.net/

    11. WireEdit

    WireEdit是一个功能齐全的WYSIWYG网络数据包编辑器。你可以在一个简单的界面中编辑所有的数据包层。这个工具是免费使用的,但你必须联系公司获得使用权。它支持Ethernet, IPv4, IPv6, UDP, TCP, SCTP, ARP, RARP, DHCP, DHCPv6, ICMP, ICMPv6, IGMP, DNS, LLDP, RSVP, FTP, NETBIOS, GRE, IMAP, POP3, RTCP, RTP, SSH, TELNET, NTP, LDAP, XMPP, VLAN, VXLAN, CIFS/SMB v1 (original), BGP, OSPF, SMB3, iSCSI, SCSI, HTTP/1.1, OpenFlow 1.0-1.3, SIP, SDP, MSRP, MGCP, MEGACO (H.248), H.245, H.323, CISCO Skinny, Q.931/H.225, SCCP, SCMG, SS7 ISUP, TCAP, GSM MAP R4, GSM SM-TP, M3UA, M2UA, M2PA, CAPWAP, IEEE 802.11等。

    它也是一个多平台工具。它适用于Windows XP和更高版本,Ubuntu桌面和Mac OSX。

    下载WireEdit: https://wireedit.com/downloads.html

    12. epb – Ethernet Packet Bombardier

    Epb-Ethernet Packet Bombardier也是一个类似的工具。它允许你发送自定义的以太网包。此工具不提供任何GUI,但它是易于使用。

    您可以在此处详细了解此工具: http://maz-programmersdiary.blogspot.fi/2012/05/epb-ethernet-package-bombardier.html

    13. Fragroute

    Fragroute是一个数据包处理工具,可以拦截,修改和重写网络流量。你可以使用此工具执行大多数网络渗透测试,以检查网络的安全性。这个工具是开源的,并提供命令行界面来使用。它适用于Linux,BSD和Mac OS。

    下载Fragroute: http://www.monkey.org/~dugsong/fragroute/

    14. Mausezahn

    Mausezahn是一个网络数据包编辑器,让你发送每一种网络数据包。此工具用于防火墙和IDS的渗透测试,但你可以在网络中使用此工具来查找安全错误。你还可以使用此工具来测试你的网络在被DOS攻击时是否安全。值得注意的是,它可以让你完全控制NIC卡。它支持ARP, BPDU, or PVST, CDP, LLDP, IP, IGMP, UDP, TCP (stateless), ICMP (partly), DNS, RTP,RTP optionally RX-mode for jitter measurements,Syslog protocols。

    下载Mausezahn: http://www.perihel.at/sec/mz/

    15. EIGRP-tools

    这是EIGRP数据包生成器和嗅探器组合。它被开发用于测试EIGRP路由协议的安全性。要使用此工具,您要了解第3层EIGRP协议。此工具也是一个具有命令行界面的开源工具。它可用于Linux,Mac OS和BSD平台。

    下载EIGRP-tools: http://www.hackingciscoexposed.com/tools/eigrp-tools.tar.gz

    展开全文
  • RxJava实现串行任务和并行任务

    千次阅读 2019-09-16 14:53:14
    串行和并行,是针对任务这个概念而来的,也就是串行任务和并行任务。 那我们需要了解一下什么是任务。 用一个http网络请求来看,这一个网络请求就是一个任务。它包含了发送请求、后台处理、处理返回数据这几个步骤。...
  • jquery甘特图开发包免费下载地址

    千次阅读 2014-09-24 17:47:38
    可移动和拖拽调整条形图可视化时间编辑器编辑任务依赖关系调整任务进度条关键路径、自定义外观、自定义行列、自定义任务颜色等高质量打印甘特图 资源甘特图: 实现资源利用视图。重叠渲染任务FlexyGantt与依赖...
  • 最近在做项目,碰到了无法删除build文件夹内产生的临时*.jar(被占用),找到了终极解决方法:解决思路:既然是jar包被占用,肯定是java虚拟机正在使用它。打开任务管理器,将名为java进程(由占用资源最大的那个...
  • Elastic-Job-Lite定位为轻量级无中心化解决方案,使用jar的形式提供分布式任务的协调服务;Elastic-Job-Cloud采用自研Mesos Framework的解决方案,额外提供资源治理、应用分发以及进程隔离等功能。 课程介绍 Java...
  • 分布式任务调度平台

    千次阅读 2018-04-07 12:23:36
    一、任务调度概述 1.... Thread.sleep TimerTask util下 线程池,可定时线程 Quartz定时任务调度框架 springboot 内置定时任务调度/** * 使用多线程方式实现定时job 最简单版定时任务调度 * Created by...
  • 分布式任务ijobhandle

    千次阅读 2017-09-18 09:53:20
    《分布式任务调度平台XXL-JOB》   一、简介 1.1 概述 XXL-JOB是一个轻量级分布式任务调度框架,其核心设计目标是开发迅速、学习简单、轻量级、易扩展。现已开放源代码并接入多家公司线上产品线,开箱即用。 ...
  • 如何使用py2exe打包arcpy脚本?

    千次阅读 多人点赞 2016-10-11 18:12:29
    我们可以在ArcGIS之外调用arcpy站点运行python独立脚本,从而批量化任务提高工作效率。 如果可以把做好的脚本打包成exe是不是就更方便了呢?想想一键式处理也挺开心的。Python打包的问题最早是在 ArcGIS知乎 中...
  • Elastic-Job动态添加任务

    千次阅读 2018-05-02 09:31:50
    在使用Elastic-Job的过程中,有很多人遇到了这么一个问题,就是如何动态的去添加任务? 在官方的文档中也有对此作出回答,如下: 动态添加作业这个概念每个人理解不尽相同。 elastic-job-lite为jar,由开发或...
  • Quartz任务调度

    万次阅读 2008-04-15 10:19:00
    了解Quartz体系结构Quartz对任务调度的领域问题进行了高度的抽象,提出了调度器、任务和触发器这3个核心的概念,并在org.quartz通过接口和类对重要的这些核心概念进行描述:●Job:是一个接口,只有一个方法void ...
  • Android studio没有像Eclipse一样提供便捷的图形界面打包成Jar,而且也没有默认的打包Jar的gradle脚本,如果需要把一个库Module打包成Jar,需要自己在对应的库Module下对应的gradle.build脚本编写相应的gradle...
  • 谁能告诉我这科的理论在哪可以实用呀?搞不懂,只能收藏一下不挂科
  • 常用的几款抓工具

    万次阅读 多人点赞 2019-06-05 08:28:50
    常用的几款抓工具! 标签: 软件测试软件测试方法软件测试学习 原创来自于我们的微信公众号:软件测试大师 最近很多同学,说面试的时候被问道,有没有用过什么抓工具,其实抓工具并没有什么很难的工具,只要...
  • 关于网游任务设计

    千次阅读 2011-06-16 15:53:00
    人工智能脚本包括交涉、贿赂、作息、战斗、施展魔法、使用技能、逃跑、使用道具、收集宝物、仇恨机制、阵营机制、移动等各种行为动作方面的设定 本文选取比较有代表性的网络游戏任务设计进行论述,文中以任务简称之,...
  • k8s 中定时任务的实现

    千次阅读 2019-02-18 11:20:27
    k8s 中有许多优秀的都可以在平时的开发中借鉴与使用,比如,任务的定时轮询、高可用的实现、日志处理、缓存使用等都是独立的,可以直接引用。本篇文章会介绍 k8s 中定时任务的实现,k8s 中定时任务都是通过 wait...
  • 拼多多的砍价免费拿是真的吗?

    万次阅读 2020-12-22 11:29:18
    拼多多砍价免费拿入坑选手,带你深度解析pdd套路以及我的心酸历程。啊啊啊啊,猛男落泪~
  • 本文旨在介绍Gradle构建的一些高级功能,包含了多版本编译、定制任务等功能: 为相同的app构建多个版本如果在Gradle的过程中添加定制的任务如何使用android库module 3.构建类型 3.1 Build Types的使用 当你想...
  • Python自动化完成tb喵币任务

    万次阅读 多人点赞 2019-10-24 23:12:26
    2019双十一,tb推出了新的活动,商店喵币,看了一下每天都有几个任务来领取喵币,从而升级店铺赚钱,然而我既想赚红包又不想干苦力,遂使用python来进行手机自动化操作,目测全网首发! 用到的库: re os time ...
  • 基于Spring task注解方式配置任务

    万次阅读 热门讨论 2015-04-30 23:10:20
    在上讲中,我们使用了XML的方式来配置Quartz定时任务,虽然比用API的方式简便多了,但是Spring还支持基本注解的方式来配置。这样做不仅更加简单,而且代码量也更加少了。
  • java开源1

    千次下载 热门讨论 2013-06-28 09:14:34
    GiftedMotion是一个很小的,免费而且易于使用图像互换格式动画是能够设计一个有趣的动画了一系列的数字图像。使用简便和直截了当,用户只需要加载的图片和调整帧您想要的,如位置,时间显示和处理方法前帧。 Java的...
  • java开源12

    热门讨论 2013-06-28 10:14:45
    GiftedMotion是一个很小的,免费而且易于使用图像互换格式动画是能够设计一个有趣的动画了一系列的数字图像。使用简便和直截了当,用户只需要加载的图片和调整帧您想要的,如位置,时间显示和处理方法前帧。 Java的...
  • 最近在学习scala,除需要编写scala程序外,同时还需要创建maven工程,打成Jar,而Eclipse在这方面显得使用的不是那么方面,同时由于Intellij IDEA提供了非常智能的提示功能,所以选择IDEA作为开发环境。...
  • java开源11

    热门讨论 2013-06-28 10:10:38
    GiftedMotion是一个很小的,免费而且易于使用图像互换格式动画是能够设计一个有趣的动画了一系列的数字图像。使用简便和直截了当,用户只需要加载的图片和调整帧您想要的,如位置,时间显示和处理方法前帧。 Java的...
  • java开源2

    热门讨论 2013-06-28 09:17:39
    GiftedMotion是一个很小的,免费而且易于使用图像互换格式动画是能够设计一个有趣的动画了一系列的数字图像。使用简便和直截了当,用户只需要加载的图片和调整帧您想要的,如位置,时间显示和处理方法前帧。 Java的...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 129,362
精华内容 51,744
关键字:

任务包是免费的吗