Skip to content

Latest commit

 

History

History
18 lines (17 loc) · 1.84 KB

7장-신뢰할수-없는-코드를-쓰면서-불변성-지키기.md

File metadata and controls

18 lines (17 loc) · 1.84 KB

박하은님이 정리한 내용입니다.

  • 방어적복사: 원본이 바뀌지 않도록 하는 복사법
  • 방어적 복사의 목적 2가지
    1. 안전지대의 불변성을 유지하고, 바뀔 수도 있는 데이터가 안전지대에 들어오지 못하도록 하는 것
    2. 원본 데이터가 바뀌는 것을 막아 불변성을 지키는 것
  • 방어적 복사 규칙 2가지
    1. 데이터가 안전한 코드에서 나갈때 복사(안전 지대에 있는 데이터가 밖으로 나갈때 보호법): 나가는 데이터를 딥카피해 사본을 내보냄
    2. 안전한 코드로 데이터가 들어올때 복사(신뢰할 수 없는 코드에 있는 데이터가 안전지대로 들어올때 보호법): 들어온 데이터를 딥카피하고 원본은 버림
  • 비공유 아키텍처: 모듈이 서로 통신하기위해 방어적 복사를 구현한 것
  • 안전지대에서 방어적복사와 카피온라이트를 함께 쓰는 이유: 방어적 복사는 깊은 복사를 해 연산과 메모리가 많이 든다. 안전지대에서는 데이터를 전달할때 많은 복사를 안해도 되므로
  • copy-on-write, 방어적 복사 비교
    • 언제 쓰나요? copy-on-write: 통제할수있는 데이터를 바꿀떄. 방어적 복사: 신뢰할수없는코드와 데이터를 주고받을때
    • 어디서: copy-on-write: 안전지대어디서나. 방어적 복사: 안전지대의경계에서 데이터가 오고갈때
    • 복사 방식: 얕은/깊은
    • 깊은 복사는 얕은 복사와 다르게 원본과 어떤 데이터 구조도 공유하지 않는다
  • 깊은/얕은 복사 중 비공유 아키텍처를 구현하기 좋은 것은 깊은 복사
  • 카피 온 라이트가 불변성을 가진 안전지대를 만든다.