생각하기 95

Spring Webflux - Reactive Streams API 만들기[1] 프로젝트 생성

개요 지난 포스팅에선 Webflux의 기본개념과 Reactive Streams 의 이론에 대해 알아보았습니다. 이번엔 Weblfux를 사용해 비동기 API를 만들어보고 추후 시큐리티로 API KEY 방식의 인증을 구현해보겠습니다. 요샌 보통 JWT를 쓰지만, JWT는 예제도 많고 API KEY 방식도 아직 쓰이는곳이 많아서 선정했습니다. 먼저 예제 프로젝트를 생성해보겠습니다. JAVA11 SpringBoot 2.7.4 Gradle R2DBC Mysql 큰 항목은 이렇게 설정했으며, Gradle dependencies 에 r2dbc-mysql connection은 따로 입력해주세요. 기존 start.spring.io 에 있는 mysql connection은 연결이 안되므로 따로 디펜던시를 설정합니다. bu..

카테고리 없음 2022.10.19

Spring Webflux - Reactive Streams API 만들기[0]

개요 안녕하세요 이번에 Spring Webflux를 이용한 API를 만들면서 배웠던 것들을 정리해보려고 합니다. 처음 프로젝트를 만들기부터 심상치않았던 만큼, Java 와 Spring webflux 를 이용해 어떻게 개발했는지 정리해보겠습니다. Spring Webflux - Reactive Streams란? 먼저 Reactive Streams 란게 무엇인지부터 찾아보겠습니다. Reactive Streams 의 공식문서에서 소개된 문장입니다. 논블로킹(non-blocking), 백 프레셔(back pressure)를 이용한 비동기(asynchronous) 데이터처리의 표준 기존의 처리방식은 데이터 처리요청을 받으면 모든 데이터를 처리한 후 메모리에 적재되어야만 응답메세지를 받았습니다. 하지만 Stream ..

Programming/Spring 2022.10.03

API 문서 만들기 - OpenAPI 3.0 적용하기

OpenAPI 란? OpenAPI Specification 3.0 ( OAS ) 라고도 하며 이전 2.0버전까지는 Swagger 라는 도구로 더 유명하다. 아직까지도 Swagger (스웨거) 3 라거나 하는 경우도 종종 있는거같다. OpenAPI 는 RESTFul API를 명세화하거나 문서화 하기 위한 도구로 개발되었으며, 최소한의 구현으로 한눈에 API에 필요한 내용을 파악하기 위해 만들어지고 사용되고 있다. 즉, API를 문서화하기 위한 도구 라고 이해하는 것이 맞다. 그렇다면 왜 이런 도구가 필요해진걸까? 조금만 생각해보자면 현업에서 다양한 사람들과, 여러 클라이언트들에게 내가 혹은 우리회사가 만든 api 를 제공하거나 개발해야하는 경우가 많다. 이때, 이 api를 한눈에 보여주고 필요한 사항을 요..

Programming/Spring 2022.08.31

JAVA - 숫자카드 (백준, 10815)

