JWT 토큰에 대하여

면접 준비하면서 내가 JWT 토큰에 대해서 잘 모른다고 생각해서 내용 정리 JSON 웹토큰(JWT)은 온라인 네트워크에서 정보를 안전하게 통신할 때 사용하는 인터넷 표준 토큰 JWT가 제공하는 건 기밀성(confidentiality)이 아니라 무결성(integrity)입니다. 즉 "내용을 숨기는게" 아니라"내용이 위변조되지 않았음을 증명"하는 것 면접 질문 중에 A고객사는 재고 조회 API만 허용하고 B고객사는 재고 조회 API, 출고 요청 API 등 이런식으로 고객사별로 서로 다른 API 권한을 주고 싶을 때 어떻게 하냐?는 질문을 받았는데... 나는 그만.. API를 버저닝하는 걸로 답해버렸다. JWT에 IP정보를 넣을 생각까지 했으면서 왜 권한은 JWT에 포함시킬 생각을 못 했을까.. 결과적으론 ..

JVM 구조와 자바 메모리 올라가는 과정

면접에서 답변을 했으나 명확하게 답변하지 못 한 아쉬움이 있어 이번 기회에 제대로 정리하고 앞으로도 계속 볼 예정 JVM Memory스레드 공유HeapMethod Area 스레드별PC RegisterNative Method StackStack Heap : 가장 크고 new로 생성된 객체 인스턴스와 배열이 위치 (GC의 대상)Method Area : metaspace(클래스 정보), static 변수, 메서드 바이트코드, 상수 풀PC Register : 현재 실행 중인 바이트코드 주소Stack : 스레드별 생성, 지역변수, 메서드 호출 프레임Native Method Stack : JNI를 통한 네이티브 메서드 호출 시 사용 JVM은 TLAB(Thread Local Allocate Buffer)라는 개념이 ..

낙관적 락, 비관적 락, Redisson Lock

낙관적 락 : 충돌이 잘 발생하지 않을거라는 낙관적인 생각으로 락을 거는 방식으로 엄밀히 말하면 락을 걸지 않고 저장할 때 저장 대상을 조회하여 존재하는지(변경되지 않았는지) 한 번 더 체크하여 데이터 변경이 이뤄지지 않았을 때 저장하고 변경됐다면 다시 데이터를 조회하여 저장하는 방식입니다. 비관적 락 : 충돌이 자주 발생할거라고 생각하고 락을 거는 방식으로 잦은 충돌이 발생할 경우 데드락이 발생할 수 있습니다. 데드락이 발생하면 조회, 저장 등 DB의 성능이 전체적으로 느려질 수 있어 충돌이 자주 발생하는 경우엔 좋지 못한 선택입니다.

JAVA Stream API에 대한 정리

Stream은 자바 8부터 도입된 모던 자바 API로 함수형(함수를 변수처럼 전달함) 프로그래밍을 제공한다.스트림은 생성 -> 중간연산 -> 최종연산(일종의 출력)으로 구성되어있다. 따라서 최종연산을 하지 않을 경우엔 스트림으로 가공한 데이터 소스(컬렉션, 배열 등)을 리턴받을 수 없다. 또한 스트림은 한 번 사용하는 것으로 설계되었기 때문에 한 번 terminal 연산이 호출되면 스트림은 consumed되고 다시 사용할 수 없다. 사전지식 - 제네릭에 대하여Stream API에는 아래와 같은 형식이 자주 등장한다. Stream map(Function mapper); ? super T : T이거나 T의 부모 클래스 중 하나. 주로 데이터를 소비할 때(consume) 사용한다.? extends R : ..

DB 개념 및 면접 내용 정리

- Index가 어떤 경우에 타고 안 타는지 알고 있는가? * Index를 타지 않는 경우컬럼에 함수 적용, 연산자 적용SELECT * FROM USER WHERE SUBSTR(user_id,3,5) = 'uz'SELECT * FROM USER WHERE user_id + 1%연산자 leftmostprefix가 아닐 경우 시작점을 잡을 수 없어 full scan을 타게된다SELECT * FROM USER WHERE user_id like '%cu%'컬럼 타입의 암묵적 형변환 발생SELECT * FROM USER WHERE user_id IN (1,2,3)user_id가 varchar일 때 암묵적 형변환 발생