17. Spring Framework (스프링 프레임워크)
- 자바 (JAVA) 플랫폼을 위한 오픈소스 (Open Source) 애플리케이션 프레임워크 (Framework)
- 자바 엔터프라이즈 개발을 편하게 해주는 오픈 소스 경량급 애플리케이션 프레임워크
- 자바 개발을 위한 프레임워크로 종속 객체를 생성해주고, 조립해 주는 도구
- Java SE(Standar Edition)로 개발된 자바 객체(POJO, Plain Old Java Object)를 Java EE (Enterprise Edition)에 의존적이지
않게 연결해주는 역할을 담당한다.
스프링의 특징 (간단히)
- 크기와 부하의 측면에서 경량화하였다.
- 의존관계 주입 (DI)와 제어 역행(IoC) 기술을 통해 애플리케이션의 느슨한 결합을 도모
- 관점지향 프로그래밍 (AOP)를 위한 풍부한 지원 (AOP = 주된 업무는 아니지만 반드시 해야하는 작업, EX - 목적지에 도착하려면 버스카드를 찍어야됨)
- 애플리케이션 객체의 생명주기와 설정을 포함하고 관리한다는 점에서 일종의 컨테이너 (Container)이라고 할 수 있음
- 간단한 컴포넌트로 복잡한 애플리케이션을 구성하고 설정할 수 있음
스프링의 특징 (자세히)
a. 경량 컨테이너로서 자바 객체를 직접 관리
각각의 객체 생성, 소멸과 같은 라이프 사이클을 관리하며 스프링으로부터 필요한 객체를 얻어올 수 있다.
b. POJO(Plain Old Java Object) 방식의 프레임워크
기존의 J2EE 프레임워크에 비해 구현을 위해 특정한 인터페이스를 구현하거나 상속을 받을 필요가 없어 기존에 존재하는
라이브러리 등을 지원하기에 용이하고 객체가 가볍다.
c. 제어의 역행 (IoC : Inversion of Control)을 지원
컨트롤의 제어권이 사용자가 아니라 프레임워크에 있어서 필요에 따라 스프링에서 사용자의 코드를 호출한다.
d. 의존성 주입 (DI : Dependency Injection)을 지원
각각의 계층이나 서비스들 간에 의존성이 존재할 경우 프레임워크가 서로 연결시켜준다.
e. 관점 지향 프로그래밍 (AOP : Aspect - Oriented Programming) 을 지원
18. Thread
Thread (쓰레드) - 프로세스 내에서 동시에 실행되는 독립적인 실행 단위를 말함, 장점으로는 자원을 많이 사용하지 않고 구현이 쉬우며 범용성이 높다.
Process (프로세스) - 운영체제에서 실행중인 하나의 프로그램 (하나 이상의 쓰레드를 포함한다.)
Thread의 장점
- 빠른 프로세스 생성
- 적은 메모리 사용
- 쉬운 정보 공유
Thread의 단점
- 교착상태에 빠질 수 있다.
교착상태란?
다중프로그래밍 체제에서 하나 또는 그 이상의 프로세스가 수행할 수 없는 어떤 특정 시간을 기다리고 있는 상태 (lock가 걸린 상태)
Thread와 Process의 차이
Process는 여러 분야에서 '과정' 또는 '처리' 라는 뜻으로 사용되는 용어로 컴퓨터 분야에서는 '실행중인 프로그램' 이라는 뜻으로 쓰인다.
이 프로세스 내에서 실행되는 각각의 세부 작업 단위를 스레드라고 한다.
프로세스 내에서 실행되는 세부 작업 단위로 여러 개의 스레드가 하나의 프로세스를 이루게 되는 것이다.
|
19. 접근제한자 (public > protected > default > private)
public - 접근 제한이 없다. (같은 프로젝트 내에 어디서든 사용 가능)
protected - 같은 패키지 + 다른 패키지의 경우 자손클래스에서 접근 가능
default - 같은 패키지 내에서만 접근 가능
private - 클래스 내부에서만 사용 가능 (외부 클래스에서 접근 불가능)
|
20. 소켓 통신 (TCP / UDP)
TCP (Transmission Control Protocol)
- 연결형 서비스 제공
- 데이터의 수신 여부를 확인 (오류시 재전송 요청)
- 높은 신뢰성 보장
UDP (User Datagram Protocol)
- 비연결형 서비스 제공
- 신뢰성이 낮음
- 데이터의 전송 순서가 바뀔 수 있음
- TCP보다 전송속도가 빠름
- 동영상 및 음성 등의 멀티미디어 통신에 주로 사용됨
21. Stack, Queue
STACK
- LIFO (Last In First Out) 의 후입선출 구조
- push ()를 이용한 데이터 입력, pop ()을 이용한 데이터 출력
- 예) 시스템 스택 : 함수의 호출과 복귀 순서는 스택의 구조를 응용하여 관리, 역순 문자열 만들기, 수식의 괄호 검사 등
QUEUE
- FIFO (First In First Out) 의 선입선출 구조
- enQueue()를 이용한 데이터 입력, deQueue()를 이용한 데이터 출력
- 예) 우선순위가 필요한 작업 예약 (인쇄 대기열)
* Linear Queue (선형 큐)는 메모리 재사용이 불가능. 이러한 문제점을 보완하여 Circular Queue (원형 큐) 가 나옴.
22. Singleton Design Pattern (싱글톤 디자인 패턴, 싱글톤 패턴)
- 클래스 인스턴스가 하나만 만들어지도록 하고, 그 인스턴스에 대한 전역 접근을 제공한다.
- 애플리케이션 전체에서 단 하나의 인스턴스만을 생성하도록 제한함
- 생성자를 private으로 설정하여 외부에서 직접 인스턴스를 만들 수 없게 함
- 전역적으로 1개의 인스턴스에 접근 가능한 method 제공
- 싱글톤 패턴이 적용되는 경우
ㄴ 자주 사용되고 여러 개를 만들 필요가 없는 인스턴스
ex ) 도서관리대장 - 100권의 도서가 있어도 관리대장은 1권만 필요
사무용 프런터 - 여러명의 직원이 근무하지만 프린터는 공유함
23. Database에서의 Index란?
- 테이블의 레코드를 빠르게 찾기 위한 자료 구조
- 테이블 내의 1개의 컬럼 혹은 여러 개의 컬럼을 이용하여 생성될 수 있다.
- 인덱스를 저장하는데 필요한 디스크 공간은 보통 테이블을 저장하는 데 필요한 디스크 공간보다 작다.
DB에서 자료를 검색하는 두 가지 방법
- FTS (Full Table Scan) : 테이블을 처음부터 끝까지 검색하는 방법.
- Index Scan : 인덱스를 사용하여 테이블의 해당 자료를 찾는 방법.
24. 다형성이란 무엇인가?
여러가지 데이터를 다룰 수 있는 특성
부모 클래스의 인스턴스를 이용하여 자식 타입의 클래스를 다룬다거나, 오버라이딩을 통하여 동일 이름의 method를 이용하여
다양한 자식 클래스의 method를 호출하는 것
25. 멀티 쓰레드의 장단점은 무엇인가?
두 가지 이상의 작업을 동시에 실행할 수 있어 자원을 효율적으로 이용할 수 있으나 dead lock 및 동기화에 대한 철저한 검증이 필요하다.
26. Java collections의 대표 인터페이스는 무엇인가?
List - 순서가 있는 데이터의 집합으로 데이터의 중복을 허용한다. 인덱스로 조회
구현클래스 - ArrayList, LinkedLink, Stack, Vector
Set - 순서를 유지하지 않는 데이터의 집합으로 데이터의 중복을 허용하지 않는다.
구현클래스 - HashSet, TreeSet
Map - 키와 값의 쌍으로 이루어진 데이터의 집합으로 순서는 유지되지 않으며, 키는 중복을 허용하지 않고, 값은 중복을 허용한다.
구현클래스 - HashMap, TreeMap, HashTable, Properties
출처
https://www.youtube.com/watch?v=pJDmOfNnwqo&list=PLY9pe3iUjRrS38DxC5Fq5st9_hQhvyy3H&index=8