문제 문제의 요구사항은 결국 길이 (갯수)N 의 카드와 길이 (갯수)M 의 카드를 비교해 일치하는 index 는 1 아니면 0을 출력한다. 맨처음엔 이분탐색 문제인지도 모르고 그냥 단순히 완전탐색으로 찾으려고만 했다.. import java.util.*; public class main { public void card() { List aList = new ArrayList(); List bList = new ArrayList(); String result = ""; BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); int n = Integer.parseInt(br.readLine()); for(int i=0; i

알고리즘 공부 - 재귀함수 2편(하노이의 탑, 재귀 제거)

이번 포스팅에선 지난 재귀함수 1편에 이어서 공부해보겠습니다! 재귀함수를 제거하거나 비재귀적으로 표현하려면 어떻게 해야할까요? 꼬리 재귀의 제거 메서드의 꼬리에서 재귀 호출하는 메서드 recur(n-2)라는 말은 '인자로 n-2를 전달하여 recur 메서드를 호출한다.' 는 의미 입니다. 따라서 이 호출은 다음과 같이 바꿀 수 있습니다. n 의 값을 n - 2로 업데이트하고 메서드의 시작 지점으로 돌아갑니다. static void recur(int n) { while (n > 0) { recur(n - 1); System.out.println(n); n = n-2; } } 이렇게 하면 메서드의 끝에서 실행하는 꼬리 재귀(tail recursion) 는 쉽게 제거할 수 있습니다. 일반 재귀의 제거 그런데 ..

알고리즘 공부 - 재귀함수 1편

재귀함수란? 여기서 재귀(recursive)는 어떤 사건이 자기 자신을 포함한 채로 다시 자기 자신을 사용하여 정의될 때, 즉 자기 스스로를 재사용할 때 라고 편하게 줄일 수 있을 거 같습니다. 익숙한 현상을 이야기 해보자면 엘리베이터 속 거울안에 거울같은 느낌! 코드로 간단하게 구현해보겠습니다. class Factorial { // 재귀함수 factorial 구현해보기 static int factorial(int n) { if(n > 0) { return n * factorial(n - 1); } else { return 1; } } public static void main(String[] args) { Scanner sc = new Scanner(System.in); int x = sc.nextIn..

알고리즘 공부 - 스택과 큐 ( Stack & Queue )

https://goodthinking.tistory.com/53?category=965455 자료구조 - Stack 를 간단한 코드로 파악하기 개념 스택(Stack)이란? 데이터를 저장하기 위한 자료구조중 하나로 데이터를 일시적으로 저장하기 위해 고안된 개념이며, 가장 나중에 넣은 데이터를 가장 먼저 꺼내는 방식으로 진행됩니다. 데 goodthinking.tistory.com https://goodthinking.tistory.com/55?category=965455 자료구조 - 큐(queue), 간단한 코드로 파악하기 개념 큐(queue), 역시 스택과 비슷하게 데이터를 일시적으로 쌓아놓기 위한 자료구조입니다. 다만 차이점은 가장 먼저 넣은 데이터를 가장 먼저 꺼내는 선입선출(FIFO, First In..

알고리즘 공부 - 검색부터 다시 해보자

개요 나는 현재 개발자로 솔루션회사에서 근무중인 주니어개발자이다. JAVA 언어가 베이스인 회사에서 자바와 스프링 프레임워크로 코딩하는 것은 당연하지만, 일을 할수록 공부하는 시간이 줄어들고 알고리즘등 혹시 나중에 코딩테스트가 필요할텐데 싶은 생각에 앞으로 꾸준히 문제를 풀어야겠다고 생각이 들어 문법은 건너뛰고 검색 알고리즘부터 재귀, 큐, 스택등으로 개념정리부터 해보려고 한다. 열심히 정리해보자! 선형검색(linear search) 간단하게 생각하자면 선형 = 일자로 쭉 늘어진 것 따위 일것이다. 그렇게 key 와 일치하는 값을 찾기위해 하나씩 검색하면서 진행하는 알고리즘으로 보통 for문이나 switch문으로 loop를 돌려서 index 를 증가시키며 찾는 것이다. 가장 단순한 알고리즘으로 구현하기도..

Spring - WebClient 사용해보기

개요 SpringBoot, Spring 환경에서 WebClient 를 사용하여 API Request 를 하는 클라이언트 프로젝트를 만들어보기. 서버와 API 통신을 위해 필요한게 무엇인지 알고 WebClient 의 기능사용해보기. Why ? WebClient 란? Spring 5.0에서 추가된 interface 이다. 이전 버전에서는 클라이언트로 RestTemplate 를 사용했으나, 비동기식 통신의 필요성으로 인해 WebClient 가 나오게 되었고, 현재 버전에서는 WebClient로 개발하는게 권장되는 상황이다. 그렇다면 RestTemplate 와 WebClient 가 어떤차이점이 있을까 ? RestTemplate 와 WebClient 의 차이점을 보기쉽고 간편하게 볼 수 있도록 표로 비교해보자 R..

Programming/Spring 2022.05.16

GO - unresolved dependency, GOPATH error

고랭(GO)으로 개발하는 고퍼분들이라면 한번쯤 경험해봤을 겁니다. 왜? 특히 아직 고랭이 익숙하지 않은 분들이면 더욱 그렇죠.. 바로 GOPATH 혹은, unresolved dependency 로 빨간줄이 뜨며 go.mod 파일에 dependency 들이 load가 안된다던가, go 파일들의 import 가 적용이 안된다던가 하는 문제들이죠 보통 이런 문제들은 해당 프로젝트를 새로 시작하거나, Git 같은 version control tool 에서 import 하면서 생기는 문제입니다. 원인은? 간략하게 원인만 말하자면 해당 프로젝트는 내부에 go.mod 파일로 인해 모듈화되어 GOPATH가 전역 PATH가 아닌 지역 PATH이기 때문에 이에 ide 를 설정해야하지만, 보통 java등 타언어로 개발하던 ..

Programming/GO 2022.05.15