2023/11/04 6

(스터디) 파이브 라인스 오브 코드 리뷰 1-3장

1장 리팩터링, 리팩터링하기 좋은 코드란 (정의) 사람이 읽기 쉽고, 유지보수가 용이하며, 의도한 대로 잘 동작하는 코드 리팩터링이란 기능을 변경하지 않고 코드의 가독성과 유지보수가 쉽도록 코드를 변경하는 것 리팩터링 핵심 의도를 전달함으로써 가독성 향상 불변속성의 범위제한을 통한 유지보수성 향상 범위 밖의 코드에 영향을 주지 않고 1항과 2항을 수행 요약 리팩터링을 수행하려면 리팩터링 대상을 식별하는 스킬과 리팩터링 단계를 명시적으로 가진 문화, 리팩터링을 돕는 도구의 조합이 필요합니다. 일반적으로 코드 스멜은 리팩터링 대상을 설명하는 데 사용됩니다. 이것들은 모호해서 주니어 프로그래머가 내면화하기 어렵습니다. 이 책에서는 학습하는 동안 코드 스멜을 대체할 구체적인 규칙을 제공합니다. 규칙에는 세 가지..

성능 최적화를 위해 어떤 방법과 도구를 사용하나요?에 대한 답변

성능 최적화를 위해 어떤 방법과 도구를 사용하나요?에 대한 답변 성능 최적화 인덱싱, 캐싱, 멀티 스레딩 작업 처리, 하드웨어 성능 업그레이드 스케일 업, 스케일 아웃, 알고리즘 개선, 루프 최적화, 데이터 정규화 성능 최적화를 위한 방법과 도구 웹 성능 최적화는 매우 중요한 작업 중 하나입니다. 아래는 일반적인 최적화 방법과 그에 사용되는 도구들입니다. 1. 이미지 최적화 방법: 이미지 형식을 최적화하거나, 불필요한 이미지는 lazy loading을 사용합니다. 도구: ImageMagick, TinyPNG, WebP 등 2. 코드 최적화 방법: 미사용 코드 제거, 코드 분할, tree shaking 등을 실행합니다. 도구: Webpack, Rollup, PurifyCSS, Terser 등 3. 캐싱 전..

HTTPS 암호화 작동원리

HTTPS 암호화 작동원리 HTTPS(HyperText Transfer Protocol Secure)는 HTTP에 SSL/TLS 암호화를 추가한 프로토콜입니다. HTTPS의 암호화 작동 원리는 크게 다음 단계로 나눌 수 있습니다. 1. 핸드셰이크 단계 클라이언트 → 서버: "안녕하세요, 접속하고 싶어요." 클라이언트가 서버에게 초기 연결 요청을 보냅니다. 서버 → 클라이언트: "안녕하세요, 이건 제 공개키입니다." 서버는 클라이언트에게 자신의 공개키와 인증서를 보냅니다. 클라이언트: "이 공개키를 믿을 수 있나?" 클라이언트는 받은 인증서가 신뢰할 수 있는 CA(Certificate Authority)에 의해 발급되었는지 검증합니다. 클라이언트: "이건 우리만의 비밀번호(Pre-Master Secret)..

TCP와 UDP의 차이점

TCP와 UDP의 차이점 TCP (Transmission Control Protocol)와 UDP (User Datagram Protocol)는 두 가지 주요한 통신 프로토콜입니다. 각각의 특성은 다음과 같습니다: TCP 연결 지향적: 통신을 시작하기 전에 연결을 설정하고, 통신이 완료된 후 연결을 종료합니다. 신뢰성: 데이터의 전달을 확인하고, 잘못된 데이터는 다시 전송합니다. 순서 보장: 전송된 데이터의 순서가 그대로 유지됩니다. 데이터 무결성: 중간에 데이터가 손상되거나 누락되는 것을 방지합니다. 속도: UDP보다 일반적으로 느립니다. 신뢰성을 제공하는 과정에서 오버헤드가 발생하기 때문입니다. 흐름 제어와 혼잡 제어: 네트워크 상황에 따라 데이터 전송 속도를 조절합니다. UDP 연결 없음: 미리 연..

메모리 누수의 개념, 종류 및 해결방법

메모리 누수의 개념, 종류 및 해결방법 메모리 누수의 개념 메모리 누수(memory leak)란 프로그램이 필요 이상으로 메모리를 점유하고, 더 이상 사용되지 않는 메모리를 반환하지 않는 현상을 말합니다. 이는 시간이 지남에 따라 메모리 사용량이 계속 증가하게 되어, 시스템의 성능을 저하시키거나 최악의 경우 프로그램이나 시스템이 중단되는 결과를 초래할 수 있습니다. 메모리 누수는 다음과 같은 경우에 발생할 수 있습니다: 동적 메모리 할당 후 반환하지 않음: 프로그래밍 언어에서 malloc() 또는 new 같은 함수로 메모리를 할당한 뒤, free() 또는 **delete**로 반환하지 않을 경우. 객체 참조 누락: 객체 지향 언어에서 객체가 더 이상 필요 없지만, 다른 객체가 여전히 그 객체를 참조하고 ..

자바 가비지컬렉션 종류와 동작원리

자바 가비지컬렉션 종류와 동작원리 자바에서는 가비지 컬렉션(Garbage Collection, GC)이라는 메커니즘을 통해 자동으로 더 이상 사용되지 않는 메모리를 회수합니다. 여러 가지 GC 알고리즘이 존재하며, 각각은 특정 상황에서 장단점을 가집니다. 가비지 컬렉션의 주요 영역 영구(Perm) 영역: 클래스와 메서드 정보가 저장됩니다. 힙(Heap) 영역: 객체가 저장되는 공간입니다. 스택(Stack) 영역: 지역 변수나 메서드 호출 정보가 저장됩니다. 주로 힙 영역에 대한 가비지 컬렉션이 이루어집니다. 가비지 컬렉션의 종류 Serial GC: 단일 쓰레드를 사용해 Young 영역과 Old 영역을 차례로 정리합니다. 단순하고 메모리를 효율적으로 정리하지만, GC 작업 동안에는 애플리케이션 작업이 멈춥..