quartz

Can't get QuickLook to work when trying to preview files

ε祈祈猫儿з 提交于 2019-12-11 06:53:09
问题 I am writing a macOS application with Swift using story boards. I have a NSTableView which contains files that I want the user to be able to preview via QuickLook. I seemingly have everything in place and my code looks very similar to what has been described here: QuickLook consumer as a delegate from an NSViewController, but I keep getting the error -[QLPreviewPanel setDataSource:] called while the panel has no controller - Fix this or this will raise soon. See comments in QLPreviewPanel.h

Quartz.NET error comes every time I use it

二次信任 提交于 2019-12-11 03:04:17
问题 I get an error in this line saying: Cannot implicitly convert type 'System.Threading.Tasks.Task' to 'Quartz.IScheduler'. An explicit conversion exists (are you missing a cast?) How to solve it; I don't understand? Please help! IScheduler scheduler = StdSchedulerFactory.GetDefaultScheduler(); public static void Start() { try { //Construct scheduler factory //IScheduler scheduler = schedulerFactory.GetScheduler(); // IScheduler scheduler = StdSchedulerFactory.GetDefaultScheduler(); IScheduler

任务调度springTask和cron表达式

寵の児 提交于 2019-12-10 15:15:53
文章目录 一、常用的任务调度框架和区别 常用框架 区别 1、相同点: 2、Quartz 3、Task: 4、总结: 二、springTask入门dmeo 三、项目中实战案例 1.秒杀商品列表的增量更新 2.过期秒杀商品的移除 四、 cron标识和例子 cron表达式格式 cron表达式例子 五、在线cron生成器 一、常用的任务调度框架和区别 常用框架 在企业级应用中,经常会制定一些“计划任务”,即在某个时间点做某件事情,核心是以时间为关注点,即在一个特定的时间点,系统执行指定的一个操作。常见的任务调度框架有Quartz和SpringTask等。 区别 1、相同点: 两者均能实现定时调度任务 2、Quartz ① 默认多线程异步执行 ② 单个任务时,在上一个调度未完成时,下一个调度时间到时,会另起一个线程开始新的调度。业务繁忙时,一个任务会有多个调度,可能导致数据处理异常。 ③ 多个任务时,任务之间没有直接影响,多任务执行的快慢取决于CPU的性能 ④ 触发方式 : (1)SimpleTrigger (2)CronTrigger ⑥ 能被集群实例化,支持分布式部署 ⑦使用JobStoreCMT(JDBCJobStore的子类),Quartz 能参与JTA事务;Quartz 能管理JTA事务(开始和提交)在执行任务之间,这样,任务做的事就可以发生在JTA事务里。 3、Task: ①

CoreText 入门(一)-文本绘制

扶醉桌前 提交于 2019-12-10 15:07:33
本文主要的内容是讨论如何使用CoreText进行最简单的文本内容的绘制,同时也谈到的CoreText绘图的一个最基本但是也是最重要的CoreText坐标系的概念,CoreText坐标系的概念是贯穿所有的CoreText绘图场景,所有这里先做个介绍 其它文章: CoreText入门(一)-文本绘制 CoreText入门(二)-绘制图片 CoreText进阶(三)-事件处理 CoreText进阶(四)-文字行数限制和显示更多 CoreText进阶(五)- 文字排版样式和效果 CoreText进阶(六)-内容大小计算和自动布局 CoreText进阶(七)-添加自定义View和对其 本文的主要内容如下 CoreText是什么 坐标系 简单的文字绘制 总结 Demo: CoreTextDemo CoreText是什么 苹果的文档中对CoreText的描述如下 Core Text is an advanced, low-level technology for laying out text and handling fonts. Core Text works directly with Core Graphics (CG), also known as Quartz, which is the high-speed graphics rendering engine that

Spring quartz 集群模式下trigger_state error问题原因

我的未来我决定 提交于 2019-12-10 12:22:43
问题描述 在项目中采用了Spring quartz调度任务来执行定时任务,quartz本身是支持集群化方式的,可以配置一个数据源,quartz会在数据库中创建一系列的表,使用这些表来存储调度的信息,集群中所有的节点都访问这一个数据库,这样可以实现集群环境下的定时任务调度。 但是在最近生产环境出现了这样的问题,新增的一个定时调度任务,当服务启动后,执行两次以后,该任务就不再执行了,但是其他原有的定时任务并没有出现问题,只有这个新增的任务无法执行,检查qrtz_triggers表,发现该条调度任务的记录的trigger_state变成了”error”状态。 问题分析 1、检查是否新增的定时任务抛出异常,导致了任务中断,加入大量的日志以及异常捕获,未发现任何异常的日志,排除了代码报错的可能 2、猜测是否是因为数据库中调度相关表存在脏数据,导致了新增的调度任务不执行;随后将相关表全部清空,重启集群中所有节点,观察,发现仍然是执行两次后变为”error” 3、检查qrtz_scheduler_state表,发现存在多条记录,根据网上查找的信息,将多条记录删除,只保留一条,再重启集群,观察,发现仍然不行 4、由第三条可知,qrtz_scheduler_state表中有多条记录,仔细观察instance_name的记录,发现是由服务器节点的实例名加数字组成

Quartz学习

