Java EE知识储备(七)

来源:互联网 发布:vue.js 显示和隐藏div 编辑:程序博客网 时间:2024/04/27 10:36

Java EE知识储备(七)

参考文献:

[1]谢希仁.计算机网络(第六版) [M].北京:电子工业出版社,2013.6

[2] 汤小丹 梁红兵 哲凤屏 汤子瀛.计算机操作系统(第四版) [M].陕西:西安电子科技大学出版社,2014;

目录:

1、类方法与实例方法:

2、分页存储管理方式:

3、Spring依赖注入的三种形式:

4、补码计算:

5、单道批处理系统、多道批处理系统、分时系统、实时系统:

6、Oracle数据库防止数据的丢失:

7、系统抖动:

8、智力题:

9、TCP三次握手:

10、面向对象的五大基本原则:

 

1、类方法与实例方法:

答:(1)类方法:static的方法,类方法可以通过类名.方法名进行调用

实例方法:必须new一个这个类的实例,通过实例调用。

(2)当父类的类方法定义为private时,对子类是不可见的,子类无法直接调用。

(3)子类具体的实例方法对父类是不可见的,无法直接调用,只能通过创建子类的一个实例对象,再进行调用。

(4)实例方法可以直接调用本类的实例方法。

 

2、分页存储管理方式:

答:(1)每个进程被分配一个地址空间(虚拟地址空间),进程中的程序使用的地址就是这个地址空间的地址,而实际进行的内存读写的是内存条的物理地址,在程序进行内存读写时,有一个称为内存管理单元的硬件(MMU)将虚拟地址映射到物理地址进行读写。

(2)分页存储管理时,每个进程拥有一张页表,但只要执行进程的页表驻留在内存中,其他进程的页表不必驻留在内存中。

(3)分页存储管理:将用户程序的地址空间分为若干个固定大小的区域,成为“页”或“页面”。典型的页面大小时1KB。同时,将内存空间分为若干个物理块或页框,页和块的大小相同。这样可将用户程序的任一页放入任一物理块中,实现了离散分配。

(4)例题:在请求分页存储管理方案中,若某用户空间为16个页面,页长1KB,现有页表如下,则逻辑地址102B(H)所对应的物理地址为_________

页号 0 1 2 3 4

块号 1 5 3 7 2

解答:物理地址 = 内存块号 + 页内偏移

逻辑地址 = 页号 + 页内偏移

用户空间为16个页面,所以页号部分占四位;页长1KB,所以页内地址占十位。

102B(H,十六进制)= 0001 0000 0010 1011(B,二进制)

后十位0000101000为页内地址,

后十位的前面四位为页号部分0100(B) = 4(D),查表知对应的块号为2(D) = 0010(d),所以对应的物理地址为0000 1000 0010 1011(B) = 082B

答案:082B

 

3、Spring依赖注入的三种形式:

答:(1)接口注入:在一个接口中定义要注入的信息,并通过接口完成注入。

(2)Setter方法注入(设值注入):通过类的setter方法完成依赖关系的设置。

(3)构造方法注入:

public class UserRegister {

    private UserDao userDao =null;//由容器通过构造函数注入的实例对象

    publicUserRegister(UserDao userDao){

        this.userDao =userDao;

    }

    //业务方法

}

通过构造子注入,意味着我们可以在构造函数中决定依赖关系的注入顺序,对于一个大量依赖外部服务的组件而言,依赖关系的获得顺序可能非常重要,比如某个依赖关系注入的先决条件是组件的UserDao及相关资源已经被设定。

(4)在没有设值注入的情况下才会根据配置文件中的构造注入,一旦有设值注入,则构造注入失效。

 

4、变量a是一个64位有符号的整数,初始值用16进制表示为:0Xf000000000000000;

变量b是一个64位有符号的整数,初始值用16进制表示为:0x7FFFFFFFFFFFFFFF。

则a-b的结果用10进制表示为多少?

答:(1)原码是符号位加上真值的绝对值,即用第一位表示符号位,其余位表示值。

