国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

服務(wù)器之家:專注于服務(wù)器技術(shù)及軟件下載分享
分類導(dǎo)航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術(shù)|正則表達(dá)式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務(wù)器之家 - 編程語言 - Java教程 - java實(shí)現(xiàn)頁面置換算法

java實(shí)現(xiàn)頁面置換算法

2020-08-09 22:41cnkeysky Java教程

這篇文章主要為大家詳細(xì)介紹了java實(shí)現(xiàn)頁面置換算法,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

本文實(shí)例為大家分享了java實(shí)現(xiàn)頁面置換算法的具體代碼,供大家參考,具體內(nèi)容如下

原理就不說了,直接上代碼

FIFO

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
import java.util.ArrayList;
import java.util.List;
 
import utils.ListUtils;
 
 
/**
 *
 *
 * @author cnkeysky
 *
 */
 
public class FIFO {
 
 public void run() {
 String[] inputStr = {"1", "2", "3", "4", "2", "1", "2", "3", "5", "2", "3", "7", "6"};
 // 內(nèi)存塊
 int memory = 3;
 List<String> list = new ArrayList<>();
 for(int i = 0; i < inputStr.length; i++){
  if(i == 0){
  list.add(inputStr[i]);
  System.out.println("第"+ i +"次訪問:\t\t" + ListUtils.listToString(list));
  }else {
  if(ListUtils.find(list, inputStr[i])){
   System.out.println("第" + i + "次" + "訪問:\t\t" + ListUtils.listToString(list));
  }else{
   if(list.size() < memory){
   list.add(inputStr[i]);
   }else{
   list.remove(0);
   list.add(inputStr[i]);
 
   }
   System.out.println("第" + i + "次" + "訪問:\t\t" + ListUtils.listToString(list));
  }
  }
 }
 }
 
}

LRU

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
import utils.ListUtils;
 
import java.util.ArrayList;
import java.util.List;
 
/**
 * 最近最久未用置換算法
 * @author cnkeysky
 *
 */
 
public class LRU {
 
 public static void main(String[] args) {
 String[] inputStr = {"6", "7", "6", "5", "9", "6", "8", "9", "7", "6", "9", "6"};
 // 內(nèi)存塊
 int memory = 3;
 List<String> list = new ArrayList<>();
 for(int i = 0; i < inputStr.length; i++){
  if(i == 0){
  list.add(inputStr[i]);
  System.out.println("第"+ i +"次訪問:\t\t" + ListUtils.listToString(list));
  }else {
  if(ListUtils.find(list, inputStr[i])){
   // 存在字符串,則獲取該下標(biāo)
   int index = ListUtils.findIndex(list, inputStr[i]);
   // 下標(biāo)不位于棧頂時(shí),且list大小不為1時(shí)
   if(!(list.get(list.size() - 1)).equals(inputStr[i]) && list.size() != 1) {
   String str = list.get(index);
   list.remove(index);
   list.add(str);
   }
   System.out.println("第" + i + "次" + "訪問:\t\t" + ListUtils.listToString(list));
  }else{
   if(list.size()>= memory) {
   list.remove(0);
   list.add(inputStr[i]);
   System.out.println("第" + i + "次" + "訪問:\t\t" + ListUtils.listToString(list));
   }else {
   list.add(inputStr[i]);
   System.out.println("第" + i + "次" + "訪問:\t\t" + ListUtils.listToString(list));
   }
  }
  }
 }
 }
}

Clock

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
import java.util.ArrayList;
import java.util.List;
 
import utils.ListUtils;
 
/**
 *
 *
 * @author cnkeysky
 *
 */
public class Clock {
 
 public static void main(String[] args) {
 String[] inputStr = {"6", "7", "6", "5", "9", "6", "8", "9", "7", "6", "9", "6"};
 List<String> list = new ArrayList<>();
 // 內(nèi)存塊
 int memory = 3;
 // 缺頁次數(shù)
 int count = 0;
 String[] clock = new String[memory];
 int indexNext = 0;
 int index = 0;
 // 初始化時(shí)鐘
 for(int i = 0; i < memory; i++) {
  clock[i] = "0";
 }
 for(int i = 0; i < inputStr.length; i++) {
  int indexPre = 0;
  if (i == 0) {
  list.add(inputStr[i]);
  clock[indexNext] = "1";
  indexNext++;
  System.out.println("第"+ i +"次訪問:\t\t" + ListUtils.listToString(list));
  }else {
 
  if(ListUtils.find(list, inputStr[i])) {
   indexPre = ListUtils.findIndex(list, inputStr[i]);
   if(clock[indexPre].equals("0")) {
   clock[indexPre] = "1";
   }
   count++;
   System.out.println("第"+ i +"次訪問:\t\t" + ListUtils.listToString(list));
  }else {
   if(list.size() < memory) {
   list.add(inputStr[i]);
   clock[indexNext] = "1";
   indexNext++;
   System.out.println("第"+ i +"次訪問:\t\t" + ListUtils.listToString(list));
   }else {
   index = ListUtils.findZero(indexNext, clock, memory);
   list.remove(index);
   list.add(index, inputStr[i]);
   clock[index] = "1";
   indexNext = index + 1;
   System.out.println("第"+ i +"次訪問:\t\t" + ListUtils.listToString(list));
   }
  }
  }
  if(indexNext > memory - 1) {
  indexNext = Math.abs(memory - indexNext);
  }
 }
 System.out.println("缺頁次數(shù):" + (inputStr.length-count));
 }
 
}

