sitelink1  
sitelink2  
sitelink3  
sitelink4  
sitelink5  
sitelink6  

ObjectCache클래스 (2007년 11월)
----------------------------------------------------------------

1. 소개

어플리케이션의 성능을 향상시키기 위한 ObjectCache클래스와 이를 이용한 간단한 Server/Client프로그램입니다.
캐쉬 데이터 관리는 LRU알고리즘을 이용하여 관리되며, 디폴트 생성자로 캐쉬 객체를 생성할 때 ObjectCache클래스 내에서
사용되는 환경변수의 디폴트 값은 다음과 같습니다.
    * JVM 힙메모리에서 사용 가능한 최대 사용량 기본값 : 80%
    * 캐쉬 데이터가 캐쉬내에서 유효한 기본 시간 : 1시간
    * 캐쉬 데이터 리스트의 데이터 기본 갯수 : 1000개

ObjectCache클래스는 다음과 같은 특징을 가지고 있습니다.
    * 싱글톤 패턴에 의해 유일한 단일 객체가 되며 Static영역에서 객체가 생성됩니다.
    * synchronized에 따라 데이터의 무결성을 보장합니다.
    * LRU 알고리즘에 의해 지정된 리스트 사이즈가 넘을 경우 삭제합니다.
    * 기본메서드 get(String key), set(String key, Object value), delete(String key) 메서드를 가집니다.
    * Fault Tolerant한 환경을 지원하기 위해 ObjectCache메모리 감시자가 존재하여
      사용자로부터 최대 메모리 허용치를 입력받아서 캐쉬 메모리 용량을 검사하고, 용량초과시 데이터를 삭제합니다.
      또한 캐쉬에 저장되는 데이터의 유효 시간을 지정하여 유효 시간이 지난 데이터도 함께 자동 삭제합니다.


2. 개발 및 테스트 환경

    * 운영체제: WindowsXP
    * 자  바  : JDK1.6.0
    * IDE툴   : Eclipse3.2.0
    * 테스트  : Junit4, Ant1.7.0
    * CharSet : UTF-8

 

3. 패키지설명

ObjectCacheProject폴더 이하 파일 및 디렉토리
    * lib        : 컴파일 및 테스트를 위한 확장라이브러리를 포함합니다.
    * src        : ObjectCache 및 Client/Server 프로그램의 소스입니다.
    * test.bat   : 도스 프롬프트하에서 Junit테스트 케이스를 실행하기 위한 배치파일입니다.
    * build.xml  : 도스 프롬프트하에서 Junit테스트 케이스를 실행하기 위한 설정파일입니다.
    * client.bat : 통신환경을 위한 클라이언트 프로그램 실행파일입니다.
    * server.bat : 통신환경을 위한 서버 프로그램 실행파일입니다.

 

4. 시작하기

1) 객체생성
  객체를 생성하기 위한 public static 메서드가 3가지 존재합니다.
      - getInstance(double maxCacheMemoryRatio, long maxCacheDataAge, long maxlistSize)
      - getInstance(long maxlistSize)
      - getInstance()

2) 기본 메서드
      - set(String key, Object value) : key와 value로 데이터를 캐쉬 메모리에 저장합니다.
      - get(String key) : key값으로 캐쉬 메모리로부터 데이터를 취득해 옵니다. (이때 LRU알고리즘에 의해 상위의 우선순위를 부여 받습니다)
      - delete(String key) : key값으로 캐쉬 메모리에 저장된 데이터를 삭제합니다.

3) Server/Client 프로그램
  ObjectCache를 테스트하기 위한 Server/Client환경의 서비스 프로그램입니다.
  Server는 가상 Database와 연동이 되어 있어서 Client의 메세지를 저장하고, 저장한 메세지를 검색할 수 있는 환경을 제공합니다.
  Client로부터 메세지 검색 요청을 받게 되면 1차 검색은 Cache를 통해 이뤄지고 Cache에서 히트시 검색된 메세지를 Cache로부터 전송하게 됩니다.
  Cache에서 히트하지 못한 경우 Database에서 2차 검색을 실시하고 Database에도 해당 메세지가 존재하지 않을 경우,
  "해당 데이터 없음" 메세지를 Client에게 전송하게 됩니다.
      - server.bat 을 먼저 실행 후 client.bat 을 실행합니다.

4) 테스트 케이스
  단위 테스트를 위해 Junit을 사용하였습니다.
      - 도스환경에서의 테스트는 test.bat 파일을 실행하므로써 테스트 결과를 확인할 수 있습니다. (파일을 열어 JAVA_HOME의 위치를 지정하여 주십시요.)
      - 이클립스 환경에서는 ObjectCacheTest.java 파일로 테스트를 실시하면 됩니다.

번호 제목 글쓴이 날짜 조회 수
123 상속과 연관(association, composition) 황제낙엽 2008.04.10 436
122 HttpServletRequest 객체의 함수 모음 file 황제낙엽 2008.01.28 582
» ObjectCache클래스 와 Server/Client프로그램 file 황제낙엽 2007.11.07 490
120 ObjectCache시스템의 구현을 위한 추가 고려사항 황제낙엽 2007.11.04 459
119 문제 : 간단한 ObjectCache 프로그램을 구현하라 황제낙엽 2007.11.01 558
118 ObjectCache 클래스를 구현한 예제 소스 파일들 황제낙엽 2007.11.01 432
117 LinkedHashMap 를 이용한 LRU 캐쉬 구현 황제낙엽 2007.11.03 766
116 J2SE 5.0 에서의 QUEUE와 DELAYED 프로세싱 황제낙엽 2007.11.02 449
115 J2EE object-caching frameworks (ObjectCache) 황제낙엽 2007.11.02 1852
114 Object Caching in a Web Portal Application Using JCS (ObjectCache) 황제낙엽 2007.11.02 490
113 Java Object Cache | Patterns 'N J2EE (ObjectCache) 황제낙엽 2007.11.01 530
112 Runtime 클래스를 이용한 JVM 메모리 사용량 확인 황제낙엽 2007.11.05 470
111 자바 애플리케이션에서 동적으로 PDF 파일 생성하기 황제낙엽 2007.10.03 391
110 싱글사인온(single sign-on)으로 엔터프라이즈 자바 인증을 단순하게! 황제낙엽 2007.10.03 444
109 [BPP] 게시판 페이징 로직 분석 - M1.3 file 황제낙엽 2007.09.26 294
108 [HttpURLConnection] 2초후에 연결 끊어주는 URLConnection 예제 황제낙엽 2007.09.08 481
107 Assertions : 비교 확인, 조건 확인, Null 확인 황제낙엽 2007.09.02 418
106 [BPP] 게시판 페이징 로직 분석 - M1.2 - SQLMap(ibatis) 지원 file 황제낙엽 2007.08.29 338
105 J2SE 5.0 - 컨스턴트와 메서드에 static imports 사용하기 황제낙엽 2007.08.28 469
104 J2SE 5.0 - 향상된 루프문 황제낙엽 2007.08.27 447