카샤의 만개시기
close
프로필 배경
프로필 로고

카샤의 만개시기

  • 분류 전체보기 (105)
    • 만개시기 (1)
    • Foundation (13)
      • Algorithm (3)
      • Operation (1)
      • Network (2)
      • Programming (1)
      • Design Pattern (5)
    • Architecture (1)
      • DDD (1)
    • Java (23)
      • POJO (11)
      • Spring (4)
      • Liferay (1)
      • MSA (7)
    • Kotlin (13)
    • Go언어 (6)
    • Javascript (2)
      • EcmaScript (0)
      • Node.js (0)
      • React (0)
    • Swift (0)
    • Python (0)
    • Android (0)
    • IOS (0)
    • Database (4)
      • mySQL (3)
      • MongoDB (0)
      • Oracle (0)
      • Redis (0)
    • DevOps (25)
      • Docker & K8S (17)
      • Ansible (2)
      • Performance Test (4)
      • APM (1)
      • Fluentd (1)
    • Machine Learning (12)
    • Big Data (0)
      • pyspark (0)
    • Review (3)
    • 유용한 정보 (1)
    • 일상 (1)
  • 홈
  • 카테고리
  • 방명록

ConcurrentHashMap

1. ConcurrentHashMap이란?ConcurrentHashMap은 멀티스레드 환경에서 동시에 여러 스레드가 안전하고 빠르게 데이터를 읽고 쓸 수 있도록 설계된 해시맵입니다.기존의 HashMap은 스레드에 안전하지 않아 동시 접근 시 데이터 손상이나 무한 루프 같은 심각한 문제가 발생하지만, ConcurrentHashMap은 이를 해결했습니다.2. ConcurrentHashMap 동작 원리2-1. 세분화된 락 (Lock Striping)자바 7 이전에는 ConcurrentHashMap이 내부적으로 데이터를 여러 세그먼트(segment)로 나누고, 각 세그먼트별로 락을 걸어 동시 접근을 허용했습니다.이 덕분에 전체 맵이 아닌 해당 세그먼트에만 락이 걸려, 동시성 성능이 크게 향상됐죠.2-2. 자바 ..

  • format_list_bulleted Java/POJO
  • · 2025. 9. 29.
  • textsms

HashMap / Hashtable / ConcurrentHashMap: null 허용 규칙

Java에서 Map을 쓸 때 키/값에서 null을 허용하는지 여부에 대해서 알아보고자 합니다.한눈에 보기 컬렉션null 키null 값메모HashMap✅ (정확히 1개)✅ (여러 개 가능)get(k)가 null이면 “키 없음” 또는 “값이 null”일 수 있음 → containsKey(k)로 구분 필요Hashtable❌❌put/get에 null 사용 시 NullPointerExceptionConcurrentHashMap❌❌동시성·원자적 연산 일관성을 위해 null 금지 (compute/merge의 null 반환은 제거/미삽입 신호) 왜 규칙이 다를까?1) HashMap — 편의성 + 현대적 APIcontainsKey가 있어 get 결과가 null이어도 존재 여부를 구분 가능그래서 키 1개 null + 여..

  • format_list_bulleted Java/POJO
  • · 2025. 9. 29.
  • textsms

JPA QueryDSL에서 쿼리 힌트(Query Hint)

1. JPA 쿼리 힌트(Query Hint)란?JPA 쿼리 힌트는 데이터베이스 시스템이나 Hibernate와 같은 JPA 구현체에게 쿼리 실행 방식을 제어하거나 최적화하기 위한 "팁"을 제공하는 기능입니다. 이름처럼 강제 사항은 아니지만, 대부분의 경우 JPA 구현체는 이 힌트를 존중하여 쿼리 실행 계획을 수립합니다.주로 다음과 같은 목적으로 사용됩니다.성능 최적화: 캐싱 제어, 읽기 전용 쿼리 설정, 페치 사이즈(Fetch Size) 조절 등리소스 제어: 쿼리 타임아웃, 락 타임아웃 설정디버깅/추적: SQL 쿼리에 주석 삽입2. QueryDSL에서 쿼리 힌트 적용하기QueryDSL은 결국 JPA의 EntityManager를 통해 쿼리를 실행하므로, JPA의 힌트 메커니즘을 그대로 활용합니다. Query..

  • format_list_bulleted Java/Spring
  • · 2025. 7. 31.
  • textsms

