第 1 章 计算机的三大原则
- 计算机是执行输入、运算、输出的机器
- 程序是指令和数据的集合
- 计算机的处理方式有时与人们的思维习惯不同
第 2 章 试着制造一台计算机吧
第 3 章 体验一次手工汇编
- Z80 CPU 的 MREQ 引脚和 IORQ 引脚实现了一种能区分输入输出对象的机制,可以区分出使用着相同内存地址的内存和 I/O。
- 在汇编语言中,读写内存的指令不同于读写 I/O 的指令。
- 一旦执行了读写内存的指令,比如 LD 指令,MREQ 引脚上的值就会变为 0,于是内存被选为输入输出的对象;
- 一旦执行了读写 I/O 的指令,比如 IN 或 OUT 指令, IORQ 引脚上的值就会变为 0,于是 I/O 被选为输入输出的对象。
手工汇编
在 CPU 的资料中,明确写有所有可以使用的助记符,以及助记符转换成机器语言后的数值。只要查看这些资料,就可以把用汇编语言编写的程序手工转换成机器语言的程序,这样的工作称为
手工汇编
。从助记符到机器语言的转换方法:
助记符 机器语言 时钟周期数 LD A, num 00111110 num 7 OUT (num), A 11010011 num 11 IN A,(num) 11011011 num 11 JP num 11000011 num 10
第 4 章 程序像河水一样流动着
从汇编角度上看,顺序执行
就是PC寄存器从低地址指向高地址的过程
程序基本上是从内存中的低地址开始,向着高地址流下去的 。我们把程序的这种流动称为“顺序执行”。
结构化程序设计
其实就是:为了把程序编写得具备结构性,仅使用顺序执行、条件分支和循环表示程序的流程即可,而**不再使用跳转指令(goto)**。
中断请求信号图示
事件驱动是什么?
- 用户的操作等产生事件后,由事件决定程序的流程。
- Windows 应用程序的运行就是由事件驱动的。例如, 选择“打开文件”菜单项就能打开一个窗口,在里面可以指定要打开文件的名称和存储位置。之所以能够这样是因为一旦触发了“选中了菜单项”这个事件,程序的流程就相应地流转到了处理打开窗口的那部分。
- 可以把事件驱动想象成是两个程序在对话。
- 在程序中有 WinMain() 和 WndProc() 两个函数。WinMain() 是在程序启动时被调用的主例程(Main Routine)。而 WndProc() 并不会被程序本身调用,Windows 操作系统才是 WndProc() 的调用者。这种机制就使得 Windows 和编写的应用程序这两个程序之间可以进行对话。
- 通常把用户在应用程序中点击鼠标或者敲击键盘这样的操作称作
事件
(Event)。负责检测事件的是 Windows。**Windows 通过调用应用程序的 WndProc() 函数通知应用程序事件的发生。而应用程序则根据事件的类型做出相应的处理。这种机制就是事件驱动
**。 - 可以说事件驱动也是一种特殊的条件分支,它以从 Windows 送来的通知为条件, 根据通知的内容决定程序下一步的流程。
- 事件驱动天然适合使用
状态模式
,因为一旦发送一个事件,程序就会自动执行,从一个状态流转到流转到另一个状态。简单来说:事件就是引起状态转化的原因。
计算器应用程序的状态转化图
第 5 章 与算法成为好朋友的七个要点
哨兵的使用
哨兵
指的是一种含有特殊值的数据,可用于标识数据的结尾等。- 字符串的末尾用
\0
表示,链表的末尾用 -1 表示,像这种特殊的数据就是哨兵。
示例:
假设有 100 个箱子,里面分别装有 一个写有任意数字的纸条,箱子上面标有 1~100 的序号。现在要从这 100 个箱子当中查找是否有箱子装有写着要查找数字的纸条。
不使用哨兵:
从第一个箱子开始依次检查每个箱子中的纸条。每检查完一个纸条,还要再检查箱子的编号(用变量 N 表示),并进一步确认编号是否已超过最后一个编号了。
使用哨兵:
添加了一个 101 号箱子,其中预先放入的纸条上写有正要查找的数字。这种数据就被称为“哨兵”。 通过放入哨兵,就一定能找到要找的数据了。找到要找的数据后,如 果该箱子的编号还没有到 101 就意味着找到了实际的数据;如果该箱子 的编号是 101,则意味着找到的是哨兵,而没有找到实际的数据。
哨兵的功能就是:不必每回都要检查箱子的编号有没有到 100。
第 6 章 与数据结构成为好朋友 的七个要点
无
第 7 章 成为会使用面向对象编程的 程序员吧
无
第 8 章 一用就会的数据库
无
第 9 章 通过七个简单的实验理解 TCP/IP 网络
FQDN 是什么
- FQDN 为
全域名
,(FQDN,Fully Qualified Domain Name)是指主机名加上全路径,全路径中列出了序列中所有域成员。 - 全域名可以从逻辑上准确地表示出主机在什么地方,也可以说全域名是主机名的一种完全表示形式。从全域名中包含的信息可以看出主机在域名树中的位置。例如,acmecompany 公司的 Web 服务器的全域名可以是 www.acmecompany.com,而若 WWW 主机是在销售部子域,则它的全域名可以是 www.sales.acmecompany.com 。当给出的名字像 acmecompany 而不是 acmecompany. 时,他们通常是指主机名,而名字中带有句点的则认为是全域名。这种区别在理解和控制解析过程时是非常重要的。句点实际上指出了域名树的根。
- 全域名在实际中是非常有用的。电子邮件就使用全域名作为收信人的电子邮件地址,如 janicejones@acmecompany.com,其中收信人为 janicejones,跟在收信人名字后面是符号 @,@后面是邮件服务器的全域名,或者说是邮件服务器所在企业的域名,最后是顶层域名.com。. com 意味着 acmecompany 是一个商业机构。
第 10 章 试着加密数据吧
无
第 11 章 XML 究竟是什么
无
第 12 章 SE 负责监管计算机系统 的构建
SE 是 System Engineer(系统工程师)的缩略语。
瀑布模型中的 7 个阶段
本身就是过年的时候瞎看的,抱着完全学不到东西的心态看的。实际上也没有学到什么东西。
FIN