전체 글

· Java
JVM(Java Virtual Machine) 자바 가상 머신 JVM(Java Virtual Machine)은 자바 프로그램 실행환경을 만들어 주는 소프트웨어입니다. OS에 종속받지 않고 CPU가 Java를 인식하고 실행할 수 있게 하는 가상 컴퓨터라고 말합니다. Java Compiler가 .java 파일을 .class 파일 즉, 바이트 코드(JVM이 이해하는 명령어 집합)로 만들면 이 코드가 자바 가상 머신 환경에서 실행되면서 OS에 종속받지 않게 됩니다. 언어 마다 사용할 수 있는 방법은 다르겠지만 Java 뿐만 아니라 .class 파일을 통해서 JVM를 사용하는 언어들이 있습니다. Java Compiler의 javac 명령을 통해서 .class 파일을 생성할 수 있습니다. .class 파일을 ja..
· Java
var가 타입을 추론해 준다는 것은 알고 있었지만 부정적인 의견들이 많아 정적 언어인 자바에서는 자주 안 쓰는구나 하고 말았었는데 최근 코드 리뷰를 받으면서 이야기가 나오게 되었고 알고 안 쓰는 거랑 잘 모르는데 안 쓰는 건 차이가 있다고 생각이 들어 정리해 보고자 작성하게 되었습니다.지역 변수 타입 추론Java 10부터 지역 변수에 대한 Type Inference가 가능한 var 키워드를 제공해줍니다. var는 변수를 선언과 초기화가 동시에 일어날 때 타입을 생략할 수 있으며, 컴파일러가 타입을 추론합니다. 문자열 변수에 정수를 할당하니 컴파일 에러가 나오는것을 볼 수 있었습니다.컴파일 시점에 var에 들어갈 타입을 추론하고 바이트 코드에는 추론된 타입이 들어가기 때문에 런타임 오버헤드가 생기지 않습..
풀 (Pool)이란? 컴퓨터 과학에서 풀은 사용할 때 획득한 메모리와 나중에 해제되는 메모리가 아닌, 사용할 준비가 된 메모리에 유지되는 리소스 모음이다. 이미 사용할 준비가 된 자원을 메모리 위에 일정량 미리 생성해둔 자원의 집합 클라이언트가 리소스 사용을 완료하면 해제 및 손실되지 않고 풀로 반환된다. 들어가기 전에 Connection Pool과 Thread Pool은 다르다는 점을 알고 가셨으면 좋겠습니다. 더보기 애플리케이션에 대한 모든 요청이 DB에 접근하는 것은 아니기 때문에 WAS의 Thread는 Connection Pool의 갯수보다 여유있게 설정하는것이 좋다. Connection Pool은 DB와 커넥션을 맺기 위한 드라이버를 로드하고 커넥션 객체를 생성하는 등의 과정에서 발생하는 비용..
DeadLock(교착 상태) 이란? 두 개 이상의 프로세스나 스레드가 상대방의 작업이 끝나기 만을 무한히 기다리고 있다가 서로 자원을 얻지 못해서 다음 처리를 하지 못하는 상태를 말한다. (시스템적으로 한정된 자원을 여러 곳에서 사용하려고 할 때 발생하게 된다.) 더보기 자원 - (하드웨어, 소프트웨어 등을 포함하는 개념) I/O 디바이스, CPU cycle, memory space, semaphore 등 Process1 과 Process2가 동시에 Resource1과 Resource2를 모두 얻어야 하는 상황이라고 생각하면 Process1이 Resource1을 얻은 경우 Process2는 Resource1을 얻을 수 없고 Process2가 Resource2를 가지고 있어서 Process1은 Resour..
사용자가 로그인하고 자동으로 바로 토큰을 재발급 할 일은 없겠지만 테스트 코드를 작성하면서 문제가 있었다. 아래 메서드를 통해서 refresh 토큰이 존재할 경우는 update query를 날려주고 존재하지 않으면 새로 insert query를 날려주기 위해서 변경 감지를 사용하지 않았다. Refresh Token으로 Access Token을 발급시 Refresh Token도 재발급 했다. 순조롭게 테스트를 작성했는데 문제가 발생했다. when절 (authService에 reissueToken 메서드) 쿼리 설명 select-query 2개는 업데이트를 하기 전에 token을 통해서 유저를 조회하는 로직이 있기 때문에 발생했다. one-to-one 관계로 refresh token ➡️ user로 단방향으..
uhanuu
몸뚱아리부터 마음가짐까지