在上一节介绍了标记的解析,就相当于识别了一句话里有哪些词语,接下来就是把这些词语组成完整的句子,即拼装标记为语法树. 树(tree) 树是计算机数据结构里的专业术语.就像一个学校有很多年级,每个年级下面有很多班,每个班级下面有很多学生,这种组织结构就叫树. 组成树的每个部分称为节点(Node): 最顶层的节点(即例子中的学校)称为根节点(Root Node): 和每个节点的下级节点称为这个节点的子节点(Child Node,注意不叫 Subnode)(班级是年级的子节点): 反过来,每个节点的上…
TypeScript 由微软在 2012 年 10 月首发,经过几年的发展,已经成为国内外很多前端团队的首选编程语言.前端三大框架中的 Angular 和 Vue 3 也都改用了 TypeScript 开发.即使很多人没直接用过 TypeScript,他们也在通过 VSCode 提供的智能提示功能间接享受着 TypeScript 带来的各项便利. 很多人对 TypeScript 背后的原理很感兴趣,你可能想要: 更好地理解 TypeScript: 学习编译原理相关的知识来丰富自己(编译器和操作系…
在上一节主要介绍了单个字符的处理,现在我们已经有了对单个字符分析的能力,比如: 判断字符是否是换行符:isLineBreak 判断字符是否是空格:isWhiteSpaceSingleLine 判断字符是否是数字:isDigit 判断字符是否是标识符(变量名): 标识符开头部分:isIdentifierStart 标识符主体部分:isIdentifierPart 同时还可以通过 char === CharacterCodes.hash 方式判断其它字符 接下来,需要利用字符组装标记. 标记(Tok…
AQS源码详细解读 目录 AQS源码详细解读 基础 CAS相关知识 通过标识位进行线程挂起的并发编程范式 MPSC队列的实现技巧 代码讲解 独占模式 独占模式下请求资源 独占模式下的释放资源 共享模式 请求资源 释放资源 条件变量 await方法 signal方法 总结 为什么需要SIGNAL状态 为什么需要PROPAGATE状态 基础 在讲解AQS之前,有几个额外的知识需要了解.知道了这些,才能明白AQS框架中很多代码的道理. CAS相关知识 通过标识位进行线程挂起的并发编程范式 MPSC队列…
在上一节介绍了语法树的结构,本节则介绍如何解析标记组成语法树. 对应的源码位于 src/compiler/parser.ts. 入口函数 要解析一份源码,输入当然是源码内容(字符串),同时还提供路径(用于报错).语言版本(比如ES3 和 ES5 在有些细节不同). createSourceFile 是负责将源码解析为语法树的入口函数,用户可以直接调用:比如 ts.createSourceFile(‘<stdio>’, 'var xld;'). export function createSou…
我的新浪微博:http://weibo.com/freshairbrucewoo. 欢迎大家相互交流,共同提高技术. 又很久没有写博客了,最近忙着研究GlusterFS,本来周末打算写几篇博客的,但是由于调试GlusterFS的一些新增功能就用了整整的一天,还有一天就陪老婆大人逛街去了!今晚浏览完微博发现时间还早就来博客一篇,本篇博客内容主要是前一段时间研究的Thrift的代码生成器的源码详细分析,没有具体分析语法解析,因为是工具字段生成的代码,人是没有办法阅读的----到处都是跳转表!由于Th…
基于LNMP的Zabbbix之Zabbix Server源码详细安装:http://www.cnblogs.com/losbyday/p/5828547.html wget http://jaist.dl.sourceforge.net/project/zabbix/ZABBIX%20Latest%20Stable/3.0.3/zabbix-3.0.3.tar.gz .tar.gz cd zabbix- ./configure --prefix=/usr/local/zabbix_agent -…
1. 概述 LinkedHashMap 继承自 HashMap,在 HashMap 基础上,通过维护一条双向链表,解决了 HashMap 不能随时保持遍历顺序和插入顺序一致的问题.除此之外,LinkedHashMap 对访问顺序也提供了相关支持.在一些场景下,该特性很有用,比如缓存.在实现上,LinkedHashMap 很多方法直接继承自 HashMap,仅为维护双向链表覆写了部分方法.所以,要看懂 LinkedHashMap 的源码,需要先看懂 HashMap 的源码.关于 HashMap 的…
代码地址如下:http://www.demodashi.com/demo/11638.html Spring MVC概述 Spring MVC框架是一个开源的Java平台,为开发强大的基于Java的Web应用程序提供全面的基础架构支持非常容易和非常快速. Spring web MVC框架提供了MVC(模型 - 视图 - 控制器)架构和用于开发灵活和松散耦合的Web应用程序的组件. MVC模式导致应用程序的不同方面(输入逻辑,业务逻辑和UI逻辑)分离,同时提供这些元素之间的松散耦合. 模型(Mod…
Spring动态多数据源源码分析及解读 一.为什么要研究Spring动态多数据源 ​ 期初,最开始的原因是:想将答题服务中发送主观题答题数据给批改中间件这块抽象出来, 但这块主要使用的是mq消息的方式发送到批改中间件,所以,最后决定将mq进行抽象,抽象后的结果是:语文,英语,通用任务都能个性化的配置mq,且可以扩展到任何使用mq的业务场景上.终端需要做的就是增加mq配置,自定义消费者业务逻辑方法,调用send方法即可. ​ 这样做的好处是:原本在每个使用到mq的项目里都要写一遍mq生产者,mq消…