- 存储汉字时,字符编码不同,汉字所占用的字节数也就不同。在GBK字符编码下,一个汉字占用2个字节。而在UTF-8字符编码下,一个汉字占用3个字节。
- 时钟信号,就是由内含晶振的、被称作时钟发生器的元件发出的滴答滴答的电信号
- 通常用Hz来表示驱动CPU运转的时钟信号的频率。1秒发出1次时钟信号就是1Hz
- 为了驱动CPU运转,称为“时钟信号”的电信号必不可少。这种电信号就好像带有一个时钟,滴答滴答地每隔一定时间就变换一次电压的高低。输出时钟信号的元件叫作“时钟发生器”,时钟发生器中带有晶振,根据其自身的频率(振动的次数)产生时钟信号。时钟信号的频率可以衡量CPU的运转速度。
- 要让微型计算机运转起来,5V(伏特)的直流电源是必不可少的。于是还需要使用一个叫作“开关式稳压电源”的装置,将220V的交流电变成5V的直流电。
- 为了传输时钟信号,就需要把时钟发生器的8号引脚和CPU的CLK (CLK即Clock,时钟)引脚连接起来。时钟发生器的8号引脚与+5V之间的电阻用于清理时钟信号。
- 所谓时钟信号的频率,就是由时钟发生器发送给CPU的电信号的频率。时钟信号是在0和1两个数之间反复变换的电信号。通常把发出一次滴,答的时间称作一个时钟周期。在机器语言当中,指令执行时所需要的时钟周期数取决于指令的类型
- 标志寄存器”,用于存储运算结果的状态,比如是否发生了进位,数字大小的比较结果等。PC寄存器也叫作“程序指针”,存储着指向CPU接下来要执行的指令的地址。PC寄存器的值会随着滴答滴答的时钟信号自动更新,可以说程序就是依靠不断变化的PC寄存器的值运行起来的。SP寄存器也叫作“栈顶指针”,用于在内存中创建出一块称为“栈”的临时数据存储区域
- 在将一个2字节的数据存储到内存时,存储顺序是低8位在前、高8位在后(也就是逆序存储)。这样的存储顺序叫作“小端序”(Little Endian),与此相反,将数据由高位到低位顺序地存储到内存的存储顺序则叫作“大端序”(Big Endian)。根据CPU种类的不同,有的CPU使用大端序,有的CPU使用小端序。
- 程序员一般都是先考虑程序的流程再开始编写程序的。
- 有很多专业的程序员,他们在编写程序前,都会通过画流程图或是类似的图来思考程序的流程
- 所谓算法(Algorithm),就是解决既定问题的步骤 这个程序的算法是怎样的呢?”那么只要回答清楚程序的流程就可以了。或者画出流程图也是可以的,因为表示程序流程的流程图本身就能解释算法
- 思考算法的时候,要先在纸上用文字或图表描述出解决问题的步骤,而不要立刻开始编写代码
-
在CPU中有特定引脚,它们可以接收从I/O设备发出的中断请求信号。以硬件形式连接到CPU上的I/O模块会发出中断请求信号,CPU根据该信号执行相应的中断处理程序。例如每当用户按下键盘上的按键,键盘上的I/O模块就会把中断请求信号发送给CPU。CPU通过这种方式就可以知道有按键被按下,于是就会从I/O设备读入数据。CPU并不会时刻监控键盘是否有按键被按下
- 对于创造类的程序员,他们考虑的是程序的开发效率和可维护性,并决定应该将什么抽象为类。如果一个类的修改导致其他的类就也要跟着修改,这样的设计是不行的。必须把组件设计成即使是坏了(有缺陷了)也能轻松地替换
- 索引仅仅是提升数据检索和排序速度的内部机制。一旦在字段上设置了索引,DBMS就会自动为这个字段创建索引表,索引表是一种数据结构,存储着字段的值以及字段所对应记录的位置。
- 如果在顾客表的顾客姓名字段上设置了索引,DBMS就会创建一张索引表(如图8.13所示),表中有两个字段,分别存储着顾客姓名和位置(所对应的记录在数据文件中的位置)。与原来的顾客表相比,索引表中的字段数更少,所以可以更快地进行数据的检索和排序。一旦设置了索引,每次向表中插入数据时,DBMS都必须更新索引表。提升数据检索和排序速度的代价,就是插入或更新数据速度的降低
- 在设计系统时,记住一个重要的顺序:优先设计数据库,然后再设计用户界面。
-
事务由若干条SQL语句构成,表示对数据库一系列相关操作的集合 为了防止出现这种问题,在SQL语言中设计了以下三条语句:1. BEGINTRANSACTION(开启事务)语句,用于通知DBMS开启事务;2. COMMIT(提交事务)语句,用于通知DBMS提交事务;3. ROLL BACK(事务回滚)语句。
- 几乎所有的网卡都会在上市前被分配一个不可变更的MAC地址。但其实还是可以通过一些工具去进行变更的。
- 计算机彼此之间,为了交换信息,还必须在发送者和接收者之间事先确定发送方式。这种对信息发送方式的规定或约束就称为“协议”(Protocol)。
- “集线器”(Hub)是负责把各台计算机的网线相互连接在一起的集线设备。
-
“路由器”(Router)是负责把公司内的网络和互联网连接起来的设备。通常把像这样部署在一间办公室内的小规模网络称作LAN;把像互联网那样将企业和企业联结起来的大规模网络称作WAN。路由器负责将LAN连接到WAN上。路由器的一端会先连接到互联网服务提供商的路由器上。而在服务提供商(Provider)那里,又会继续将它们的路由器连接到其他路由器上,通过这种方式最终接入到互联网的主干线缆上,以企业内的LAN为一个基本单位,通过服务提供商的路由器把它们和其他企业的LAN互联起来,而把这种联结延伸至世界各个角落的正是互联网。
- 插到网卡上的网线。把网线汇集起来连接到一处的集线器。用于接入到互联网的路由器。
-
以太网中的每台计算机都需要先确认一件事:在网线上有没有其他的计算机正在传输电信号,也就是说要先确保没有人在占用网络,然后才能发送自己想传输的电信号。 谁先抢到了网线的使用权,谁就先发送。万一遇到了多台计算机同时都想发送电信号的情况,只需要让这些计算机等待一段长度随机的时间后再重新发送相同的电信号即可
- 在以太网中,发送给一台计算机的电信号也可以被其他所有的计算机收到。一台计算机收到了电信号以后会先做判断,如果是发送给自己的则选择接收,反之则选择忽略。可以用被称作MAC(Media Access Control)地址的编号来指定电信号的接收者,在每一块网卡所带有的ROM(Read Only Memory,只读存储器)中,都预先烧录了一个唯一的MAC地址 网卡的制造厂商负责确定这个MAC地址是什么。因为MAC地址是由制造厂商的编号和产品编号两部分组成的,所以世界上的每一个MAC地址都是独一无二的。
- 多路复用指的是多个设备可以同时访问传输介质。
- 因为路由器也算是计算机的一种,所以它们也有IP地址。 在TCP/IP网络中,传输的数据都会携带MAC地址和IP地址两个地址。IP地址用于WAN中确定局域网的存在,MAC地址用于LAN中确定具体主机的存在。IP地址是一个32比特的整数,每8比特为一组,组间用“.”分隔,分成4段表示。8比特所表示的整数换算成十进制后范围是0~255,因此可用作IP地址的整数是0.0.0.0~255.255.255.255,共计4294967296个。
- 通常把IP地址中表示分组(即LAN)的部分称作“网络地址”。表示各台计算机(即主机)的部分称为“主机地址”
- 子网掩码的作用是标识出在32比特的IP地址中,从哪一位到哪一位是网络地址,从哪一位到哪一位是主机地址。把255.255.255.240用二进制表示的话,结果如下所示。11111111.11111111.11111111.11110000
- 子网掩码中,值为1的那些位对应着IP地址中的网络地址,后面值为0的那些位则对应着主机地址。因此255.255.255.240这个子网掩码就表示,其所对应的IP地址前28比特是网络地址,后4比特是主机地址。 4个二进制数可以表示的范围是从0000到1111,共16个数。而因为最开始的0000和最后的1111具有特殊的用途,所以笔者的办公室内最多可以配置14台计算机,它们的主机地址范围是从0001到1110。但是这其中又有一台路由器,所以实际上最多只能放置13台计算机
- 计算机在启动时会去从DHCP服务器获取IP地址和子网掩码,并自动地配置它们。也可以用户自己手动定义。
- DHCP服务器上记录着可以被分配到LAN内计算机的IP地址范围和子网掩码的值。作为DHCP客户端的计算机在启动时,就可以从中知道哪些IP地址还没有分配给其他计算机。
- ”默认网关”的配置项。通常会把路由器的IP地址设置在这里。路由器的IP地址也可以从DHCP服务器获取,DNS服务器的IP地址也可以从DHCP服务器获取。
- 在分组管理下,IP地址中的网络地址部分可以代表一个组中的全部计算机,即一个LAN中的计算机全体。当从公司内的计算机向另一家公司的计算机发送数据时会发生什么呢?首先,一个不属于LAN内计算机的IP地址会被附加到数据的发送目的地字段上。==这样的数据虽然会被LAN内的计算机所忽略,但是不会被路由器忽略==,因为路由器的工作原理就是查看附加到数据上的IP地址中的网络地址部分,只要发现这个数据不是发送给LAN内计算机的,就把它发送到LAN外,即互联网的世界中
- 路由器通过“路由表”,用来记录应该把数据转发到哪里。在像互联网这样的网络中,传输路径错综复杂,而路由器就是站在各个岔路口的指路人。在一台路由器的路由表中,只会记录通往与之相邻的路由器的路径,而并不会记录世界范围内的所有传输路径。
- 在路由表中还有如下的规则:如果数据的发送目的地就在本LAN中,则可以直接发送数据而无需经过路由器转发;反之如果在LAN外(或发送目的地的IP地址不在路由表中),则需要经过路由器转发。
-
左侧按照1~13的顺序列出了数据前进道路上途经的IP地址。第1行的202.26.186.171是作为实验对象的LAN内的路由器。第2行的203.139.167.141是笔者所租用的互联网服务提供商的路由器。从第3到第11行,是其他服务提供商的路由器。其中第11行的210.145.239.82是GrapeCity所租用的服务提供商的路由器。第12行的210.160.205.254是GrapeCity的路由器。最后,第13行的210.160.205.80是GrapeCity的Web服务器。
- 在互联网的世界中,到处传输的都是附带了IP地址的数据。但是能够标识作为数据最终接收者的网卡的,还是MAC地址。于是在计算机中就加入了一种程序,用于实现由IP地址到MAC地址的转换,这种功能被称作ARP(Address Resolution Protocol,地址解析协议)。
- ARP的工作方式很有意思。它会对LAN中的所有计算机提问:“有谁的IP地址是210.160.205.80吗?有的话请把你的MAC地址告诉我。通常把这种同时向所有LAN内的计算机发送数据的过程称作“广播”(Broadcast)。通过广播询问,如果有某台计算机回复了MAC地址,那么这台计算机的IP地址和MAC地址的对应关系也就明确了
- 如果为了查询MAC地址,每回都要进行广播询问,那么查询的效率就会降低。于是ARP还提供了缓存的功能,当向各个计算机都询问完一轮之后,就会把得到的MAC地址和IP地址的对应关系缓存起来(临时保存在内存中)。存起来的这些对应关系信息称作“ARP缓存表”。只要在命令提示符窗口中执行arp -a命令,就可以查看当前ARP缓存表中的内容
- IP协议用于指定数据发送目的地的IP地址以及通过路由器转发数据。而TCP协议则用于通过数据发送者和接收者相互回应对方发来的确认信号,可靠地传输数据
- TCP协议中还规定,发送者要先把原始的大数据分割成以“包”(Packet)为单位的数据单元,然后再发送,而接收者要把收到的包拼装在一起还原出原始数据。
- 因为发送者和接收者都遵循了相同的约束,双方才能相互发送数据。为了能够在约束下收发数据,操作系统将实现了TCP和IP等协议的程序作为自身的一部分功能提供 ==遵循约束表现在统一数据的格式上==
-
敲打键盘输入的电子邮件正文等数据,并不是原封不动地发送出去的,而是先通过实现了TCP协议的程序附加上遵守TCP约束所需的信息,然后再通过实现了IP协议的程序,进一步附加上遵守IP约束所需的信息。实际上计算机发送的是以包为单位的、附加了各种各样信息的数据。
-
硬件上发送数据的是网卡。在网卡之上是设备驱动程序(用于控制网卡这类硬件的程序),设备驱动程序之上是实现了IP协议的程序,IP程序之上则是实现了TCP协议的程序,而再往上才是应用程序
-
信息摘要是指从作为数字签名对象的文件整体中计算出的数值。对比由文件整体计算出的信息摘要,可以证明文件的内容有没有被篡改。加密处理过的信息摘要就是数字签名。 “信息摘要”(Message Digest)可以理解为就是一个数值,通过对构成明文的所有字符的编码进行某种运算就能得出该数值
- 印章和签名都可以证明一个事实,那就是某个人承认了文件的内容是完整有效的。印章或签字有两层约束。其一是发送者承认文件的内容是完整有效的;其二是文件确实是由发送者本人发送的
- 瀑布模型:开发流程宛如瀑布,一级一级地自上而下流动
- 只要经过了充分的程序设计,编程就变成一项十分简单的工作了。因为所做的只是把程序设计书上的内容翻译成程序代码
- 测试人员要根据测试计划文档的内容确认程序的功能。在最后编写的“测试报告”中,还必须定量地(用数字)标示出测试结果。如果只记录了一些含糊的测试结果,比如“已测试”或是“没问题”,那么就难以判断系统是否合格了
- ”覆盖测试”则是一种表示有多少代码的行为已经经过确认的方法。“通过涂色检查,已确认了系统95%的功能。剩下的5%虽然有问题,但已经查明了原因,可以在1周内修正
查看计算机上配置的IP地址:
ipconfig /all
查看路由的过程
tracert www.baidu.com
查看当前ARP缓存表中的内容
arp -a