728x90

전체 글 50

[Spring] 스프링 부트 (Spring Boot) 특징 및 구조

Spring Boot의 특징 및 구조와 사용 파일에 대해서 알아보자. Spring의 경우 Application을 개발하려면 사전에 많은 작업(library 추가, dependency 설정, 여러 가지 구성 및 설정)을 해야 했다. SpringBoot의 장점 - project에 따라 자주 사용되는 library들이 미리 조합되어 있다. - 복잡한 설정을 자동으로 처리해준다. - 내장 서버를 포함해서 tomcat과 같은 WAS를 추가로 설치하지 않아도 개발이 가능하다. - WAS에 배포하지 않고도 실행할 수 있는 JAR파일로 Web Application을 개발할 수 있다. SpringBoot project 생성 구조 및 주요 구성 폴더/파일 ◇프로젝트의 주요 파일 설명 src/main/java - java ..

개발/Spring 2022.05.18

[Spring] 스프링 MVC 아키텍처의 이해 (Spring MVC Architecture)

MVC Pattern 애플리케이션의 확장을 위해 Model, View, Controller 세 가지 영역으로 분리한다. 컴포넌트의 변경이 다른 영역 컴포넌트에 영향을 미치지 않아서 유지보수에 용이하다. 컴포넌트 간의 결합성이 낮아 프로그램 수정이 용이해 확장성이 뛰어나다. Spring MVC 실행 순서 DispatcherServlet (단일 Front Controller Servlet)이 요청을 수신한다. ↓↓ DispatcherServlet은 Handler Mapping에 어느 Controller를 사용할 것인지 문의한다. ↓↓ DispatcherServlet은 요청을 Controller에게 전송하고 Controller는 요청을 처리한 후 결과를 리턴한다. ↓↓ ModelAndView Object에 수..

개발/Spring 2022.05.17

[Spring] 스프링에서 많이 사용하는 어노테이션 정리 (Annotation)

◈ 빈 자동 등록에 사용할 수 있는 annotation 종류 @Repository Data Access Layer의 DAO 또는 Repository 클래스에 사용한다. DataAccessException 자동변환과 같은 AOP의 적용 대상을 선정하기 위해서 사용된다. @Service Service Layer의 클래스에 사용한다. @Controller Presentation Layer의 MVC Controller에 사용한다. 스프링 웹 서블릿에 의해 웹 요청을 처리하는 컨트롤러 빈으로 선정된다. @Component 위의 Layer 구분을 적용하기 어려운 일반적인 경우에 설정한다. 빈 자동인식을 위한 annotation 종류가 여러 가지인 이유는 계층별로 빈의 특성이나 종류를 구분하고 AOP Pointcut..

개발/Spring 2022.05.16

[Spring] REST, REST API, RESTful API, OPEN API란?

OPEN API란?? OPEN API는 프로그래밍에서 사용할 수 있는 개방되어 있는 상태의 Interface를 말한다. naver나 kakao 등 포털 서비스 사이트나 통계청, 기상청, 우체국 등과 같은 관공서, 공공 데이터 포털이 가지고 있는 데이터를 외부 응용 프로그램에서 사용할 수 있도록 OPEN API를 제공하고 있다. OPEN API와 함께 거론되고 있는 기술이 REST이고, 대부분의 OPEN API는 REST 방식으로 지원된다. REST란?? REST는 Representational State Transfer의 약자로 2000년도 Roy Fielding의 박사학위 논문에 최초로 소개되었다. 하나의 URI는 하나의 고유한 Resource를 대표하도록 설계된다는 개념에 전송방식을 결합해서 원하는 ..

개발/Spring 2022.05.13

[Spring] 스프링 프레임워크 (Spring Framework)

Spring Framework의 등장 배경 웹사이트가 점점 커지면서 엔터프라이즈급의 서비스가 필요하게 됨에 따라 자바 진영에서는 EJB가 각광을 받았다. 하지만 EJB는 EJB스펙에 정의된 인터페이스에 따라 코드를 작성해야 하기 때문에 기존에 작성된 POJO를 변경해야 했다. 그리고 컨테이너에 배포를 해야 테스트가 가능해서 개발 속도가 느리고 배우기가 어렵고 설정해야 할 것들이 많았다. Rod Johnson의 'Expert One-on-One J2EE Development without EHB'라는 책에서 EJB를 사용하지 않고 엔터프라이즈급 서비스를 개발하는 방법을 소개하였고 이것이 스프링의 모태가 되었다. 점차 경량 프레임워크와 POJO를 사용하기 시작하였다. 이때 POJO는 Plain Old Jav..

개발/Spring 2022.05.11

[DB] 데이터베이스 정규형 1NF, 2NF, 3NF (Normal Form)