倾然丶 夕夏残阳落幕 提交于 2019-12-10 11:29:10
public partial class SystemScheduler { private SystemScheduler() { } public static SystemScheduler CreateInstance() { return new SystemScheduler(); } private IScheduler _scheduler; public async Task RunQuartz() { try { //这里读取配置文件中的任务开始时间 int hour = int.Parse(ConfigurationManager.AppSettings["Hour"]); int minute = int.Parse(ConfigurationManager.AppSettings["Minute"]); // Grab the Scheduler instance from the Factory NameValueCollection props = new NameValueCollection { { "quartz.serializer.type", "binary" } }; StdSchedulerFactory factory = new StdSchedulerFactory(props); IScheduler scheduler =

Springboot使用Quartz框架(三)--Quartz在项目中的使用

假装没事ソ 提交于 2019-12-10 09:49:15
前面2篇文章介绍了quartz简单的使用以及quartz核心类的作用,这一篇文章主要介绍quartz在项目中的使用 1.自定义注解 @Target ( { ElementType . TYPE } ) @Retention ( RetentionPolicy . RUNTIME ) @Documented public @ interface JobUnit { /** * @return */ String jobName ( ) default "" ; String jobGroup ( ) default "" ; String jobDesc ( ) default "" ; String jobCorn ( ) default "" ; int misfireInstruction ( ) default CronTrigger . MISFIRE_INSTRUCTION_DO_NOTHING ; /** * 是否单例,单例情况下以代码配置为主,系统无法修改 jobName+jobGroup,防止生成多个同任务定时器 * * @return */ boolean singleton ( ) default true ; } 2.任务配置单元数据 public class QuartzJobUnit implements Serializable { private

解决quartz的job无法注入spring对象

依然范特西╮ 提交于 2019-12-10 04:00:31
一般情况下,quartz的job中使用autowired注解注入的对象为空,这时候我们就要使用 spring -quartz提供的AdaptableJobFactory类。 自定义一个类: 第一步:自定义一个类: public class MyJobFactory extends AdaptableJobFactory { //这个对象Spring会帮我们自动注入进来,也属于Spring技术范畴. @Autowired private AutowireCapableBeanFactory capableBeanFactory; protected Object createJobInstance(TriggerFiredBundle bundle) throws Exception { //调用父类的方法 Object jobInstance = super.createJobInstance(bundle); //进行注入,这属于Spring的技术,不清楚的可以查看Spring的API. capableBeanFactory.autowireBean(jobInstance); return jobInstance; } } 第二步:在quartz.xml中修改为 <bean id="quartzJob" class="com.thinkgem.jeesite.modules

Springboot使用Quartz框架(二)

有些话、适合烂在心里 提交于 2019-12-09 19:54:15
上一篇写了一个简单的demo演示了Quartz用到了哪些接口和类,这一边就来具体讲讲这些接口和类。 Quartz的核心:Job,Trigger,Scheduler Job 为作业的接口,为任务调度的对象;JobDetail 用来描述 Job 的实现类及其他相关的静态信息;Trigger 做为作业的定时管理工具,一个 Trigger 只能对应一个作业实例,而一个作业实例可对应多个触发器;Scheduler 做为定时任务容器,是 Quartz 最上层的东西,它提携了所有触发器和作业,使它们协调工作,每个 Scheduler 都存有 JobDetail 和 Trigger 的注册,一个 Scheduler 中可以注册多个 JobDetail 和多个 Trigger。 Quartz API 几个重要接口: Scheduler,用于与调度程序交互的主程序接口。 Job,被调度程序执行的任务类。 JobDetail,使用 JobDetail 来定义定时任务的实例。 Trigger,触发器,表明任务在什么时候会执行。 JobBuilder,用于声明一个任务实例,也可以定义关于该任务的详情比如任务名、组名等。 TriggerBuilder,触发器创建器,用于创建触发器 trigger。 Scheduler调度器: 调度器就相当于一个容器,装载着任务和触发器,该类是一个接口,代表一个 Quartz

分布式锁

為{幸葍}努か 提交于 2019-12-09 11:48:19
分布式锁 在叙述分布式锁前,先对锁的原理进行理解。 如何避免竞争条件 两个或多个进程读写某些共享数据,而最后的结果取决于进程运行的精确时序,称为竞争条件。——《现代操作系统》 而锁正是避免竞争条件的解决方案之一。 再列出《现代操作系统》一书中,要成为一个解决竞争条件的好方案的条件: 任何两个进程不能同时处于其临界区 不应对 CPU 的速度和数量做任何假设 临界区外运行的进程不得阻塞其他进程 不得使进程无限期等待进入临界区 互斥量 互斥量是构建锁的一个基础原理。 互斥量是一个可以处于两态之一的变量:解锁和加锁。如,用 0 表示解锁,其他值表示加锁。当一个线程或是进程需要访问临界区时,如果互斥量当前是解锁状态,即线程可以自由进入临界区,并更改互斥量的值,当然这个过程需要是原子性的。 如果互斥量已经加锁,调用线程被阻塞,直到获得锁的线程将互斥量重置。 而我们平时使用的 java 的 ReentrantLock 也是基于互斥量的原理,使用 CAS 更新互斥量,更新成功即获得锁,否则进入阻塞。 根据互斥量的定义和 ReentrantLock 的实现原理,这里总结一下互斥量的性质: 互斥量状态判断到变更的过程必须是原子性的 当无法获取互斥量时返回,无法进入临界区 对于如 ReentrantLock 的实现,如果获取不了锁,会阻塞线程,其实就是无法获取互斥量时返回并进行线程阻塞,等待解锁。