다음 자료를 참조 하세요!



git 을 쓰기전에 한번 읽어 보면 좋은 자료

http://git-scm.com/book/ko/%EC%8B%9C%EC%9E%91%ED%95%98%EA%B8%B0




git 기초 명령어 정리 

http://forum.falinux.com/zbxe/index.php?document_srl=533022&mid=lecture_tip


'설치&설정 관련 > git' 카테고리의 다른 글

git 참고 자료  (0) 2014.02.03
Posted by lahuman

java 를 이용해 실행하게 되면 몇가지 옵션이 있습니다.


다음은 메모리 관련된 java option 입니다.



heap size 1G 할당

-Xms1024m -Xmx1024m


동적인 호출에 대한 메모리 공간 1G 할당

-XX:PermSize=1024m -XX:MaxPermSize=1024m


System.gc() 무시

-XX:+DisableExplicitGC 


UseAdaptiveSizePolicy 무시 옵션

-  UseAdaptiveSizePolicy란 java에서 new 영역의 사이즈를 동적으로 변경 하는 것으로 사용 하였을 경우 Full GC가 빈번하게 일어날수 있다. 물론 성능면에서는 좋다고 한다 JDK 1.4부터는 기본 값이 사용으로 되어 있음

-XX:-UseAdaptiveSizePolicy


GC 로그 관련

-Xloggc:/data/logs/GCLOG/cd_was_gc.log 

-XX:+PrintGCDetails


OutOfMemory 로그 관련

-XX:+HeapDumpOnOutOfMemoryError 

-XX:HeapDumpPath=/data/logs/DUMP


UI 컴포넌트 사용 관련(메모리 관련은 아니지만 기본 적으로 많이 사용되어 추가)

-Djava.awt.headless=true



참고 자료 : 

http://blog.naver.com/PostView.nhn?blogId=kilokilo77&logNo=50009057579


http://uip80.tistory.com/entry/jeus-out-of-memory-%EB%8C%80%EC%B2%98%EB%B0%A9%EB%B2%95


http://mcpaint.tistory.com/39


http://stackoverflow.com/questions/1634216/what-is-permsize-in-java

Posted by lahuman

Polymorphism

JAVA/in 기초 2014.02.03 00:02

다형성이란 하나로 여러가지 일을 하는 것을 이야기 한다.



상속과 관련된 다형성의 기법들

 - 인터페이스(interface)

 - 오버라이딩(Overriding)

 - 추상 클래스(Abstract Class)

 - 추상 메소드(Abstract Method)

 - 다운캐스팅(Downcasting)

 - 업케스팅(Upcasting)

*예를 들자면, 객체지향을 이야기 한다. 객체(Object)는 모든 형태로 변환(캐스팅)이 가능 하다


  • Abstract Class & Abstract Method

추상 메소드
 - 메소드 몸체가 없는 메서드를 추상 메서드라고 한다.
 - 메소드 선언부에 abstract 키워드를 사용해야 한다.

//일반 메소드
public void sayHello(){}

//추상 메소드
public abstract void sayHi();
추상 클래스
 - 몸체 없는 메서드를 포함한 클래스를 추상 클래스라고 한다.
 - 클래스의 선언부에 abstract키워드를 사용해야 한다.

//추상 클래스
public abstract class CallHello{
//추상 메소드
public abstract void sayHi();
}

추상 클래스 특징
 - 완전한 클래스가 아니기 때문에 추상 클래스를 이용해서 객체를 생성 할 수 없다.
 - 추상 클래스를 완전한 클래스로 만들기 위해서 상속의 기법을 이용해서 모든 추상 메소드를 구현 하면 된다.

abstract 키워드
 - 추상 메소드는 메서드 앞부분에 abstract 키워드를 붙여야 한다.
 - 추상 메서드를 하나라도 포함하고 있다면 클래스 앞부분에 abstract 키워드를 붙여야 한다.

* 추상 메소드를 포함 하지 않은 추상 클래스의 경우 무조건 상속받도록 하기 위해서 사용한다.

  • Interface
