++ 관점 지향 프로그래밍( AOP, Aspect Oriented Programming)
은 스프링 프레임워크에서 아주 강력한 기능입니다.
기존의 스프링 프레임 워크 위에 구축 된 Spring Boot는
스프링의 모든 기능을 제공하면서도 스프링보다 사용하기 쉽습니다.
SpringBoot Starter 모듈로 간단하게 초기설정을 마칠 수 있고
라이브러리의 버전 관리도 쉽게 할 수 있습니다.
또한 내장서버를 포함하고 있어서 서버를 추가로 설치하지 않아도 바로 개발 가능합니다.
3-1.Spring MVC 프레임 워크
Model View, Controller라는 모듈의 분리를 가능하게하고
애플리케이션 통합을 원활하게 처리해줍니다.
개발자는 일반 Java 클래스를 사용하여 복잡한 응용 프로그램을 만들 수 있습니다.
모델 객체는 맵을 사용하여 뷰와 컨트롤러간에 전달합니다.
Stomp는 Publish-Subscribe 매커니즘을 제공합니다.
Broker를 통해 다른 사용자들에게 메시지를 보내거나 서버가 특정 작업을 수행하도록
메세지를 보낼 수 있습니다.
스톰프는 구독(현재 메세지에 대한 목적지)이라는 개념을 통해 내가 통신하고자 하는 주체(토픽)를 판단하여
브로커라는 개념을 두어 실시간, 지속적으로 관심을 가지며 해당 요청이 들어오면 처리하는 구조입니다.
JSTL(JavaServer Pages Standard Tag Library)
정식 명칭은 자바서버 페이지 표준 태그 라이브러리이고 줄여서 JSTL이라 부릅니다.
JSTL은 JSP 페이지 내에서 자바 코드를 바로 사용하지 않고 로직을 내장하는 효율적인 방법을 제공합니다.
가독성이 스크립틀릿보다 좋고 뷰와 비즈니스로직의 분리를 할 수 있습니다.
RESTful API
되도록 uri에는 정보의 자원을 표현하는 것에 중점을 두고,
자원의 행위는 http 메서드 포스트, 겟, 풋, 딜리트 매핑을 사용하여
CRUD를 구현하는 것입니다.
RESTful API를 사용하면 알아보기 쉽고 서버가 요청한 데이터만 깔끔하게
클라이언트에게 보내주면되기 때문에 가벼워지고 유지보수성도 좋아지는 등 많은 장점이 있습니다.
MVC를 쓰는 이유?
각 구성요소를 독립시켜서 맡은 부분의 개발에만 따로 집중 할 수 있게 하여
개발의 효율성을 높이고 개발 완료 후에도 유지보수와 확장성을 보장합니다.
모델은 데이터가 무엇인지를 정의합니다.
데이터의 상태가 변경되면 모델을 일반적으로 뷰에게 알리며
컨트롤러에게 알리기도 합니다.
뷰는 레이아웃과 화면을 처리합니다. 모델로부터 표시할 데이터를 받아 보여줍니다.
컨트롤러는 명령을 모델과 뷰 부분으로 라우팅합니다.
사용자로부터의 입력(뷰에서)에 대한 응답으로 모델 및/또는 뷰를 업데이트하는 로직을 포함합니다.
※ 라우팅 (routing) 이란?
어떤 네트워크 안에서 통신 데이터를 보낼 때 최적의 경로를 선택하는 과정입니다.
단순히 데이터를 다른 형태로 나타내기 위해 뷰를 업데이트하고 싶은 경우 컨트롤러는 모델을 업데이트할 필요 없이 바로 처리 가능
10.데이터 언어
DDL은 (Data Definition Language)
데이터베이스를 정의하는 언어이며,
데이터를 생성, 수정, 삭제하는 등의 데이터의 전체의 골격을 결정하는 역할을 하는 언어입니다.
create,alter,drop 등이 있습니다.
DML은 (Data Manipulation Language)
데이터 조작어로 정의된 데이터베이스에 입력된 정보를 조회 수정 삭제하는 등의 역할을 하는 언어입니다.
insert,select,update,delete가 있습니다.
DCL은 (Data Control Language)
데이터 제어어라는 뜻으로 데이터베이스에 접근하거나 객체에 권한을 주는등의 역할을 하는 언어입니다.
grant 줄때,revoke 뺏을때,commit 저장,rollback 저장취소가 있습니다.
commit : DB에 쿼리 수행결과를 완전히 반영하는 것
ddl, dcl : commit 이 같이 수행됨
json
자바스크립트 객체 표기법으로
서버와 웹페이지 간에 어떤 데이터를 주고 받을 때 많이 사용하는 포맷형식입니다.
객체 상태로 데이터를 전달할 수는 없기에 객체 문자열로 변환해서 전달해줘야합니다.
받은 쪽에서는 다시 문자열을 객체로 변환해야 하지만
해당 프로그래밍 언어에서 객체로 사용할 수 있습니다.
13.프로그래밍 언어를 사용해야 하는 이유?
기계(컴퓨터)에게 명령이나 연산을 시킬 목적으로 설계되어 기계와 의사소통을 할 수 있게 해주는 언어를 뜻합니다.
프로그래밍 언어는 사람이 이해하기 쉽게 만든 언어로
실행될 때 컴파일러라는 번역기로 컴퓨터에게 컴파일 하여 알려줍니다.
컴파일러란?
어떤 프로그래밍 언어로 쓰여진 소스 파일을 다른 언어로 바꾸어주는 번역기라고 볼 수 있습니다.
15.자바란?
대표적인 객체 지향 프로그래밍 언어입니다.
객체를 만들어 객체들을 연결해서 전체 프로그램을 완성하는 것입니다.
프로그램을 수정할 때 주변 영향이 적기 때문에 유지보수가 쉬워서 매우 경제적입니다.
잘 설계된 클래스를 만들어서 독립적인 객체를 사용함으로써 개발의 생산성을 향상시킬 수 있습니다.
자바의 특징?
상위 클래스의 모든 것을 하위클래스가 이어받는 '상속'이 가능합니다. 코드의 재사용을 높일 수 있습니다.
또한 한 객체가 다른 여러 형태(객체)로 재구성 되는 '다형성'을 가지고 있습니다.
객체의 공통적인 속성과 기능을 추출하여 정의하는 추상화,
데이터와 코드의 형태를 외부로부터 알 수 없게 하고,
데이터의 구조, 역할, 기능을 하나의 캡슐형태로 만드는 방법인 캡슐화가 가능하다는 특징을 가지고 있습니다.
단점은 객체가 처리하려는 것에 대해 정확한 이해가 필요하기 때문에
설계단계부터 개발 속도가 느리고 실행 속도가 느리고 코드의 길이가 깁니다.
파싱이란?
데이터를 분해 분석하여 원하는 형태로 조립하고 다시 빼내는 프로그램을 말합니다.
웹상에서 주어진 정보를 내가 원하는 형태로 가공하여 서버에서 불러들이는 것입니다.
18.브라우저의 렌더링 과정?
브라우저는 HTML, CSS 등 렌더링에 필요한 리소스를 서버에 요청하고 응답을 받습니다.
브라우저의 렌더링 엔진은 서버로부터 응답받은 HTML과 CSS를 파싱하여 DOM과 CSS Object Model 생성하고,
이 둘을 결합하여 렌더트리를 생성합니다.
19.렌더링이란?
HTML,CSS, 자바스크립트 등 개발자가 작성한 문서가 브라우저에서 출력되는 과정을 말합니다.
브라우저 마다 다르지만, 브라우저는 렌더링을 수행하는 렌더링 엔진을 가지고 있습니다.
JSP (JavaServer Pages)
: HTML코드에 Java 코드를 넣어 동적인 웹 페이지를 생성하는 웹 어플리케이션 도구입니다.
웹(web)
웹이란 인터넷 기반의 정보기술로 World Wide Web 의 줄임말로 쓰이며 WWW 라고도 합니다.
전세계에 거대한 네트워크 망을 통해 정보를 공유하며 정보의 흐름은 양방향성을 가집니다.
자바 서블릿(Java Servlet)
서블릿이란 웹페이지를 동적으로 생성하기 위해 서버측 프로그램을 말합니다.
이는 자바 언어를 기반으로 만들어지며 웹 어플리케이션 서버 위에서 컴파일 되고 동작한다.
JSP 로 작성된 프로그램은 서버로 요청시 서블릿(Servlet) 파일로 변환되어
JSP 태그를 분해하고 추출하여 다시 순수한 HTML 를 변환합니다.
24.클래스변수, 지역변수, 인스턴스 변수에 대해서 설명(선언위치 설명)
선언위치
클래스 변수와 인스턴스 변수는 클래스 영역에,
지역 변수는 클래스 이외의 영역(메서드, 생성자, 초기화 블럭)에 선언합니다.
생성시기(메모리 할당 시기)
클래스 변수는 클래스가 메모리에 올라 갈 때
(인스턴스 변수에 static만 붙여주면 됨, 모든 인스턴스가 공통된 값을 공유, public을 붙이면 같은 프로그램 내에서 어디서든 접근할 수 있는 전역변수가 됨, 클래스이름, 클래스 변수명을 통해서 접근 가능)
인스턴스 변수는 인스턴스가 생성될 때
(인스턴스 변수의 값을 읽어오거나 저장하려면 인스턴스를 먼저 생성하여야 한다. 각각의 인스턴스마다 고유의 값을 가져야 할 때는 인스턴스 변수로 선언한다.)
지역 변수는 변수 선언문이 수행되었을 때 생성됩니다.(메서드 내에서 선언되는 변수, 메서드가 실행될 때 메모리를 할당 받고 끝나면 소멸되어 사용 불가능)
25. 추상클래스(abstract class)와 인터페이스(interface)의 공통점 차이점
공통점은 모두 클래스이고 (: 객체를 만들어 내기 위한 설계도 혹은 틀 연관되어 있는 변수와 메서드의 집합)
하위클래스에서 모든 추상 메서드를 구현해야 한다는 것입니다.
차이점은 추상 클래스는 추상 메서드 외 일반 멤버 변수와 메서드를 가질 수 있습니다.
extends를 사용하고 단일 상속만 가능하며 작업의 레벨 분할을 위해서 사용하지만
인터페이스는 추상 메서드와 static final 변수만 사용합니다.
Implements를 사용하고 중복 구현이 가능하며 공동 작업을 위한 상호간의 인터페이스를 위해 사용합니다.
인터페이스, 상속, 다형성에 대해서 설명
인터페이스는 추상 메서드와 상수로만 이어져 있고 다중 상속이 가능합니다.
상속은 부모클래스로부터 상속받은 자식클래스는 부모클래스의 모든 자원과 메서드 등을 자신의 것처럼 사용할 수 있습니다.
다형성은 하나의 메소드나 클래스가 있을 때 이것들이 다양한 방법으로 동작하는 것입니다.
인터페이스는 다형성을 가지고 있습니다.
오버로딩과 오버라이딩에 대해서 설명
오버로딩과 오버라이딩은 클래스의 다형성을 지원하는 방법입니다.
오버로딩은 같은 이름의 메소드를 여러 개 가지면서 매개변수의 유형과 개수가 다르도록 하는 것이고, 오버 라이딩은 상위 클래스가 가지고 있는 메소드를 하위 클래스가 재정의하는 것입니다.
함수의 원형은 부모 클래스와 일치해야 합니다. 상속받은 클래스의 메소드가 하위 클래스에서 충분한 기능을 제공하지 않거나, 부족할 때 오버라이딩합니다.
타입(Data type)이란 해당 데이터가 메모리에 어떻게 저장되고,
프로그램에서 어떻게 처리되어야 하는지를 명시적으로 알려주는 것입니다.
자바에서 타입은 크게 기본형 타입과 참조형 타입이 있습니다.
기본형은 자료형의 길이가 변하지 않으며 비객체 타입이므로 null값을 가질 수 없습니다.
int, char, short, long, float, double, boolean, byte
8개의 기본형을 제외한 나머지 타입을 참조형이라 하며 java.lang.Object를 상속받으면 참조형이 됩니다. 참조형 변수의 Integer나 Double등은 object로써 가공이 용이한 반면 단순 대입시에 좀 불편합니다.
기본형 변수의 경우 단순연산에는 좋으나 복잡한 데이터 가공시에 어려움이 있습니다.
inner클래스(내부클래스)의 사용 용도와 장점
특정 클래스 내에서만 주로 사용되는 클래스를 사용할 때 내부클래스로 선언합니다.
내부클래스에서 외부클래스의 멤버들에 쉽게 접근할 수 있으며 코드의 복잡성을 줄일 수 있다는 장점이 있습니다. (캡슐화)
stack이란?
여러 개의 데이터 항목들이 일정한 순서로 나열된 자료구조로,
한쪽 끝에서만 새로운 항목을 삽입하거나 기존 항목을 삭제할 수 있는 선형 구조입니다.
먼저 삽입된 것은 나중에 삭제되고, 나중에 삽입된 것이 먼저 삭제됩니다.
후입선출
Push/Pop/Top
Push란 data를 넣는 것,
Pop은 넣어둔 data를 꺼내는 것
Top은 data를 저장하는 위치입니다.
queue란?
여러 개의 데이터 항목들이 일정한 순서로 나열된 자료 구조로 한쪽 끝에서는 삽입만 할 수 있으며
반대쪽 끝에서만 삭제되도록 되어있는 선형 구조입니다.
큐에 저장된 데이터 항목들 중에 먼저 삽입된 것은 먼저 삭제되고, 나중에 삽입 된 것은 나중에 삭제됩니다.
선입선출
Put/get/front/rear
Put은 data를 넣는 것,
get은 data를 꺼내는 것
front(head) 란 data를 put 할 수 있는 위치
rear(tail) 란 data가 있어 get 할 수 있는 위치를 말합니다.
Overflow란 queue가 꽉 차서 더이상 data를 (put)넣을 수 없는 경우,
Underflow란 queue가 비어 있어 data를 (get)꺼낼 수 없는 경우를 말합니다.
Linked List란?
각 노드가 데이터와 포인터를 가지고 한 줄로 연결되어 있는 방식으로 데이터를 저장하는 자료구조 입니다.
34.Cookie?
웹 서버가 브라우저에게 지시하여 사용자의 로컬 컴퓨터에 파일 또는 메모리에 저장하는 작은 기록 정보 파일입니다.
파일에 담긴 정보는 인터넷 사용자가 같은 웹사이트를 방문할 때마다 읽히고 수시로 새로운 정보로 바뀔 수 있습니다. 만료 기간은 서버 측 또는 클라이언트 측 (일반적으로 서버 측)에서 설정할 수 있습니다. 쿠키는 주로 서버 측에서 읽기(클라이언트 측에서 읽을 수도 있음) 위한 것이며, Local Storage 및 Session Storage는 클라이언트 측에서만 읽을 수 있습니다.
크기는 4KB보다 작아야 합니다.
단점 : 쿠키에 대한 정보를 매 헤더에 추가하여 보내기 때문에 상당한 트래픽을 발생시킵니다.
결제정보 등을 쿠키에 저장하였을 때 쿠키가 유출되면 보안에 대한 문제점도 발생할 수 있습니다.
Session?
세션은 브라우저가 서버에 연결되어 있는 동안 유지하는 데이터 집합입니다.
클라이언트는 HTTP Session ID를 메모리 저장된 형태로 가지고 있습니다.
메모리에 저장하기 때문에 브라우저가 종료되면 사라지게 됩니다.
서버의 리소스를 쓰기 때문에 세션을 많이 사용하면 서버의 리소스를 많이 쓰게 됩니다.
지역 변수의 범위
선언된 함수 안에서만 사용할 수 있고 다른 함수에서는 사용할 수 없습니다.
equals는 데이터값을 비교하는 것이고 ==는 주소값을 비교하는 것입니다.
JavaScript는 높은 수준의 해석 언어이며 jQuery는 JavaScript 라이브러리입니다.
jQuery는 JavaScript를 사용하여 수행되는 작업을 단순화하도록 설계된 것입니다.
jQuery는 페이지 콘텐츠를 쉽게 조작할 수 있으며 최신 웹 사이트에 필요한 정교한 효과를 제공합니다.
40.JavaScript
: HTML 및 CSS를 사용한 웹 개발을 위한 핵심 기술 중 하나로
웹 페이지에 상호 작용을 추가하는 데 사용됩니다.
HTML(Hyper Text Markup Language)
웹 페이지의 구조를 구축하는 데 사용합니다.
CSS(Cascading Style Sheets)
웹사이트에 표현되는 방법을 정해주는 스타일시트 언어입니다.
jQuery
: JavaScript로 작성된 라이브러리. DOM (문서 개체 모델)을 기반
빠르고 확장 가능하며 JavaScript보다 더 많은 기능을 제공합니다.
프로그래머가 JavaScript보다 최소 라인 수 내에서 작업을 수행할 수 있도록 도와주며
반응이 빠른 웹 페이지를 만드는 과정을 단순화해줍니다.
ajax
자바스크립트를 통해서 서버에 데이터를 비동기 방식으로 요청하는 것입니다.
비동기 방식이란?
비동기 방식은 웹페이지를 리로드하지 않고 데이터를 불러오는 방식입니다.
클라이언트에서 서버로 데이터를 요청하고 그에 대한 결과를 돌려받을 수 있어
리소스 낭비를 줄일 수 있습니다.
45.클라이언트란?
서버에서 정보를 가져와서 사용자에게 보여줄 수 있고 사용자와 상호작용할 수 있는 소프트웨어입니다.