- java类初始化顺序
- 父类静态成员和静态初始化块,按在代码中出现的顺序依次执行
- 子类静态成员和静态初始化块,按在代码中出现的顺序依次执行
- 父类实例成员和实例初始化块,按在代码中出现的顺序依次执行
- 父类构造方法
- 子类实例成员和实例初始化块,按在代码中出现的顺序依次执行
- 子类构造方法
- 位移运算:
-
a << 2 //无符号左移
- a >> 2 //有符号右移
- a >>> 2 //无符号右移
-
- java 检查异常和非检查异常:前者为编译器强制程序员在代码中捕获的异常,后者不需要在代码中捕获,而是因为错误的输入数据或者错误的逻辑导致在运行时抛出的异常。
- java 内部类种类:嵌套顶级类(静态内部类)、成员内部类、局部内部类、匿名内部类。
- java关键字
- volatile关键字:词义,易挥发的。 java虚拟机规范指出,为了获得最佳速度,允许线程保存共享成员变量的私有拷贝,当线程进入或者离开同步代码块时,才与共享成员变量的原始值对比。 该关键字修饰的成员变量被线程访问时提示虚拟机,该成员变量不允许在工作内存中保存私有拷贝,而应与主内存中的共享成员变量直接交互。这样确保任何时刻多线程访问该变量的数据同步。 由于volatile屏蔽掉了虚拟机中必要的代码优化,所以执行效率比较低,必要时才使用。
- Transient关键字:词义,短暂的。 java的serialization提供一种持久化化对象实例机制,但是有时可能有一个特殊的数据成员不想被序列化。为了在这个对象的特定域上关闭serialization,可以在这个域前面加上transient,表示该域不是对象串行化的一部分。
-
假定我们有3个程序,每个程序花费80%的时间进行I/O,20%的时间使用CPU,每个程序的启动时间和其需要使用CPU进行计算的分钟数如表所示
程序编号 启动时间 需要CPU时间(分钟)
1 00:00(零点零分) 3.5
2 00:10 2
3 00:15 1.5请问在多线程/进程环境下 系统总响应时间
A 22.5 B 23.5 C 24.5 D 25.5
解答:(此题涉及操作系统的多道编程,单道时,CPU的利用率为20%,双道时,CPU的利用率为1-0.8*0.8=0.36,三道时为1-0.8*0.8*0.8=0.488,以此类推,可参考http://blog.sina.com.cn/s/blog_6bdaec4c0100majs.html)
0~10 10*0.8=8 10*0.2=2 A剩下1.5分钟CPU跑
10~15 有两个进程 CPU利用率为1-0.8*0.8=0.36 所以5*0.36/2=0.9(两个进程均分CPU时间)这样A剩下0.6,B剩下1.1
15开始,有3个进程 CPU利用率为1-0.8*0.8*0.8=0.488 所以A在 0.6*3/0.488=3.69也就是18.69分完成,之后CPU利用率又为0.36,此时B剩下1.1-0.6=0.5,C剩下1.5-0.6=0.9 之后B在0.5*2/0.36=2.78也就是2.78+18.69=21.46时候B进程结束,之后C开始单跑 0.9-0.5=0.4 0.4/0.2=2, 即2分钟之后C结束,也就是21.46+2=23.46≈23.5 所以答案应该选B -
若系统中有五台绘图仪,有多个进程均需要使用两台,规定每个进程一次仅允许申请一台,则至多允许( )个进程参于竞争,而不会发生死锁。
A、5 B、2 C、3 D、4
解答:答案是D。此题为经典的哲学家就餐问题。进程是操作系统中的一个核心概念.其概念至今未有严格的公认的定义.一般的讲,进程是一个具有一定独立功能的程序关于某个数据集合的一次运行活动. 其基本状态有3种,即ready(就绪),running(运行),wait(等待). 死锁是指,在两个或多个并发进程中,如果每个进程持有某种资源而又都等待别的进程释放它们现在保持着的资源,否则就不能向前推进.此时,每个进程都占用了一定的资源但是又不能向前推进,称这一组进程产生了死锁. 通俗的讲,就是两个或多个进程无止境的等候着永远不会成立的条件的一种系统状态. 产生死锁的根本原因是系统能够提供的资源个数比要求该资源的进程数少.其具体原因是1系统资源不足2进程推进顺序非法.
一点笔记
最新推荐文章于 2022-03-27 02:29:54 发布