addjob

C#定时任务之FluentScheduler

Deadly 提交于 2021-01-18 18:59:27
一、业务需求 平台首页,有几个指标统计,产品不要求实时性,觉得一天更新一次可以接受。 最后决定用FluentScheduler定时执行统计,redis缓存结果。 每天晚上1点进行定时任务统计,将统计结果缓存到redis中,业务接口直接从reids里拿统计数据。 二、开始撸代码 方式一:多个任务 + 不同时间段执行(这个没有实现,大家可以使用 一个从0点开始的分钟数,秒数等,自定义一个接口,根据规则去调用Schedule中的方法) using System; using System.Linq; using System.Threading.Tasks; using FluentScheduler; namespace Common { // 自己定义了一个接口,目前只有一个方法,大家可以根据自己的需求添加接口,比如定义一个执行任务的时间接口等 public interface IScheduleTask { void Execute(); } public class ScheduleTask : Registry { public ScheduleTask() { // 获取已加载到此应用程序域的执行上下文中的程序集(因为有延迟加载机制, // 未加载到应用程序域的时候会报错,一般初始化的时候可能会再现问题) // var types = AppDomain

死磕Java内部类

大兔子大兔子 提交于 2020-11-23 07:07:00
Java内部类,相信大家都用过,但是多数同学可能对它了解的并不深入,只是靠记忆来完成日常工作,却不能融会贯通,遇到奇葩问题更是难以有思路去解决。这篇文章带大家一起死磕Java内部类的方方面面。 友情提示:这篇文章的讨论基于JDK版本 1.8.0_191 开篇问题 我一直觉得技术是工具,是一定要落地的,要切实解决某些问题的,所以我们通过先抛出问题,然后解决这些问题,在这个过程中来加深理解,最容易有收获。 so,先抛出几个问题。(如果这些问题你早已思考过,答案也了然于胸,那恭喜你,这篇文章可以关掉了)。 为什么需要内部类? 为什么内部类(包括匿名内部类、局部内部类),会持有外部类的引用? 为什么匿名内部类使用到外部类方法中的局部变量时需要是final类型的? 如何创建内部类实例,如何继承内部类? Lambda表达式是如何实现的? 为什么需要内部类? 要回答这个问题,先要弄明白什么是内部类?我们知道Java有三种类型的内部类 普通的内部类 public class Demo { // 普通内部类 public class DemoRunnable implements Runnable { @Override public void run() { } } } 复制代码 匿名内部类 public class Demo { // 匿名内部类 private Runnable

C#作业调度Quartz.NET学习笔记

蓝咒 提交于 2020-08-06 03:52:23
一、简单介绍 Quartz.NET是一个强大、开源、轻量的作业调度框架,是 OpenSymphony 的 Quartz API 的.NET移植,用C#改写,可用于WinForm和ASP.NET应用中。它灵活而不复杂,可以为执行一个作业而创建简单或复杂的作业调度。它有很多特征,如:数据库支持、集群、插件、支持cron-like表达式等等。 官网: http://www.quartz-scheduler.net/ 源码: https://github.com/quartznet/quartznet 示例: http://www.quartz-scheduler.net/documentation/quartz-2.x/quick-start.html 二、概念解释 Scheduler:作业调度器。 IJob:作业接口,继承并实现Execute, 编写执行的具体作业逻辑。 JobBuilder:根据设置,生成一个详细作业信息(JobDetail)。 TriggerBuilder:根据规则,生产对应的Trigger。 三、示例程序 3.1、界面 新建一个WinForm程序Client,项目右键->属性->应用程序->输出类型,选择控制台应用程序。 3.2、引用 项目右键->管理 NuGet 程序包->Quartz.NET。 3.2、作业 新建一个类DataSyncJob并继承IJob

CSAPP Chapter 8:Exception Control Flow

为君一笑 提交于 2020-05-04 17:59:19
  prcesssor在运行时,假设program counter的值为a 0 , a 1 , ... , a n-1 ,每个ak表示相对应的instruction的地址。从a k 到a k+1 的变化被称为control transfer。一系列的control transfers被称为control flow。   exceptions是指一些event,这些event表明当前的system、processor或executing program存在某些状况(详见1.2)。exceptions会导致control flow的突变,典型的就是将控制从当前运行的程序或任务转移到exception handler的执行(详见1.1节)。在计算机程序中,我们设计了jump和branch,call和return;他们通过program state的变化,引起了control flow的突变。exceptions中的control flow的突变是通过system state的变化来引发的,这种control flow的突变被称为exception control flow。interrupt作为exceptions的一种,当由I/O devices complete引发interrupt后,I/O devices通过pin的变化给processor发送signal,并将exception