Razelo 기술노트

  • 홈
  • 태그
  • 방명록
  • 카카오 브런치

java immutable object 1

[Java] 자바 방어적 복사와 불변객체 생성

자바에서 등장하는 방어적 복사와 불변객체 생성에 대한 내용을 알아보도록 하자. 용어가 어렵지만 사실 내용은 그다지 어려운 내용은 아니다. 방어적 복사는 즉 매개변수의 유효성을 검사하기 전에 방어적 복사본을 만들고, 이 복사본으로 유효성을 검사한 점에 주목하자. 순서가 부자연스러워 보이겠지만 반드시 이렇게 작성해야 한다. 멀티스레딩 환경이라면 원본 객체의 유효성을 검사한 후 복사본을 만드는 그 찰나의 취약한 순간에 다른 스레드가 원본 객체를 수정할 위험이 있기 때문이다. 방어적 복사를 매개변수 유효성 검사 전에 수행하면 이런 위험에서 해방될 수 있다. 컴퓨터 보안 커뮤니티에서는 이를 검사시점/사용시점(time of check/time of use) 공격 혹은 영어 표기를 줄여서 TOCTOU 공격이라 한다...

Java 2021.01.04
이전
1
다음
더보기
프로필사진

Razelo 기술노트

안녕하세요 반갑습니다. Software Engineer Razelo라고 합니다. 기술에 대한 자유로운 이야기를 하고 있습니다. Backend, Infrastructure에 관심이 많습니다. (그 외 기술과 관련된 것이라면 무엇이든 관심 많습니다.)

  • 분류 전체보기 (522)
    • 개인적인 생각 (7)
    • Career (0)
    • Dev (12)
    • Activity (4)
      • 스타트업 인턴 (4)
      • 동아리 (0)
    • Google Developer Student Cl.. (10)
      • GDSC 백엔드 스터디 (7)
      • GDSC 면접 리뷰 (2)
      • GDSC CS 스터디 (1)
    • OpenSource (1)
      • 분석 (1)
    • 기술 서적 (13)
    • 개발 정보 (58)
    • Backend (8)
      • RabbitMQ (6)
      • 관련 기술 (1)
    • Data Engineering (1)
      • Spark (0)
      • Airflow (1)
      • SQL (0)
    • Spring Framework (48)
      • Spring (8)
      • SpringBoot (40)
    • Java (79)
    • AI (11)
      • 2021 AI엔지니어 고급반 (7)
      • Deep learning (4)
    • kubernetes (1)
    • Python 3 (27)
      • Python3 (14)
      • Flask (5)
      • Django (7)
    • Linux (7)
      • System Programming (0)
    • C & C++ (37)
      • C (23)
      • C++ (14)
    • Web Tech (18)
      • javascript (17)
      • typescript (1)
    • Computer Graphics (7)
    • Servlet & Jsp (14)
    • Kotlin (6)
    • Lua (0)
    • Rust (5)
    • Go (8)
    • Blockchain (12)
    • Startup (1)
      • 스토리 (1)
    • 기술 에세이 (2)
    • Functional Programming (3)
      • Scala (0)
    • Computer Security (6)
    • Unreal Engine (4)
    • Algorithm (32)
      • 알고리즘 이론 (12)
      • 문제풀이 (20)
    • Tools (12)
      • vi (1)
      • vim (1)
      • intellij (2)
      • Visual Studio (1)
    • Database (11)
      • OracleDB (4)
      • Redis (4)
      • MySQL (3)
    • Mobile Programming (1)
      • Android (1)
      • iOS (0)
    • Cloud Engineering (14)
      • AWS (10)
      • NCP (2)
      • GCP (1)
    • Infrastructure (18)
      • Git (13)
      • Docker (4)
      • Etc.Infra (1)
    • Tech Podcast (22)
    • Operating System (3)
      • Hand-made OS (2)
      • OS concept (1)
    • Virtualization (0)

최근글과 인기글

  • 최근글
  • 인기글

최근댓글

공지사항

  • Razelo 기술노트 블로그 소개

Archives

방문자수Total

  • Today :
  • Yesterday :
brunch

Copyright © AXZ Corp. All rights reserved.

  • 브런치

티스토리툴바