`
yimeng528
  • 浏览: 184213 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论
文章列表
做为使用quartz的我们,其实最关心的就job,job里面会实现我们要执行的业务代码,相对于调度器触发器来讲,job相对简单一些。   先睹图为快:   我们继承IJob接口定义的job会被封装到JobDetailImpl中,JobDetailImpl还包括其它属性,比如唯一标识job的JobKey(如上图),可见记录job状态的JobDataMap(如上图),还有就是是否支持持久化,Ijob
上节中学到了quartz 如何解析corn-like 表达式,其实触发器中最核心的地方就是处理时间, 这一节让我们来了解下quartz中的触发器有哪些吧:   我想大家一定首先想到的就是处理corn-like的触发器吧,它就是CronTriggerImpl触发器, ...
配置说明请参考:http://www.blogjava.net/xmatthew/archive/2009/02/15/253864.html   cron-like也有叫unix-like表达式的,主要是对时间的配置,在quartz中主要用于触发器中,主要是根据用户配置的表达式以得出要执行作业的时间,看看Quartz是怎么解析cron-like表达式的,又是如何用于触发器之中。   CronExpression类: Cron-like表达式的操作类是CronExpression
第六节:JobStore   跟据名称的意思,很可能理解成存放作业的容器,实际上真不是这样,它放的有哪些东东呢? JobStore我只看了RAMJobStore,里面其实放了Job和Trigger以及它们之间的关系。   让我们先看下有哪些jobStore吧,如下面类图:   其实也就是两类,一个是内存中,一个持久化存储.  
在说到Quzrtz线程池的时候要先讲一下线程池的概念 : 我个人的理解就是把要执行的东东扔到一个类似水池子的容器里面,给它洗澡,具体怎么洗,洗的干净不干净,还是一个个等着排队洗,都算是线程池对线程的管理,官方的概念也不想找了,就按这样理解吧。 百度上找了下有哪些情况下不使用线程池,感觉挺不错,贴出来看下: ●如果需要使一个任务具有特定优先级 ●如果具有可能会长时间运行(并因此阻塞其他任务)的任务 ●如果需要将线程放置到单线程单元中(线程池中的线程均处于多线程单元中) ●如果需要永久标识来标识和控制线程,比如想使用专用线程来终止该线程,将其挂起或按名称发现它   ...
前面几节简单的介绍了Quartz和其内部的执行过程,内容简单也容易理解,今天正式步入Quartz源码研究刨习,从调度器入手吧!   打开代码,先看下代码整体结构:    调度器介绍: Quartz调度器(Scheduler)主要有两个,一个是远程调度器(RemoteScheduler),一个是标准调度器(StdScheduler),它们是由调度工厂完成实例化的,对用户是封闭的。由工厂实例化哪个调度器取决于用户自己的配置。
稍微往quartz里面看了下代码在加上自己的揣测,大概梳理下它的执行过程,是如何调度,如何执行任务的。   执行过程: 调度器初始化配置,比如JobStore,线程池,轮循线程,作业执行环境等 如果有任务来了就把任务扔到JobStore中,有另外的线程会根据触发机制来轮循JobStore中的job,如果满足执行条件就把它扔到线程池中执行,这样一次执行作业的任务就完成了。   其中 调度器类比如有:
调度器: Quartz.Net中核心的地方就调度器,调度器负责管理Quartz.NET应用运行时环境。 上一节中代码中IScheduler sched = sf.GetScheduler(); 这一句代码看起来简单,其实背后做了好多事情,比如:初始化配置,是使用数据库还是内存,初始化线程池,是否是远程执行job等等,总之挺复杂的。 作业: 目前我的理解就是job,类似于上一节中自定义的MyJob 触发器: 用来告诉调度器作业什么时候触发. 解发器分为:SimpleTriggerImpl,CronTriggerImpl,DailyTimeIntervalTri ...
 在网上看到别贴的话,要想成为技术高手就需要多多的看看别人的代码,理解别的思想,看开源项目就是一个不错的选择。说实话我太想成为技术高手,但是自己悟性太差,半天弄不明白理解不了别人写的代码,为了提高自己的阅读能力,希望自己坚持看完quartz2.0这个开源的项目,顺便也锻炼一下自己写博客的水平。                                简单介绍:官网:http://quartznet.sourceforge.net/ Quartz有时钟的意思,也特别贴切这个开源的任务调度项目. 官方上说Quartz.NET是一个全功能的开源作业调度系统,从最小的应用程序,可用于 ...
十. redis java client       redis主页上列出的java 客户端有JDBC-Redis JRedis Jedis三种,下面分别介绍三种客户端的优缺点及其他相关的工具.   支持redis版本 性能 维护 推荐 JDBC-Redis   not good     JRedis 1.2.n release 2.0.0 尚未release版本 fast     Jedis 2.0.0 release fast actively developed 推荐   JDBC-Redis JD ...
九.redis学习笔记之虚拟内存           首先说明下redis的虚拟内存与os的虚拟内存不是一码事,但是思路和目的都是相同的。就是暂时把不经常访问的数据从内存交换到磁盘中,从而腾出宝贵的 内存空间用于其他需要访问的数据。尤其是对于redis这样的内存数据库,内存总是不够用的。除了可以将数据分割到多个redis server外。另外的能够提高数据库容量的办法就是使用vm把那些不经常访问的数据交换的磁盘上。如果我们的存储的数据总是有少部分数据被经常访问,大 部分数据很少被访问,对于网站来说确实总是只有少量用户经常活跃。当少量数据被经常访问时,使用vm不但能提高单台redi ...
八.redis 主从复制         redis主从复制配置和使用都非常简单。通过主从复制可以允许多个slave server拥有和master server相同的数据库副本。下面是关于redis主从复制的一些特点1.master可以有多个slave2.除了多个slave连到相同的master外,slave也可以连接其他slave形成图状结构3.主从复制不会阻塞master。也就是说当一个或多个slave与master进行初次同步数据时,master可以继续处理client发来的请求。相反slave在初次同步数据时则会阻塞不能处理client的请求。4.主从复制可以用来提高系 ...

七.redis 持久化

七.redis 持久化         redis是一个支持持久化的内存数据库,也就是说redis需要经常将内存中的数据同步到磁盘来保证持久化。redis支持两种持久化方式,一种是 Snapshotting(快照)也是默认方式,另一种是Append-only file(缩写aof)的方式。下面分别介绍Snapshotting       快照是默认的持久化方式。这种方式是就是将内存中数据以快照的方式写入到二进制文件中,默认的文件名为dump.rdb。可以通过配置设置自动做快照持久 化的方式。我们可以配置redis在n秒内如果超过m个key被修改就自动做快照,下面是默认的快照保存配 ...
六.redis 发布订阅          发布订阅(pub/sub)是一种消息通信模式,主要的目的是解耦消息发布者和消息订阅者之间的耦合,这点和设计模式中的观察者模式比较相似。pub /sub不仅仅解决发布者和订阅者直接代码级别耦合也解决两者在物理部署上的耦合。redis作为一个pub/sub server,在订阅者和发布者之间起到了消息路由的功能。订阅者可以通过subscribe和psubscribe命令向redis server订阅自己感兴趣的消息类型,redis将消息类型称为通道(channel)。当发布者通过publish命令向redis server发送特定类型的消息 ...

五.redis pipeline

五.redis pipeline   redis是一个cs模式的tcp server,使用和http类似的请求响应协议。一个client可以通过一个socket连接发起多个请求命令。每个请求命令发出后client通常 会阻塞并等待redis服务处理,redis处理完后请求命令后会将结 ...
Global site tag (gtag.js) - Google Analytics