最近在拜读艾伦在慕课网上写的JQuery课程,感觉在国内对JQuery代码分析透彻的人没几个能比得过艾伦.有没有吹牛?是不是我说大话了? 什么是Sizzle引擎? 我们经常使用JQuery的选择器查询元素,查询的选择器有简单也有复杂: 简单点:“div”.“.navi”.“div.navi”. 复杂点:"div input[type='checkbox']"."div.navi + .section p". Query实现查询时也是优先使用DOM标准查询函数,
我分析的jQuery版本是1.8.3.Sizzle代码从3669行开始到5358行,将近2000行的代码,这个引擎的版本还是比较旧,最新的版本已经到v2.2.2了,代码已经超过2000行了.并且还有个专门的Sizzle主页. 从一个demo开始,HTML代码如下: <div id="grand_father"> <div id="father"> <div id="child1" class="child&
摘要: 本文着重介绍 DRDS 执行计划中各个操作符的含义,以便用户通过查询计划了解 SQL 执行流程,从而有针对性的调优 SQL. DRDS分布式SQL引擎 - 执行计划介绍 前言 数据库系统中,执行计划是对 SQL 如何执行的形式化表示,往往由若干关系操作符构成,用户可以通过对应的 EXPLAIN 命令查看,并通过执行计划大致了解 SQL 的执行过程和执行方式,如全表扫描还是索引扫描,归并连接还是哈希连接等.执行计划可以为用户进行 SQL 调优提供重要依据. DRDS 执行计划 与多数数据库
1. 问题描述 这样一种报表:报表形式非常简单,只是简单的单数据源明细报表,但是数据量非常大,百万.千万甚至更多.报表取数及计算时间相当长. 希望能够提高报表展示速度,对于用户来说,查询报表不会有滞后的感觉. 解决方案提供工具:报表开发工具FineReport. 2. 解决方案 2.1 解决方案 对于单数据源明细报表,可以启用行引擎来执行报表,提高报表展示速度,优化用户体验. 2.2 原理 普通报表:取出全部数据后再执行报表,最后返回整体的报表结果给浏览器,用户访问到看到结果的时间=报表取数时间
import java.io.File; import java.lang.reflect.Field; import java.util.Arrays; import javax.script.Invocable; import javax.script.ScriptEngine; import javax.script.ScriptEngineManager; import javax.script.ScriptException; public class JavaExecScriptDe
JS JS 是单线程语音 JS 的 Event Loop 是 JS 的执行机制.类似于 Android Handler 消息分发机制 JS 单线程 技术的出现都跟现实世界里的应用场景密切相关 JS 单线程 JS 最初被设计用在浏览器中,相当于在 UI 线程,设计成多线程就涉及到同步的问题,很复杂,假如不同步的话, UI 线程就不安全.所以设计成了单线程 JS 为什么需要异步 JS 因为是单线程的,可以在 IO 等操作,但是因为是耗时操作,所以会出现卡死的情况,所以为了不影响用户体验,所以需要设计
这一节要分析的东东比较复杂,篇幅会比较大,也不知道我描述后能不能让人看明白.这部分的源码我第一次看的时候也比较吃力,现在重头看一遍,再分析一遍,看能否查缺补漏. 看这一部分的源码需要有一个完整的概念后去看才比较容易看懂,所以我们先把整个编译的原理阐述以后再进行解析. 还是以上次的那个CSS选择器为例:#chua > a + .group labe[for="age"].按照我们正常解析CSS的思路从右往左解析,解析之前词法分析完毕,词法分析结果保存在tokens中. 正常的思路:
Sizzle引擎的主题部分已经分析完毕了,今天为这部分划一个句号. a. Sizzle解析流程总结 是时候该做一个总结了.Sizzle解析的流程已经一目了然了. 1.选择器进入Sizzle( selector, context, results, seed )函数,先对选择器不符合要求的(比如没有选择器.选择器不为字符串.上下文环境context不是节点元素且不是document)排除,直接返回:接着判断如果选择器是简单的选择器(只有一个元选择器,比如“#ID”.“.CLASS”.“TAG”等)
jQuery源码9600多行,而Sizzle引擎就独占近2000行,占了1/5.Sizzle引擎.jQuery事件机制.ajax是整个jQuery的核心,也是jQuery技术精华的体现.里面的有些策略确实很值得学习,先膜拜之,然后细细学习. 在学习Sizzle引擎之前我们先准备一点知识,和先了解Sizzle引擎的一点工作原理. <div id="chua"> <a> <span>chua的测试用例</span> </a> &l