SSL/TLS Notes SSL/TLS HTTPS는 HTTP를 TLS 위에서 주고받는 것이다. 그런데 서비스 구성도를 그려 보면 “TLS를 어디서 끝내는가”라는 질문이 남는다. 클라이언트의 암호화된 연결을 로드 밸런서가 풀 수도 있고, 웹 서버가 풀 수도 있고, 애플리케이션이 직접 풀 수도 있다. 이 노트는 TLS가 무엇을 보장하는지 짧게 정리한 뒤, 이 세 위치에서 각각 ... 2024/09/05 Network
Closure Notes 클로저는 어떤 함수가 주변 상태(렉시컬 환경)에 대한 참조와 함께 번들로 묶인(포함된) 함수의 조합이다. 즉, 클로저를 사용하면 내부함수에서 외부함수의 범위에 접근할 수 있다. 자바스크립트에서는 함수가 생성될 때마다 클로저가 생성된다. 클로저(closure)는 내부함수가 외부함수의 맥락(context)에 접근할 수 있는 것을 가리킨다. 클로... 2024/09/05 Programming
Java Concurrency Notes 여러 스레드가 같은 객체의 필드를 함께 읽고 쓰면, 각 스레드가 따로 실행될 때는 생기지 않던 오류가 생긴다. Java 튜토리얼은 이 오류를 두 가지로 나눈다. 여러 스레드가 공유 데이터에 접근하면서 연산이 섞이는 스레드 간섭(thread interference)과, 스레드마다 공유 메모리를 서로 다르게 보는 메모리 일관성 오류(memory consi... 2024/09/05 Programming
Exception Handling Notes Exception Handling in Java Exception Hierarchy Checked Exception 이는 메서드의 throws 절에서 선언해야 하는 예외입니다. 그것들은 예외를 확장하고 “직접 보는” 유형의 예외가 되도록 의도되었습니다. Java는 어떻게든 프로그램 외부의 외부 요인에 의존하기 때문에 이를 처리하기를 원합니다. 확인... 2024/09/05 Programming
Choosing the Best Garbage Collector: G1GC vs ZGC Notes Garbage Collector Garbage Collector는 애플리케이션의 메모리 관리를 자동으로 관리한다. 여기서 일어나는 일은 애플리케이션의 힙 사용량을 분석하여 모든 활성 개체와 모든 죽은 개체를 찾는 것이다. 삭제 후보가 발견되면 실제 삭제가 수행되고 힙이 압축된다. 일반적으로 스캔은 여러 세대에 걸쳐 수행됩니다. 크게 2세대로 Youn... 2024/09/05 Programming
Garbage Collection(GC) Notes 가비지 콜렉션은 메모리 관리 기법 중의 하나로, 프로그램이 동적으로 할당했던 메모리 영역 중에서 필요없게 된 영역을 해제하는 기능이다. 그렇다면 필요없게 된이라는 기준은 어떻게 결정할까? 그리고 어떻게 탐지할까? 가비지 콜렉션은 자바 환경(JVM)의 가장 큰 특징 중에 하나인데, 비판하는 입장에서는 언어 수준에서 GC를 제어할 수 없다는 점을 지적한... 2024/09/05 Programming
Garbage Collectors Notes 자바 애플리케이션은 메모리를 할당하고 해제하는데 있어서 가비지 콜렉션(GC)의 알고리즘에 상당히 의존하고 있다. 올바른 GC 알고리즘의 선택은 명백하게 애플리케이션의 성능에 영향을 준다. 따라서 GC의 종류인 G1GC와 ZGC도 상황이나 환경에 따라서 서로 다른 성능향상을 보일 수 있으며 트레이드 오프가 있다. TRADE-OFF’s 가비지 콜렉... 2024/09/05 Programming
Higher-order Function Notes 고차함수(higher-order function)는 함수를 아규먼트로 전달받거나 함수를 결과로 반환하는 함수를 말한다. 고차함수는 아규먼트로 받은 함수를 필요한 시점에 호출하거나 클로저를 생성하여 반환한다. 자바스크립트의 함수는 일급 객체이므로 값처럼 아규먼트로 전달할 수 있으며 반환할 수도 있다. 일급 함수가 전제다 고차함수는 언어가 함수를 ... 2024/09/05 Programming
JavaScript setTimeout() Notes setTimeout()은 지정한 시간이 지난 뒤 함수나 코드를 한 번 실행하도록 타이머를 등록하는 함수다. 브라우저에서는 window의 메서드이고, 반환값은 타이머를 식별하는 양의 정수다 (MDN). 왜 필요한가 JavaScript 프로그램은 한 스레드에서 실행되므로, 오래 걸리는 작업을 기다리는 동안 다른 일을 할 수 없다. setTimeou... 2024/09/05 Programming
Lambda Notes 람다식(lambda expression)은 이름 없는 함수를 식 하나로 표현하는 문법이다. Java에서는 메서드가 하나뿐인 인터페이스의 구현을 짧게 쓰는 방법으로 동작한다. Java 튜토리얼은 람다식이 기능을 메서드 인자로, 코드를 데이터처럼 다룰 수 있게 해 준다고 설명한다 (Oracle). 왜 필요한가 람다식 이전에는 동작을 인자로 넘기려면... 2024/09/05 Programming