整理知识笔记(7)--操作系统、计网、J2EE

1:多任务又分为协同多任务抢占式多任务

协同式多任务:在一个多任务的环境下,只有当其他程序认可时,才可以获得CPU时间;(即其他程序协同控制CPU)

抢占式多任务:必要时,操作系统可以中断当前运行的任务以便运行另一个程序;

 

CPU的多任务抢占机制如何实现?

CPU是通过设置时间中断来实现抢占机制的,在进行保护模式之前,先初始化中断向量表,在时钟中断入口处放置任务切换代码,然后设置好时钟中断时间

当某一线程时间片用完,时钟中断产生,CPU执行中断处任务切换代码,保存当前线程的状态,得到并恢复下一个线程的状态,在去执行那个线程;

为了尽可能的提高CPU利用率,当某一线程必须转入等待状态,如需后的低速外设的数据时,这里的读操作程序会主动放弃时间片,主动调用任务切换中断代码,把CPU让给其他准备好的线程;

 

只有具备执行权限才允许用户进入一个文件系统的目录;

2:sleep()与wait()的区别:

Sleep()是使线程停止一段时间的方法,sleep时间间隔期满后,线程不一定立即恢复,因为在那个时刻可能有其他线程正在运行且没有被调度放弃执行,除非醒来的线程具有更高的优先级或者正在运行的线程因为其他原因而阻塞

Wait()在线程交互时,如果一个线程对一个同步对象发出wait()调用,该线程会暂停执行,被调对象进入等待状态,知道被唤醒后等待时间到

 

3:win32环境中有3种基本模式:单线程、单元线程、自由线程:

单线程:仅包含与应用程序进程对应的线程,进程可以被定义为应用程序的实例,拥有该应用程序的内存空间

单元线程:是一种稍微复杂的线程模式,标记用于单元线程的代码可以再自己的线程中执行,仅限制于自己的单元。线程可以被定义为进程所拥有的实体,处理时将调度该进程,此模式允许多个代码实例同时独立的运行;

自由线程:是最复杂的线程模式,多个线程可以同时调用相同的方法和组件,并不限制于独立的内存空间;例:当应用程序必须进行大量相似而独立的数学计算,这种情况下,需要生成多个线程使用相同的代码实例来实现计算;

 

4:Synchronized

多线程共享同一存储空间时,在带来方便的同时也会造成访问冲突;synchronized关键字可以解决这种冲突,有效避免同一对象被多个线程访问。

1)synchronized可以作为函数的修饰符,也可以作为函数内部的语句,synchronized可作用于instance变量、object reference对象引用、static函数和class literals类名称字面常量 上。

2)synchronized无论加在方法上还是对象上,它取得的锁都是对象,而不是把一段代码或函数锁定,而且同步方法还可以被其他线程的对象访问。

3)每个对象只有一个锁lock与之相关联

4)实现同步是要以很大的系统开销作为代价的,甚至会造成死锁;

 

synchronized关键字的作用域:两种

1)某个对象实例内,synchronized amethod(){}可以防止多个线程同时访问这个对象的synchronized方法;如果一个对象有多个synchronized方法,一旦有一个线程访问了对象的synchronized方法,其他线程不能同时访问此对象的任何synchronized方法;但是相同类的不同对象实例的synchronized方法是互不干扰的。

2)某个类中synchronized static astaticmethod(){}防止多个线程同时访问这个类中的synchronized static方法

 

5:守护线程与非守护线程:

只有当前JVM实例中海油一个非守护线程没有结束,守护线程救护全部一起工作,只有当最后一个非守护线程结束时守护线程才会随着JVM一同结束;守护线程典型应用:GC垃圾回收器

 

6:计网:

  1. 一个IP数据包到达目的地址之前,它不可能重组,但是可能成为碎片
  2. 在TCP/IP协议栈里如果出现阻塞情况,最有可能发生的是packet loss(丢包)
  3. 文件传输基于TCP协议(因为FTP是有连接的服务);
  4. SMTP是简单邮件传输协议;属于TCP/IP协议簇;
  5. 以太网转换控制包是基于目的IP地址;
  6. 如果TCP在客户端发出数据包之前已经崩溃,TCP/IP栈可能返回一个SYN;

 

