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

카샤의 만개시기

  • 분류 전체보기 (106)
    • 만개시기 (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언어 (7)
    • 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)
  • 홈
  • 카테고리
  • 방명록

Go언어, 맵(Map)의 성능과 메모리 함정

1. 실수 패턴 1: 비효율적인 맵 초기화로 인한 성능 저하 📉대부분의 Go 개발자는 맵을 사용할 때 다음과 같이 초기화합니다.m := make(map[string]int) // 크기 힌트 없음이 코드는 당장은 문제가 없어 보이지만, 맵에 대량의 데이터를 채워 넣을 때 성능 문제를 일으킬 수 있습니다.맵의 내부 구조: 동적 확장과 RehashGo 맵은 내부적으로 해시 테이블(Hash Table)로 구현되어 있으며, 데이터를 저장하기 위해 버킷(Bucket)이라는 메모리 공간을 사용합니다.초기 상태: 크기 힌트 없이 맵을 생성하면, 런타임은 최소한의 버킷만 할당하여 시작합니다.항목 추가 및 로드 팩터 초과: 키-값 쌍이 계속 추가되어 맵의 로드 팩터(Load Factor), 즉 (총 항목수 / 총 버킷수..

  • format_list_bulleted Go언어
  • · 2025. 10. 29.
  • textsms

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

SRV 레코드

SRV 레코드는 서비스 레코드(Service Record) 의 줄임말로, DNS(Domain Name System)에서 특정 서비스를 제공하는 서버의 위치를 정의하는 데 사용됩니다. 일반적인 A 레코드와 달리 SRV 레코드는 서비스 이름, 프로토콜, 포트 및 우선순위 등을 포함하는 구조를 가지고 있어, 특정 서비스의 위치를 동적으로 찾을 수 있게 해줍니다.SRV 레코드의 구조SRV 레코드는 DNS에서 특정 서비스가 제공되는 서버의 호스트 이름과 포트 번호를 나타냅니다. SRV 레코드는 다음과 같은 형식을 가집니다:_서비스명._프로토콜.도메인. TTL 클래스 SRV 우선순위 가중치 포트 대상1. 각 항목의 의미:_서비스명: 제공하는 서비스의 이름입니다. 예를 들어, MongoDB, SIP, XMPP, HT..

  • format_list_bulleted Foundation/Network
  • · 2025. 9. 25.
  • textsms

Go의 고루틴, Kotlin의 코루틴, 그리고 Java 21의 가상 스레드

1. Kotlin 코루틴, Go 고루틴, Java 21의 가상 스레드 요약Kotlin 코루틴: Kotlin은 JVM 기반 언어로, 비동기 프로그래밍을 처리하는 데 매우 유용한 코루틴을 도입했습니다. 코루틴은 비동기 처리를 간결하고 효율적으로 만들어주는 기능으로, 스레드를 차단하지 않고 여러 작업을 동시에 처리할 수 있게 도와줍니다.Go 고루틴: Go는 동시성을 매우 효율적으로 처리할 수 있는 고루틴을 제공합니다. 고루틴은 경량 스레드로, 운영 체제의 스레드를 직접 사용하지 않고, Go 런타임에서 관리하는 방식으로 동시성 처리를 최적화합니다. Go의 고루틴은 사용하기 간단하며, 동시성 작업을 자동으로 관리해줍니다.Java 21 가상 스레드: Java 21은 가상 스레드라는 새로운 기능을 도입하여, JVM ..

  • format_list_bulleted Go언어
  • · 2025. 8. 4.
  • textsms

Go언어, 동시성 철학: “공유 메모리가 아닌, 통신으로 메모리를 공유하라”

Go 언어에는 독특한 동시성 철학이 존재한다.바로 "Don't communicate by sharing memory; instead, share memory by communicating."이는 단순한 코드 스타일 가이드가 아니라, Go가 동시성 문제를 어떻게 바라보는지를 명확히 보여주는 핵심 원칙이다.공유 메모리 중심의 전통적인 방식다른 언어(C, Java 등)에서는 여러 스레드가 같은 변수나 객체에 접근하면서 동기화를 위한 수단으로 락(Mutex), 세마포어 등을 사용한다.이러한 방식은 메모리를 중심으로 동시성을 처리한다. 예를 들면 아래와 같다:var count intvar mu sync.Mutexfunc increment() { mu.Lock() count++ mu.Unlock()..

  • format_list_bulleted Go언어
  • · 2025. 8. 3.
  • textsms
  • navigate_before
  • 1
  • 2
  • 3
  • 4
  • ···
  • 18
  • navigate_next
공지사항
전체 카테고리
  • 분류 전체보기 (106)
    • 만개시기 (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언어 (7)
    • 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)
최근 글
인기 글
최근 댓글
태그
  • #Kotlin
  • #devops
  • #java
  • #쿠버네티스
  • #Spring
  • #go언어
  • #코틀린
  • #클라우드 네이티브
  • #cloud native
  • #MSA
전체 방문자
오늘
어제
전체

티스토리툴바