工具類ListUtils

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
import java.util.List;
 
public class ListUtils {
 
 public ListUtils() {
 
 }
 
 /**
 * 輸出
 * @param list 將List轉(zhuǎn)為數(shù)組并輸出, out: 2, 3, 4
 * @return
 */
 public static String listToString(List list){
 
 StringBuffer content = new StringBuffer();
 for(int i = 0; i < list.size(); i++){
  content.append(list.get(i));
  if(i < list.size() - 1){
  content.append(",");
  }
 }
 return content.toString();
 }
 
 /**
 * 在list中查找是否有str
 * @param list
 * @param str
 * @return
 */
 public static boolean find(List<String> list, String str){
 boolean flag = false;
 for(String lis : list){
  if(lis.equals(str)){
  flag = true;
  }
 }
 return flag;
 }
 
 /**
 * 在List中查找是否有String,如果有返回下標(biāo), 否則返回 -1
 * @param list
 * @param str
 * @return
 */
 public static int findIndex(List<String> list, String str) {
 
 int index = 0;
 for(String lis : list) {
  if(lis.equals(str)) {
  return index;
  }
  index++;
 }
 return -1;
 }
 
 public static boolean clockJudge(String[] clock, int index) {
 if(clock[index].equals("0")) {
  return true;
 }
 return false;
 }
 /**
 *
 * @param index 下標(biāo)
 * @param clock 時(shí)鐘
 * @param range 當(dāng)前使用內(nèi)存塊
 * @return
 */
 public static int findZero(int index, String[] clock, int range) {
 
 while(true) {
 
  if(clock[index].equals("0")) {
  break;
  }else {
  clock[index] = "0";
  index++;
  if(index > range-1) {
   index = Math.abs(range - index);
  }
  }
 }
 return index;
 }
 
 /**
 * 在數(shù)組中查找是否存在該字符串
 * @param obj
 * @param str
 * @return
 */
 public static boolean strJudge(Object[] obj, String str) {
 boolean flag = false;
 if(obj == null) {
  return flag;
 }
 for(int i = 0; i < obj.length; i++) {
  if(str.equals(obj[i])) {
  flag = true;
  break;
  }
 }
 return flag;
 }
 
 /**
 * 獲取二維數(shù)組中同一列的行的長度
 * @param str 數(shù)據(jù)
 * @param length 二維數(shù)組的列
 * @param memory 內(nèi)存塊
 * @return
 *
 */
 
 public static int findNull(Object[][] str, int length, int memory) {
 
 int index = 0;
 if(str == null) {
  return -1;
 }
 for(int i = 0; i < memory; i++) {
  if(str[i][length] != null) {
  index = i;
  }
 }
 return index;
 }
}

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持服務(wù)器之家。

原文鏈接:https://blog.csdn.net/cnkeysky/article/details/80639376

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 亚洲aⅴ天堂av在线电影软件 | 牛牛电影国产一区二区 | 国产精品欧美久久久久久 | 亚洲成人高清 | 日日骚一区| 成人av视屏 | 亚洲一区精品在线 | 久久久久无码国产精品一区 | 免费视频一区 | 精品久久av | 99riav在线 | 97久久精品| 看a网址 | 在线黄 | 亚洲一级黄色 | a在线观看| 一级毛片免费观看 | 91精品国产视频 | 国产成人av在线 | 天天操网址 | 免费观看一级特黄欧美大片 | 色婷婷一区二区三区 | 看亚洲a级一级毛片 | 国产精品一二三区视频 | 亚洲精品久久久久久一区二区 | 每日更新av | 亚洲综合伊人 | 亚洲国产综合在线 | 精品久 | 国产日韩一区二区三区 | 色婷婷综合网 | 国产精品99久久久久久久vr | 亚洲国产精品久久久久秋霞蜜臀 | 国产一级在线免费观看 | 亚洲热av| 久久五月天婷婷 | 亚洲 中文 欧美 日韩 在线观看 | 欧美一区二区三区视频 | www久 | 欧美一区二 | 久久av资源|