7:ping命令基于ICMP协议:

ICMP是Internet控制消息协议,值TCP/IP协议族中的一个子协议,用于在IP主机路由器之间传递控制消息。控制消息是指:网络通不通、主机是否可达、路由是否可用等网络本身消息。虽然不传输用户数据,但是对用户数据的传递起什么作用。

 

ICMP本身的特点也决定了它非常容易被用于攻击网络上的路由器和主机:

比如,可以利用操作系统规定的ICMP数据包最大尺寸不超过64KB这个规定向主机发起“Ping of Death”攻击,此攻击的原理是:如果ICMP的数据包的尺寸超过64KB上限,主句就会出现内存分配错误,导致TCP/IP堆栈崩溃,导致主机死机;

对于“Ping of Death”攻击,可以采取两种方法进行防范:

1是在路由器上对ICMP数据包进行带宽限制,将ICMP占有的带宽控制在一定的范围,当被攻击时它占有的带宽也是非常有限的,对整个网络的影响非常小;;;

2是在主机上设置ICMP数据包的处理规则,最好是设定拒绝所有的ICMP数据包;

 

Ping的原理是向指定的IP地址发送一个指定长度的数据包,若指定的IP地址存在的话会返回同样大小的数据包,(若超时也会认为地址不存在)由于ping使用的是ICMP协议,有些防火墙会屏蔽掉ICMP协议,所以有时候ping的结果只能作为参考,ping不同不能说明不存在。

 

8:Spring:

控制反转IOC

依赖注入DI

控制反转是对组件对象控制权的转移,从程序代码本身转移动了外部容器,通过容器来实现对象组件的装配和管理。

注入类型:接口注入、设置注入、构造子注入;  spring就是IOC的一个容器;

在spring中,所谓依赖注入,即在运行期间容器依赖关系注入到组件中,就是在运行期,由spring根据配置文件,将其他对象的引用通过组件提供的setter方法进行设定;

 

Spring是一个DI容器,其是提供一种无侵入式的高扩展性框架,即无须代码中涉及spring专有类,即可将其纳入spring容器进行管理。

作为对比,EJB则是一种高度侵入式的框架规范,它制定了众多的接口和编码规范;侵入式的结果就是一旦系统基于侵入性框架设计开发,那么之后要脱离框架将会付出极大代价。为了避免这种情况,实现侵入性的目标,Spring引入java的reflection机制,通过动态调用的方式避免编码方式的约束,并以此建立核心组件BeanFactory,以此作为依赖注入机制的实现机制。

 

Spring主要目的是使J2EE易用和促进良好的编程习惯;

Spring特点:

1)spring要提供的是一种管理你的业务对象的方法;

2)spring有分层的体系结构,意味着你能选择仅仅使用它的任何一个独立的部分。

3)帮助编写易于测试的代码,spring是使用测试驱动开发TDD工程的理想框架;

4)Spring不会对工程添加任何依赖。

 

9:EJB与Java Bean的区别是什么?

Java Bean是可复用的组件,对、javabean是被容器锁创建的,所以javabean应具有一个无参的构造器,通常Java Bean还要实现Serializable接口用于Bean的持久性。

Java Bean相当于本地进程内的COM组件,它是不能跨进程访问的。

EJB相当于DCOM,即分布式组件。它是基于java的远程方法调用RMI技术的,所以EJB是可以被远程访问的。EJB客户从不直接访问真正的EJB组件,而是通过其容器访问。EJB是容器所创建和管理。

 

10:EJB基于哪些技术?

EJB包括Session Bean、Entity Bean、MessageDriven Bean,基于JNDI、RMI、JAT等技术实现。

Session Bean在J2EE中被用来完成一些服务器端的业务操作,如访问数据库,调用其他EJB组件;;是一种非持久性对象,它实现某些服务器上运行的业务逻辑;

Entity Bean被用来代表应用系统中的用到的数据;;是一种持久性对象,它代表一个存储在持久性存储器中的实体的对象视图。

 

猜你喜欢

转载自blog.csdn.net/qq_39667655/article/details/81877004