잡동산이

 

 

리눅스에서 127.0.0.1로 아이피가 나올땐 NetworkInterface를 이용하면

사용중인 아이피가 루프백인지 알아낼 수 잇는 메소드가 있단다.

 

https://docs.oracle.com/javase/7/docs/api/java/net/NetworkInterface.html

 

 

 

 

'IT Study > Java' 카테고리의 다른 글

자바 인터페이스 요약 정리  (0) 2014.11.25
스트럿츠 프레임워크  (0) 2014.11.25
재귀 호출  (0) 2012.10.02

 

자바의 정석 참고

 

엔지니어..

홍만이 그림을 그려야 하는데 혼자 그리긴 벅차다..
그래서 A사에 맡기려고 한다.
개발자들의 편의를 도와줌..
자바는 다중상속이 안된다..
c++는 다중상속 가능 프로그래머들에게 자유를 주기 위해서 가능하다고 이야기 한다.
아키텍터들은 다중상속이 불필요하다고 이야기 한다.
자바입장에서 다중상속의 효과가 필요하다.

문제의 상황

이름과 주민등록 번호를 저장하는 기능의 클래스가 필요하다.
이 클래스에는 주민등록 번호를 기반으로 사람의 이름을 찾는 기능이 포함되어야 한다.
(어떤 기능의 일부가 필요하다.)

주민등록번호와 이름의 저장 void addPersonalInfo(String perNum, String name)
A 사에게 요구..

주민등록번호를 이용한 검색 String searchName(String Name)
놀수는 없으므로 뭔가를 해야겠다고 생각..

클래스를 하나 정의해야 겠다. 그리고 A사에는 이 클래스를 상속해서 기능을 완성해 달라고 요구하고, 난 이 클래스를 기준으로 프로젝트를 진행해야 겠다.

홍만군의 결과물  ------------------------------------- A사의 결과물
                      PersonalNumberStorage Class(다리 역활)

 

 

 

 


인터페이스의 정의란 매우 중요한것이다.
인터페이스는 상속한다고 하지 않고 구현한다고 한다.
여러개를 상속가능하다..

인터페이스 내에도 변수선언이 가능.. 무조건 public static final로 선언이
되므로 이 둘은 완전히 동일한 의미를 갖는다.

ex )

public class week
{
public static final int MON = 1;
public static final int TUE = 2;
public static final int WED = 3;
public static final int THU = 4;
public static final int FRI = 5;
public static final int SAT = 6;
public static final int SUN = 7;
}
위의 예제를 밑에처럼 줄여주는게 인터페이스의 기능이다.

public interface Week
{
int MON=1, TUE=2, WED=3, THU=4, FRI=5, SAT=6, SUN=7;
}

enum = 열거형 , 어려울 수도 있으므로 Class 부록으로 빼버림... 자바 5.0에서 추가된 것..

자바 interface의 또 다른 가치

Upper가 비어있어도 주소를 참조할 수 있다..

구현한다고 표현만 해둬라.. Marker의 역할.. 이런 경우
인터페이스의 이름은 ~able로 끝나는 것이 보통이다.(표준)
실제로는 인터페이스를 통해서 다중 상속을 하는 것 같이 표현이 되고 있다.

 

'IT Study > Java' 카테고리의 다른 글

자바 리눅스 루프백 아이피를 알아내는 방법  (0) 2014.11.28
스트럿츠 프레임워크  (0) 2014.11.25
재귀 호출  (0) 2012.10.02

 

스트럿츠 용도..


■  우리가 애플리케이션을 개발하기 위해서는 실제 업무 처리를 위한 비즈니스 로직과

       화면을 처리하기 위한 프레젠테이션 로직을 구현해야 한다.


  ■  초창기 웹 애플리케이션은 비즈니스 로직과 프레젠테이션 로직이 뒤섞여 있는 경우가 많았다.


  ■  이런식의 접근 방법은 생산성 측면에서는 효율적이라 볼 수 있지만 프로그램이 조금만 복잡해지면 프로그램의 가독성이

       떨어질 뿐만 아니라, 유지보수나 확장성에 문제가 많을 수 있다.


  ■  또한 뷰 영역은 개발자 보다는 디자이너의 몫이 큰 영역인데도 불구하고 모델 영역에 포함되어야 할 비즈니스 코드가

       뷰 영역에 기술하게 되어 디자이너와 개발자 사이의 잦은 충돌이 발생하기도 한다.


  ■  이러한 단점 때문에 새롭게 등장한 것이 MVC 패턴이다.


  ■  MVC 패턴은 모델, 뷰, 컨트롤의 세 영역으로 나누고 이들의 결합도를 최소하하는 것을 모토로 한다.


  ■  모델에서는 실제 업무를 처리하는 비즈니스 로직에만 집중하고 뷰 영역에서는 화면을 처리하는 부분에만 집중하면

       컨트롤 영역에서 모델과 뷰 간의 흐름을 제어하는 역할을 수행한다.


  ■  MVC 모델의 가장 중요한 장점 중의 하나가 비즈니스 로직과 프레젠테이션 로직의 분리다.

 

 

 



