编译原理笔记(2) 第二章 程序语言的定义 语言的定义是语言实现的基础。 程序语言由两方面定义:语法规则和语义规则。 语法:一组规则,用它可以产生一个合式(well-formed)的程序。 语义:语言成分的含义,由程序的执行效果来说明。 语言的分类: 第一代语言(机器语言) 第二代语言(汇编语言) 第三代语言(高级语言) 命令式(c++) 功能式(Haskell) 说明式(Prolog) 第四代语 2020-03-13 笔记 #编译原理
关键路径 这是由BBfat推荐给我的一道经典面试题: 输入一个整数,求将其转换为二进制后,该二进制中数字1的个数。 解法1 这是一种比较容易想的方法: 123456789101112131415161718#include <iostream>using namespace std;int main(){ int num, count; count = 0; ci 2020-03-12 笔记 #算法 #C++
编译原理笔记(1) 第一章 编译程序与解释程序 编辑器将源语言程序转换成目标语言程序,转换前后的两种程序在逻辑上是等价的。源语言不一定是高级语言程序,目标程序也不一定是低级语言程序。例如:汇编器的别名就是汇编语言编译器。再如:历史上存在过一种编译器将C++编译为C。 解释器则是将将源程序和输入一同输入解释器,解释器一行一行按照输入执行程序,产生输出。 编译程序生成的目标程序在执行时比解释器执行得快;但解释程序错 2020-03-12 笔记 #编译原理
模板题——连续子序列和的最大值 题目: 给定一个长度为 n 的整形数组 nums,求从数组索引 l 至 索引 r 的整数序列中,连续序列和的最大值为多少。 思路: 本题的主要思路,可分为两种 使用遍历的思想,遍历出序列的每种情况,逐一求和,计算最大值 但这种思路及其耗费时间,不可取。 使用动态规划的思想,使用一个数组 dp 记录,从索引 l 起包含位置 k 连续序列和的最大值 (l<=k<=r),最大值可由 2020-03-04 笔记 #算法 #C++
闲来无事 2020年的寒假一转眼就只剩2天时间,按理这个时候我应该已经踏上了返京的路途,但一切不都得从一只蝙蝠说起嘛,全国人民都被迫放了一个长假。 这个假期我算不上荒废也不敢说是充分利用,更多是在一种矛盾的心态中度过,是一种伴随着焦虑与期待、得过且过与不甘心的心态。一时觉得自己应该努力呀,一时又觉得自己需要休息。 值得高兴的是,昨天一直让我担心的事情“CET6”终于公布了成绩,我顺利通过了。算是又顺利过了一 2020-02-20 日记 #日记
Double类型数据造成的数据精度丢失 这是由一道简单的蓝桥杯例题所得出的小经验,这道题目的主要内容是取一个数小数点后的某几位数字。 首先我想到,要取小数点后的n位数字,只要我将数小数点后的数字其乘以10的n次方,得到的整数部分不就是所求的数字吗? 于是我使用了这样的方式在 C++ 中计算: 1long long a = long long ( a * pow ( 10 , n ) ); 但最后验证结果却显示我的结果不正确,我与一份正确 2020-01-20 笔记 #算法 #C++
实模式寻址与保护模式寻址 实模式寻址 8086/8088处理器只能在实模式下进行寻址 实模式寻址是为了解决16位字长的机器访问20位地址的问题,而解决的方法就是采用寄存器分段的方式。 因为机器字长为16位,故此一个段的最大大小为2的16次方,也即64K,但不是说段的的大小一定为64K。 段不能起始于任意位置,段必须起始于小段的的整数倍位置,小段的大小为16字节。在1MB的内存中存在64K个小段。这64K个小段用16位二进制 2019-12-20 笔记 #操作系统 #汇编语言
Linux 简单文件系统实现 Linux 简单文件系统实现 前言 借鉴于Linux文件系统的实现 存储设备分区 文件系统的最终目的是把大量数据有组织的放入持久性的存储设备中,比如硬盘和磁盘。这些存储设备与内存不同。它们的存储能力具有持久性,不会因为断电而消失;存储量大,但读取速度慢。 观察常见存储设备。最开始的区域是MBR,用于Linux开机启动(参考Linux开机启动)。剩余的空间可能分成数个分区(partition)。 2019-12-08 笔记 #C++ #操作系统
分页寻址 文章借鉴 内存寻址之分页机制 与 内存分页、寻址方式那些事 写在前面 分页与分段机制 分段机制是Intel CPU一直保持的机制,而分页机制在80x86的计算机中是一种可选的机制,但只有在保护模式下才存在这种机制,也就是说保护模式下才存在分页寻址的机制,但保护模式不一定开启分页寻址机制. 内存碎片化问题: 进程A进来,向os申请了200的内存空间,于是os把0~199分配给A 进程B进来,向os 2019-10-14 笔记 #操作系统 #汇编语言
Appium 自闭之旅 该篇文章主要针对于AppiumDesktop,AppiumServer最后一版在2016年已经停更了,随后推出的Desktop配置起来更加方便,更加易用,故此推荐Desktop。 注意:Desktop和Server的安装步骤相差较大,而搜索Appium得到的结果大多数是Server的,不要被误导了。 安装准备: JAVA JDK: 注意下载最新版,不然后续步骤会提示你JDK版本过低 JAVA 2019-09-28 杂 #软件