인터페이스란 골격만 가지고 있는 클래스를 이야기 한다.
인터페이스 VS 추상 클래스 차이점
 
 - 추상 클래스는 일부분이 추상 메소드이다.
 - 인터페이스는 추상 메소드 만으로 이루어 진다.

 - 추상 클래스는 extends를이용해서 추상 메소드를 구현 한다.
 - 인터페이스는 inplements를 이용해서 추상 메소드를 구현한다.

인터페이스 특징
 - 모든 메소드는 묵시적 public abstract이다.
 - 인터페이스는 객체를 생성 할 수 없다.
 - 인터페이스에서 멤버변수를 선언하면 기본으로 public static final(상수) 형식이 된다.

자바의 다중 상속
 - 단일 상속을 기본으로 한다.
 - 변칙적으로 다중 상속을 지원하기 위해서 인터페이스를 이용한다.
 - 인터페이스는 기능적인 측면에서 순간적으로 구현해서 사용하기 때문에 복잡한 상속구조에 얽매이지 않는다.

* 추후 디자인 패턴에서 알아보자.

  • Upcasting
특정 객체가 하위 클래스의 형에서 상위 클래스의 형으로 캐스팅 되는 것이며 형만 정확하다면 묵시적으로 캐스팅 된다.

기본 데이터 타입의 캐스팅
 - 일반적으로 캐스팅의 기본 원리는 작은 것이 큰 것으로 되는 것이다.
 - 작은 크기의 데이터는 큰 크기의 데이터로 쉽게 들어 갈 수 있다.
//자동 캐스팅
byte b = 12;
int i = b;

//오류 발생
int i = 200;
byte b = i;
//해결을 위해 강제로 캐스팅 한 경우 오버 플로우 발생
byte b = (byte)i;

많이 사용 되는 업캐스팅의 예
 - 상위 클래스로의 업캐스팅
 - 추상 클래스로의 업캐스팅
 - 인터페이스로의 업캐스팅

업캐스팅시 주의 사항
 - 상위 클래스의 형에 존재하는 메소드만을 상위 클래스의 이름으로 호출 할 수 있다.
 - 하위 크래스에만 존재하는 메소드는 상위 클래스의 이름으로 호출 할 수 없다.

인터페이스를 사용하는 목적
 - 자바의 인터페이스는 사용자와의 상호작용을 위해서 사용한다.
 - 사용자에게 인터페이스만 공개했을 때 해당 객체가 다양한 기능을 보유하더라도 인터페이스에 해당하는 기능만을 사용하게 할 수 있다.
 - 인터페이스로 작업을 제한했기 때문에 해당 객체를 잘못 사용할 오류를 막는다.

  • Downcasting
업캐스팅한 것을 다시 원래의 형으로 복원 시켜주는 작업

다운캐스팅의 특징
 - 업캐스팅된 것만 다운 캐스팅 시킬 수 있다.
 - 다운 캐스팅은 강제 캐스팅을 원칙으로 한다.

다운 캐스팅의 형 확인 방법

Top t = new Middle();

//다운 캐스팅
Middel m = (Middle)t;

//instanceof 키워드를 이용한 다운 캐스팅
if(t instanceof Middel){//형확인
 Middel m = (Middle)t; 
}else{
 System.out.println("형이 맞지 않습니다.");
}


* 여기까지 다형성에서 이용되는 기술에 대해 알아 보았습니다.


* 다음은 예제 입니다.


예제 내용 : 고객과 음식의 개념에서 다형성을 이용하여 샘플을 만들 었습니다.

예제 파일 : 


src.zip



'JAVA > in 기초' 카테고리의 다른 글

Formatting 기능  (0) 2014.02.21
예외처리(Exception)  (0) 2014.02.21
컬랙션(Collection)과 맵(Map) 계열  (0) 2014.02.21
Polymorphism  (0) 2014.02.03
Overloading, Constructor, Inheritance, Overriding, this, super  (0) 2014.02.02
Java in Memory  (0) 2014.01.19
Posted by lahuman