springmvc下的mybatis的sharding分表
springmvc下的mybatis的sharding分表
银行家算法—操作系统
银行家算法的JAVA代码实现
/**
* 安全性算法
*/
public boolean safety(Treads[] TDSO) {
Work work = new Work(available.getA(), available.getB(),
available.getC());
Work works[] = new Work[TDSO.length];
for (int i = 0; i < works.length; i++) {
works[i] = new Work(0, 0, 0);
}
for (int i = 0; i < TDSO.length; i++) {
// Need[i,j]<=work[j];
if (work.getA() >= TDSO[i].need.getA()
&& work.getB() >= TDSO[i].need.getB()
&& work.getC() >= TDSO[i].need.getC()) {
work.A += TDSO[i].allocation.getA();
work.B += TDSO[i].allocation.getB();
work.C += TDSO[i].allocation.getC();
works[i].A = work.A;
works[i].B = work.B;
works[i].C = work.C;
if (i == TDSO.length - 1) {
System.out.println("\tWork.A\tWork.B\tWork.C");
for (int j = 0; j < works.length; j++) {
System.out.println(TDSO[j] + " \t" + works[j].getA()
+ "\t" + works[j].getB() + "\t"
+ works[j].getC());
}
return true;
}
} else {
return false;
}
}
return false;
}
/**
* 请求资源
*/
public void Request(Treads[] TDSO, int i) {
Scanner S = new Scanner(System.in);
int A = 0, B = 0, C = 0;
System.out.println("请输入进程" + i + "请求资源的数目");
System.out.print("请求资源A:");
A = S.nextInt();
System.out.print("请求资源B:");
B = S.nextInt();
System.out.print("请求资源C:");
C = S.nextInt();
System.out.println();
System.out.println();
if (A <= TDSO[0].need.getA() && B <= TDSO[0].need.getB()
&& C <= TDSO[0].need.getC() && A <= available.getA()
&& B <= available.getB() && C <= available.getC()) {
// 修改Allocation的值
TDSO[0].allocation.setA(TDSO[0].allocation.getA() + A);
TDSO[0].allocation.setB(TDSO[0].allocation.getB() + B);
TDSO[0].allocation.setC(TDSO[0].allocation.getC() + C);
// 修改Need的值
TDSO[0].need.setA(TDSO[0].need.getA() - A);
TDSO[0].need.setB(TDSO[0].need.getB() - B);
TDSO[0].need.setC(TDSO[0].need.getC() - C);
// 修改available的值
available.setA(available.getA() - A);
available.setB(available.getB() - B);
available.setC(available.getC() - C);
}
}