전체 글 476

데코레이터 패턴

클래스의 소스변경없이 추가기능을 동적으로 추가시키는 패턴. 데코레이터 패턴을 적용한 사례는 java.io 패키지에 많이 있다. Reader reader = new BufferedReader(new InputStreamReader(System.in)); ==> 풀어보면... Reader reader = new InputStreamReader(System.in); reader = new BufferedReader(reader); 정의 - 객체에 추가 요소를 동적으로 더할 수 있습니다. 데코레이터를 사용하면 서브클래스를 만드는 것을 통해서 기능을 유연하게 확장할 수 있는 방법을 제공합니다.

JVM(Java Virtual Machine)

JVM은 Java Virtual Machine의 약자이다. Machine이라는 말이 들어가 있긴 하지만, 실제로는 소프트웨어이다. Machine이라는 말이 들어간 이유는 JVM이 실제적으로 CPU와 같은 역할을 하기 때문인 것이라고 추정된다. 프로그램은 CPU 위에서 돌아가게 된다. 따라서 C나 C++과 같은 일반적인 프로그램 언어에서 컴파일하여 생성된 코드는 바로 해당 CPU에서 실행이 가능한 코드이다. 하지만 자바 소스코드(*.java)를 컴파일한 경우 생성되는 클래스파일(*.class)은 직접 CPU에서 동작할 수 있는 코드(native code)가 아니다. 생성된 클래스파일은 중간단계의 언어라고 할 수 있는 byte code로 이루어져 있다. 바로 이 byte code를 실행시키기 위한 가상적인 ..

옵저버 패턴

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

디자인 원칙

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

스트래티지 패턴

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

4학년과목인 웹프로그래밍 기말고사를 마지막으로 1학년1학기 기말고사 종료.

휴.. 기말고사가 끝났다 .. 후련하군. B학점 턱걸이로 나올듯하다 .. 어제 외식을 했다 파주에 있는 오리고기 집으로 .. 와 정말 맛나더라 ~ 너무너무 맛있었다 . 엄마 아빠가 계속 드시진 않고 굽기만 하셔서 먹는데 편치 않았다 .. 굽지말고 드시라고 .. 내가 굽는다 라고 말하고 싶었는데 쑥스러워서 말을 못했다.. 일산가기 전날 비트컴퓨터학원에서 SPRING IN ACTION 과 HEAD FIRST : DESIGN PATTERN책을 구입했는데, HEAD FIRST시리즈는 : SERVLET & JSP 를 봤을때 너무 반해서 샀고 SPRING IN ACTION은 SPRING FRAMEWORK WORKBOOK중 무엇을 사야할지 한참 고민하다가 WORKBOOK은 책내용은 좋지만주변에 가진 사람도 둘이나 있..

일기 2007.07.01

이직해야한다는 생각이 강하게 든다..

개발자로 입사해서 허드렛일만 하고있다 문서작업,유지보수,프로그램설치.. 1년 채우고 이직하거나 핸디소프트에 합격 한다면 이직하려 했으나 두경우에 해당하지 않아도 빨리 이직해야할거같다.. 개인적으로 1년은 채우고 싶었는데 도저히 안되겠다 내실력이 점점 쓰레기가 되어간다 이러다가 가비지컬렉터한테 수집당하는거아냐 ?? 최빈.gc(); orz ....... ..

일기 2007.06.29

oracle TABLESPACE 생성

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

기말고사..

아침에 8시 20분에 기상해서 미친듯이 놀람.. 새벽 6시에 살짝 선잠에 빠질게 뭐람... 택시타고 9시10분 연신중학교 도착.. 휴 다행..(택시기사분 '92 학번 방송대 선배님) 1교시 국어/비쥬얼프로그래밍.. 국어가 생각보다 어려웠고, 비쥬얼프로그래밍은 시간이 많이 필요했다 .. 정신이 없는 중.. 급작스레 배가 아파서 급기야 화장실을 안가면 안갈정도의 상태에 이름. 그러나 억지로 억지로 시험끝날때까지 참고, 마킹함. 하지만 첫교시 두과목은 망침(과락만 겨우 면함) 나머지 과목은 실수로 놓친 몇문제 빼고 나름대로 만족스러움. 첫시험 좋은 경험했네 .. 다신 이러지 말아야지.

일기 2007.06.27