本文共 10819 字,大约阅读时间需要 36 分钟。
原码就是符号位加上真值的绝对值, 即用第一位表示符号, 其余位表示值。
反码的表示方法是:正数的反码是其本身。负数的反码是在其原码的基础上, 符号位不变,其余各个位取反。 补码的表示方法是:正数的补码就是其本身。负数的补码是在其原码的基础上, 符号位不变, 其余各位取反, 最后+1 (即在反码的基础上+1)。
首先, 因为人脑可以知道第一位是符号位, 在计算的时候我们会根据符号位, 选择对真值区域的加减。但是对于计算机, 加减乘除已经是最基础的运算, 要设计的尽量简单。计算机辨别"符号位"显然会让计算机的基础电路设计变得十分复杂! 于是人们想出了将符号位也参与运算的方法. 根据运算法则减去一个正数等于加上一个负数, 所以机器可以只有加法而没有减法, 这样计算机运算的设计就更简单了。
在计算机系统中存储层次可分为高速缓冲存储器、主存储器、辅助存储器三级。高速缓冲存储器用来改善主存储器与中央处理器的速度匹配问题。辅助存储器用于扩大存储空间。
(1) 支持的内存不同。32位的操作系统,最多支持4G的内存;64位系统支持4G 8G 16G 32G 64G 128G 256G内存。(2) 支持的处理器不同。64位的操作系统支持基于64位的处理器,而32位的系统却不能完全支持64位的处理器。(3) 支持的软件不同。32位的操作系统,支持基于32位的软件,不能运行64位的软件;而64位的系统一般这两种类型的都支持。(4) 处理数据的能力。32和64表示CPU可以处理最大位数,一次性的运算量不一样,理论上64位的会比32位快1倍,内存寻址也不一样。
由硬件系统和软件系统所组成, 硬件系统包括:控制器、运算器、存储器、输入设备、输出设备五个部分,软件系统包括系统软件和应用软件。
一般将cache分为2~3级, L1 cache, L2 cache, L3 cache,级别越低,离CPU越近。一级缓存中还分数据缓存和指令缓存。二级缓存出现是为了协调一级缓存与内存之间的速度。
计算机系统结构指的是传统机器级的系统结构。它是软件和硬件的交界面,是机器语言,汇编语言程序设计者,或编译程序设计者看到的机器物理系统的抽象。
运算速度,字长,内存容量,外存容量,I/O速度,显存,主频
以C/C++程序为例
(1) 尽量减少值传递,多用引用来传递参数(2) 减少除法运算的使用(3) 局部变量比静态变量效率高(4) 避免使用多重继承(5)避免过大的循环
指令执行过程分为:取指令、指令译码、按指令操作码执行、形成下一条指令地址等。
吞吐率:指在单位时间内流水线所完成的任务数或输出结果的数量。加速比:指m段流水线的速度与等功能的非流水线的速度之比。效率:指流水线的设备利用率。
复杂指令系统计算机CISC:指令数量多,指令使用频率相差悬殊,支持多种寻址方式,变长指令
精简指令系统计算机RISC:指令数量少,指令寻址方式少,指令长度固定
负责在两个或两个以上主体之间解决冲突的系统。
流量控制是端到端的控制,例如A通过网络给B发数据,A发送的太快导致B没法接收(B缓冲窗口过小或者处理过慢),这时候的控制就是流量控制,原理是通过改变滑动窗口的大小来实现。
拥塞控制是A与B之间的网络发生堵塞导致传输过慢或者丢包,来不及传输。防止过多的数据注入到网络中,这样可以使网络中的路由器或链路不至于过载。拥塞控制是一个全局性的过程,涉及到所有的主机、路由器,以及与降低网络性能有关的所有因素。
网络层的作用是实现两个端系统之间的数据透明传送,具体功能包括寻址和路由选择、连接的建立、保持和终止等。它提供的服务使传输层不需要了解网络中的数据传输和交换技术。通过网络连接交换传输层发出的实体数据。交换过程中,选择合适的传输路径,解决网络中出现的局部拥挤或全面的阻塞。
路由选择信息传送的线路,能大大提高通信速度,减轻网络系统通信负荷,节约网络系统资源,提高网络系统畅通率,从而让网络系统发挥出更大的效益来。
http是超文本传输协议,信息是明文传输,https 协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,比http协议安全。
ARP协议是地址解析协议,通过解析IP地址得到MAC地址,是一个在网络协议包中极其重要的网络传输协议。
域名系统DNS是互联网使用的命名系统,用来把便于人们使用的机器名字转换为IP地址。
发送时延,传播时延,处理时延
主机或路由器在收到分组时要花费一定的时间进行处理,例如分析分组的首部,从分组中提取数据部分,进行差错检验或查找适当的路由等,这就产生了处理时延。
传输时延是主机或路由器发送数据帧所需要的时间,传播时延是电磁波在信道中传播一定的距离需要花费的时间。
ARP协议是地址解析协议,通过解析IP地址得到MAC地址,是一个在网络协议包中极其重要的网络传输协议。
每台主机都会在自己的ARP缓冲区中建立一个ARP列表,以表示IP地址和MAC地址的对应关系。当源主机需要将一个数据包要发送到目的主机时,会首先检查自己ARP列表中是否存在该IP地址对应的MAC地址。如果有,就直接将数据包发送到这个MAC地址:如果没有,就向本地网段发起一个ARP请求的广播包,查询此目的主机对应的MAC地址。网络中所有的主机收到这个ARP请求后,会检查数据包中的目的IP是否和自己的IP地址一致。如果不相同就忽略此数据包;如果相同,就给源主机发送一个ARP响应数据包。如果源主机一直没有收到ARP响应数据包,表示ARP查询失败。
两次握手只能保证单向连接是畅通的,可能发生死锁。
Step1 A -> B : 你好,B。 Step2 A <- B : 收到。你好,A。 这样的两次握手过程, A 向 B 发送数据得到了回应。但是 B 向 A 发送数据,B 没有收到 A 的反馈,无法确定 A 是否可以收到 B 发送的数据。只有经过第三次握手,才能确保双向都可以接收到对方的发送的数据。
step1:首先客户机TCP向服务器TCP发送连接请求报文,报文中SYN=1,序号seq=x;
step2:服务器TCP接收到连接请求报文后,若同意连接,则返回确认报文,且为该TCP连接分配TCP变量和资源,确认报文中SYN=1,ACK(确认位字段)=1,ack(确认号字段)=x+1,seq=y; step3:客户机接收到服务器的确认连接报文后,同样返回确认报文,且为该TCP连接分配TCP变量和资源,确认报文中,ACK=1,ack=y+1,seq=x+1。
虚拟网vpn就是利用公用互联网作为n个专用网之间通信载体,虚拟的意思就是表面上机构内的所有计算机看起来好像是一个专用网里交流,但实际上是通过互联网进行交换信息,只是在效果上很像专用网。
由于全世界存在着各式各样的网络,他们使用不同的硬件地址。要使这些异构网络能够互相通信就必须进行非常复杂的硬件地址转化工作,因此由用户或用户主机来完成这项工作几乎是不可能的的事。但IP编址就把这个复杂的问题解决了。连接到互联网的主机只需要各自拥有一个唯一的IP地址,他们之间的通信就像连接在同一个网络那么简单方便。
子网掩码的作用是就是将某个IP地址划分成网络地址和主机地址两部分。用来区分网络上的主机是否在同一网络段内。
(1) 改子网掩码(2) 通过路由器后面再接路由器来分成多个网段(3) 通过设置虚拟局域网“VLAN”,将局域网里面的电脑分成多个虚拟的局域网
网段一般指一个计算机网络中使用同一物理层设备(传输介质,中继器,集线器等)能够直接通讯的那一部分。例如,从192.168.0.1到192.168.255.255这之间就是一个网段。
根据IP地址二进制形式的前几位数字判断,A类地址第一位是0, B类地址前两位是10, C类地址的前三位是110。
传输控制协议TCP,用户数据报协议UDP,网际控制报文协议ICMP,内部网关协议RIP,OSPF
RIP协议叫做路由信息协议,OSPF协议叫做开放式最短路径优先协议。这两个协议都是动态路由协议,其目的都是生成路由表,为数据的访问提供合理的路径。RIP和OSPF存在的本质区别是: RIP 是基于距离矢量算法的路由协议,而OSPF是基于链路状态算法的路由协议。
(1)适用范围不同。RIP适用于中小网络。OSPF适用于较大规模网络。 (2)运行有区别。RIP运行时,首先向外发送请求报文,其他运行RIP的路由器收到请求后,马上把自己的路由表发送过去,在没收到请求时,会将路由删除,井广播自己新的路由表。OSPF要求每个路由器周期性的发送链路状态信息,使得区域内所有路由器最终都能形成一个跟踪网络链路状态的链路状态数据库。 (3)使用情况不同。OSPF占用的实际链路带宽比RIP少: OSPF 使用的CPU时间比RIP少: OSPF 适用的内存比RIP大: RIP 在网络上达到平衡用的时间比OSPF多。
ICMP协议是网际控制报文协议。主要是用于报告错误并代表IP对消息进行控制。IGMP协议是网络组管理协议。主要用于建立和管理多播组,对IP分组广播进行控制。
多播是一种点到多点(或多点到多点)的通信方式,即多个接收者同时接收一个源发送的相同信息。
区别: 组播:为了减少在广播中涉及的不必要的开销,可以只向特定的一部分接收方发送流量。广播:指将报文发送到网络中的所有可能的接收者。
地址解析协议ARP可以已知一个机器(主机或是路由器)的IP地址,找出其相应的物理地址反过来,逆地址解析协议RARP是已知一个机器的物理地址,找出其相应的IP地址。
数据链路层;物理层;ICMP协议
(1)两者地址使用不同。IP地址是指Internet协议使用的地址,而MAC地址是Ethernet协议使用的地址。
(2)分配依据不同。IP地址的分配是基于网络拓朴,MAC地址的分配是基于制造商。IP地址是可以自动分配的,MAC地址在每个网卡出场的时候就有一个全球唯一的MAC地址。
NAT协议是网络地址转换协议,有宽带分享和安全防护的功能,不仅能解决IP地址不足的问题,而且还能够有效地避免来自网络外部的攻击,隐藏并保护网络内部的计算机。
虚拟局域网VLAN是一组逻辑上的设备和用户,这些设备和用户并不受物理网段的限制,可以根据功能、部门及应用等因素将它们组织起来,相互之间的通信就好像它们在同一个网段中一样。
封装成帧,透明传输,差错检测
慢启动、拥塞避免、快恢复、快重传
TCP具有缓冲区,TCP报文具有序列号
(1) TCP具有乱序重组的功能。 如果有三个报文段失序,TCP会先将报文段3缓存下来,当报文段2到达时,再根据序列号进行拼接。 (2) TCP具有超时重传功能。当缓冲区满的时候,接收端会直接丢弃报文,不做任何其他处理;发送方的定时器发现迟迟收不到接收方丢弃报文的确认号,就会重传该报文。
物理层:频分复用,时分复用,码分复用。
数据链路层:ARQ协议,CSMA/CD协议 网络层:IP,CIDR,RIP,OSPF,BGP,ICMP,VPN,NAT 运输层:TCP,UDP,拥塞控制,三次握手 应用层:DNS,DHCP
1、TCP面向连接;UDP是无连接的。
2、TCP提供可靠的服务。UDP尽最大努力交付,即不保证可靠交付。 3、UDP具有较好的实时性,工作效率比TCP高。 4、每一条TCP连接只能是点到点的;UDP支持一对一,一对多,多对一和多对多的交互通信。 5、TCP对系统资源要求较多,UDP对系统资源要求较少。
同步序列编号。是TCP/IP建立连接时使用的握手信号。
并发,共享,虚拟,异步
内存管理是指软件运行时对计算机内存资源的分配和使用的技术。其最主要的目的是如何高效,快速的分配,并且在适当的时候释放和回收内存资源。
信号量,是在多线程环境下使用的一种设施,是可以用来保证两个或多个关键代码段不被并发调用。在进入一个关键代码段之前,线程必须获取一个信号量;一旦该关键代码段完成了,那么该线程必须释放信号量。其它想进入该关键代码段的线程必须等待直到第一个线程释放信号量。
就绪(Ready)状态, 执行(Running)状态, 阻塞(Blocked)状态
(1) 就绪→执行.处于就绪状态的进程,当进程调度程序为之分配了处理机后,该进程便由就绪状态转变成执行状态。 (2) 执行→就绪.处于执行状态的进程在其执行过程中,因分配给它的一个时间片已用完而不得不让出处理机,于是进程从执行状态转变成就绪状态。 (3) 执行→阻塞.正在执行的进程因等待某种事件发生而无法继续执行时,便从执行状态变成阻塞状态。 (4) 阻塞→就绪.处于阻塞状态的进程,若其等待的事件已经发生,于是进程由阻塞状态转变为就绪状态。
主要思想是避免系统进入不安全状态,在每次进行资源分配时,它首先检查系统是否有足够的资源满足要求,如果有,则先试行分配,并对分配后的新状态进行安全性检查。如果新状态安全,则正式分配上述资源,否则拒绝分配上述资源。这样就保证系统始终处于安全状态,从而避免死锁现象的发生。
①就调度而言。线程是资源分配和调度的基本单位,而进程是拥有资源的基本单位。
②就并发性而言。不同的进程可以并发执行,而同一进程中的不同线程也可以并发执行,因此线程的并发性更高。 ③就资源占有而言。进程是拥有资源的基本单位,而线程除了自身所必须分配的那一点资源外,基本上不占用资源。 ④就开销而言。进程的创建和撤销,系统都需要为之分配和回收资源,开销大,而线程切换时,开销很小。
是指两个或两个以上的进程在执行过程中,因争夺资源而造成的一种互相等待的现象,若无外力作用,它们都将无法推进下去。此时称系统处于死锁状态或系统产生了死锁。
破坏“不可剥夺”条件, 破坏”请求与保持条件, 破坏“循环等待”条件,破坏“互斥”条件。
死锁避免是在系统运行过程中注意避免死锁的发生。这就要求每当申请一个资源时,系统都应根据一定的算法判断是否认可这次申请,使得在今后一段时间内系统不会出现死锁。
文件目录是指:为实现“按名存取”,必须建立文件名与辅存空间中物理地址的对应关系,体现这种对应关系的数据结构称为文件目录。
处理器管理、存储器管理、设备管理、文件管理和作业管理。
并发是指两个以上事件在同一时间间隔内发生。并行是指两个以上事件在同一时刻发生。操作系统中所谓的“虚拟”,是指通过某种技术把一个物理实体变为若干逻辑上的对应物。
将程序的一部分装入内存,其余部分留在外存,当程序所需要的信息不在内存时,系统将外存的信息调入内存继续执行,好像为用户提供了一个比实际大得多的内存。
文件的物理结构又称为文件的存储结构,它是指文件在外存上的存储组织形式。常用的物理结构有连续文件结构、串联文件结构、索引文件结构三种。
文件的逻辑结构有流式文件和记录式文件,记录式文件包括顺序文件,索引文件,索引顺序文件。
程序 I/O 方式、中断驱动方式、DMA方式(直接存储器访问)、I/O通道控制方式
DMA是指外部设备不通过CPU而直接与系统内存交换数据的接口技术。
中断是指计算机运行过程中,出现某些意外情况需主机干预时,机器能自动停止正在运行的程序并转入处理新情况的程序,处理完毕后又返回原被暂停的程序继续运行。
多重中断是指在CPU执行某个中断服务程序的过程中,发生了更高级,更紧迫的事件,CPU暂停现行中断服务程序的执行,转去处理该事件的中断,处理完返回中断服务程序继续执行的过程。
实现多重中断的必要条件:在现行中断服务期间,中断允许触发器为1,即开中断。
最佳置换算法OPT、先进先出置换算法FIFO、最近最久未使用算法LRU、时钟算法LOCK、改进型时钟算法
先进先出FIFO、时间片轮转算法RR、最高优先级算法HPF、多级队列反馈算法
在程序执行过程中,需要将要访问的数据的逻辑地址转换成物理地址。
具体实现方法是增加一个重定位寄存器,装入程序在内存中的起始地址,真正的地址为相对地址与重定位寄存器中的起始地址相加之和,从而实现动态重定位。
内核是计算机上配置的底层软件,是计算机功能的延伸,包括4个方面的内容:时钟管理、中断机制、原语、系统控制的数据结构及处理。
关中断、保存断点、引出中断服务程序、保存现场和屏蔽字、开中断、执行中断服务程序、关中断、恢复现场和屏蔽字、开中断,中断返回。
外中断和内中断,内中断也成为异常。
外中断:时钟中断、IO中断、控制台中断、硬件故障中断 内中断(异常):程序性中断、访管指令异常
同步就是有若干个进程按照一定的顺序交替进行,进程之间相互影响、相互制约。
异步就是进程它们之间没有制约关系,当一个进程正在运行时其他进程不需要等待,可以随时运行。
存储过程是在大型数据库系统中,一组为了完成特定功能的SQL 语句集,它存储在数据库中,一次编译后永久有效,用户通过指定存储过程的名字并给出参数(如果该存储过程带有参数)来执行它。
索引是对数据库表中一列或多列的值进行排序的一种结构,使用索引可快速访问数据库表中的特定信息。
索引并不是越多越好,索引固然可以提高相应的 SELECT 的效率,但同时也降低了 INSERT 及 UPDATE 的效率,因为 INSERT 或 UPDATE 时有可能会重建索引。
视图是从一个或几个基本表(或视图)中导出的虚拟的表。在系统的数据字典中仅存放了视图的定义,不存放视图对应的数据。
优点: (1) 简化了操作,把经常使用的数据定义为视图。 (2) 安全性,用户只能查询和修改能看到的数据。 (3) 逻辑上的独立性,屏蔽了真实表的结构带来的影响。
若关系中的一个属性或属性组的值能够唯一地标识一个元组,且他的真子集不能唯一的标识一个元组,则称这个属性或属性组做候选码。在一个关系中,如果一个属性是构成某一个候选关键字(候选码)的属性集中的一个属性,则称它为主属性。不包含在任何一个候选码中的属性称为非主属性。
数据库完整性是指数据库中数据的正确性和相容性。
数据独立性是指应用程序和数据结构之间相互独立, 互不影响。
第一范式(1NF)、第二范式(2NF) 、第三范式(3NF)、BC范式(BCNF)、第四范式(4NF)
数据库事务是访问并可能操作各种数据项的一个数据库操作序列,这些操作要么全部执行,要么全部不执行,是一个不可分割的工作单位。事务由事务开始与事务结束之间执行的全部数据库操作组成。
遇到数据量大的表,join查询是非常损耗性能的,甚至导致数据库连接超时、挂掉等问题。
触发器一般有两种,一种是AFTER触发器,一种是INSTEAD OF触发器。after触发器是在某一类操作结束之后,触发器才会触发,而instead of触发器将替换某一类操作。
左连接: 包含左边表的全部行(不管右边的表中是否存在与它们匹配的行),以及右边表中全部匹配的行
右连接: 包含右边表的全部行(不管左边的表中是否存在与它们匹配的行),以及左边表中全部匹配的行
破坏了第三范式。
考虑性能:以空间换时间,在数据库的实践过程中,我们可能遇到数据量非常大的数据表,这时候去做join查询是非常损耗性能的,甚至导致数据库连接超时、挂掉等问题。所以有时候就需要数据库做冗余设计,对一些字段做冗余到关联表中,以避免大表之间的join。
Innodb引擎、MyIASM引擎、MEMORY引擎
不兼容, 找一个8.0的jar包,更换。
1.全量备份
简单的说就是将所有数据库或一个库全部备份。 2.增量备份 从上一次全量备份之后到下一次全量备份之前都叫做增量备份。
从关系数据库的表中,除去冗余数据的过程称为规范化。
第一范式要求每一个属性只有一个值,不允许一个属性有多个值。
若关系属于第一范式,在这之上若关系中每一个非主关键字段都完全依赖于主关键字段,没有部分依赖于主关键字段,则称其满足第二范式。 若关系属于第一范式,在这之上若关系中每一个非主关键字段都只依赖于主关键字字段,没有传递依赖,则称其符合第三范式。
(1)外模式:也称用户模式,描述的是用户可见的局部数据的逻辑结构和特征。
(2)概念模式:是数据库中全体数据的逻辑结构和特征的描叙是所有用户数据的公共数据视图。 (3)内模式:也称存储模式,描述的是数据库的物理结构和存储方式,是数据在数据库内部的组织方式。
外模式/模式的映像:实现外模式到概念模式之间的相互转换
模式/内模式的映像:实现概念模式到内模式之间的相互转换
原子性、一致性、隔离性、持久性
关系模型、层次模型、网状模型
并、差、笛卡尔积、选择、投影
一级封锁协议:事务 T 要修改数据 A 时必须加写锁,直到事务结束才释放锁。
二级封锁协议:在一级的基础上,要求读取数据 A 时必须加读 锁,读取完马上释放读锁。 三级封锁协议:在一级的基础上,要求读取数据 A 时必须加读锁,直到事务结束了才能释放读锁。
第一阶段只获得锁,第二阶段只释放锁。协议规定(1)对任何数据读写之前,必须要获得该数据的封锁;(2)释放了一个锁之后,事务不能再获取其它的封锁。
需求分析、逻辑设计、物理设计、实现维护
软件工程是一门研究用工程化方法构建和维护有效的、实用的和高质量的软件的学科。它涉及程序设计语言、数据库、软件开发工具、系统平台、标准、设计模式等方面。
一个软件从定义,开发,使用,维护,直至被弃用,要经历一个漫长的周期。通常就把这段时间称为软件生命周期。概括的说一般将生命周期分为三个阶段,软件定义,软件开发,软件运行维护。
黑盒测试:只通过研究程序组件的输入和输出来确定程序是否有问题,不用考虑程序内部的逻辑结构和内部特性。又称为功能测试和数据测试。有等价类划分,边界值分析,因果图等方法。
白盒测试:需要对程序具体代码实现进行分析,了解代码的逻辑,设计测试用例,检测每条分支和路径。常用到的一些标准是 语句覆盖:设计足够多的测试用例,使得程序中每个语句至少能执行一次。 判定覆盖:设计足够多的测试用例,使得程序中每个判定至少都获得一次真值和假值。每个分支至少通过一次。 条件覆盖:设计足够多的测试用例,使每个判断中每个条件的可能取值至少满足一次,但未必能覆盖全部分支。单单仅看即使每个if语句框至少取一次,不考虑组合。 判定/条件覆盖:设计足够多的测试用例,同时满足条件覆盖和判定覆盖。 条件组合覆盖:每个判定框之间相互组合。每个if语句里之间条件逻辑之间相互组合。
回归测试是指修改了旧代码后,重新进行测试以确认修改没有引入新的错误或导致其他代码产生错误。自动回归测试将大幅降低系统测试、维护升级等阶段的成本。
软件开发流程即软件设计思路和方法的一般过程,包括对软件先进行需求分析,设计软件的功能和实现的算法、软件的总体结构设计和模块设计、编码和调试、程序联调和测试以及编写、提交程序等一系列操作以满足客户的需求并且解决客户的问题,如果有更高需求,还需要对软件进行维护、升级处理,报废处理。
方法、工具、过程
输入输出,计算单元,控制单元,存储单元。
计算机总线是一组能为多个部件分时共享的信息传送线,用来连接多个部件并为之提供信息交换通路。总线可以划分为数据总线、地址总线和控制总线,分别用来传输数据、数据地址和控制信号。
0型文法、上下文有关文法、上下文无关文法、正规文法
词法分析,语法分析,语义分析,中间代码生成,代码优化,目标代码生成
如果对于产生式左部相同的任意两条产生式的 select集相交为空且两者不能同时推出空,则是LL(1)文法。如果预测分析表的一格中只有一个产生式则为LL(1)文法。
如果文法对应的自动机中不存在移进-归约冲突和归约-归约冲突则为LR(0)文法。
转载地址:http://dsyki.baihongyu.com/