순수한 Java 코드는 간단하고 이해하기 쉬운 최대 절전 모드 레벨 1 캐시 원리를 시뮬레이션합니다.
코드 사본은 다음과 같습니다.
java.util.arraylist 가져 오기;
java.util.hashmap import;
Java.util.list 가져 오기;
java.util.map import;
공개 클래스 LevelOnecache {
//이 개체는 최대 절전 모드 레벨 1 캐시를 시뮬레이션하는 데 사용됩니다.
개인 정적지도 <정수, 학생> stus = new Hashmap <정수, 학생> ();
public static void main (String [] args) {
Getstudent (1);
Getstudent (1);
Getstudent (1);
Getstudent (2);
Getstudent (2);
}
공개 정적 학생 getstudent (정수 ID) {
if (stus.containskey (id)) {
System.out.println ( "캐시에서 데이터 가져 오기");
return stus.get (id);
} 또 다른 {
System.out.println ( "데이터베이스의 데이터 페치");
학생 s = mydb.getstudentByid (id);
// 데이터베이스에서 얻은 데이터를 캐시에 넣습니다.
stus.put (id, s);
반환 s;
}
}
}
// 데이터베이스 시뮬레이션
클래스 myDB {
개인 정적 목록 <tudent> list = new ArrayList <elident> ();
공전{
학생 S1 = 신입생 ();
s1.setName ( "name1");
S1.SetID (1);
학생 S2 = 신입생 ();
s2.setName ( "name2");
S2.SetID (2);
학생 S3 = 신입생 ();
s3.setName ( "name3");
S3.SetID (3);
// 데이터베이스를 초기화합니다
list.add (s1);
list.add (s2);
list.add (s3);
}
// 데이터베이스에서 공개 쿼리 메소드를 제공합니다
공개 정적 학생 getstudentByid (정수 ID) {
for (student s : list) {
if (s.getId (). Equals (id)) {
반환 s;
}
}
// 쿼리를 찾을 수없는 경우 반환이 비어 있습니다
널 리턴;
}
}
// 도메인 객체
클래스 학생 {
개인 정수 ID;
개인 문자열 이름;
공개 정수 getid () {
반환 ID;
}
public void setid (정수 ID) {
this.id = id;
}
공개 문자열 getName () {
반환 이름;
}
public void setName (문자열 이름) {
this.name = 이름;
}
}