Keep walking 👩🏻‍💻 465

RestTemplate

RestTemplate이란? RestTemplate restTemplate = new RestTemplate(); 간편하게 Rest방식의 API를 호출할 수 있는 Spring 내장 클래스다. Spring 3.0부터 지원이 되며, Json, Xml 응답을 모두 받을 수 있다. HTTP 서버와의 통신 방법 Client와 Server로 나누어서 먼저 프로젝트를 생성한다. 참고로 Server는 Port번호를 8080으로, Client는 9090으로 설정했다. 아래 방법들은 모두 HTTP 메소드 중 GET을 기반으로 동작한다. (1) Server의 ServerApiController @RestController @RequestMapping("/api/server") public class ServerApiCont..

Spring과 비동기 처리

동기와 비동기의 차이 먼저 동기와 비동기의 차이를 간단히 이해하자. 동기는 직렬형 작업 처리 모델이다. 작업은 순차적으로 시행되며 하나의 작업이 끝나기까지 다음 작업은 대기하게 된다. 예를 들어 DB에 SQL문을 날려서 데이터를 받아올 때, 데이터를 받아오기까지 다른 작업들은 수행되지 않는다. 비동기는 병렬형 작업 처리 모델입니다. 작업이 종료되지 않은 상태라도 대기하지 않고 다음 작업을 수행한다. 예를 들어 JavaScript의 DOM 이벤트와 타이머 함수, Ajax 요청은 비동기 처리 모델로 동작한다. 디테일한 설명은 이 글을 참고하면 확인할 수 있다. 동기(Syncronous)와 비동기(Asynchronous) 처리, 그리고 Callback 동기(Syncronous)와 비동기(Asynchronous..

Spring과 Filter - Interceptor (2)

이 글은 Spring과 Filter - Interceptor(1)과 이어진다. Spring과 Filter - Interceptor (1) Filter - Interceptor, 쉽게 이해해보자 웹을 개발하다보면 공통적으로 처리해야 할 업무들이 많다. 예를 들어 로그인 관련(세션) 처리, 권한 체크, PC와 모바일 웹의 분기 처리, 페이지 인코딩 등등이 astrid-dm.tistory.com 개념을 좀 더 쉽게 이해해보자 요청에 대한 작업 전 / 후에서 가로챈다고 보면 된다. 필터는 스프링 컨텍스트 외부에 존재하며 스프링과 무관한 자원에 대해 동작한다. 하지만 인터셉터는 스프링의 DispatcherServlet이 컨트롤러를 호출하기 전 / 후로 끼어들기 때문에 스프링 Context 내부에서 Controll..

SpringBoo와 Filter, 그리고 Interceptor (1)

쉽게 이해해보자 - Filter - Interceptor - AOP 웹을 개발하다보면 공통적으로 처리해야 할 업무들이 많다. 예를 들어 로그인 관련(세션) 처리, 권한 체크, PC와 모바일 웹의 분기 처리, 페이지 인코딩 등등이 있다. 이러한 공통 업무들은 하나의 페이지가 아니라 여러 페이지에 공통적으로 적용된다. 공통 업무들의 코드를 모든 페이지에 적용한다면 중복 코드가 많아지게 되고 프로젝트 단위가 커질수록 서버에 부하를 줄 수 있으며, 소스 관리조차 어려워지게 된다. 때문에 공통 코드 부분은 따로 빼서 관리하는 것이 좋다. 이러한 공통 업무를 프로그램 흐름의 앞, 중간, 뒤에 추가해서 자동으로 처리할 수 있는 방법이 크게 3가지가 있다. Filter Interceptor AOP 위 3가지는 각각 다..

백준 22233번 가희와 키워드 (C++)

문제 링크 : https://www.acmicpc.net/problem/22233 22233번: 가희와 키워드 1번째 글을 쓰고 난 후에, 메모장에 있는 키워드는 set, floyd, os가 됩니다. 2번째 글을 쓰고 난 후에, 메모장에 있는 키워드는 set, os가 됩니다. map은 1번째 글과 2번째 글에 중복으로 등장하였음을 www.acmicpc.net 문제 요약 1. n개의 문자 키워드와 m개의 테스트 케이스가 주어집니다. (1 m; for(int i=0; i> s; st.insert(s); } while(m--){ cin >> temp; int pos = 0; while(pos

백준 14658번 하늘에서 별똥별이 빗발친다 (C++)

문제 링크 : https://www.acmicpc.net/problem/14658 14658번: 하늘에서 별똥별이 빗발친다 첫째 줄에 네 정수 N, M, L, K가 주어진다. (1 ≤ N, M ≤ 500,000, 1 ≤ L ≤ 100,000, 1 ≤ K ≤ 100) N은 별똥별이 떨어지는 구역의 가로길이, M은 세로길이, L은 트램펄린의 한 변의 길이, K는 별똥별의 수를 www.acmicpc.net 문제 요약 1. n*m의 배열에는 k개의 별똥별이 떨어집니다. (1 l >> k; int y,x,ny,nx,ans=0,cnt=0; vector v(k); for(int i=0; i> x >> y; v[i] = {x,y}; } 2. 별똥별의 갯수만큼 3중 for문을 돌립니다. for(int i=0; i> l ..

Spring Boot와 Validation (1)

Validation이란? 데이터가 부정확(불완전)한지 확인하기 위해서 사용되는 처리이다. 예를들어 Java에서 null값에 대해서 접근하려고 할 때 null pointer exception이 발생 함으로, 이러한 부분을 방지하기 위해 미리 검증하는 과정을 Validation이라고 한다. 단순하게 아래와 같은 코드들도 Validation이라고 할 수 있다. public void run(String account, String pw){ if(account==null||pw==null) return; } 하지만 이렇게 if-else문으로 검증을 하다가는 반복되는 부분이 많아지며, 따로 메소드를 빼더라도 반복문이 많아지는 것은 변함이 없다. SpringBoot에서는 Annotation을 기반으로 Validati..

AOP (Aspect Oriented Programming)

AOP란? Aspect Oriented Programming의 약자로, 관점지향 프로그래밍이라고 불린다. 여러 객체에 공통으로 적용할 수 있는 기능을 구분함으로써 재사용을 높여주는 프로그래밍 기법이다. AOP는 핵심 기능과 공통 기능의 구현을 분리함으로써 핵심 기능을 구현한 코드의 수정 없이 공통 기능을 적용할 수 있게 만들어준다. 다시 말해 핵심 기능의 코드를 수정하지 않으면서 공통 기능의 구현을 추가하는 것이 AOP이다. * 횡단관심 : 로깅, 보안, 트랜젝션 등 다수의 모듈에서 반복적으로 나타나는 부분 예를 들어 C사는 JSON 규격으로 통신을 하는데, A사와 B사는 UTF-8규격을 맞추지 못한다고 가정해보자. 이럴경우 A사와 B사에 C사의 코드를 그대로 적용하면 한글이 깨져서 나올것이다. 이를 해..

클래스, 추상클래스, 그리고 인터페이스

일반 클래스와 추상 클래스 차이 일반 클래스 추상 클래스 클래스 앞에 abstract 명령어가 안붙음 abstract 명령어가 붙음 클래스 내부에 abstract 함수 생성 불가능 abstract 함수 생성 가능 객체 생성이 가능 불가능 공통적으로 부모를 1개만 둘 수 있다. [일반 클래스] class A { public A () { } // 생성자 메소드 abstract public void f_a() { } // 에러 발생 public void f_b() { System.out.println("class A f_a"); } } [추상 클래스] abstract class B { public B () { } // 생성자 메소드 abstract void f_a(); // 추상메소드 사용 가능 > 자식클래스..