title: quartz源码分析--执行引擎和线程模型 date: 2017-09-09 23:14:48 categories: quartz tags: [quartz, 源码分析] --- --- [TOC] 软件版本:quartz-2.2.3 序 上一篇介绍了quartz的启动过程,这篇主要介绍quartz的执线程模型,众所周知,quartz并没有采用定时器去完成定时任务,而是通过线程去完成.为了简化对quartz线程模型的理解,就暂用下理解方式吧 类名 SimpleThreadPoo…
先简单介绍一下quartz,Quartz是一个功能丰富的开源作业调度库,可以集成到几乎任何Java应用程序中 - 从最小的独立应用程序到最大的电子商务系统.quartz可用于创建执行数十,数百甚至数十万个作业的简单或复杂的计划; 任务定义为标准Java组件的任务,可以执行任何可以对其进行编程的任何内容.Quartz Scheduler包含许多企业级功能,例如支持JTA事务和集群. 以上内容来自quartz官网. 1源码分析 我们会针对quartz的几个主要类进行分析,看一下quartz是如何实现…
jQuery 2.0.3 源码分析Sizzle引擎 - 解析原理 声明:本文为原创文章,如需转载,请注明来源并保留原文链接Aaron,谢谢! 先来回答博友的提问: 如何解析 div > p + div.aaron input[type="checkbox"] 顺便在深入理解下解析的原理: HTML结构 <div id="text"> <p> <input type="text" /> </p>…
如果你对netty的reactor线程不了解,建议先看下上一篇文章netty源码分析之揭开reactor线程的面纱(一),这里再把reactor中的三个步骤的图贴一下 reactor线程 我们已经了解到netty reactor线程的第一步是轮询出注册在selector上面的IO事件(select),那么接下来就要处理这些IO事件(process selected keys),本篇文章我们将一起来探讨netty处理IO事件的细节 我们进入到reactor线程的 run 方法,找到处理IO事件的代…
[源码分析] 分布式任务队列 Celery 多线程模型 之 子进程 目录 [源码分析] 分布式任务队列 Celery 多线程模型 之 子进程 0x00 摘要 0x01 前文回顾 1.1 基类作用 1.2 子进程抽象 1.3 Fork过程 0x02 预先准备 2.1 总体准备流程 2.2 获取命令 2.3 调用 windows 系统方法 2.4 传递父进程信息 0x03 子进程启动 3.1 从命令行进入 3.2 _main 读取父进程关键信息 3.3 SpawnProcess 启动 3.3.1 _…
[源码分析] Facebook如何训练超大模型---(1) 目录 [源码分析] Facebook如何训练超大模型---(1) 0x00 摘要 0x01 简介 1.1 FAIR & FSDP 1.2 大规模训练计算能力需求 0x02 FSDP 如何工作 2.1 全参数分片 2.2 比对 2.3 梳理 2.3.1 思路 2.3.2 流程步骤 0x03 How to use FSDP 3.1 在语言模型中使用FSDP 3.2 在计算机视觉模型之中使用FSDP 3.3 在PyTorch Lightnin…
[源码分析] Facebook如何训练超大模型 --- (2) 目录 [源码分析] Facebook如何训练超大模型 --- (2) 0x00 摘要 0x01 回顾 1.1 ZeRO 1.1.1 ZeRO-1 1.1.2 ZeRO-2 1.1.3 ZeRO-3 1.2 DDP VS FSDP 0x02 总体逻辑 2.1 FSDP 2.2 原始ZeRO 1.2.1 初始化 1.2.2 前向传播 1.2.3 反向传播 2.3 FSDP代码 2.3.1 初始化 2.3.2 前向传播 2.3.3 分层优…
[源码分析] Facebook如何训练超大模型 --- (3) 目录 [源码分析] Facebook如何训练超大模型 --- (3) 0x00 摘要 0x01 ZeRO-Offload 1.1 设计原则 1.2 ZeRO 0x02 卸载策略 2.1 数据流图 2.2 限制CPU计算 2.3 最小化计算量 2.4 最大化内存节约 2.5 唯一最优化策略 2.6 ZeRO-Offload Schedule 2.6.1 单机计划 2.6.2 多节点计划 0x03 FairScale Offload 使…
Java版本:8u261. 1 简介 ScheduledThreadPoolExecutor即定时线程池,是用来执行延迟任务或周期性任务的.相比于Timer的单线程,定时线程池在遇到任务抛出异常的时候不会关闭整个线程池,更加健壮(需要提一下的是:ScheduledThreadPoolExecutor和ThreadPoolExecutor一样,如果执行任务的过程中抛异常的话,这个任务是会被丢弃的.所以在任务的执行过程中需要对异常做捕获处理,有必要的话需要做补偿措施). 传进来的任务会被包装为Sch…
声明:本文为原创文章,如需转载,请注明来源并保留原文链接Aaron,谢谢! 从Sizzle1.8开始,这是Sizzle的分界线了,引入了编译函数机制 网上基本没有资料细说这个东东的,sizzle引入这个实现主要的作用是分词的筛选,提高逐个匹配的效率 我们不直接看代码的实现,通过简单的实现描述下原理: 以下是个人的理解,如果有错误欢迎指出! Javascript有预编译与我们说的编译函数是不同的概念 什么是JavaScript的“预编译”? function Aaron() { alert("he…