DevBoi

잡다하지만 필요한 개발지식 13 본문

[Computer Science]

잡다하지만 필요한 개발지식 13

HiSmith 2021. 8. 11. 21:15
반응형

Spring framework에 대해설명

 

1. oop란?

데이터를 객체로 취급하여, 프로그램에 반영한다.

순차적으로 프로그램이 동작하는 것과 다르게 객체의 상호작용을 통해, 프로그램이 동작한다.

객체를 사용함으로써 코드 재사용을 증가시키고, 유지보수를 감소시켜준다.

 

 

2. 자바의 메모리 영역에 대해서 설명

- 메서드 영역 : static변수, 전역 변수, 코드에서 사용되는 클래스 정보들이 올라간다.

코드에서 사용되는 클래스들을 로더가 읽고, 클래스 별로 분류해서 저장한다.

처음에 로드 될때, 필요한 것들이 메모리에 저장된다. 이때 클래스 정보가 없거나, 전역 변수에대한 오류가있으면 기동시에, 오류가 난다.

-스택 : 지역변수, 메서드 등이 할당되는 LIFO 방식의 메모리이다.

-힙 : new 연산자를 통해 동적 할당된 객체들이 저장되고, 메모리는 가비지 컬렉션에 의해 관리된다.

 

3. 인터페이스 사용이유

3-1. 협업

인터페이스는 모든 메서드가 추상메서드로 이루어져 있다.

인터페이스는 팀작업을 할때, 인터페이스를 먼저 만들어놓고, 개발을 진행하면, 다른 팀의 작업이 끝나기 전까지 기다릴 필요가 없다.

예를 들면, interface를 만들어놓고 개발을 한다. 그리고 같은 목적의 다른 기능을 하는 두개의 class를 개발한다고 치자.

 

이는 둘다. act라는 interface를 구현하는 구현체라고하면,

이걸 사용하는 다른 부분에서는 interface에 정의된 메소드로 그냥 호출하면 끝이고 해당 구현체는

impl를 받아서 구현하는 구현체에서 담당하면된다.

 

3-2. 교체 용이

단순히 impl에서 사용하기 때문에, 사용하는 곳에서, 만약에 변경이 필요하다고 하면, 구현체의 이름만 바꾸면

해당을 간단하게 변경할수있다.

 

3-3. 다중 상속

부모클래스로 하게되면, 한가지의 부모밖에 가질수 없지만, interface로하게되면, 다중으로 상속이 가능하다.

즉, 유연성과 확장성의 측면에서 매우 뛰어나다.
 

 

4. 메모리 상수풀 영역

-힙 영역에서 생성되고 자바 프로세스 종료까지 계속 유지되는 메모리 영역이다.

기본적으로 JVM에서 관리를 하고있고, 프로그래머가 작성한 상수에 대해 최우선적으로 찾아보고, 있으면

상수풀에 추가한 후 주소값을 리턴해준다.

 

 

 

5.직렬화란 ?

자바에서 입출력에서 사용되는 것은 스트림이라는 데이터 통로를 통해 이동한다.

객체는 바이트형이 아니기 때문에, 객체를 스트림으로 입출력 하기위해, 바이트 배열로 변환하는 것을 직렬화라고한다.

 

 

6.serialVersionUID 는 무엇일까

 

JVM은 직렬화나 역직렬화를 하는 시점의 클래스에 대해 version 번호를 부여한다.

이시점에서 클래스의 정의가 바뀌게 되면 version 번호도 새롭게 할당해주는데,

직렬화, 역직렬화에 대한 version 번호가 서로다르면, 안되기 떄문에, serialVersionUID를 선언해서,

클래스 버전이 맞는지 확인하기 위한 용도로 사용된다.

반응형