물음을 이뤄보자

more

ConcurrentHashMap 알고쓰자

Thread-safe 하고, 성능도 고려된 HashMap1) 키-값 삽입, 조회, 삭제 2) 조건부 연산 (putIfAbsent, computeIfAbsent, merge)3) 병렬 루프 처리 (forEach, reduce) * Thread-safe: 멀티스레드 환경에서 코드나 객체가 동시에 접근돼도 문제가 발생하지 않도록 설계된 상태 ? 왜 ConcurrentHashMap 은 Thread-safe 할까 ?내부 구조 및 동시성 제어 기법1. CAS (Compare-And-Swap) + Synchronized 최소화 (Java 8 이후)Java 8부터는 Segment 대신 버킷 단위 락 + CAS 연산을 도입해 더 세밀한 락 제어가 가능해졌습니다.CAS 연산: 특정 조건이 만족될 때만 값을 변경하는 락 ..

CS 정리 2025.06.11 1

Kafka 대체 언제 써야할까(feat. MSA)

Kafka 특성Kafka는 단순한 메시지 큐가 아니라, 고성능 이벤트 스트리밍 플랫폼로그 기반 저장소: 메시지가 삭제되지 않고 디스크에 유지되어, 과거 데이터를 재처리할 수 있습니다.비동기 Pub/Sub 모델: 생산자와 소비자가 직접 연결되지 않아 느슨한 결합 구조를 유지합니다.수평 확장성: 파티션 단위로 데이터를 분산 저장하며, 고성능 처리에 적합합니다.복수 구독자 허용: 하나의 이벤트를 여러 시스템이 동시에 처리할 수 있습니다.재처리 가능성: 오프셋 관리만 잘하면 과거 이벤트를 반복 소비할 수 있습니다. REST API와 Kafka의 차이점두 방식은 모두 모듈 간 통신에 사용되지만, 근본적으로 지향하는 구조와 사용 방식이 다릅니다. Rest apiKafka통신 방식요청/응답 (동기)이벤트 스트리밍 (..

Kafka 2025.06.09 0

기사의 현명한 아내: 불가능한 여정 찾기(java 코드포함 풀이)

문제 정보 데블스플랜2 기사의 여정, 근데 코딩테스트 곁들인..넷플릭스에서 데블스플랜2를 보다가 내용에 집중 못하고 잡념만 떠오른 게임이 있다바로 기사의 여정(여행) 기사의 여행 - 위키백과, 우리 모두의 백과사전위키백과, 우리 모두의 백과사전. 체moonquery.tistory.com 문제 풀이저는 이런 종류의 문제를 한번에 못짜기 때문에 분할정복(?) 하는 편 입니다.그래야 잘못된 길로가도 코드 몇 라인 정도는 살려서 써먹을 수 있더라고요 1. 기사의 이동 구현하기8 방향 이동을 배열로 정의이동 가능한 위치인지 확인(이전에 갔던 곳이거나 맵의 밖이면 못가도록 처리)int[] dx = {2, 1, -1, -2, -2, -1, 1, 2};int[] dy = {1, 2, 2, 1, -1, -2, -2, -..

데블스플랜2 기사의 여정, 근데 코딩테스트 곁들인..

넷플릭스에서 데블스플랜2를 보다가 내용에 집중 못하고 잡념만 떠오른 게임이 있다바로 기사의 여정(여행) 기사의 여행 - 위키백과, 우리 모두의 백과사전위키백과, 우리 모두의 백과사전. 체스판 위에서의 경로의 예 5x5 기사의 여행을 나타낸 애니메이션 기사의 여행은 체스보드의 나이트에 대한 수학적인 알고리즘 문제의 일종이다. 체스 피스를ko.wikipedia.org 이거 코테 문제로 있을 것 같은데? DP를.. 아니 백트래킹을..LeetCode에서 제공하는 문제가 있다! (프로그래머스 점수 올리고 싶다)다만 경로의 유효성 검증이라서 게임을 진행하는 느낌이 안든다다른 사이트에서도 유사한 문제를 제공하기는 하나, 실행 검증하는 기능이 없거나, 풀이를 줘버려서 화들짝 꺼버렸다 LeetCode https://..

Java 키워드 모음: static, final, synchronized, abstract, transient

1. static개념클래스 단위 변수나 메서드를 의미합니다. 객체 생성 없이도 클래스 이름으로 바로 접근할 수 있으며, JVM의 클래스 영역에 저장되어 모든 인스턴스가 공유합니다.샘플 코드public class Counter { public static int count = 0; public static void increment() { count++; }}Counter.increment();System.out.println(Counter.count); // 출력: 1활용 방안공통으로 사용해야 하는 값이나 메서드를 관리할 때 유용합니다. 예를 들어, 전체 객체 수 카운트, 유틸리티 메서드 등에 많이 사용합니다. 2. final 개념값 변경이 불가능한 상수를 선언하거나, 메서..

CS 정리 2025.05.28 0