第 1 章 计算机的三大原则

  1. 计算机是执行输入、运算、输出的机器
  2. 程序是指令和数据的集合
  3. 计算机的处理方式有时与人们的思维习惯不同

第 2 章 试着制造一台计算机吧

image-20220129210716985

第 3 章 体验一次手工汇编

image-20220129212021038

  • 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寄存器从低地址指向高地址的过程

程序基本上是从内存中的低地址开始,向着高地址流下去的 。我们把程序的这种流动称为“顺序执行”。

image-20220131211233773

结构化程序设计

其实就是:为了把程序编写得具备结构性,仅使用顺序执行、条件分支和循环表示程序的流程即可,而**不再使用跳转指令(goto)**。

中断请求信号图示

image-20220131212322470

事件驱动是什么?

  • 用户的操作等产生事件后,由事件决定程序的流程。
  • Windows 应用程序的运行就是由事件驱动的。例如, 选择“打开文件”菜单项就能打开一个窗口,在里面可以指定要打开文件的名称和存储位置。之所以能够这样是因为一旦触发了“选中了菜单项”这个事件,程序的流程就相应地流转到了处理打开窗口的那部分
  • 可以把事件驱动想象成是两个程序在对话
    1. 在程序中有 WinMain() 和 WndProc() 两个函数。WinMain() 是在程序启动时被调用的主例程(Main Routine)。而 WndProc() 并不会被程序本身调用,Windows 操作系统才是 WndProc() 的调用者。这种机制就使得 Windows 和编写的应用程序这两个程序之间可以进行对话。
    2. 通常把用户在应用程序中点击鼠标或者敲击键盘这样的操作称作 事件(Event)。负责检测事件的是 Windows。**Windows 通过调用应用程序的 WndProc() 函数通知应用程序事件的发生。而应用程序则根据事件的类型做出相应的处理。这种机制就是事件驱动**。
    3. 可以说事件驱动也是一种特殊的条件分支,它以从 Windows 送来的通知为条件, 根据通知的内容决定程序下一步的流程。
  • 事件驱动天然适合使用状态模式,因为一旦发送一个事件,程序就会自动执行,从一个状态流转到流转到另一个状态。简单来说:事件就是引起状态转化的原因

计算器应用程序的状态转化图

image-20220131213229884

第 5 章 与算法成为好朋友的七个要点

哨兵的使用

  • 哨兵 指的是一种含有特殊值的数据,可用于标识数据的结尾等。
  • 字符串的末尾用 \0 表示,链表的末尾用 -1 表示,像这种特殊的数据就是哨兵。

示例:
假设有 100 个箱子,里面分别装有 一个写有任意数字的纸条,箱子上面标有 1~100 的序号。现在要从这 100 个箱子当中查找是否有箱子装有写着要查找数字的纸条。

  • 不使用哨兵:

    从第一个箱子开始依次检查每个箱子中的纸条。每检查完一个纸条,还要再检查箱子的编号(用变量 N 表示),并进一步确认编号是否已超过最后一个编号了。

    image-20220131215040120

  • 使用哨兵:

    添加了一个 101 号箱子,其中预先放入的纸条上写有正要查找的数字。这种数据就被称为“哨兵”。 通过放入哨兵,就一定能找到要找的数据了。找到要找的数据后,如 果该箱子的编号还没有到 101 就意味着找到了实际的数据;如果该箱子 的编号是 101,则意味着找到的是哨兵,而没有找到实际的数据。

    image-20220131215237619

  • 哨兵的功能就是:不必每回都要检查箱子的编号有没有到 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 个阶段

image-20220203171700359

本身就是过年的时候瞎看的,抱着完全学不到东西的心态看的。实际上也没有学到什么东西。

FIN