분류 전체보기14 대기중인 스레드가 많으면 왜 좋지 않을까? 생성한 워커 스레드에 작업을 지시하고 호출 스레드는 그 결과를 기다리지 않고 종료하는 로직이 있었다.대략적인 구조는 아래와 같았다.Thread thread = new Thread(runnable);thread.start();return;여기서 요구 사항이 추가되어, 호출 스레드가 하나의 워커 스레드의 작업 결과를 기다렸다가 반환하는 기능이 추가되어야 했다.Thread thread = new Thread(runnable);thread.start();thread.join();return;이렇게 로직을 짰는데, 몇 초 뒤 이런 생각이 났다.어? 뭐여? 어차피 호출 스레드는 worker 작업이 끝날 때까지 블로킹되는데, 굳이 스레드를 만들 필요가 있나?이렇게 해도 되잖아?runnable.run();return;.. 2025. 3. 30. 사람을 낚는 AI 자바로 UUIDv7를 만들기 위해 라이브러리를 다운받기 전,혹시 자바 17버전에서는 라이브러리 없이 UUIDv7 생성이 가능하지 않을까? 하는 생각이 들어 AI님께 질문을 드렸다. 그랬더니,Google Gemini: 자바 17버전부터는 java.util.UUID.randomUUID()의 반환값이UUIDv7입니다!자바 17버전 이하를 사용하신다면 UUID 라이브러리를 사용하시고, 17버전 이상이라면 라이브러리는 필요 없습니다! 듣고 나서 어라? 싶었다.JDK 17부터 똑같은 메서드의 반환값이 이전 버전과 달라지면 어떤 문제가 일어날까?17로 올릴 때는 크게 문제가 안 될 것 같다.하지만 다운그레이드를 해야 하는 상황이 온다면 어떨까? 라이브러리or프레임워크 호환 문제로 JDK를 다운그레이드해야 하는 상황.. 2025. 3. 3. 클라우드 저장소 만들기 - UUID PK, 어떻게 만들어서 어떻게 저장할까? 지난 이야기클라우드 저장소의 '파일' 테이블의 PK를 UUID로 만들기로 정했다.파일 식별자는 url에 직접 사용될 예정이므로, 예측 불가능하게 만들어야 하기 때문이다.이제 '어떻게 만들어서 어떻게 저장할까?'에 대해서 생각해봤다.Java 서버에 MySQL DB를 사용하는 상황.가장 간단한 방식부터 시작해서 개선해 보자. 첫째 (프로젝트 초기 세팅 상황)자바: UUID.randomUUID().toString(); 으로 UUID 생성DB: VARCHAR에 저장첫째 방식 문제점.일단 자바 애플리케이션에서의 문제를 보자.java.util.UUID.java의 randomUUID()는 UUIDv4를 반환한다. UUIDv4는 완전 랜덤이다.그리고 우리는 이 완전히 랜덤한 문자를 DB의 PK로 사용하려 한다.DB 입.. 2025. 3. 2. 클라우드 저장소 만들기 - PK 결정, UUID vs Auto Increment RDB 테이블의 PK는 무엇으로 할까? (서비스에 MySQL DB를 사용하는 상황이다.) Auto Increment로 하는 것이 가장 간단하고, 용량 차지가 적고, 숫자타입이므로 비교연산이 빠르다.(다음 편에서 이야기하겠지만, MySQL InnoDB Secondary Index의 구성을 생각해보면PK의 크기는 가능한 한 작은 게 좋을 것이다.) 그래서 기존엔 대부분의 경우 PK로 Auto Increment를 사용했다.'대부분'에 해당하지 않는 경우는 무엇일까? DB 샤딩과 관련한 문제는 내가 잘 아는 분야가 아니라 넘어가고,내가 보기엔 '예측 가능한 식별자가 문제되는 경우' 가 Auto Increment를 사용하기에 문제가 될 수 있는 상황이다. 모두가 접근할 수 있는 게시글의 식별자는 예측 가능해도 큰.. 2025. 2. 28. 이전 1 2 3 4 다음