프로젝트
- 최근 프로젝트의 개요 ( 개괄적 요약)
과수농가와 연계하여 못난이 과일을 활용한 상품 판매 플랫폼을 운영하는 웹 사
이트를 만들었습니다.
- 개발환경 ( 나열한 용어에 대해 설명가능해야 합니다 )
JAVA
Java는 객체 지향 언어로 개발된 프로그래밍 언어
JDK11
자바 플랫폼 중 가장 널리 사용되는 소프트웨어 개발 키트
개발자가 만든코드를 - 컴파일 - 기계어 - JVM 해석 - 눈으로 볼수있게 해석
Apache-Tomcat 9.0 (WAS)
아파치는 아파치 소프트웨어 재단에서 개발한 서블릿 컨테이너
(또는 웹 컨테이너)만 있는 웹 애플리케이션 서버이다.
톰캣은 웹 서버와 연동하여 실행할 수 있는 자바 환경을 제공한다.
즉, Servlet과 JSP를 실행할 수 있는 환경을 제공한다.
Oracle 11 xe
현재 유닉스 환경에서 가장 널리 사용되는 RDBMS
Eclipse
- Java를 기반으로 한 통합 개발 환경이다.
- 운영체제에 제한 없이 Windows, macOS, 리눅스 중 어디서든
자유롭게 이용 및 수정, 재배포가 가능하다.
AWS
- 다른 웹 사이트나 클라이언트 측 응용 프로그램에 대해
온라인 서비스를 제공하고 있다.
EC2 : AWS에서 제공하는 (클라우드 컴퓨팅 서비스) 다 -
EC2의 마우스 클릭으로 자바를 설치 할 수 있다.
Git
- 컴퓨터 파일의 변경사항을 추적하고 여러 명의 사용자들 간에 해당
파일들의 작업을 조율하기 위한 스냅샷 스트림 기반의 분산 버전
관리 시스템이다.
- 적용기술 ( 나열한 모든 용어에 대해 설명가능해야 합니다 )
IOC/DI
- Inversion of Control 의 줄임말로 제어의 역전 이라는 말이다
메서드나 객체의 호출작업을 개발자가 결정하는 것이 아니라 외부에서 결정되는
것을 의미한다 장점 : 유지보수
조립된 코드의 최종 호출은 개발자에 의해서 제어되는 것이 아니라 , 프레임워크
의 내부에서 결정된 대로 이뤄지게 되는데, 이러한 현상을 “제어의 역전” 이라고
표현한다.
- DI (외부에서 가져옴)
- DI는 의존성 주입으로 소프트웨어 디자인 패턴이다.
- 필요로 하는 의존성을 주입을 통해 확보한다.
- 즉 IOC를 DI 기법을 통해 실현한다.
DL
필요한 객체를 검색
AOP
- 관점 지향 프로그래밍이다.
- 시스템을 핵심 관심사(Core Concern)와 횡단 관심사(Cross
Cutting Concern)으로 구분해 설계 구현 운영하는 것을 말한다
프록시디자인패턴(대리해서 작동 -> 공통영역이 대리인 역할을 한다 )
-> 공통 영역을 실행할수있게 한다.
MVC
Spring
-Spring Frame Work 로써 개발 틀을 제공하여 효율적으로 개발할수있도록 도와
줍니다.
Spring Boot :
- Spring으로 애플리케이션을 만들 때 필요한 설정을 간편하게
처리해주는 Spring의 하위 프로젝트이다.
- WAS를 내장하고 있다.
- 설정에 쏟아야 했을 시간과 노력을 절약하여 비즈니스 로직을
구현하는데 집중하게 한다.
Spring Security :
- 보안 기능을 위한 Spring의 하위 프로젝트이다.
- FilterChainProxy가 내부적으로 동작하여 인증, 인가 및 기타 보안
작업을 수행한다.
REST
- 분산 환경에서 어플리케이션 사이의 통신을 위한 아키텍쳐이다.
(즉, 분산 환경의 서버들끼리 통신을 위한 설계방식이다.)
- 자원의 고유한 식별자(URI)를 부여하고 Http Method로 제어한다.
- Request Method (get, post, put, delete )
MyBatis
- Java Persistence Framework의 하나로 XML 서술자 또는
어노테이션을 사용하여 저장 프로시저나 SQL 문으로 객체들을
연결시킨다
JUnit
- 자바 프로그래밍 언어용 유닛 테스트 프레임워크이다.
- 테스트 주도 개발 면에서 중요하며 유닛 테스트 프레임워크 계열의
하나이다.
-자바를 단위테스트를 하기위함
Ajax/JSON
- 비동기 JavaScript 통신으로 필요한 데이터만을 웹 서버에 요청하
여 페이지 로딩 없이 데이터만 응답받은 후 클라이언트에서 데이터
에 대한 처리를 할 수 있다
JSON
- 자바스크립트 객체 표기법으로 Ajax 통신 시 구조화된 데이터를
통신하는 용도로 사용된다.
- JSON은 자바스크립트 스크립트 언어의 서브셋에 기반을 두었다.
- 경량성과 높은 생산성이 장점이다.
jQuery
- HTML의 클라이언트측의 조작을 단순화하도록 설계된 크로스
플랫폼의 자바스크립트 라이브러리다
JavaScript
- Web Document의 행위 및 동작을 담당한다.
- 객체 기반의 스크립트 프로그래밍 언어이다.
- 웹 브라우저 내에서 주로 사용되며, 다른 응용 프로그램의 내장
객체에도 접근할 수 있는 기능을 가진다
부트스트랩
- 웹사이트를 쉽게 만들어주는 html css 로 만들어주는 프레임워크
HTML
- 웹 페이지 표시를 위해 개발된 지배적인 마크업 언어다.
CSS
- HTML이 몸체를 담당한다면 CSS는 액세서리처럼 꾸미는 역할이다.
- 즉, HTML 구조는 그대로 두고 CSS 파일만 변경하여 전혀 다른
스타일의 웹사이트 처럼 꾸밀 수 있다.
- Web Document의 디자인 스타일을 담당한다
- 자기가 맡은 팀내 역할 및 구현한 서비스
문의사항 게시판 , 장바구니 , 페이지 네이션 을 구현했습니다.
- 이슈가 무엇이었고 어떻게 해결했나
문의사항 등록 완료 시 상품 상세 보기 화면으로 돌아가야 하는데 경로를 찾지
못하는 상황이 발생 하였다.
- 프로젝트 과정에서 어떤 것을 배웠나
팀원 덕분에 저혼자 해결하지 못한 이슈사항들을 같이 협업하여 핼결할수있다는
점을 느꼈습니다. 프로젝트에서 협업이 중요하다는 것을 깨달았습니다.
Java SE
- JDK / JRE / JVM
JDK : 자바 개발 키트는 자바 애플리케이션 구축하기 위한 핵심 플랫폼 구성요소
이 중심에는 자바 컴파일러가 있다
JRE : 자바 실행 환경 JVM이 자바프로그램을 실행시킬 때 반드시 필요한 라이브
러리 및 기타 필수 파일을 가지고 있다. 프로그램 개발이 아닌 단순히 자바 프로
그램을 실행하려면 JRE만 다운받아 설치한다
JVM : 자바 소스코드(.java)로부터 만들어지는 자바 바이너리 파일(.class)를 실
행 할 수 있다. JVM은 플랫폼에 의존적 , 리눅스의 JVM 과 윈도우즈의 JVM 은
다르다
- 객체지향
필요한 데이터를 추상화 시켜 상태와 행위를 가진 객체로 만들고 , 객체들간의 상
호작용을 통해 로직을 구성하는 프로그래밍 방법
- 응집도 결합도
모듈의 독립성을 판단하는 두가지 지표 이다.
결합도는 모듈과 모듈간의 상호 의존 정도
응집도는 모듈 내부의 기능적인 집중 정도
결합도는 낮을수록 , 응집도는 높을수록 이상적인 모듈화이다
- 객체,클래스,변수,메서드,생성자
객체 : 설계도에 맞게 지어진 일종의 집
클래스 : 객체를 만들기 위한 기본적인 틀이고 ,
객체는 실제로 이 틀을 이용해 만들어낸 결과물을 말한다.
기본클래스 안에는 2가지 구성요소 필드 , 메서드 이 구성요소를 멤버라고 부른
다
필드 : 해당 클래스 내의 정의된 변수를 의미
멤버변수 또는 인스턴스 변수 라고도 한다
이 변수는 객체의 특성을 나타낸다
메서드 : 멤버 함수 객체가 행해야 하는 작업을 기술해 놓은 문서
클래스는 설계도 라면 객체는 설계도에 맞게 지어진 일종의 집
설계도가 실제하지 않는데 반해 , 객체는 그걸 실채화 시킨 것
생성자 : 인스턴스가 생성될 때 같이 생성되어 인스턴스 변수들을 초기화 하거나
인스턴스 생성시 실행할 작업등을 위해 사용된다
형태
생성자의 이름은 클래스의 이름과 같아야 한다
생성자는 리턴값이 없어야 한다.
생성자는 아무런 매개변수도 받지 않는 기본생성자와
매개변수를 받아서 위에서 설명한 것처럼 인스턴스 초기화 작업을 할 수 있는 생
성자 둘로 나뉜다.
- 인스턴스변수, 지역변수 , 클래스변수(static 변수)
변수의 선언 위치에 따라 나뉜다
멤버변수를 제외한 나머지 변수들은 모두 지역변수 이며
멤버변수 중 static 이 붙은 것은 클래스 변수
붙지 않은 것은 인스턴스 변수
인스턴스변수 : 클래스 영역에 선언 , 생성할 때 만들어짐
인스턴스는 독립적인 저장공간을 가져 서로 다른 값을 가질 수 없음
클래스 변수 : 인스턴스 변수 앞에 static
모든 인스턴스가 공통된 저장공간을 공유하게 됨
인스턴스 변수와 달리 인스턴스를 생성하지 않고도 사용 가능
지역변수 : 메서드 내에 선언 되며 해당 메서드 내에서만 사용 가능
메서드가 종료되면 소멸되어 사용 불가
- 메모리 구조 : stack , heap , meta space
heap 영역(인스턴스변수) : 사용자가 직접 관리 할 수 있는 그리고 해야만 하는
영역 사용자에 의해 메모리 공간이 동적으로 할당되고 해제
힙 영역은 메모리의 낮은 주소에서 높은 주소의 방향으로 할당됨
인스턴스변수
stack 영역(지역변수) : 함수의 호출과 관계되는 지역 변수 와 매개변수가 저장되
는 영역이다
스택 영역은 호출과 함께 할당 되며 , 함수의 호출이 완료되면 소멸
스택 영역에 저장되는 함수의 호출 정보를 스택 프레임(stack frame)
스택영역은 push 동작으로 데이터를 저장 , pop 동작으로 데이터를 인출
후입선출(LIFO) 가장 늦게 저장된 데이터가 가장 먼저 인출
스택 영역은 메모리의 높은 주소에서 낮은 주소의 방향으로 할당
meta space(static) : Java 의 ClassLoader가 로드한 class 들의 metaspace 가
저장되는 공간이다 static class - 공유
- Garbage Collection
개발하다보면 유효하지 않은 메모리인 가비지(Garbage)가 발생
JVM의 가바지 컬렉터가 불필요한 메모리를 알아서 정리해주기 때문이다.
Java에서 명시적으로 불필요한 데이터를 표현하기 위해서 일반적으로 null을 선언
해 준다
- primitive data type과 reference data type
primitive data type(기본형데이터 타입) - int double stack영역
하나의 고정된 저장공간을 원시 자료형
배열과 객체처럼 유동적으로 늘어 날 수 있는 동적인 저장공간을 참조 자료형
참조자료형(new를써서 생성자를 생성)은 하나의 저장공간이 아닌 하나의 큰 공
간인 heap 이라는 곳에 값을
저장하고 , 저장소에 주소만을 적어 , heap에서 값을 꺼내와 사용한다는 개념으로
이해 동적인 저장공간을 참조 자료형
- 접근 제어자 종류와 특징
접근 제한자 : 접근을 제한하기 위해 사용 . 접근이란 클래스 및 인터페이스 그리
고 이들이 가지고 있는 멤버의 접근을 말한다
어떤 경우 클래스와 인터페이스를 다른 패키지에서 사용하지 못하도록 막을 필요
가 있다 . 객체 생성을 막기 위하거나 생성자를 호출하지 못하게 하거나 필드나
메서드를 사용하지 못하도록 막아야 되는 경우 이때 접근제한자 사용
접근제한자 public , protected , private 와 같이 세 가지 종류가 있다
public : 외부 클래스가 자유롭게 사용할 수 있도록 한다
protected : 같은 패키지 또는 자식 클래스에서 사용할 수 있도록 한다
private : 개인적인 것 이라 외부에서 사용될 수 없도록 한다
객체지향 4가지 특성
캡슐화 , 상속 , 다형성 , 추상화
- Encapsulation
캡슐화란?
데이터와 데이터를 처리하는 함수를 하나의 단위로 묶은 것이다
객체의 정보를 보호하고 정보를 은닉한다
각 객체끼리의 응집도는 높아지고 , 결합도는 낮아진다
결합도가 낮아지니 생산성이 높아진다
캡슐화 된 클래스의 변수들은 접근제어자(Access Modifier)를 통해 접근을 제어
private를 사용하여 클래스 내부의 변수를 선언
setter,getter 메서드를 통해 변수의 값들을 조회하거나 수정할 수 있다
- Inheritance(상속)
상속은 기존의 클래스에서 재사용해 새로운 클래스를 만드는 것이 상속 이며
적은 양의 코드로 새로운 클래스를 만들 수 있으며 코드를 한번에 관리 상속을
해주는 클래스는 상위클래스(super class) 상속을 받는 클래스를 하위클래
스(sub class) 상위 클래스는 보통 부모 클래스(Parent class) 하위 클래스는 자
식 클래스(Child class) 라고 부른다
- Polymorphism(다형성)
하나의 객체에 여러 가지 타입을 대입할 수 있다는 것을 의미한다
다형성을 부모 클래스의 타입의 참조 변수로 클래스 타입의 인스터스를 참조할
수 있도록 하여 구현하고 있다
다형성은 상속 , 추상화와 더불어 객체 지향 프로그램을 구성하는 중요한 특징 중
하나
- Abstract 추상화 - 인터페이스 사용함
실세계의 복잡한 상황을 간결하고 명확하게 핵심 위주로 단순화시킴
- Object casting
객체 형 변환 : 객체간 자료형을 변환하는 것
인터페이스 , 배열 , 클래스에 적용
상속 관계 때문에 만들어진 기능
- 오버로딩과 오버라이딩
오버로딩 : 메서드의 이름이 같고 매개변수의 개수나 타입이 다른 함수를 정의 하
는 것을 의미한다
리턴값만을 다르게 갖는 오버로딩은 작성 할 수 없다.
오버라이딩 : 상위클래스의 메서드를 하위 클래스가 재정의 하는 것이다.
메서드의 이름은 물론 파라메터의 개수 나 타입도 동일해야 하며 , 주로 상위 클
래스의 동작을 상속받은 하위 클래스에서 변경하기 위해 사용된다
즉
오버로딩은 기존에 없던 새로운 메서드를 정의하는 것이고 ,
오버라이딩은 상속받은 메서드의 내용만 변경 하는 것이다.
즉 , 라이딩 : 재정의 / 로딩 : 확장
- java.lang.Object
Object 클래스는 모든 자바 클래스의 최고 조상 클래스가 된다
모든 클래스는 Object 클래스의 모든 메서드를 바로 사용 가능
- static
정적인 멤버 , 클래스의 멤버를 정의할 때 사용
별도의 객체 생성없이 클래스로 접근해 사용한다
static은 주로 (공유)할 정보에 명시한다
static <-> dynamic ( 동적 객체 생성 )
클래스 로딩 시점에 메모리 (meta space)에 적재 한다
메모리에 한번 할당되어 프로그램이 종료될 때 해제되는 것을 의미
일반적으로 만든 Class 는 Static 영역에 생성되고 , new 연산을 통해 생성한 객
체는 Heap 영역에 생성
객체의 생성시에 할당된 Heap 영역의 메모리는 Garbage Collector를 통해 수시로
관리를 받는다
Static 키워드를 통해 Static 영역에 할당된 메모리는 모든 객체가 공유하는 메모
리 라는 장점을 지니지만,
Garbage Collector 의 관리 영역 밖에 존재 하므로 Static을 자주 사용하면 프로
그램의 종료시까지 메모리가 할당된 채로 존재하므로 자주 사용하게 되면 시스템
의 퍼포먼스에 악영향을 주게됨
객체를 생성하지 않고도 Static 자원에 접근이 가능
- abstract
상속을 강제하는 일종의 규제라고 생각하자
abstract 클래스나 메서드를 사용하기 위해서는 반드시 상속해서 사용하도록 강제
하는 것이 abstract
추상메서드란 메서드의 시그니처만 정의된 비어있는 메서드를 의미한다
- interface ( 다양한 형태의 )
다양한 계층 구조 형성을 통한 다형성 적용
인터페이스를 이용하면 다양한 계층 구조 형성을 통해 다형성을 극대화 한다
다형성을 극대화 (자바는 단일 상속이고 다중상속의 장점을 인터페이스로 채택)
상속과의 차이점
인터페이스는 상속의 장점 중 멤버를 하위에게 물러주지 않음
다양한 계층 구조 형성에 초점을 맞춘다
인터페이스는 객체화 될 수 없다 (abstract class 와 공통적인 면)
클래스들이 구현해야하는 동작을 지정하는 용도로 사용되는 추상 자료형이다.
클래스에서 인터페이스를 구현하기 위해서는 implements 키워드를 사용하여 구현
하며 하나의 클래스는 여러개의 인터페이스를 상속받아 구현할 수 있다.
여러명이서 작업을 할 때 미리 인터페이스를 작성함으로써 메서드를 정할 수 있
다. 상속을 통한 이점을 누릴 수 있다.
- Exception 처리란?
Exception 은 프로그램중에 발생할 수 있는 가벼운 에러 상태
예외 처리는 예외가 발생한 상황에서 프로그램을 종료하지 않고 가능한 한 예외
를 핸들링 하여 프로그램 흐름을 복구하고 초기에 의도하던 방향으로 프로그램을
수행 할 수 있게 하는 것을 의미한다
- try catch finally throws throw
throw : 메서드 내에서 상위 블록으로 예외를 던지는 것
예외 처리 흐름 or 대처 방안 or 핸들러 로직
실행하고 프로그램을 정상 실행하는 것을 말한다
try : Exception 발생 예상 영역을 지정
catch : Exception Handling , 예외처리 Exception 발생 시 대처 방안 실행 후 정상 수행 이 목적이다
finally : Exception 발생 여부와 처리 여부와 관계 없이 항상 실행
throws : Exception을 호출한 측으로 던질수있다는 의미 ( 메서드 선언시 명시 )
throw : Exception을 고의로 발생
- String,StringBuilder,StringBuffer
String 객체는 한번 생성되면 할당된 메모리 공간이 변하지 않는다
String 객체에 연결된 문자열을 저장하고 그 객체를 참조 하도록 함
StringBuffer 와 StringBuilder
StringBuffer는 각 메서드별로 Synchronized KeyWord 가 존재하여 멀티스레드
환경에서도 동기화를 지원한다.
StringBuilder 는 동기화를 보장하지 않는다
멀티스레드 환경이라면 값의 동기화 보장을 위해 StringBuffer를 사용
단일 스레드 환경이면 StringBuilder를 사용
String
불변 이며 , 변경 시 새로 생성 , 문자열 영역에 공유 , 동일한 문자열이 자주 쓰
일 때 적합하다 , (문자열 연산이 적고)
StringBuffer
가변 , 변경 시 자체가 변경 , 문자열 자체가 자주 변경될 때 적합 , 멀티 스레드
환경에 적합 , thread safe : 멀티 스레드 환경에 적합 하다
StringBuilder
가변 , 변경 시 자체가 변경 , 문자열 자체가 자주 변경될 때 적합 , 단일 스레드
환경에 적합 ,
- 객체 직렬화 ( java.io.Serializable )
java의 객체를 외부로 저장/복원 하거나 네트워크 상으로 전송할 수 있도록 바이
트 형태로 변환하는 기술을 의미한다.
- Collection의 종류와 특징 (Set, List , Map , Stack , Queue)
Collection 모든 컬렉션 클래스와 인터페이스를 포함하는 Collection Framework
라는 개념이 JDK1.2에서 정의됨
Set : 중복을 인정하지 않는다
List : index로 요소를 관리
Map : key 와 value 쌍으로 저장 요소에 대한 검색 작업이 용이하며 중복된 key
값을 넣으면 업데이트 된다.
Stack : last-in-first-out(LIFO) 마지막에 추가된 요소가 먼저 나온다
Queue : first-in-first-out(FIFO) 먼저 추가된 요소가 먼저 나온다
k - set , v - collection 되어 있다
put (K key,V value)
remove(K key)
keySet()-> 키값을 반환함
values() -> 키값으로 value값을 반환
- HashSet, TreeMap, LinkedHashMap 특징
HashSet : Set 인터페이스에서 지원하는 구현 클래스입니다. 순서대로 입력되지 않고, 일
정하게 유지되지 않는게 특징
TreeMap : key value 로 저장 하며 제어 정렬 기능이 있다
LinkedHashMap : key value 로 저장 , 제어 입력 순서를 보장한다.
- ArrayList, LinkedList 특징
ArrayList : index로 관리하면서 검색에 용이하다
LinkedList : index로 관리하면서 삽입 삭제가 용이하다
- Generic 이란
<Generic> 미리 타입을 지정
요소 타입의 안정성을 보장하고 객체 캐스팅 절차를 감소 한다
- Thread
Thread : 현재 실행중인 상태에 있는 프로그램 , process 내부의 세부적 실행 단
위이다.
여러개의 실들이 모여서 옷감을 만들어 대듯이 동영상 플레이어 프로세스는 여러
개의 스레드가 동시에 실행되면서 서비스한다
쓰레드의 구현과 실행
1. Thread 클래스를 상속하여 run()을 오버라이딩 , 단일
2. Runnable 인터페이스를 구현 , 추상메서드 run()을 구현 -> run에서 작업 내
용을 적는다 ,
start 실행가능상태 run 작동 끝나면 자동종료
- 데몬스레드
중간에 스레드를 넣어서 시간검증하는데 쓰임
먼저 스레드 하나 만들어서 실행시켰는데 데몬스레드는 거기 하나 안으로 별도로
먼저 생성한 스레드가 종료되면 데몬스레드가 종료됨
- Multi-Threading
하나의 프로세스를 다수의 스레드로 만들어서 실행하는 것
여러개가 실행중인 프로그램(이들이 동시에 실행되는 것)
프로그램이 실행했을 때 영상 , 음향 , 자막이 동시에 동작해야함
- synchronized
동기화 처리를 위한 자바 키워드
* 특정 영역을 단일 스레드 환경으로 만드는 것
synchronized 동기화 처리란 특정 스레드가 작업 중에는 다른 스레드들이 작업에
참여할 수 없게 하는 것이다 ( 단일 스레드 환경 )
여러 손님들이 카페 하나 화장실을 이용할 때 그 시점에서는
멀티스레드 시 synchronized 동기화 처리를 하면
공유정보에 대한 안전성과 신뢰성을 높인다 ( thread-safe )
- Thread Pool
작업처리에 사용되는 스레드를 제한된 개수만큼 정해 놓고 작업 큐(Queue)에 들
어오는 작업들을 하나씩 스레드가 맡아 처리하는 것을 말한다
- VO , DTO , DAO, Service
VO : Value Object
read-Only 순수한 데이터 객체
DTO : 데이터를 교환하는 객체
계층간 데이터 교환을 위해 사용하는 객체이다 (계층
View-Controller-Service-DAO와 같은 각 계층)
Database에서 데이터를 얻어 Service 나 Controller 등으로 보낼 때 사용하는 객
체를 말한다.
DAO : 데이터에 접근할 때 사용하는 객체를 위한 클래스
DB를 사용해 데이터를 조회하거나 조작하는 기능을 전담 하도록 만든 오브젝트
를 말한다
Service : 사용자가 요청한 작업을 처리하는 과정을 하나의 작업으로 묶은 것
서비스 클래스는 사용자의 요청을 처리하기 위한 기능을 제공 한다
주로 DAO를 통해서 데이터에 접근하고 기능을 수행하는 데 필요한 로직을 구현
- lambda
람다, 익명 함수를 지칭하는 용어
람다식 , 람다 표현식 : 메서드를 하나의 식으로 표현 한다.
개발 생산성 -> 간결한 표현이 가능하다
jdk 1.8 이상 지원한다
단점 : 가독성(특징) 이 떨어질 수 있다 , 호출이 까다롭다
DB
- 정규화
데이터 중복을 최소화 하기 위해 테이블을 분해하는 과정을 말한다
이상현상을 방지하여 무결성을 보장하기 위해 테이블을 분리 , 구조화 하는 과정
을 말한다
이상현상 : 테이블을 설계할 때 잘못 설계하여 데이터를 삽입, 삭제, 수정할 때
논리적으로 생기는 오류
1정규화
도메인 원자성 : 더 이상 쪼갤 수 없는
2정규화
부분함수종속->완전함수종속 - 주문번호 상푸번호를알수있다
3정규화
이행함수종속성 - 주문번호만 알면 - 상품번호랑 , 회원정보를 알 수 있다.
반정규화
- 시스템성능향상을 위해 의도적으로 위배하는 것
- ERD
테이블간 관계를 한눈에 보기쉽게 만들어 놓은 것
데이터모델링
- 다 대 다 관계처리 -> 교차 엔티티
primary key 2개 이상 이면 처리한다.
주문 주문서 주문상세
주문번호 주문서번호 주문상세번호
상품번호
주문상세번호
- DDL, DML , DCL , TCL
DDL(데이터정의어) - 데이터 정의어 CREATE , DROP , ALTER - 테이블 구
조 변경
DML(데이터 조작어) - INSERT , SELECT , UPDATE , DELETE - 정보 조
회 생성 수정 삭제 (CRUD - Create , Read , Update , Delete )
DCL(데이터 제어어) - GRANT 자원에 접근할 권한을 준다
grant connect , resource to scott - 권한 부여 GRANT , REVOKE 권한 취소
TCL(트랜잭션 제어어) - 실제 DB에 작업 결과를 반영 한다
COMMIT(메모리를 실제 디스크로 올림(실제DB반영)
ROLLBACK 작업취소 원상태로 돌림
- join(Inner join)
여러 테이블의 정보를 결합해 조회하기 위한 SQL
- outer join ( left , right )
여러 테이블에서 한 쪽에는 데이터가 있고, 한쪽에는 데이터가 없는 경우 데이터
가 있는 쪽 테이블의 내용을 모두 출력 하는 것
즉, 조건에 맞지 않아도 해당하는 행을 출력하고 싶을 때 사용 할 수 있다.
left : 조인문의 왼쪽에 있는 테이블의 모든 결과를 가져온 후 오른쪽 테이블의
데이터를 매칭하고, 매칭되는 데이터가 없는 경우 null 로 표시한다.
right : 조인문의 오른쪽에 있는 테이블의 모든 결과를 가져온 후 왼쪽의 테이블
의 데이터를 매칭하고, 매칭되는 데이터가 없는 경우 null 로 표시한다.
- group by ~ having
group by : 특정 컬럼을 기준으로 데이터를 그룹화하여 조회할 때 사용
COUNT(), MAX() , MIN() , AVG() , SUM() 함수와 함께 주로 사용된다.
having : GROUP BY 와 함께 사용하는 조건절 , 그룹에 대한 조건을 지정
- union, union all
union : 두 개의 테이블을 하나로 합치면서 중복된 데이터를 제거 그래서 union은
정렬을 발생시킨다.
union all : 중복을 제거안하고 정렬을 유발하지 않는다
- Transaction 정의, ACID , commit , rollback
Transaction : 데이터베이스의 상태를 변화시키기 위해 수행하는 작업의 단위
상태를 변화시킨다는 것은 : 질의어(SQL)를 이용하여 데이터베이스에 접근
ACID : 데이터베이스 트랜잭션들이 안정적으로 수행된다는 것을 보장하기 위한
성질을 가리키는 약어
원자성(Atomicity): 트랜잭션과 관련된 작업들이 모두 수행되었는지 아니면 모두
실행이 안되었는지를 보장하는 능력
일관성(Consistency): 트랜잭션이 실행을 성공적으로 완료하면 언제나 일관성 있
는 데이터베이스 상태로 유지하는 것
고립성(lsolation): 트랜잭션을 수행 시 다른 트랜잭션의 연산 작업이 끼어들지 못
하도록 보장하는 것 즉, 트랜잭션 밖에 있는 어떤 연산도 중간 단계의 데이터를
볼 수 없음을 의미한다
지속성(Durability) : DBMS가 사용자에게 트랜잭션 커밋(commit) 응답을 했을
경우 설사 데이터베이스 객체에 대한 변경 사항이 디스크에 반영 되기 전에 시스
템 장애가 발생하였더라도 해당 트랜잭션의 커밋은 보장되어야 한다는 속성
commit : 오류없이 실행을 마치면 commit을 하는 실행 단위
rollback : 처음부터 다시 실행하는 Rollback을 수행하고
- SubQuery
다른 쿼리 내부에 포함되어 있는 SELECT 문
서브쿼리를 포함하고 있는 쿼리를 외부쿼리
서브쿼리를 내부쿼리 라고도 부른다
서브쿼리는 반드시 괄호(())로 감싸져 있어야만 한다
- Inline View
FROM 절에 오는 SubQuery 이다
FROM 절에서 원하는 데이터를 조회하여 가상의 집합을 만들어 조인을 수행하거
나 가상의 집합을 다시 조회 할 때 사용한다.
Inline View에는 또 다른 Inline View가 올 수 있다.
- View
뷰는 사용자에게 접근이 허용된 자료만을 제한적으로 보여주기 위해 하나 이상의
기본 테이블로부터 유도된 이름을 가지는 물리적으로 존재하지 않지만 가상 테이
블이다.뷰는 저장장치 내에 물리적으로 존재하지 않지만 사용자에게 있는 것처럼
간주됨 뷰는 데이터 보정작업, 처리과정 시험 등 임시적인 작업을 위한 용도로 활
용된다
뷰는 조인문의 사용 최소화로 사용상의 편의성을 최대화 한다
무결성 : 저장된값이 그대로 설정된다.
- Database Connection Pool ( DBCP )
데이터베이스와 애플리케이션을 효율적으로 연결하는 커넥션 풀 라이브러리를 의
미한다.
미리 일정 개수의 Connection을 만들어 Pool에 저장을 하고 , 사용자의 요청이
발생하면 Connection을 제공하고 사용자와의 연결이 종료된다면 Pool에 다시 반
환하여 보관하는 것을 의미한다.
Project &OOAD
- 소프트웨어 개발 방법론 : 애자일
(일정한 주기)를 가지고 계속 검토해 나가며 필요할 때마다 요구사항을 더하고
수정하여 커다랗게 살을 붙이면서 개발해 프로세스 모델 방식
반복점증
예- 칸반,페어프로그맹
- 형상관리: Git 역할 및 기본 용어 ( add to index, commit , push , pull ,
branch )
Git : 분산 버전 관리 시스템
add to index : 작업 위치 폴더에 작업한 파일이 있을 경우 add를 통해서 staging
Area로 옮길 수 있다. stagin Area는 commit을 진행하기 전의 임시 저장된 상태
commit : 커밋 메시지는 현재 버전에 대한 내용을 명확하게 작성 해야 한다
push : commit 한 이력이 repository로 저장된다
pull : 원격저장소 변경 사항(이력)을 받아온다
branch : 나만의 독립적인 작업 공간
-UML 정의
프로그램 설계를 표현하기 위해 사용하는 표기법
요구 분석,시스템 설계,시스템 구현 등의 시스템 개발 과정에서 개발자간의 의사
소 통을 원활하게 이루어지게 하기 위하여 표준화한 모델링 언어
-Use Case Diagram 이란
시스템과 사용자의 상호작용을 다이어그램으로 표현한 것으로 사용자의 관점에서
시스템의 서비스 혹은 기능 및 그와 관련한 외부 요소를 보여주는 것이다
사용자가 시스템 내부에 있는 기능 중에 어떤 기능을 사용 할 수 있는지 나타내
며 유스케이스 다이터그램을 사용함으로써 (고객)과 (개발자)가 요구사항에 대한
의견을 조율할 수 있다.
-Actor , Use Case , include , extend
액터(Actor) : 시스템의 외부에 있고 시스템과 상호작용을 하는 사람(시스템의
기능을 사용하는 사람) 시스템(시스템에 정보를 제공하는 또 다른 시스템)을 말
한다.
유스케이스(Usecase) : 사용자 입장에서 바라본 시스템의 기능
시스템이 액터에게 제공해야 하는 기능으로 시스템의 요구사항을 나타낸다.
포함관계(Include) : 하나의 유스케이스가 다른 유스케이스의 실행을 전제로 할
때 형성되는 관계이다.
포함되는 유스케이스는 포함하는 유스케이스를 실행하기 위해 반드시 실행되어야
하는 경우가 적용한다.
포함하는 유스케이스에서 유스케이스 방향으로 화살표가 점선으로 연결하고
include라고 표기한다
<<include>>
즉 글을등록한다 -----> 로그인한다.
확장관계(extend):확장 기능 유스케이스와 확장 대상 유스케이스 사이에 형성
되는 관계이다
확장 대상 유스케이스를 수행 할 때 특정 조건에 따라 확장 기능 유스케이스를
수행하는 경우에 적용한다
확장 기능 유스케이스에서 확장 대상 유스케이스 방향으로 화살표를 점선으로 연
결 하고
<<extend>>
글을등록한다 <----- 파일을 첨부한다.
-Class Diagram 이란
시스템의 클래스 , 클래스의 속성 , 동작 방식 , 객체 간 관계를 표시하여 시스템
의 구조를 보여주는 정적 구조 다이어그램 이다
-association, aggregation, composition,generalization, realization 각각 설명
연관 관계(association) : 클래스와 클래스가 관계를 가지고 해당 관계에서 클래
스 객체는 어떤 역할을 수행한다
연관 관계 이름, 역할 이름, 방향성 등을 표시할 수 있다.
커피를만든다 1 연관관계 이름과 다중성
바리스타 -----> 커피머신 - use a 관계
집합 - 전체와 부분의 관계를 명확하게 명시
집약 관계(aggregation) : 한 객체가 다른 객체를 포함하는 것을 의미
포함된 객체와 라이프 사이클이 독립적(전체가 사라져도 부분객체는 사라지지않
는다 )이다. has a 관계 - 마름모 색 안칠함
프린트-컴퓨터 컴퓨터가 사라져도 프린트는 다른 컴퓨터에도 사용가능
합성 관계(composition) : 부분 객체가 전체 객체에 속하는 관계
문 - 키 문이 사라지면 키도 사라진다
포함된 객체는 전체 객체의 라이프 사이클에 의존적입니다. 즉 전체 객체가 사라
지면 포함된 객체도 함께 사라진다 has a 관계 - 마름모 색 칠함
일반화 관계(generalization) : 객체지향 개념에서 상속 관계를 의미
- 빈 삼각표 화살표 is a 관계
실체화 관계(realization) 리얼라이제이션 : 객체지향에서 “인터페이스를 구현했다”
라고 표현하는 관계 인터페이스
인터페이스 클래스 이름 위에 <<interface>>를 명시 한다
is a kind of 관계 - 사물에서 기능쪽으로 점선으로 연결
WEB
- HTML, CSS , JavaScript 역할
HTML : 웹 페이지가 표시되는 방법을 규정하는 언어
CSS: HTML로 만들어진 문서의 스타일을 지정하는 방식을 규정하는 유명한 스타
일 시트 언어
자바스크립트(JavaScript) : 웹사이트가 로딩된 이후에 CSS와 HTML 구성요소들
을 변경할 수 있게 해주며 이를 통해서 웹사이트를 보다 인터랙티브 하게 만들고
사용자의 참여율도 높일 수 있다.
- Servlet(Servlet)과 JSP(View) 역할 및 관계
JSP란 java언어를 기반으로 하는 Server Side 스크립트 언어
HTML 코드 안에 Java코드 Servlet를 보완하고 기술을 확장한 스크립트 방식 표
준 Servlet 의 모든 기능 + 추가적인 기능
presentation(View) 에 좋다
JSP가 수정된 경우 재배포할 필요가 없이 WAS가 알아서 처리한다(쉬운 배포)
Servlet 이란 웹 기반의 요청에 대한 동적인 처리가 가능한 ServerSide에서 돌아
가는 Java Program
Java 코드 안에 HTML 코드
data processing(Conetroller)에 좋다
DB와의 통신 , Business Logic 호출 , 데이터를 읽고 확인하는 작업 등에 유용
Servlet이 수정된 경우 Java 코드를 컴파일(.class 파일 생성) 한 후 동적인 페이
지를 처리하기 때문에 코드를 업데이트 하고 다시 컴파일 한 후 재배포 하는 작
업이 필요하다
- HTTP
HTML 문서와 같은 리소스들을 가져올 수 있도록 해주는 프로토콜 이다
클라이언트-서버 프로토콜 이기도 한다
- HTTP Request GET 과 POST 방식
GET : (클라이언트에서 서버로) 어떠한 리소스로부터 정보를 요청하기 위해 사
용되는 메서드 ex) 게시판의 게시물을 조회할 때 쓸 수 있다
GET을 통한 요청은 URL 주소 끝에 파라미터로 포함되어 전송되며 , 이 부분을
쿼리스트링 이라고 부른다 방식은 URL 끝에 ?를 붙이고 변수명1=값1&변수명2=
값2... 형식으로 이어 붙이면 된다.
www.example.com/show?name1=value1&name2=value2
서버에서 name1 과 name2 라는 파라미터 명으로 각각 value1 과 value2 의 파
라미터값을 전달 받을 수 있다.
POST : 클라이언트에서 서버로 리소스를 생성하거나 업데이트 하기 위해 데이터
를 보낼 때 사용되는 메서드이다.
예를들면 게시판에 게시글을 작성하는 작업 등을 할 때 사용 된다.
GET에서 URL 의 파라미터로 보냈던 name1=value1&name2=value2 가 body에 담겨 보내진다 생각하면 된다.
POST로 데이터를 전송할 때 길이 제한이 따로 없어 용량이 큰 데이터를 보낼 때 사용하거나 GET처럼 데이터가 외부적으로 드러다는건 아니라서 보안이 필요한 부분에 많이 사용된다
보통 HTML from을 통해 서버로 전송된다.
- ServletLifeCycle
모든 서블릿은 다음과 같은 순서대로 메서드를 호출하며 생성되었다가 소멸하는
생명주기를 가진다.
1. init() 메서드를 호출하여 초기화
2. service() 메서드를 호출하여 클라이언트의 요청을 처리
3. destroy() 메서드를 호출하여 종료
init() 메서드
- 서블릿 요청 시 맨 처음 한번만 호출
- 오로지 서블릿이 생성 될 때만 호출되며 이후, 사용자의 요청에 호출되지 않는다
- 주로 반복적으로 해야하는 기본 세팅을 담는 것이 일반적
- 서블릿 생성 시 초기화 작업을 주로 수행
service() 메서드
- doGet() 과 doPost()
- 서블릿 요청시 매번 호출
- 실제 클라이언트가 요청하는 작업을 수행
- 이 단계에서 가장 자주 사용하는 메서드가 바로 service()입니다
destroy() 메서드
- 라이프 사이클이 끝날 때 한 번만 호출
- 서블릿이 기능을 수행하고 메모리에서 소멸될 때 호출
- 이 메서드에서 DB의 연결을 해제하거나 서버의 리소스들을 다시 반납해주는
일련의 정리 활동들을 수행할 수 있게 해준다.
- SevletConfig/ServletContext
ServletConfig
: config = Configration
: 개별 서블릿이 실행하기 위해 필요한 설정 정보를 제공
-> 개별 서블릿 객체 당 하나씩 생성(web container에 의해 init() 메서드 실행
시 전달 됨)
-> 초기 파라미터(init-param) , ServletContext객체의 주소값 등이
ServletConfig 객체에 저장된다.
-> 코드와 설정 정보를 분리해서 , 유지보수성을 향상시킬 수 있다.
(코드-Servlet / 설정정보-xml/ ServletConfig로 연결)
ServletContext
: web application 의 전역에서 공유(사용)할 수 있는 객체이다.
-> 웹 어플리케이션 내 모든 Servlet과 JSP가 공유할 수 있는 정보이다
-> 웹 어플리케이션 시작 시에 생성되고, 종료시에 소멸 된다.
-> 단 ServletConfig안에 ServletContext의 주소값이 있기 때문에 ,
ServletConfig 가 있는 객체만 ServletContext 의 대상이 된다.
- Session 과 Cookie
쿠키(Cookie) : 클라이언트(브라우저) 로컬에 저장되는 키와 값이 들어있는 작은
데이터 파일이다.
사용자 인증이 유효한 시간을 명시 할 수 있으며 , 유효 시간이 정해지면 브라우
저가 종료되어도 인증이 유지된다는 특징이 있다
쿠키는 클라이언트의 상태정보를 로컬에 저장했다가 참조
클라이언트에 300개 까지 쿠키 저장 가능 , 하나의 도메인당 20개의 값만 가질
수 있다. 하나의 쿠키값은 4KB까지 저장
Session : 쿠키를 기반하고 있지만, 사용자 정보 파일을 브라우저에 저장하는 쿠
키와 달리 세션은 서버 측에서 관리한다.
서버에서는 클라이언트를 구분하기 위해 세션ID를 부여하여 웹 브라우저가 서버
에 접속해서 브라우저를 종료할 때 까지 인증상태를 유지 한다.
- forward 와 redirect
JSP 환경에서 현재 작업중인 페이지에서 다른 페이지로 이동하는 두가지 방식의
페이지 전환기능
고객은 클라이언트 , 123 은 URL , 상담원은 서버
forward : 요청 정보가 그대로 유지된다.
현재 실행중인 페이지와 forward에 의해 호출될 페이지는 request , response 객
체를 공유한다. (고객이 요청한 문의사항은 고객이 전화를 끊을 때 까지 유효하
다)
redirect : 전혀 새로운 요청 수행
새로운 페이지에서는 request ,response 객체가 새롭게 생성된다.(123번에서 고
객 이 요청했던 문의사항은 사라지고 124번으로 다시 걸어서 요청한 문의사항을
다시 말해줘야 한다)
redirect 의 경우 최초 요청을 받은 URL1에서 클라이언트에 redirect할 URL2를
리턴하고 클라이언트에게 전혀 새로운 요청을 생성하여 URL2에 다시 요청을 보
낸다. 따라서 처음 보냈던 최초의 요청정보는 더 이상 유효하지 않게 된다.
- Model2 MVC에 대해 설명
웹 브라우저 사용자의 요청을 서블릿이 받는다
서블릿은 웹브라우저의 요청을 받아 View로 보여줄 것인지 Model로 보내줄 것인
지 정하여 전송 한다.
View페이지는 사용자에게 보여주는 역할만 담당하고
실질적인 기능의 부분은 Model에서 담당
Controller는 View와 Model을 연결시켜주는 역할을 수행
모델 2 방식의 경우 실질적으로 보이는 HTML과 JAVA 소스를 분리해 놓았기 때
문에 모델1 방식에 비해 확장시키기도 쉽고 유지보수도 쉽다
- Web Server, WAS 와 Web Container ( ex - apache 와 apache-tomcat 차이 )
Web Server 란 HTTP 프로토콜을 기반으로 클라이언트가 웹 브라우저에서 어떠
한 요청을 하면 그 요청을 받아 정적 컨텐츠를 제공하는 서버이다.
정적컨텐츠란?
HTML 문서 , CSS , 이미지 , 파일 등 즉시 응답 가능 한 컨텐츠 이다.
웹서버가 정적컨텐츠가 아닌 동적 컨텐츠를 요청받으면 WAS에게 해당 요청을 넘
겨주고 WAS에서 처리한 결과를 클라이언트에게 전달하는 역할도 해준다
WAS 란
DB 조회 혹은 다양한 로직 처리를 요구하는 동적 컨텐츠를 제공하기 위해 만들
어진 Application 서버이다. HTTP 프로토콜을 기반으로 사용자 컴퓨터나 장치에
애플리케이션을 수행해주는 미들웨어로서 데이터베이스 서버와 같이 수행
WAS 는 JSP , Servlet 구동환경을 제공해주기 때문에 서블릿 컨테이너 혹은 웹
컨테이너로 불린다.
WAS는 웹 서버의 기능들을 구조적으로 분리하여 처리하고자 하는 목적으로 제시
되었다. 분산 트랜잭션, 보안 , 메시징 , 쓰레드 처리 등의 기능을 처리하는 분산
환경에서 사용된다. WAS는 프로그램 실행 환경과 DB접속 기능을 제공하고 여
러개의 트랜잭션을 관리 한다. 또한 비즈니스 로직을 수행
WAS(DB) = Web Server(정적,JSP,Servlet) + WebContainer(동적)+DB
apache 와 apache-tomcat
아파치 서버란 클라이언트에서 요청하는 HTTP 요청을 처리하는 웹서버를 의미
정적타입의 데이터만을 처리하기 때문에 톰켓이란 것이 등장
아파치 톰켓 jsp와 Servlet을 구동하기 위한 서블릿 컨테이너 역할을 수행한다
아파치 서버 와는 다르게 DB연결 다른 응용 프로그램과 상호 작용 등 동적인 기
능을 할수 있따.
WebContainer(동적)
동적인 데이터들을 가공하여 정적인 파일로 만들어주는 모듈
- JSTL이란
JSP 표준 태그 라이브러리(여러 프로그램이 공통으로 사용하는 코드를 모아놓은
코드의 집합)의 약어로서 반복문 ,조건문을 사용하기 위한 라이브러리
자신만의 태그를 추가할 수 있는 기능을 제공한다
주로 JSTL의 Core에서 c를 사용하여 <c:if> , <c:forEach>등으로 사용
- 크로스 브라우징이란
W3C에서 채택된 표준 웹 기술을 적용해 모든 브라우저에 다른 기종의 OS 나
HTML 랜더링 기술로 비슷하게 만들어 어떤 환경에서도 이상없이 작동되게 하는
웹 페이지를 제작하는 방법론 이다
다양한 브라우저를 이용하더라도 사이트를 100% 이용할수 있게 만드는 기술을
말한다.
- 반응형 웹이란 , 미디어 쿼리란
반응형 웹 : 쉽게 말해 디바이스 종류에 따라 웹페이지의 크기가 자동적으로 재조
정 되는 것을 말한다. 어떠한 환경에서도 그에 맞게 사이즈가 변화되어 사용자가
보기 편리하게 만드는 웹 오직 하나의 HTML 소스 만으로 특정 장치에 최적화된
환경을 사용자에게 제공
미디어 쿼리 : CSS3은 미디어 타입을 개선하여 좀 더 구체적인 조건으로 필요한
스타일을 적용할 수 있도록 확장하였는데 이를 미디어 쿼리 라고 한다
<style>
- 부트스트랩이란
반응형 웹 페이지를 위한 무료 소프트웨어 이며
HTML , CSS , JS 템플릿을 모아둔 프레임워크 이다.
사람들이 만들어논 css를 가져와서 사용하는 것이다.
- DOM 이란
Document Object Model 의 약자로써
문서객체를 사용하는데 문서객체란 <html>이나<body>같은 html 문서의 태그들
을 JavaScript가 이용할 수 있는 객체(object)로 만들면 그것을 문서 객체 라고
한다
문서객체모델은 XML이나 HTML 문서에 접근하기 위한 일종의 인터페이스
이 객체 모델은 문서 내의 모든 요소를 정의하고 각각의 요소에 접근하는 방법을
제공한다.
- jQuery란? $
HTML의 DOM 조작과 이벤트 제어 , 애니메이션 그리고 Ajax까지 웹 화면을 다
루는 자바스크립트 라이브러리 , $
-window.onload 와 $(document).ready(function(){}); 의 차이점
window.onload : 웹브라우저 자체가 담당하는 window라는 객체가 , 웹 문서를
불러올 때 문서가 사용되는 시점에 실행되는 onload라는 함수를 내가 다시 재정
의 한다는 개념이다.
$(document).ready(function(){}); 은 문서가 준비되면 매개변수로 넣은 콜백 함
수를 실행하라는 의미이다.
- Ajax 가 무엇이고 왜 사용을 하는 지
Ajax는 Asynchronous JavaScript and XML 의 약자로써
빠르게 동작하는 동적인 웹 페이지를 만들기 위한 개발 기법의 하나
Ajax는 웹 페이지를 전체를 다시 로딩하지 않고도 , 웹 페이지의 일부분만을 갱
신할 수 있다.
- XMLHttpRequest란
서버로부터 XML 데이터를 전송받아 처리하는데 사용된다
이 객체를 사용하면 웹 페이지가 전부 로딩된 후에도 서버에 데이터를 요청하거
나 서버로부터 데이터를 전송받을 수 있다.
즉 웹 페이지 전체를 다시 로딩하지 않고 일부분만을 갱신할 수 있다.
- JSON 이 무엇이고 어떤 역할을 하는 지
JavaScript Object Notation 의 약자로써
자바스크립트 객체 표기법 이다
데이터를 쉽게 교환하고 저장 하기 위한 텍스트 기반의 데이터 교환 표준 이다
JSON 형태는 키(Key) 와 값(value)의 쌍으로 이루어져 있는 구조이다
Key 와 Value사이에는 콜론(;)이 들어가게 된다. {}
JSON Array : 배열 [ ]
- Http response status code
HTTP 상태 코드 레지스트리를 관리한다
모든 HTTP 응답 코드는 5개의 클래스(분류)로 구분
상태 코드의 첫 번째 숫자는 응답의 클래스를 정의한다 마지막 두 자리는 클래스
나 분류 역할을 하지않는다. 첫 자리에 대한 5가지 값들은 다음과 같다
1xx(정보) : 요청을 받았으며 프로세스를 계속한다
2xx(성공) : 요청을 성공적으로 받았으며 인식했고 수용하였다
3xx(리다이렉션) : 요청 완료를 위해 추가 작업 조치가 필요하다
4xx(클라이언트 오류): 서버가 명백히 유효한 요청에 대해 충족을 실패했다
- ECMA5 vs ECMA6 특징 : var 과 let
ECMA5의 변수 선언시 var는 Function Scope를 사용한다
var는 if 조건문의 block 과는 상관없이 외부에서도 접근이 가능하다
기존의 var keyword scope전역범위로 스크립트 파일 어디서나 참조하여 사용이 가능
ES6에서는 변수 선언시 let과 const 존재 하며 이 두가지의 변수 선언에 사용되
는 문법은 기존 ES5의 var와 달리 Block Scope를 따른다
let - block scope로 일반 변수 생성시 사용 , 중복 선언시 Type Error 발생
장점은 잘못된 변수 사용으로 인해 발생하는 오해의 소지를 줄여주기 때문에 .
재할당가능
const - block scope 로 JavaScript에서 상수용 변수로 사용 처음 생성시 초기값
을 지정해 주어야 한다
주의할점은 변수에 담긴 값이 불변이라기보다는 재할당이 불가능하다는 의미이다
- 버퍼와 캐시의 공통점과 차이점
공통점은 데이터를 임시적으로 저장한다는 공통점이 있다
또 추가적인 메모리를 소모함으로써 속도 차이를 보상한다
차이점은
캐시는 하나의 기억장치 역할도 수행한다 , 처음 불러올때는 느리지만 기존에 봤
던거니까 빠르게 볼 수 있다.
한 번 저장한 것은 계속해서 저장하여 가지고 있으며 접근(Access) 요청이 발생
할 때마다 그 기억 매체를 불러온 쪽에 반환할 수 있다
계속해서 저장하고 있다는 점에서 버퍼와 큰 차이점
버퍼는 사용 후에 데이터를 폐기 , 처리크기가 큰편이기 때문에 모든 데이터를 저
장할 수 없다
프린터가 진행되는 동안 컴퓨터도 프린터 속도에 되면 안돼니까 그 속도 차이를
맞춰줘서 일시적으로 데이터 복원해서 속도 차이 간격을 줄여준다
Framework
- Design pattern : Singleton , MVC , Front Controller, Proxy Pattern
Singleton : 객체의 인스턴스가 오직 1개만 생성되는 패턴
객체를 미리 생성해 두고 가져오는 가장 단순하고 안전한 방법의 디자인 패턴
중복생성과 메모리 남용을 방지
MVC pattern : 사용자 인터페이스로부터 비즈니스 로직을 분리하여 애플리케이
션의 시작적 요소나 그 이면에서 실행되는 비즈니스 로직을 서로 영향 없이 쉽게
고칠 수 있는 애플리케이션을 만들 수 있다
MVC에서 모델은 정보(데이터)를 나타내며, 뷰는 텍스트, 체크박스 항목등 사용
자 인터페이스 요소를 나타내고 , 컨트롤러는 데이터와 비즈니스 로직 사이의 상
호작용을 관리한다
Front(대표) Controller : 대표 컨트롤러(Front Controller)를 두고 뷰에서 돌아오
는 모든 요청을 담당하여 웹 애플리케이션을 실행하는 모든 요청을 일괄적으로
처리할 수 있다.
Proxy Pattern : 무엇인가를 대신 처리하는 의미 어떤 객체를 사용하고자 할 때
객체를 직접적으로 참조 하는 것이 아니라 해당 객체를 대행하는 객체를 통해 대
상 객체
- Framework의 정의
일정한 형태의 틀 , 부품을 가지고 다양한 형태의 결과물을 만드는 것! 이것이 바
로 프레임 워크 이다
- Spring Framework(Spring) 소개
JAVA를 사용한 프레임워크 이다
자바 플랫폼을 위한 오픈 소스 애플리케이션 프레임워크로서 간단히 스프링
(Spring) 이라고도 한다. 동적인 웹 사이트를 개발하기 위한 여러 가지 서비스를
제공하고 있다. 대한민국 공공기관의 웹 서비스 개발 시 사용을 권장하고 있는 전
자정부 표준 프레임워크의 기반 기술로서 쓰이고 있다.
장점 : 언제든 필요한 객체를 spring 컨테이너(객체를담아) 로부터 사용 할 수 있
다.
- IOC란 무엇이고 왜 적용을 하는 지 , IOC Container의 역할
IOC 란
Inversion of Control 의 줄임말로 제어의 역전 이라는 말이다
메서드나 객체의 호출작업을 개발자가 결정하는 것이 아니라 외부에서 결정되는
것을 의미한다
조립된 코드의 최종 호출은 개발자에 의해서 제어되는 것이 아니라 , 프레임워크
의 내부에서 결정된 대로 이뤄지게 되는데, 이러한 현상을 “제어의 역전” 이라고
표현한다. 개발자는 로직에 집중 , 결합도가 낮아져 생산성이 높아짐
IOC를 해야 AOP를 적용할 수 있다.
IOC Container : 빈에 객체들을 관리하고 의존성을 관리
- Spring Bean Life Cycle
스프링컨테이너생성 -> 스프링빈생성 -> 의존관계주입 -> 초기화 콜백 메서
드 호출 -> 애플리케이션에서 빈 사용 -> 소멸 전 콜백 메서드 호출 -> 스프
링 종료
- Singleton Design Pattern
전역변수를 사용하지 않고 객체를 하나만 생성 하도록 하며, 생성된 객체를 어디
에서든지 참조 할 수 있도록 하는 패턴
- DI : 의존성 주입 / DL : Bean 접근하기 위해 컨테이너가 제공하는 API이용
스프링 DI : 의존 관계 주입이라는 의미로 스프링이 다른 IoC프레임워크 와는 다
른 차별화된 특징 중 하나라고 볼 수 있다.
각 클래스 간의 의존성을 자신이 아닌 외부(컨테이너)에서 주입하는 것이다
의존성 주입이란 말그대로 의존적인 객체를 직접 생성하거나 제어하는 것이 아니
라 특정 객체에 외부에서 결정해서 연결시키는 것을 의미한다
스프링 DL : 의존성 검색이다
Bean 에 접근하기 위해 컨테이너가 제공하는 API를 이용하여 Bean을 Lookup
하는 것이다
- @Component, @Repository , @Service, @Controller , @Bean 어노테이션
특징
@Component : Bean Configuration 파일에 Bean을 따로 등록하지 않아도 사용할
수 있다. 빈 등록자체를 빈 클래스 자체에다가 할 수 있다는 의미이다
@Repository : 해당 클래스를 루트 컨테이너에 빈(Bean) 객체로 생성해주는 어
노테이션입니다.
@Service : 서비스를 지정하는 어노테이션 비즈니스 로직을 수행하는 서비스 레
이어 클래스 임을 나타낸다. 캡슐화 없이 모델 내 단독 인터페이스로써 제공되는
동작을 의미한다
@Controller : @Component를 구체화 하여 만든 어노테이션으로 해당 클래스를
IOC 컨테이너에 Bean 으로 등록해주며 Controller 로 사용된다는 것을 알려준다
@Bean : 개발자가 제어가 불가능한 외부 라이브러리와 같은 것들을 Bean 으로
만들 때 사용한다
- @Autowired , @Qualifier 어노테이션 특징
@Autowired : 의존 관계 주입(DI)을 할 때 사용하는 어노테이션
의존 객체의 타입에 해당하는 빈(Bean)을 찾아 주입하는 역할을 한다.
@Qualifier : 사용할 의존 객체를 선택할 수 있다.
- @RequestMapping @RequestParam @ResponseBody 어노테이션 특징
@RequestMapping : uri로 요청을 보내면 Controller에서 어떠한 방식으로 처리할
지 정의를 한다 이때 들어온 요청을 특정 메서드와 매핑하기 위해 사용하는 것이
@RequestMapping 이다
@RequestParam : 사용자가 전달하는 값을 1:1로 매핑해주는 어노테이션이다.
보통 파라미터를 통해 값을 전달할 때 자주 사용한다.
@ResponseBody : 자바객체를 HTTP 요청의 바디내용으로 매핑하여 클라이언트
로 전송한다.
@ResponseBody 가 붙은 파라미터가 있으면 HTTP 요청의 미디어타입과 파라미
터의 타입을 먼저 확인한다.
클라이언트에서 서버로 필요한 데이터를 요청하기 위해 JSON 데이터를 요청 본
문에 담아서 서버로 보내면 서버에서는 @RequestBody 어노테이션을 사용하여
HTTP 요청 본문에 담긴 값들을 자바 객체로 변환시켜 객체에 저장한다.
서버에서 클라이언트로 응답 데이터를 전송하기 위해 @ResponseBody 어노테이
션을 사용하여 자바 객체를 HTTP 응답 본문의 객체로 변환하여 클라이언트로
전송한다.
- AOP란 무엇이고 왜 적용을 하는 지
관점지향 프로그래밍의 약자
흩어진 Aspect 들을 모아서 모듈화 해줘서 관심사 분리 라는 개념을 갖고 객체지
향 프로그래밍을 통해 더욱 객체지향적으로 만들어주는 기술이다.
흩어진 기능들을 모을 때 사용하는 것이 Aspect 이다 각 Concern별로 Aspect를
만들어주고 어느 클래스에서 사용하는지 입력해주는 방식이다
Cross Cutting 으로 나눠서
장점은
어플리케이션 전체에 흩어진 공통기능이 하나의 장소에서 관리됨
다른 Service 모듈들이 본인의 목적에만 충실하고 그 외 사항들은 신경 쓰지 않
아도 된다.
- AOP 적용사례 -> Logging , Transaction , Security
로깅 : 시스템 동작에 대한 정보를 제공
트랜잭션 : 에러 예외처리 시 자동으로 롤백 , 성공적으로 수행하면 커밋
시큐리티 : 인증 인가 보안 서비스 다루는데
- Proxy Design Pattern
프록시(Proxy)를 번역하면 대리자, 대변인의 의미를 갖고 있다. 대리자 대변인은
누구를 대신해서 그 역할을 수행하는 존재이다
- Front Controller Design Pattern
어플리케이션 앞에 배치 다른 구성요소랑 상호작용 클라이언트 요청을 처리하는
패턴
- SpringMVC란 (요청과 응답시까지 실행 흐름)
SpringMVC : 요청 응답 실행 흐름 인데 Spring MVC 는 Servlet 클라이언트 요
청을 처리하기위한것
DispatcherServlet, HandlerMapping, HandlerAdapter , ViewResolver 역할
DispatcherServlet : Front Controller 역할로 DI DL 처리
요청을 중앙집중식으로 처리하는 프론트 컨트롤러 역할
HandlerMapping : DispatcherServlet 들어온 것을 각각의 컨트롤러로 보내줌
컨트롤러 매핑
HandlerAdapter : 데이터 VO 값을 받아와서 VO값을 View 쪽에서 받아서
Controller에서 다받아주지 않고 Controller에서 받아서 직접 수행
ViewResolover : HTML 클라이언트에게 보여줄 화면
- Mybatis Framework 에 대해 설명
객체지향 언어인 Java의 관계형 데이터베이스 프로그래밍을 좀 더 쉽게 도와주는
퍼시스턴스 프레임워크 데이터를 다루는 클래스 및 설정파일 집합 이다
DAO를 효율적으로 매핑시켜준다
- ORM / JPA / Hibernate 에 대해 각각 설명
ORM - 객체와 관계형 데이터베이스와 데이터를 자동으로 매핑 해주는 것을 말
한다
JPA- 자바 진영에서 ORM 기술 표준으로 사용되는 인터페이스의 모음이다
Hibernate - 자바 언어를 위한 ORM 프레임워크 이다
- jUnit 이란
단위 테스트는 프로그램의 기본 단위인 모듈(Module)을 테스트 하는 것이다.
구현 단계에서 각 모듈의 개발을 완료한 후 명세서의 내용으로 정확히 구현되었
는지를 테스트 하는 것이다.
- Spring Legacy Project(Spring MVC Project)와 SpringBoot Project의 특징
Spring Legacy Project
: 라이브러리 설정을 자유롭게 가능
: 자유도가 높은 만큼 설정양이 매우 많음
: 프로젝트 설정을 위한 초반 작업이 많음
SpringBoot Project
: 실무에서 많이 쓰이는 유형들을 분류해서 유형별로 설정을 완료
: 최소한의 설정으로 원하는 프로젝트의 환경구축을 빨리 끝낼 수 있음
: WAS 내장
- REST 개념과 @RestController
REST : 자원을 이름(자원의 표현)으로 구분하여 해당 자원의 상태(정보)를 주고
- REST API
받는 모든 것을 의미한다.
URL를 HTTP 방식으로 구현하는 아키텍처 한 종류다
@RestController : @Controller 에 @ResponseBody가 결합된 어노테이션
컨트롤러 클래스의 각 메서드마다 @ResponseBody를 추가할 필요가 없어졌다
json 이나 전송가능
- Template Engine Thymeleaf
백앤드 서버에서 HTML을 동적으로 랜더링하는 용도로 사용됨
페이지가 어느정도 정적이고 빠른 생산성이 필요한 경우 백앤드 개발자가 개발해
야하는 일이 생기는데 이 경우 타임리프는 좋은 선택지이다
- Spring Security의 역할
애플리케이션 보안(인증과 권한,인가 등)을 담당하는 스프링 하위 프레임워크
Spring Security는 ‘인증’ 과 ‘권한’ 에 대한 부분을 Filter 흐름에 따라 처리 하고
있다
- Cloud Computing : IaaS , PasS , SasS
IaaS EC2 서버제공 윈도우창
PasS AWS 아마존웹서비스플랫폼
SasS 구글서비스 서비스웨어 제공 구글클라이언트
- MSA 개념
MACRO Service 아키텍처
서비스 단위를 묶은 어플리케이션
서비스에 집중해서 고객요청을 빠르게 반응하여 최근에 나옴
예로 Spring Cloud 가 있다
MACRO : 작고 독립적으로 배포 가능
'개발자 면접준비' 카테고리의 다른 글
[개발자 면접준비] OOP(객체지향)이란 무엇인가 ? (4) | 2022.03.19 |
---|---|
[개발자 면접준비] DOM 과 XML은 무엇인가 ? (0) | 2022.03.16 |
[개발자 면접준비] DTO 와 VO의 차이는 ? (1) | 2022.03.15 |
[개발자 면접준비] 쿠키와 세션이란 ? (0) | 2022.03.15 |
[개발자 면접준비] MVC를 지키면서 코딩하는 방법 (0) | 2022.03.15 |