1.2  스트럿츠 프레임워크


■  프레임워크는 동일한 형태의 개발을 위해 이미 만들어진 애플리케이션 모델과 개발에 도움이 되는 API의 집합을 말하는데

     MVC패턴을 지원하는 대표적인 프레임워크로는 스트럿츠와 스프링이 있다.


■  스트럿츠는 MVC의 기본개념을 따르고 있으므로 사용자에게 보여질 페이지인 뷰와 데이터를 처리하는 모델과 이들 상호간의

     흐름을 제어하는 컨트롤을 철저히 분리하는 것이다.



 구성요소

 설명

 모델

 웹 애플리케이션 서버가 처리할 데이터 영역을 의미한다. 주로 데이터베이스와 연동하여 얻어온 데이터를 저장하는 용도로 주로 사용된다.

 뷰

 사용자와의 인터페이스로 주로 JSP 페이자가 사용된다.

 컨트롤

 즉, 모델과 뷰 사이의 흐름을 제어하는 역할을 한다. 클라이언트의 요청을 받아 이를 수행하기 위한 모델 영역의 어떤 비즈니스로직을 수행할지를 결정하고 이를 처리한 후에 결과를 보여주기 위한 뷰를 선택한다.


'IT Study > Java' 카테고리의 다른 글

자바 리눅스 루프백 아이피를 알아내는 방법  (0) 2014.11.28
자바 인터페이스 요약 정리  (0) 2014.11.25
재귀 호출  (0) 2012.10.02

재귀 호출

IT Study/Java2012. 10. 2. 13:52

재귀 메소드의 활용.

1. 재귀적 사고는 복잡한 문제를 간결하게 해결하는 열쇠가 된다.

2. 수백 줄 이상의 코드가 요구되는 문제를 불과 수십 줄의 코드로 해결할 수 있다.

 

재귀 메소드를 활용하기 위한 주의사항.

1. 재귀의 연결 고리를 끊기 위한 조건 검사의 위치가 적절해야 한다.

2. 재귀의 연결 고리를 끊기 위한 조건 검사가 true가 되도록 적절한 연산이 이뤄져야 한다.

 

--  재귀 메소드 정의 --

 

public class Reculfactorial {

 public static void main(String[] args) {

  System.out.println("3 factorial : " + factorial(3));
  System.out.println("12 factorial : " + factorial(12));
  
 }

 public static int factorial(int n)
 {
  if(n==1)
 return 1;
  else
   return n*factorial(n-1);
 }
 
}

 

수학적 방식의 팩토리얼

5! = 5*4*3*2*1            ==        5! = 5 * 4!

4! = 4*3*2*1               ==        4! = 4 * 3!

3! = 3*2*1                  ==       3! = 3 * 2!

2! = 2*1                     ==        2! = 2 * 1!

1! = 1                        = =       1! = 1

 

 

-- 잘못된 재귀 메소드의 정의의 예 --

 

public class InfRecul {

 
 public static void main(String[] args) {

 showHi(3);
 }

 public static void showHi(int cnt)
 {
  
  System.out.println("Hi~ ");
  showHi(cnt--); //후감소이고 출력후 계속 3으로 초기화 되므로 에러;
  if(cnt==1)
   return;
  
    
 }
}

 

 

 

'IT Study > Java' 카테고리의 다른 글

자바 리눅스 루프백 아이피를 알아내는 방법  (0) 2014.11.28
자바 인터페이스 요약 정리  (0) 2014.11.25
스트럿츠 프레임워크  (0) 2014.11.25