JPA에서 Optimistic Lock과 Pessimistic Lock

낙관적 락 (Optimistic Lock) 트랜잭션 대부분 충돌이 발생하지 않는다고 가정하는 방법으로써 어플리케이션이 제공하는 락 방식입니다. 그러므로 읽는 시점에 Lock을 사용하지 않기 때문에 데이터를 수정하는 시점에 다른 사용자에 의해 데이터가 변경되었는지 변경여부를 확인해야 합니다. 이렇게 낙관적 락은 트랜잭션을 커밋하기 전까지는 트랜잭션의 충돌 여부를 알 수 없습니다. @Version JPA가 제공하는 낙관적 락을 사용하려면 @Version 어노테이션을 사용하여 버전 관리를 추가하면 되며 지원되는 타입은 long, Long, int, Integer, short, Short, TimeStamp 이다. @Version 어노테이션을 붙이면 엔티티가 수정될때 자동으로 버전이 하나씩 증가하며, 수정할때 ..

  • format_list_bulleted Java/Spring
  • · 2019. 7. 8.
  • textsms
RestTemplate

RestTemplate

HttpClient는 HTTP를 사용하여 통신하는 범용 라이브러리이고, RestTemplate은 HttpClient 를 추상화(HttpEntity의 json, xml 등)해서 제공해준다. 따라서 내부 통신(HTTP 커넥션)에 있어서는 Apache HttpComponents 를 사용한다. 작동원리 어플리케이션이 RestTemplate를 생성하고, URI, HTTP메소드 등의 헤더를 담아 요청한다. RestTemplate 는 HttpMessageConverter 를 사용하여 requestEntity 를 요청메세지로 변환한다. RestTemplate 는 ClientHttpRequestFactory 로 부터 ClientHttpRequest 를 가져와서 요청을 보낸다. ClientHttpRequest 는 요청메세..

  • format_list_bulleted Java/Spring
  • · 2019. 7. 7.
  • textsms

Spring AOP, Proxy

AOP는 관점지향 프로그래밍(Aspect Oriented Programming)으로써, 공통 기능(로깅, 트랜잭션, 접근 제어 등의 보안) 등에 대한 횡단 영역의 공통된 부분의 중복을 제거하고 모듈화 하는 프로그래밍 방식이다.Aspect공통으로 적용되는 기능Advice언제 Aspect을 로직에 적용할 지를 정의.@Before메소드 실행 전 기능 수행.@After메소드 결과와 상관없이 메소드가 완료 된 이후에 기능 수행.@AfterReturning메소드가 성공적으로 완료 된 이후에 기능 수행.@AfterThrowing메소드 수행 중 예외 발생 시 이후에 기능 수행.@Around메소드가 실행되기 전과 후 기능 구행. proceed() 메소드 호출 전, 후를 통해 구분할 수 있다.JoinpointAdvice를..

  • format_list_bulleted Java/Spring
  • · 2019. 7. 4.
  • textsms
  • navigate_before
  • 1
  • 2
  • 3
  • 4
  • navigate_next
공지사항
전체 카테고리
  • 분류 전체보기 (105)
    • 만개시기 (1)
    • Foundation (13)
      • Algorithm (3)
      • Operation (1)
      • Network (2)
      • Programming (1)
      • Design Pattern (5)
    • Architecture (1)
      • DDD (1)
    • Java (23)
      • POJO (11)
      • Spring (4)
      • Liferay (1)
      • MSA (7)
    • Kotlin (13)
    • Go언어 (6)
    • Javascript (2)
      • EcmaScript (0)
      • Node.js (0)
      • React (0)
    • Swift (0)
    • Python (0)
    • Android (0)
    • IOS (0)
    • Database (4)
      • mySQL (3)
      • MongoDB (0)
      • Oracle (0)
      • Redis (0)
    • DevOps (25)
      • Docker & K8S (17)
      • Ansible (2)
      • Performance Test (4)
      • APM (1)
      • Fluentd (1)
    • Machine Learning (12)
    • Big Data (0)
      • pyspark (0)
    • Review (3)
    • 유용한 정보 (1)
    • 일상 (1)
최근 글
인기 글
최근 댓글
태그
  • #쿠버네티스
  • #Spring
  • #클라우드 네이티브
  • #cloud native
  • #java
  • #MSA
  • #devops
  • #코틀린
  • #Kotlin
  • #Microservice
전체 방문자
오늘
어제
전체

티스토리툴바