본문 바로가기

분류 전체보기24

프로그래머스 - 봉인된 주문 참가 신청을 할까말까 하다 결국 안 했던 2025 프로그래머스 코드챌린지...의 2차 예선 문제입니다.문제를 보고 26진수를 떠올릴 수 있고 진수 변환 방법만 알고있다면 쉽게 해결할 수 있습니다.lv3 난이도에 비해 비교적 쉽게 나온 편에 속하는 것 같습니다. 크게 복잡하지 않아서 풀이를 간단하게 적어보면금지된 주문을 이용해 적절한 n의 위치를 설정할 때 26진수 -> 10진수 변환이재설정된 n을 다시 주문으로 변환할 때 10진수 -> 26진수 변환이 한 번씩 사용됩니다. 아래는 제출 코드입니다.import java.util.*;class Solution { char[] alp = new char[26]; Map indexes = new HashMap(); PriorityQueue.. 2025. 2. 19.
[예약 구매 프로젝트] 가상 스레드 적용 더 많은 요청을 견딜 수 있게 하기이전 포스팅에서 캐싱 전략을 사용해 동시성과 성능 개선을 거쳤지만, 여전히 남아있는 문제가 있었습니다. 바로 처리 가능한 동시 요청 수에 대한 것이었는데요. 여태까지 진행한 대부분의 테스트는 스레드 1000개 x 루프 5번을 기준으로 진행했습니다. 한 번에 5000개의 스레드를 사용하지 않은 이유는 단순했습니다. 안정성이 보장되는 요청의 개수가 1000개였기 때문이죠. 제 목표는 10000개의 요청을 한 번에 받아내는 것이었고, 2000개 요청만 진행돼도 종종 HttpHostConnectException이 발생하는 기존 성능은 목표에 한참 못 미치는 것이었습니다. 요청 처리 속도가 빨라질수록 더 많은 요청을 받아낼 수 있었기 때문에, 조금이라도 성능을 개선하고자 Java.. 2024. 8. 6.
Virtual Thread 신기술이란...Java 21부터 정식 릴리즈된 가상 스레드에 대해 알아보려고 합니다. 우아한 테크 채널의 발표 영상과 우아한 기술 블로그의 글을 많이 참조했습니다. 기술적으로 정확한 정보를 전달해 준 우아한 테크와 달리 이 글은 제 추측이 많이 가미되었습니다. 부디 정보로 받아들이기보다는 이런 경험과 생각을 한 사람이 있구나 정도로 봐주시면 감사하겠습니다. [참고 링크] 우아한 테크 세미나 - Java의 미래, 가상 스레드 우아한 기술 블로그 - Java의 미래, Virtual Thread JEP 444: Virtual Threads Java의 미래, Virtual Thread | 우아한형제들 기술블로그JDK21에 공식 feature로 추가된 Virtual Thread에 대해 알아보고, Thread, R.. 2024. 8. 5.
[예약 구매 프로젝트] Test Code 테스트 그거 어떻게 하는 건데프로젝트를 진행하면서 어려운 부분이 정말 많았지만, 그중에서도 가장 스트레스받았던 부분이 바로 테스트였습니다. 다른 건 공부해서 하면 되겠다 싶었는데 테스트는 어떻게 짜야하나 도저히 감이 잡히질 않았습니다. 하여 정리해 보는 좌충우돌 테스트코드 작성기... 테스트에 대한 정확한 정보를 정리하는 글은 아니고, 제 이해가 어떤 식으로 변화했는지에 대한 글입니다. 아래 카테고리 역시 서로 구분되는 개념으로 나눈 게 아니라 제가 인지한 순서대로 구성했습니다. Unit먼저 단위 테스트 입니다. 코드를 작은 단위(ex - 기능) 별로 분리해서 테스트하는 것을 말합니다. 쉽게 생각하면 메서드 단위의 테스트부터, 메서드 내부에 적용할 로직에 대한 테스트라고 할 수 있을 것 같습니다. 먼저 .. 2024. 7. 30.
BOJ 3653 - 영화 수집 푸는데 3일 걸렸고요. 진짜 너무너무 괴로웠고요...맨날 실버 풀다가 오랜만에 플레 함 해볼까 했다가 대가리 시원하게 박살났음니다.다시는 플레를 조심성 없이 고르지 않으리... 푸념은 여기까지 하고, 아래는 문제입니다.영화로 10만 개로 젠가 하는 미친놈이 너 말고 또 있을까 상근아?죄송합니다. 문제 볼게요. 사실 문제 유형 파악부터 굉장히 애먹었습니다. 이분 탐색인가? 하니 정렬 데이터가 아니고, 그리디인가? 하니 모든 비용이 1입니다. 최단 거리, 최소 비용 알고리즘인가? 하면 사실 적용법이 떠오르지 않았고요... 설마 트리겠어? 했는데 아니나 다를까 트리였습니다. 그것도 딱 한 번 해봤던 세그먼트 트리요... 세그먼트 트리는 구간 정보를 다룰 때 유리한 자료구조입니다. 일반적으로 구간 합, 구간 최.. 2024. 7. 30.
[예약 구매 프로젝트] 상품 조회 캐싱 추가 적용 - 성능 테스트 더 더 빠르게, 최적화는 끝이 없다지난 캐싱 전략 글에서 조회 캐싱까진 진행하지 못해서 아쉽다는 말을 포스팅 말미에 적었었지요. 이전엔 DB write 작업을 효율적으로 하기 위한 캐싱을 적용했다면, 오늘은 Read에 대한 캐싱을 적용하고 성능이 얼마나 개선되었는지 말해보려 합니다. 재고 캐싱에 대한 글은 아래 링크로! [예약 구매 프로젝트] 캐싱 전략 적용예약 구매 프로젝트지난달 말부터 대규모 동시 요청 상황을 가정한 예약 구매 프로젝트를 진행 중입니다. 예약 구매라는 말이 와닿지 않는다면 온라인 티켓팅, 한정판 도서/앨범 구매 등을 떠올dooduz.tistory.com  public ProductDto getProduct(Long productId) { String key = String.val.. 2024. 7. 27.