정규형이란 릴레이션이 정규화된 정도이다. 정규형은 제1 정규형 ~ 제5 정규형과 보이스/코드 정규형까지 포함하면 총 6가지 정규형이 있다. 각 정규형마다 제약조건이 존재하고 정규형의 차수가 높아질수록 요구되는 제약조건이 많아지고 엄격해진다. 즉 정규형의 차수가 높아질수록 데이터 중복이 줄어 이상 현상이 발생하지 않을 가능성이 커진다. 그렇다고 항상 릴레이션을 제5 정규형을 만족하도록 구성해야 하는가 하면 그것은 아닐 것이다. 릴레이션의 특성을 고려하여 적합한 정규형은 선택해서 적용해야 한다. 간단하게 제1 정규형부터 제3 정규형까지 알아보자. 제1 정규형 (1NF) - 릴레이션의 모든 속성의 도메인이 원자 값만으로 구성되어 있어야 한다. 제1 정규형만 만족한다면 데이터의 중복으로 인해 이상 현상이 발생할..

개발/CS 2022.05.11

[DB] 데이터베이스 정규화와 이상 현상 (Normalization & Anomaly)

정규화란 이상 현상을 제거하기 위해서 데이터베이스를 올바르게 설계해 나가는 과정이다. 여기서 이상 현상이란 불필요한 데이터 중복으로 인해 릴레이션에 대한 데이터 삽입, 수정, 삭제 연산을 할 때 발생할 수 있는 부작용이다. 이상 현상의 종류 1. 삽입 이상 데이터를 삽입하기 위해 불필요한 데이터도 함께 삽입해야 하는 문제 2. 갱신 이상 중복 튜플 중 일부만 변경하여 데이터가 불일치하게 되는 문제 3. 삭제 이상 튜플을 삭제하면 꼭 필요한 데이터까지 같이 삭제되는 데이터 손실 문제 정규화 이상 현상을 제거하기 위해서 릴레이션을 의미 있는 속성들로만 구성하기 위해 릴레이션을 분해하는 과정이다. 이때 함수적 종속성을 판단하여 정규화를 진행한다. 함수적 종속성이란 속성들 간의 관련성을 이야기하는데, 이를 이용..

개발/CS 2022.04.16

[DB] 관계 데이터 모델링

관계 데이터 모델이란 개념적 구조를 논리적 구조로 표현하는 논리적인 데이터 모델이다. 하나의 개체에 대한 데이터를 하나의 릴레이션에 저장한다. 관계 데이터 모델의 기본 용어 릴레이션 (relation) 하나의 개체에 관한 데이터를 2차원 테이블의 구조로 저장한 것 속성 (attribute) 릴레이션의 열 튜플 (tuple) 릴레이션의 행 도메인 (domain) 하나의 속성이 가질 수 있는 모든 값의 집합 속성 값을 입력, 수정할 때 적합성 판단 기준이 된다. 일반적으로 속성의 특성을 고려한 데이터 타입으로 정의한다. 널 (null) 속성 값을 아직 모르거나 해당 값이 없음을 표현한다. 차수 (degree) 릴레이션에서 속성의 전체 개수 카디널리티 (cardinality) 릴레이션에서 튜플의 전체 개수 릴..

개발/CS 2022.04.14

[DB] 개념적 데이터 모델링

데이터베이스 설계 사용자의 요구 사항을 고려하여 데이터베이스를 생성하는 과정 설계 과정 중에 오류가 발견되어 변경이 필요하면 이전 단계로 돌아가서 설계 내용을 변경할 수 있다. 1단계 : 요구 사항 분석 - 사용자의 요구 사항을 수집하고 분석하여 개발할 데이터베이스의 용도를 파악한다. (요구 사항 명세서) 2단계 : 개념적 설계 - DBMS에 독립적인 개념적 구조를 설계한다. (E-R 다이어그램) 3단계 : 논리적 설계 - DBMS에 적합한 논리적 구조를 설계한다. (릴레이션 스키마) 4단계 : 물리적 설계 - DBMS로 구현 가능한 물리적 구조를 설계한다. (물리적 스키마) 5단계 : 구현 - SQL 문을 작성하고 DBMS에서 실행하여 데이터베이스를 생성한다. 데이터 모델링 (data modeling)..

개발/CS 2022.04.12

[알고리즘] 최장 증가 수열 - LIS (Longest Increasing Subsequence)

최장 증가수열(Longest Increasing Subsequence) 문제는 왼쪽에서 오른쪽으로 나열된 수열이 있으면, 그 배열 순서를 유지하면서 크기가 점진적으로 커지면서 가장 긴 부분 수열을 추출하는 문제이다. 이때 문제마다 점진적으로 커지는 기준이 같은 수도 포함시킬 수 있으니 문제를 잘 읽고 풀어야 한다. 풀이 방법 기본적으로 최장 증가수열 문제를 풀 수 있는 방법은 크게 Brute-force 방식과 DP 방식 두 가지로 나눌 수 있다. 하지만 Brute-force 방식은 부분집합 알고리즘을 이용하여 지수 시간 복잡도를 가지기 때문에 추천할만한 방법은 아니다. 그러면 DP 방식을 통해 최장 증가수열 문제를 푸는 방법에 대해서 알아보자. Dynamic Programming n개의 숫자열 : a₁,..

개발/알고리즘 2022.04.07
728x90