profile
자기주도형 개발자
post-thumbnail

[JWT] 세션 의존성 제거하기 - 커스텀 어노테이션 활용

토큰 기반 인증 방식으로 소셜 로그인 및 회원가입 기능을 구현했다.그런데 구현하고 보니, 토큰을 세션에 저장하고 세션에서 해당 토큰을 꺼내서현재 로그인한 사용자를 가져오도록 구현을 했다.세션 기반 인증방식의 문제점을 해결하기 위해 토큰 기반 인증방식이 등장했는데, 두

2022년 6월 6일
·
0개의 댓글
post-thumbnail

[AWS] EC2에 HTTPS 적용하기

앱에서 소셜 로그인 기능을 제공하고자 한다. 그런데 IOS 앱에서 소셜 로그인 기능을 사용하기 위해서는 애플 로그인 필수로 들어가야, 다른 소셜 로그인(카카오, 구글 등)을 제공할 수 있다.문제는 문제를 낳고.. 애플 로그인 기능을 구현하기 위해서는 HTTPS 프로토콜

2022년 5월 29일
·
0개의 댓글
post-thumbnail

JWT란? JWT , Session, Cookie 비교

세션기반 인증 방식과 토큰기반 인증 방식 모두 구현해 봤지만, 두 인증방식 모두 왜 쓰는지에 대해서는 모른채 구현했다. 적어도 이런 개념들이 왜 등장했고, 각 어떤 장단점이 있는지 알고 쓰기 위해 글을 쓴다.그리고, 한 면접에서 JWT를 사용할 때 Refresh Tok

2022년 5월 14일
·
0개의 댓글
post-thumbnail

MySQL 해시 조인(Hash join) 알고리즘

0. 이 글을 쓰는 이유 > MySQL 5.xx 버전과 8.xx 버전은 많은게 바뀌었다. 8.xx 버전으로 가면서 대표적으로 변경된 점들 중 하나를 말해보라고 하면, 여러가지가 있겠지만 해시 조인을 포함할 수 있을 것 같다. 해시조인을 이야기 하기 전에, NL과 블록

2022년 5월 4일
·
0개의 댓글
post-thumbnail

Nginx란? (내부 동작 구조 및 성능에 대하여)

0. 이 글을 쓰는 이유 > 회사에서 Nginx 관련 이슈가 생겼고, 이를 해결하기 위한 방법은 알게되었지만, 내부적으로 자세한 이유는 몰랐다.그냥 그렇구나 하고 넘어갔기 때문에, Nginx가 무엇인지, 왜 등장했는지, 어떻게 동작하는지, 다른 모델과 어떤 차이점이

2022년 4월 22일
·
0개의 댓글
post-thumbnail

MySQL Double Write Buffer

사진에서처럼 하나의 세그먼트는 여러 익스텐트를 가지고, 각 익스텐트는 여러개의 블록으로 이루어져 있다.여기서 블록은 사용자가 입력한 데이터(레코드)가 실제로 저장되는 공간으로 데이터를 읽고 쓰는 단위이다. 즉 DB에서 하나의 row 이다.오라클에서는 블록이라는 단위로

2022년 4월 5일
·
0개의 댓글
post-thumbnail

MySQL MVCC란?

Lock이란 데이터베이스의 일관성과 무결성을 유지하기 위해 트랜잭션의 순차적 진행을 보장할 수 있는 직렬화 장치 개념이다. 여러 종류의 Lock이 존재하지만, MVCC 개념을 이해하는데 있어 필요한 필요한 공유락과, 베타적락만 간단히 설명한다.데이터를 읽을 때 사용한다

2022년 4월 4일
·
0개의 댓글
post-thumbnail

Java8 Optional이란?

1. Optional 1-1. 탄생 배경 - 왜? 자바8 이전에는 메서드가 값을 반환할 수 없는 상황인경우 두 가지 선택지가 존재했다. 예외 던지기 null 반환하기 예외를 던지는 경우에는 스택 추적 전체를 캡처하는 비용문제가 있다. null을 반환

2022년 1월 26일
·
0개의 댓글
post-thumbnail

Spring AOP를 활용해 로깅하기

이론적으로 학습한 프록시, Spring AOP를 프로젝트에 적용해보자.homeController UserAspect Aspect 클래스를 만들고 빈으로 등록한다.@Around 어노테이션으로 포인트 컷을 정의했다. \- 접근제어자 → 생략 \- 반환 타입

2022년 1월 5일
·
0개의 댓글
post-thumbnail

[Spring] DI(Dependency Injection) 정리

Dependeny Injection(DI)이란 의존관계 주입이라고 한다. 객체를 직접 생성하지 않고 외부에서 생성한 후 주입시켜준다.생성자 주입을 제외한 나머지 DI 방법들의 순서는 다음과 같다.스프링 컨테이너에 스프링 빈 모두 등록빈 관계 설정(연관관계 주입)생성자

