本文已收录于 中科大编译原理学习笔记 系列,共计 6 篇,本篇是第 1 篇

语法分析的目标 语法分析的最终目标是生成抽象语法树。   上下文无关文法:用数学理论描述语言的语法规则 早有数学家帮我们构造好了数学方法,数学的发展总是快工程一步! 3型文法描述语言的词法结构;2型文法描述语言的语法结构。上图的文氏图表示更外部的文法描述的范围更广。1型文法和0型文法在目前 …

阅读全文 »

本文已收录于 CMU数据库系统学习笔记 系列,共计 11 篇,本篇是第 7 篇

课程小结 视频:https://www.bilibili.com/video/BV1Jq4y1B7ce/?spm_id_from=333.788 之前的课程中我们研究了存储引擎、缓存池和访问方法(哈希表与树索引)。本节开始研究算子。 研究四个议题: 算子算法。例如 排序、join等具体是怎么执行的。 …

阅读全文 »

本文已收录于 CMU数据库系统学习笔记 系列,共计 11 篇,本篇是第 6 篇

作业项目进度提示   并发控制 视频:https://www.bilibili.com/video/BV1eR4y1W7rW 本节讨论让数据结构具备并发安全的特点,尽管本节仅仅是介绍 B+ Tree 上的相关技术。在前两节中讨论的数据结构中,我们都只考虑单线程访问的情况,即只能有一个线程在 …

阅读全文 »

本文已收录于 清华大学操作系统课程笔记 系列,共计 9 篇,本篇是第 7 篇

信号量和管程:都是操作系统提供的同步方法 今天来讲解 与 锁同级的一种抽象办法。——信号量 信号量(Semaphore),有时被称为信号灯,是操作系统提供的,在多线程环境下使用的一种设施, 它负责协调各个线程, 以保证它们能够正确、合理的使用公共资源。 两个进程协调谁能使用,由操作系统作为“裁判”。 …

阅读全文 »

本文已收录于 清华大学操作系统课程笔记 系列,共计 9 篇,本篇是第 6 篇

同步互斥 并发多线程,如果不用锁的话,每次运行结果都可能不同。 如果对多并发进程之间要求每次结果应该一样,就需要考虑同步互斥问题;有时候却还需要多进程不同运行时候的结果不一样,例如在通信的时候,就期望不同,这时候就不需要考虑这种问题。 这就会出现间歇性问题。但进程并发执行有很多好处,我们不能抛弃它。 …

阅读全文 »

什么是BBR TCP BBR是谷歌出品的TCP拥塞控制算法。BBR目的是要尽量跑满带宽,并且尽量不要有排队的情况。BBR可以起到单边加速TCP连接的效果。 Google 在 2016年9月份开源了他们的优化网络拥堵算法BBR,最新版本的 Linux内核(4.9-rc8)中已经集成了该算法。 特别适合 …

阅读全文 »

本文已收录于 CS143斯坦福编译原理学习笔记 系列,共计 2 篇,本篇是第 2 篇

词法分析任务 任务:将代码分解成为<class, string>形式,这叫做Token(词法单元)。 Cool包括以下几个类别: 标识符(Identifier):指的是变量名、函数名或类名等名称。此外,+或-等运算符及括号等标点符号也属于标识符。标点符号与保留字有时也会被归为另种类型的单 …

阅读全文 »

本文已收录于 CS143斯坦福编译原理学习笔记 系列,共计 2 篇,本篇是第 1 篇

编程语言的性价比 问1:为什么有这么多程序语言? 如,科学计算→Fortran,商业程序→SQL,系统程序→C/C++ 答:不同程序所解决的领域是不同的   Cool语言概述 课程项目:使用c++为Cool语言构造编译器 课程目标:使用c++为Cool语言实现一个完整的编译器。 课程主页: …

阅读全文 »

本文已收录于 CS143斯坦福编译原理课程实验 系列,共计 1 篇,本篇是第 1 篇

视频讲述 官方课程资源下载 2021版的课程主页(含文本作业、编程作业、PPT等信息):http://web.stanford.edu/class/cs143/ 备用:因为官方的课程主页每年都会更新,有时候会时常上不上去,这里我将上述网站进行了镜像,以备不时之需。 下载压缩包后解压缩,点击index …

阅读全文 »