import java.util.*; public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); while (sc.hasNext()) { int n = sc.nextInt(); long[] arr = new long[92]; arr[0] = 0; arr[1] = 1; for (int i = 2; i < arr.length; i++) { arr[i] = arr[i - 1] + arr[i - 2]; } System.out.println(arr[n+1]); } } }1.强占式:现行进程在运行过程中,如果有重要或紧迫的进程到达(其状态必须为就绪),则现运行进程将被迫放弃处理机 ,系统将处理机立刻分配给新到达的进程。
2. 静态优先权 :在创建进程时确定的,优先权在进程的整个运行期间保持不变。
3. 动态优先权 :在创建进程时所赋予的优先权,是可以随进程的推进或随其等待时间的增加而改变的,以便获得更好的调度性能,该优先权会随着等待的时间增长而增长。
强占式静态优先权法 -- 强占式,说明高优先权的可以抢夺CPU的执行权。假如一个低优先权的执行,当一个高优先权的在就绪状态,那么CPU就会执行高优先权的那个进程,低优先权的就会处于等待,假如一直有高优先权的进程在就绪,那么就会一直等待。
非强占式静态优先权法 -- 优先权不会变,假如有一个最低优先权的线程在等待,那么等优先级高的进程执行完就可以轮到该进程执行了。
时间片轮转调度算法 -- 执行的时间片完毕后,被执行的进程会放到等待队列的队尾,一次循环,既然是循环的话,那就有机会轮到。
非强占式动态优先权法 -- 虽然是非强占式的,但是如果一个进程一直在等待,那么他的优先权就会动态增长,就可以得到CPU的执行权。、
操作系统存在虚拟内存,能够把一部分优先级较低的程序保存到系统硬盘。
因为数据库的每条数据访问的概率近似相等,那么就要缓存数据库的所有数据,而cache的空间是十分有限的,所以不可能全部缓存。缓存空间一般较小不可能存入较多的数据。无法预测所需要查询的数据,如果将被最近访问数据放入缓存用处不大,故而增加缓存起不到很大的作用。
信号量为正数,表明还有资源未被获取,信号量位为负数,表明有进程在阻塞队列中等待。
如果系统只有用户态线程,则线程对操作系统是不可见的,操作系统只能调度进程;
如果系统中有内核态线程,则操作系统可以按线程进行调度;
为了保证多个应用程序之间互不影响,必须由硬件(软件配合)保证每个程序只能在给定的存储区域内活动,这种措施叫做存储保护。
基址寻址,将CPU中基址寄存器的内容,加上指令格式中的形式地址而形成操作数的有效地址。
被引用的专用寄存器含有一个存储器地址,地址字段含有一个相对于该地址的偏移量(通常是无符号的整数)。寄存器的引用可以使显式的,也可以是隐式的。
基址寻址方式,主要用来解决程序的动态定位问题。
在多道程序的环境下,用户不可决定自己使用的主存区,因而在编程时常按(以零为基准地址)相对地址来编写,当程序被放入主存时,操作系统根据主存空间情况给基址寄存器赋值,从而将虚地址转化为实地址。
换页错误: Page Fault,其实应该翻译成缺页异常或缺页中断,并非是错误,而是存在虚拟内存情况下的内存未命中,是非常常见的现象。内存分块,进程分页,页与块对应,而当进程远大于内存时候,可采用虚拟内存的技术,部分当前不用的页放在外存中,进程运行到所需页不在内存中时,就发生缺页中断,即换页错误,需要从外存中取页。换页错误多发将存在过多IO操作,大大降低速度,所以需要减少分页错误。
减少换页错误的方法,即降低缺页中断率:
1、内存页框数。增加作业分得的内存块数。
2、页面大小。页面划分越大,中断率越低。
3、页面零星换算法。替换算法的优劣影响缺页中断次数
4、程序局部性。程序局部性好可减少缺页中断。
局部性是指:
1、程序顺序执行
2、程序跳转不会太远
3、程序存在许多循环
4、对计多数据结构(如数组)的处理局限于小范围
5、程序部分内容互斥(如出错处理程序往往执行不到,可放外存)
局部性好,导致下一个要找的东西就在当前内存的前后不远处,很有可能就在同一页里,所以就不需要频繁换页,换页错误也就少了。
NowCoder每天要给许多客户写电子邮件。正如你所知,如果一封邮件中包含多个收件人,收件人姓名之间会用一个逗号和空格隔开;如果收件人姓名也包含空格或逗号,则姓名需要用双引号包含。
现在给你一组收件人姓名,请你帮他生成相应的收件人列表。输入描述:
输入包含多组数据。 每组数据的第一行是一个整数n (1≤n≤128),表示后面有n个姓名。 紧接着n行,每一行包含一个收件人的姓名。姓名长度不超过16个字符。输出描述:
对应每一组输入,输出一行收件人列表。示例1
输入3 Joe Quan, William Letendre,Bruce 2 Leon Kewell输出Joe, "Quan, William", "Letendre,Bruce" Leon, Kewell
import java.util.ArrayList;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
while (scanner.hasNext()) {
int n = scanner.nextInt();
scanner.nextLine();
ArrayList arr=new ArrayList();
for (int i = 0; i < n; i++) {
String str = scanner.nextLine();
if (str.contains(" ") || str.contains(",")) {
arr.add(""" + str + """);
} else {
arr.add(str);
}
}
for (int i = 0; i < n; i++) {
if(i
一只成熟的兔子每天能产下一胎兔子。每只小兔子的成熟期是一天。 某人领养了一只小兔子,请问第N天以后,他将会得到多少只兔子。
输入描述:
测试数据包括多组,每组一行,为整数n(1≤n≤90)。输出描述:
对应输出第n天有几只兔子(假设没有兔子死亡现象)。示例1
输入1输出
21
2
import java.util.*;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
while (sc.hasNext()) {
int n = sc.nextInt();
long[] arr = new long[92];
arr[0] = 0;
arr[1] = 1;
for (int i = 2; i < arr.length; i++) {
arr[i] = arr[i - 1] + arr[i - 2];
}
System.out.println(arr[n+1]);
}
}
}



