프로그래밍 198

옵저버 패턴

출판사+구독자=옵저버 패턴 1. 신문사가 사업을 시작하고 신문을 찍어내기 시작합니다. 2. 독자가 특정 신문사/잡지사에 구독 신청을 하면 매번 새로운 신문/잡지가 나올 때마다 배달을 받을 수 있습니다. 계속 구독자로 남아있는 이상 계속해서 신문/잡지를 받을 수 있습니다. 3. 신문을 더 이상 보고 싶지 않으면 구독 해지 신청을 합니다. 그러면 더 이상 신문이 오지 않습니다. 4. 신문사가 계속 영업을 하는 이상 여러 개인 독자, 호텔, 항공사 및 기타 회사 등에서 꾸준히 구독 및 해지를 하게 됩니다. 옵저버 패턴(Observer Pattern)에서는 한 객체의 상태가 바뀌면 그 객체에 의존하는 다른 객체들한테 연락이 가고 자동으로 내용이 갱신되는 방식으로 일대다(one-to-many)의존성을 정의합니다...

디자인 원칙

* 1. 애플리케이션에서 달라지는 부분을 찾아내고, 달라지지 않는 부분으로부터 분리 시킨다. "바뀌는 부분은 따로 뽑아서 캡슐화시킨다. 그렇게 하면 나중에 바뀌지 않는 부분에는 영향을 미치지 않은 채로 그 부분만 고치거나 확장할 수 있다" - 모든 패턴은 '시스템의 일부분을 다른 부분과 독립적으로 변화시킬 수 있는 방법' 을 제공하기 위함 2. 구현이 아닌 인터페이스에 맞춰서 프로그래밍 한다. 3. 상속보다는 구성을 활용한다. 4. 서로 상호작용을 하는 객체 사이에서는 가능하면 느슨하게 결합하는 디자인을 사용해야 한다. - 느슨하게 결합하는 디자인을 사용하면 변경 사항이 생겨도 무난히 처리할 수 있는 유연한 객체지향 시스템을 구축할 수 있다. 객체 사이의 상호의존성을 최소화할 수 있기 때문이다. * 5...

스트래티지 패턴

변할수 있는 행동(메소드) - 알고리즘군 - 을 캡슐화하고, 캡슐화된 인터페이스를 구현한 각각의 행동클래스를 만든다. 이로인해 , 변할수있는 행동이 따로 분리 되고, 캡슐화하여 구현했기 때문에 , 매우 유연하고 느슨한 결합도(loose coupling)를 갖도록 설계가 가능하다. 슈퍼클래스가 캡슐화된 인터페이스를 포함하고, setter메소드(인터페이스 i)를 만들어 슈퍼클래스의 자손클래스에서 해당 인터페이스를 구현한 클래스라면 언제든지,무엇이든지 행동을 변경할 수 있다. 그리고 만들어놓은 행동클래스를 다른객체에서도 재사용할수있다. 또 기존의 행동클래스를 수정하거나 슈퍼클래스를 수정하지않아도 새로운 행동을 추가 할수있다.

oracle TABLESPACE 생성

▣ 테이블스페이스의 생성 - 옵션절을 생략할 경우 밑줄친 옵션이 디폴트 값입니다. - tablespace_name : 생성할 테이블 스페이스 명 - DATAFILE : 새로 생성하는 테이블스페이스가 사용할 데이터 파일 - filespec : 디렉토리 경로명을 포함한 파일명 - size : 새로 생성되는 데이터 파일의 크기 - ONLINE/OFFLINE ONLINE : 새로 생성되는 테이블 스페이스를 활성화 시키며, 생성 후 바로 사용할 수 있게 함 OFFLINE : 테이블 스페이스를 비활성화 시키며, 생성 후 바로 사용할 수 없음 - PERMANT/TEMPORARY : TEMPORARY 옵션을 사용하면 생성하는 테이블스페이스는 임시 테이블스페이스가 됩니다. - DEFAULT STORAGE * INITIA..

oracle #1

새로운 USER를 생성하기 위해서는 CREATE USER문을 이용하면 됩니다. USER를 생성하기 위해서는 USER생성 권한이 있는 사용자로 접속해야 합니다. 사용자 생성 문법(Syntax) - user_name : 사용자 이름 - BY password : 사용자가 데이터베이스에 의해 인증되도록 지정하며, 데이터베이스 유저 로그온시 사용하는 비밀번호 입니다. - EXTERNALLY : 사용자가 운영 체제에 의해서 인증되도록 지정합니다. - DEFAULT TABLESPACE는 사용자 스키마를 위한 기본 테이블 스페이스를 지정 합니다. - TEMPORARY TABLESPACE는 사용자의 임시 테이블 스페이스를 지정합니다. - QUOTA절을 사용하여 사용자가 사용할 테이블 스페이스의 영역을 할당합니다. - P..

캐싱 객체 구현

캐시를 이용한 성능 향상 (1) - 캐싱(Caching) 캐시를 이용한 성능 향상! 객체를 캐싱함으로써 객체 생성과 관련된 성능을 향상시킬 수 있다. 섹션 목록 캐싱(Caching) 객체 캐싱의 구현 캐싱의 성능 테스트 결론 [프린트 형식으로 보기] 캐싱(Caching) 성능을 향상시키기 위해서 많이 사용되는 방법을 말해보라고 하면 대부분 객체 풀링을 말한다. 특히 데이터베이스 커넥션 풀이나 쓰레드 풀과 같은 것들이 일반 개발자들에게 보편화되면서 객체 풀링은 성능 향상을 위해서 반드시 사용해야 하는 기술로서 여겨지기도 한다. 하지만, 객체 풀링 못지 않게 성능을 향상시킬 수 있는 방법이 있다. 바로 객체 캐싱이다. 객체 캐싱은 기존에 사용된 정보를 메모리에 저장해두었다가 다시 참조될 때 사용하는 기술로서..

서블릿 생명주기

- 요청 발생 - > 서블릿 인스턴스화 (생성자(default) 실행) -> - 서블릿 쓰레드를 생성 또는 쓰레드풀에서 하나를 가져온다. 서블릿 init()메소드 호출(초기화) -> 서블릿 service()메소드 호출 -> (이 과정에서 HttpServletRequest,HttpServletResponse의 구현체를 컨테이너가 생성하여 넘겨준다) -> 브라우져 방식에 따라 doGet 또는 doPost() 호출 (service메소드 내부에서) -> doPost()가 종료되고 service()메소드도 종료된다. -> destroy() 로 최종 정리 -> 목표를 잃은 HttpServletRequest,HttpServletResponse는 가비지컬렉터의 대상이 된다.