분류 전체보기
-
[Spring Boot] ResponseEntity란 무엇인가?Server/Spring REST API 2020. 7. 30. 05:34
먼저 REST API가 무엇인지는 아래 블로그를 먼저 잘 읽어보자. https://meetup.toast.com/posts/92 REST API 제대로 알고 사용하기 : TOAST Meetup REST API 제대로 알고 사용하기 meetup.toast.com 1. ResponseEntity란? Spring Framework에서 제공하는 클래스 중 HttpEntity라는 클래스가 존재한다. 이것은 HTTP 요청(Request) 또는 응답(Response)에 해당하는 HttpHeader와 HttpBody를 포함하는 클래스이다. public class HttpEntity { private final HttpHeaders headers; @Nullable private final T body; } public..
-
[Spring] @MVC와 DispatcherServlet에 대해서Server/Spring MVC 2020. 7. 25. 01:45
DispatcherServlet란? 스프링 MVC는 DispatcherServlet의 등장으로 web.xml의 역할이 엄청나게 축소되었다. 예전에는 서블릿을 URL로 활용하기 위해서는 반드시 web.xml에 등록하여 사용했지만 이제는 DispatcherServlet이 해당 어플리케이션으로 들어오는 요청을 모두 핸들링해준다. 기존 방식은 요청 URL당 Serlvet을 생성하고 그에맞는 Controller에게 맵핑이 되어 요청을 보내주는 코드를 하나하나 작성해야 했다. DispatcherServlet은 하나의 Servlet에서 모든 요청을 받아들여 그에 맞는 Controller로 보내주는 역할을 한다. 그리고 @MVC에서 DispatcherServlet가 담당하는 역할이 무엇인지 정리해보자. ① 클라이언트가..
-
[Spring] 스프링 AOP 개념, 프록시 기반 AOP, @AOP 정리Server/Spring 2020. 7. 24. 15:20
스프링 AOP (Aspect Oriented Programming)란? AOP는 Aspect Oriented Programming의 약자로 관점 지향 프로그래밍이라고 불린다. 그리고 흩어진 Aspect를 모듈화 할 수 있는 프로그래밍 기법이다. 위의 A, B, C 클래스에서 동일한 색깔의 선들의 의미는 클래스들에 나타나는 비슷한(중복되는) 메소드, 필드, 코드들이 나타난다는 것이다. 이러한 경우 만약 클래스 A에 주황색 부분을 수정해야 한다면 B, C 클래스들에 주황색 부분에 해당하는 곳을 찾아가 전부 코드를 수정해야 한다. (유지보수가 쉽지 않다) 이런식으로 반복되는 코드를 흩어진 관심사 (Crosscutting Concerns)라 부른다. 이러한 문제를 AOP는 Aspect를 이용해서 해결한다. 사진..
-
[Spring] @Autowired란 무엇인가?Server/Spring 2020. 7. 21. 14:54
저번 글에서 IoC 컨테이너와 빈(Bean)등록에 대해서 정리해보았다. 다시 정리하자면 의존성 주입과 빈 등록은 다른 것인데 일단 IoC 컨테이너에 빈으로 등록이 되어야 의존성 주입을 할 수 있다. 저번 글에서는 setter와 생성자를 통해서 Inversion of Control로 의존성을 주입하였는데 이번에는 Autowired라는 어노테이션을 이용해서 의존성을 주입하는 것에 대해 알아보려 한다. 1. Autowired란 필요한 의존 객체의 “타입"에 해당하는 빈을 찾아 주입한다. 생성자 setter 필드 위의 3가지의 경우에 Autowired를 사용할 수 있다. 그리고 Autowired는 기본값이 true이기 때문에 의존성 주입을 할 대상을 찾지 못한다면 애플리케이션 구동에 실패한다. 그러면 Autow..
-
[Spring] 스프링 의존성 주입(DI) 이란?Server/Spring 2020. 7. 21. 09:07
Spring 삼각형 스프링의 기반이 되는 설계 개념을 표현한 것 스프링이란 IoC와 AOP를 지원하는 경량의 컨테이너 프레임워크이다. 1. DI(Dependency Injection)이란? Inversion of Control 이라고도 하는 의존 관계 주입(Dependency Injection)이라고도 하며, 어떤 객체가 사용하는 의존 객체를 직접 만들어 사용하는게 아니라, 주입 받아 사용하는 방법이다. (new 연산자를 이용해서 객체를 생성하는 것이라고 생각하면 된다) 장난감들은 베터리가 있어야 움직일 수 있으며 즉 베터리에 의존하고 있다. 장난감들에게 베터리를 넣어주는 것을 의존성 주입이라고 생각하면 좋다. 자바코드로 예시를 들어보자 베터리의 일체형인 경우에는 생성자에서만 의존성을 주입해주는 상황이라..
-
[JavaScript] async와 await란?Server/NodeJS 2020. 6. 25. 14:22
async와 await는 자바스크립트의 비동기 처리 패턴 중 최근에 나온 문법이다. 자바스크립트는 싱글스레드 기반 언어이기 때문에 비동기 처리가 필수적이다. 비동기 처리는 결과를 예측할 수 없기 때문에 동기식의 처리가 필요하다. 대표적으로 앞에 글에서 작성했던 것처럼 promise, callback이 있다. async와 await는 기존 동기식 처리의 단점을 보완하고 가독성을 높혀주는 코드를 작성할 수 있다. 먼저 다시 한번 자바스크립트의 비동기처리에 대해서 얘기하고 가려 한다. let first = 10; let second = 20; let result = 0; function add(x, y) { return x + y; } setTimeout(() => { result = add(first, se..
-
[JavaScript] Promise란 무엇인가?Server/NodeJS 2020. 6. 25. 01:17
저번 글에서 비동기 처리와 콜백함수에 대하여 간단히라도 공부하였다. 비동기 처리란 "특정 코드의 실행이 완료될 때 까지 기다리지 않고 다음 코드를 먼저 수행하는 자바스크립트의 특성"이다. function task1() { setTimeout( () => { console.log("task1"); }, 0); } function task2() { console.log("task2"); } function task3() { console.log("task3"); } task1(); task2(); task3(); 저번 글에서 setTimeout() 함수가 비동기 처리의 대표적인 예시라고 하였다. 위의 코드를 비동기의 개념을 모르고 출력결과를 예측해보라 한다면 아마도 task1 - task2 - task3 함..
-
최장 공통 부분 수열(LCS : Longest Common Subsequence)란?Computer Science/Algorithm 2020. 6. 21. 02:49
최장 공통 부분순서란? LCS란 Longest Common Subsequence의 약자로 최장 공통 부분 문자열이다. Subsequence는 부분 수열이라는 뜻으로 연속적이지 않아도 되는 부분 문자열이다. 한마디로 두 문자열을 비교할 때 공통적으로 나타나는 부분 순서들 중 가장 긴 것이다. 예를들어 "ABCBDAB"와 "BDCABA"의 LCS를 구하면 "BCBA"가 나오게 된다. 그리고 LCS는 최적화를 해야 하는 문제이기 때문에 동적계획법(DP)를 사용하여야 가장 효율적으로 구할 수 있다. 그러면 간단하게 LCS를 구하는 예시를 보면서 어떤 느낌인지 생각해보자. 문자열 "CAT"와 "CRAB"의 LCS를 구하여 보자. 위의 c[i][j]의 배열의 의미는 예를들어 c[1][2]라면 "CAT"에서는 C까지..