(2)正数的反码是其本身。负数的反码是在原码的基础上,符号位不变,其余按位取反。

(3)正数的补码是其本身。负数的补码是在原码的基础上,符号位不变,其余按位取反,最后加1。

(4)计算机进行符号运算时,会以补码表示,符号位和数字位会一起参与运算。

a-b实际转换为[a-b]补=[a]补+[-b]补

a为1111(后面60个0),1开头,所以为一个负数;补码为1001(后面60个0)

b为0111(后面60个1),0开头,所以为一个正数;补码为其本身。

-b为1111(后面60个1),补码为1000(后面59个0,最后有个1)

所以1001(后面60个0) + 1000(后面59个0.最后有个1) = 0001(后面59个0,最后有个1),发生了溢出,比如采用双高位判别法处理溢出,则补码1001(后面59个0,最后有个1)转换为原码为1110(后面60个1),即-(7 *2的60次方+1)=-(2的62次方+2的61次方+2的60次方 +  1)

答案:-(2^62+2^61+2^60+1)

 

5、单道批处理系统、多道批处理系统、分时系统、实时系统:

答:(1)单道批处理系统:

系统对作业的处理都是成批进行的、且内存中始终只保持一道作业,称为单道批处理系统(simple batch system)。

批处理系统的引入是为了提高系统资源的利用率和吞吐量

特征:自动性、顺序性、单道性

主要问题:

①CPU和I/O设备使用忙闲不均(取决于当前作业的特性)。

②对计算为主的作业,外设空闲

③对I/O为主的作业,CPU空闲;

(2)多道批处理系统:

多道:内存中同时存放几个作业;

宏观上并行运行:都处于运行状态,但都未运行完;

微观上串行运行:各作业交替使用CPU;

特征:多道性、无序性、调度性(作业调度、进程调度)

优点:

①资源利用率高:CPU和内存利用率较高;

②作业吞吐量大:单位时间内完成的工作总量大;

主要问题:

①用户交互性差:整个作业完成后或中间出错时,才与用户交互,不利于调试和修改

②作业平均周转时间长:短作业的周转时间显著增长;

(3)分时系统:

指一台主机上连接了多个带有显示器和键盘的终端,同时允许多个用户共享主机中的资源,各个用户都可通过自己的终端以交互方式使用计算机。

分时的目的:多个程序分时共享硬件和软件资源(即:多任务)。多个用户分享使用同一台计算机(即:多用户) 。

分时的定义:把计算机的系统资源(尤其是CPU时间)进行时间上的分割,每个时间段称为一个时间片(time slice),每个用户依次轮流使用时间片。

特征:

多路性:多个用户同时工作。

独立性:各用户独立操作,互不干扰。

及时性:响应时间快。

交互性:系统能及时对用户的操作进行响应,显著提高调试和修改程序的效率:缩短了周转时间。

(4)实时系统:

将时间作为关键参数,系统能及时响应外部事件的请求,在规定时间内对所接收到的某些信号做出“及时”或“实时”的反应,并控制所有实时任务协调一致的运行。

 

6、Oracle数据库防止数据的丢失:

答:(1)Oracle要将填满的在线日志文件组归档时,则要建立归档日志(archived redo log)。

(2)作用: 数据库后备以及在线和归档日志文件,在操作系统和磁盘故障中可保证全部提交的事物可被恢复。在数据库打开和正常系统使用下,如果归档日志是永久保存,在线后备可以进行和使用。

(3)数据库可运行在两种不同方式下: NOARCHIVELOG方式或ARCHIVELOG 方式。

如果数据库在NOARCHIVELOG方式下使用,不能进行在线日志的归档。

如果数据库在ARCHIVELOG方式下运行,可实施在线日志的归档。

(4)要采用物理备份,则设置Oracle数据库为automatic archivelog mode。

 

7、系统抖动:

