본문 바로가기

Main

(84)
[Java] Reactive Streams 란? 1. reactive streams 란? reactive streams 는 non-bloacking, backPressure 를 사용하여 비동기식 스트림 처리에 대한 표준을 제공하기 위한 라이브러리 입니다. 참조 https://www.reactive-streams.org/ https://www.reactive-streams.org/ Reactive Streams Reactive Streams is an initiative to provide a standard for asynchronous stream processing with non-blocking back pressure. This encompasses efforts aimed at runtime environments (JVM and JavaSc..
Spring Webflux 간단하게 알아보기 Webflux 란? WebFlux는 스프링 5에서 소개된 리액티브 프로그래밍을 지원하는 모듈입니다. 리액티브 프로그래밍은 비동기 및 이벤트 기반 애플리케이션을 개발하기 위한 패러다임으로, 주로 높은 확장성과 성능을 위해 사용됩니다. Spring Webflux는 Single-Thread와 Non-Blocking 방식을 사용합니다. 주요특징 webflux 의 주요 특징중 하나는 리액티브 프로그래밍입니다. WebFlux는 리액티브 프로그래밍 모델을 채택하고 있습니다. 이 모델은 비동기적이며 이벤트 기반으로 동작하여 높은 확장성과 성능을 제공합니다. 기존의 Blocking 형식의 리퀘스트는 서버에 리퀘스트가 전송될 때 마다, 서블릿 스레드가 생성되고, 워커(worker) 스레드에 작업을 위임한다. 워커 스레드가..
크론 표현식 / Cron Expressio 크론 표현식은 스케줄러를 컨트롤 할때 특정시간대를 지정하기에 유용한 표현식 입니다. 크론 표현식은 총 7개의 필드로 구성되어 있으며 공백으로 구분 됩니다. Cron 표현식 필드 [초] [분] [시간] [일] [월] [요일] [년] 필드 허용되는 값 허용되는 특수문자 초 0-59 , - * / R 분 0-59 , - * / R 시간 0-23 , - * / R 일 1-31 , - * / ? L W 월 1-12 또는 JAN-DEC , - */ 요일 0-6 또는 SUN-SAT , - / ? L # 년 1970-2099 , - * / 특수문자 쉼표 (,) 쉼표는 목록 항목을 구분합니다. ex) "MON,WED,FRI" 월요일, 수요일, 금요일을 뜻함 하이픈 (-) 범위를 정의합니다. ex) 2013-2023 20..
Spring Boot + Spring Security 로 JWT 로그인 방식 구현 목차 1. 개요 2. 개발환경 3. 전체 구조 4. 라이브러리 및 properties 설정 5. 코드 구현 6. 테스트 개요 사이드 프로젝트를 Rest API 로 설계하게 되어 로그인 방식을 고민하던 중 토큰 인증 방식을 알게 되었고, JWT 를 이용하여 프론트엔드와 백엔드 사이 인증을 구현해 보았습니다. 여기에서는 JWT에 관한 내용은 다루지 않고, 오직 구현에만 집중적으로 다룰 것입니다. 전체적인 흐름은 아래와 같습니다. 1. 회원가입 2. 로그인 -> 토큰 발행 3. 토큰을 이용하여 권한 확인 개발환경 언어 : JDK 17 프레임워크 : Spring Boot 3.1.3 빌드툴 : Gradle 인증/인가 : Spring Security 6.1.3 데이터베이스 : Postgresql & JPA API ..
JWT ( Json Web Token ) 이란? 목차 1. JWT 란? 2. JWT 구성요소 3. JWT 장단점 4. JWT 인증 방식 5. Access Token / Refresh Token JWT 란? JWT는 "JSON Web Token"의 약자로, 웹 및 애플리케이션 간에 정보를 안전하게 전송하기 위한 표준화된 방법 중 하나입니다. JWT는 클레임(claim) 기반의 토큰이며, 토큰 안에는 JSON 형식으로 데이터가 포함되어 있습니다. 이 토큰은 서버와 클라이언트 간의 정보 교환에 사용되며, 주로 사용자 인증 및 권한 부여에 활용됩니다. JWT 구조 JWT 는 Header, Payload, Signature 세 부분으로 구성되어있으며, 각 부분은 . 을 기준으로 나누어져 있으며, Json 형태로 Base64 URL 인코딩 되어 있습니다. Enc..
Vue 3 bootstrap 적용하기 부트스트랩 설치 npm install bootstrap-vue-3 설치 후 main.js 에 부트스트랩을 등록합니다. import { createApp } from 'vue' import App from './App.vue' //부트스트랩 import BootstrapVue3 from 'bootstrap-vue-3' import 'bootstrap/dist/css/bootstrap.css' import 'bootstrap-vue-3/dist/bootstrap-vue-3.css' const app = createApp(App); app.use(BootstrapVue3); app.mount('#app'); 세팅완료 부트스트랩 class 또는 vue 전용 태그를 사용하시면 됩니다!.
./gradlew bootjar 사용 시 permission denied 해결 방 git 에서 clone 후 gradlew를 사용하여 build 시 permission 오류가 발생하는 원인은 Window 에서 파일을 생성 한 후 리눅스 환경에서 실행하려고 할때 일 확률이 높습니다. 왜냐하면 Window 환경에서 파일 생성 시 파일 권한은 644로 설정되기 때문입니다. 아래 명령어를 통해 gradlew 의 권한을 확인 할 수 있습니다. $ git ls-tree HEAD 이처럼 644로 권한이 설정되어있을 경우 권한을 744로 수정하시면 실행 시킬 수 있습니다. $ git update-index --add --chmod=+x gradlew 변경후 git 에 push 후 다시 확인해보시면 755 로 변경된 것을 보실 수 있습니다. 이제 다시 ./gradlew bootjar 를 입력하시면 정..
Docker 컨테이너 이름 변경 docker 컨테이너를 실행할때 --name 속성을 지정해주지 않으면 랜덤한 값으로 이름이 지정됩니다. 해당 사진은 docker 로 postgresql 을 실행했을때의 모습입니다. --name 을 지정해주지 않아서 NAMES 에 임의의 값인 vigorous_faraday 라는 이름이 붙었습니다. 이 이름을 변경해보도록 하겠습니다. sudo docekr rename [old_name] [new_name] docker name 은 고유값이기 때문에 중복이 불가능합니다!. 저는 vigorous_faraday 를 postgres 로 변경해보도록 하겠습니다. sudo docker rename vigorous_faraday postgres 변경된 것을 보실 수 있습니다.