2021년 12월 30일
·
0개의 댓글

리팩토링 - Stream API 사용

무조건적으로 Stream을 사용하는건 좋지않다. 관련 내용은 아래 링크들을 참고하고반복문을 찾아서 변환할만한게 있는지 찾아보고 변환하는게 더 낫다면 리팩토링 해보자.Stream이란 - Java Stream API란? 이펙티브 자바 - Item 45 스트림은 주의해서

2021년 12월 26일
·
0개의 댓글
post-thumbnail

Java Stream API란?

자바8부터 추가된 API로 스트림은 데이터 소스를 추상화하고 데이터를 다루는데 자주 사용되는 메서드들을 정의해 놓았다. 데이터 소스를 추상화 한다는 것은 데이터 소스 즉 타입이 무엇이든간에 같은 방식으로 다룰 수 있고 코드의 재사용성이 높아진다는 것을 의미한다.기존에

2021년 12월 26일
·
0개의 댓글
post-thumbnail

log4j 공격 시도 발견 후 패치

어느 날 로그를 확인해보니 이런 로그들이 찍혀있었다. JNDI..? 혹시..?공격시도하다가 실패한건지 모르겠지만 아무튼 인스턴스가 채굴기로 변신해서 요금폭탄 맞을지 모르니 취약점을 패치하자.스프링 부트 스타터 log4j2를 사용하고 있었고 버전 확인해보니 2.15버전을

2021년 12월 18일
·
0개의 댓글
post-thumbnail

리팩토링 - 불필요한 객체 생성을 피하라

이펙티브 자바 ITEM6 에서 "불필요한 객체 생성을 피하라" 라는 주제를 다룬다.자세한 내용은 링크를 참고하자.클라이언트에서 입력받는 데이터에 대한 검증을 처리하는 과정에서 해당 아이템과연관된 내용이 있어 적용해보고자 했다.쿠폰의 개수에 대한 값이나 아예 입력하지 않

2021년 12월 16일
·
0개의 댓글
post-thumbnail

리팩토링 - 매직넘버 제거 (매직넘버란?)

상수로 선언하지 않는 숫자, 문자열을 매직넘버 또는 매직리터럴 이라고 한다.상수로 선언되어 있지 않은 단순 리터럴값은 코드를 작성한 사람이 아니고서 그 의미를 파악하기 힘들다.클라이언트에서 보내주는 값(userPwCheckDto.getSelectFunction)에 따라

2021년 12월 15일
·
0개의 댓글
post-thumbnail

리팩토링 - 엔티티 생성패턴

정적 팩토리 메서드 패턴을 이용하면 여러 이점들을 얻을 수 있다. 비즈니스 로직에서 엔티티를 생성하는 로직이 쓸데없이 비중을 많이 차지해 코드의 가독성을 저하시킨다고 생각했다.단순히 User를 생성 후 이메일을 전송하는 간단한 로직이지만만약 로직이 많은경우 가독성이 저

2021년 12월 14일
·
0개의 댓글

엔티티에 롬복 활용하기

Java static code analysis: The members of an interface or class declaration should appear in a pre-defined order오라클에서 정의한 클래스의 멤버들 선언 순서는 아래와 같다.클래스 변

2021년 12월 13일
·
0개의 댓글
post-thumbnail

자바 예외처리

프로그램 코드에 의해서 수습될 수 없는 심각한 오류이며 크게 세 가지로 나눌 수 있다.컴파일 에러컴파일 시에 발생하는 에러런타임 에러실행 시에 발생하는 에러논리적 에러실행은 되지만, 의도와 다르게 동작하는 상황프로그램 코드에 의해서 수습될 수 있는 비교적 약한 오류에러

2021년 12월 11일
·
0개의 댓글

리팩토링 - REST API

처음 프로젝트를 시작했을 때 REST API 라는게 존재하는지 몰랐다.그냥 URL은 경로일뿐이라고 생각했다 그래서 REST API 형태의 URL로 리팩토링 해보고자 한다.물론 URL을 REST API 형태로 한다고해서 REST API는 아니다.자세한 내용은 아래 링크를

2021년 12월 10일
·
0개의 댓글
post-thumbnail

자바 데이터 타입, 변수 그리고 배열

프리미티브 타입(Primitive Type)은 기본 자료형과 같은 말이다. 원시타입이라고도 한다.값을 할당할 때 변수의 주소값에 값이 그 자체로 저장되는 데이터 타입이다.Runtime Data Area에서 Stack 영역에 값이 저장된다.영어로 표현해서 헷갈릴 수 있는

2021년 12월 10일
·
0개의 댓글