答:(1)同时在系统中运行的进程太多,由此分配给每一个进程的物理块太少,不能满足进程正常运行的基本要求,致使每个进程在运行时,频繁地出现缺页,必须请求系统将所缺之页调入内存。这会使得在系统中排队等待页面调入/调出的进程数目增加。显然,对磁盘的有效访问时间也随之急剧增加,造成每个进程的大部分时间都用于页面的换进/换出,而几乎不能再去做任何有效的工作,从而导致发生处理机的利用率急剧下降并趋于0的情况,称此时的进程是处于“抖动”状态。

(2)页式、段氏、段页式存储分配方法都可能使系统抖动。

 

8、用一个等臂天平来称物体的质量,如果要称的物体质量范围在1到40克(整数),问最少需要几块砝码可以完成这项物体质量的称量?

答:即至少用几块砝码可以表示出1-40的任意一个数。

平衡三进制(对称三进制),以3为基数,以-1,0,1为基本数码的三进制计数体系。

40可以用1111来表示,1 * 3^0 + 1 * 3^1 + 1 * 3^2 + 1 * 3^3 = 40,所以最少需要四块砝码进行称量,即1,3,9,27这四块砝码。

 

9、TCP三次握手:

答:(1)SYN:

在连接建立时用来同步序号。SYN=1表示这是一个连接请求或连接请求报文。当SYN=1且ACK=0时,表明这是一个连接请求报文。对方若同意建立连接,则应在响应报文中使得SYN=1且ACK=1。

TCP规定,SYN=1的报文段不能携带数据,但要消耗掉一个序号。

(2)ACK:

确认号。TCP规定,ACK报文段可以携带数据,但如果不携带数据则不消耗序号。只有ACK=1时确认号字段才有效,也规定连接建立后所有传送的报文段都必须把ACK置1。

(3)TCB:

传输控制块(Transmission Control Block),存储每一个连接中的一些重要信息,比如TCP连接表,到发送和接收缓存的指针,到重传队列的指针,当前的发送和接收序号等等。

(4)序号:

TCP是面向字节流的,在一个TCP连接中传送的字节流中的每一个字节都按顺序编号。整个要传送的字节流的初始序号必须在连接建立时设置。

(5)三次握手流程:

服务器进程首先创建传输控制块TCB,准备接受客户进程的连接请求。然后服务器就处于LISTEN状态,等待客户的连接请求。如有,即作出响应。

①客户进程首先创建传输控制块TCB,向服务器发出连接请求报文段,这时首部的同步位SYN=1,同时选择一个初始序号seq=x。这时,客户进程进入SYN-SENT(同步已发送)状态;

②服务器收到连接请求报文段后,如同意建立连接,则向A发送确认。在确认报文段中把SYN位和ACK位都置1,确认号是ack=x+1,同时也为自己选择一个初始序号seq=y。这时,服务器进程进入SYN-RCVD(同步收到)状态;

③客户进程收到服务器的确认后,再向服务器给出确认。确认报文段的ACK置1,确认号ack=y+1,而自己的序号seq=x+1。这时,TCP连接已经建立,客户进程进入ESTABLISHED(已建立连接)状态。当服务器收到客户进程的确认后,也进入ESTABLISHED状态。


图9.1 TCP的三次握手过程

(6)要进行第三次握手的原因:

防止已失效的连接请求报文段突然又传送到了服务器,因而产生错误。

 

10、面向对象的五大基本原则:

答:记忆:按照五原则的开头:Solid

(1)单一职责原则(SRP,Single-Responsibility Principle):一个类应该仅有一个引起它变化的原因。

(2)开放封闭原则(OCP,Open-Closed Principle):对扩展开放,对修改封闭。

(3)里式替换原则(LSP,Liskov-Substituion Principle):子类可以替换父类并且出现在父类能够出现的任何地方。

(4)接口隔离原则(ISP,Interface-Segregation Principle):使用多个专门的接口比使用单个接口会好得多。

(5)依赖倒置原则(DIP,Dependency-Inversion Principle):高层模块不再依赖底层模块,二者都依赖于抽象;抽象不依赖于具体,具体依赖于抽象。

 

2 0