Golang의 Goroutine
·
Interview/Golang
GoroutineGolang에서 Goroutine은 경량 스레드의 일종으로, 함수나 메서드를 동시에 실행하기 위해 사용됩니다.일반적인 스레드와는 다르게, 매우 가볍고 고효율적으로 동작하기 때문에 많은 수의 Goroutine을 동시에 실행할 수 있습니다. Goroutine은 Go 런타임이 내부적으로 관리하는 작은 작업 단위입니다.Goroutine 사용 방법다음과 같이 go 키워드를 사용하여 함수를 goroutine으로 실행할 수 있습니다:go someFunction()이 코드를 실행하면 someFunction()은 별도의 goroutine으로 실행되며, 메인 프로그램과 병렬로 동작하게 됩니다. 중요한 점은, go 키워드로 실행된 함수는 비동기적으로 동작하기 때문에 해당 함수가 언제 완료되는지는 보장되지 않..
Golang Garbage Collection(GC)
·
Interview/Golang
Golang Garbage Collection(GC)Golang에서의 가비지 컬렉션(Garbage Collection, GC)은 자동 메모리 관리를 통해 사용되지 않는 메모리(즉, 더 이상 참조되지 않는 객체)를 회수하는 과정입니다.이를 통해 개발자는 메모리 해제에 대해 신경 쓰지 않고 프로그램을 작성할 수 있습니다.Go의 가비지 컬렉션은 성능을 최대한 유지하면서도 메모리 누수를 방지하도록 설계되었습니다.Golang의 GC 특징Concurrent Garbage Collector (동시 가비지 컬렉터)Go의 GC는 stop-the-world 방식을 최소화하기 위해 동시성(concurrent)으로 동작합니다. 즉, 애플리케이션이 계속 실행되는 동안에도 가비지 컬렉션을 수행할 수 있습니다. 이로 인해 긴 시간..
JVM
·
Interview/Java
JVMJVM(Java Virtual Machine)은 자바 애플리케이션을 실행하기 위한 가상 머신으로, 자바 바이트코드를 실행하는 데 필요한 환경을 제공합니다.JVM은 자바 프로그램을 플랫폼에 독립적으로 실행할 수 있도록 해 주며, 다음과 같은 주요 기능을 가지고 있습니다.1. 플랫폼 독립성자바는 "Write Once, Run Anywhere"라는 슬로건 아래 개발되었습니다. 이는 자바 코드가 한 번 작성되면, 어떤 운영 체제에서든 JVM이 설치된 환경에서 실행될 수 있음을 의미합니다. JVM은 각 플랫폼에 맞게 구현되기 때문에, 자바 바이트코드가 플랫폼에 종속되지 않습니다.2. 바이트코드 실행자바 컴파일러는 자바 소스 코드를 바이트코드로 변환합니다. JVM은 이 바이트코드를 읽고 실행하여 최종적으로 애..
Java Garbage Collector
·
Interview/Java
Java Garbage Collector메모리 가비지 컬렉터(Garbage Collector, GC)는 메모리 관리의 자동화된 과정으로, 프로그래머가 직접 메모리 할당과 해제를 관리하지 않아도 시스템이 이를 알아서 처리해주는 기능입니다.주로 자바(JVM), C#, 파이썬 등의 언어에서 사용됩니다.GC의 역할가비지 컬렉터의 기본적인 역할은 더 이상 사용되지 않는 객체(Garbage)를 탐지하여 해당 객체가 차지하는 메모리를 해제하는 것입니다. 이를 통해 메모리 누수(memory leak)를 방지하고, 시스템 성능을 최적화하는 데 기여합니다.GC의 작동원리가비지 컬렉터는 여러 가지 알고리즘을 사용하여 메모리 회수를 관리합니다.대표적인 방식에는 참조 카운팅(Reference Counting), 마크 앤 스위프..
Golang 언어적 철학
·
Interview/Golang
Golang 언어적 철학Go의 언어적 철학Golang(Go)의 언어적 철학은 주로 단순성, 효율성, 안정성, 그리고 동시성을 중점으로 설계되었습니다.이 철학은 시스템 프로그래밍의 복잡함을 줄이고, 대규모 분산 시스템을 구축하는 데 적합한 언어를 만들기 위해 탄생했으며, 다른 언어와의 몇 가지 핵심적인 차이점을 가지고 있습니다.1. 단순성 (Simplicity)Go는 최소한의 복잡성으로 강력한 기능을 제공하는 것을 목표로 합니다. 언어 설계 과정에서 지나치게 복잡한 기능들을 의도적으로 배제하여, 개발자가 코드를 읽고 이해하는 것이 더 쉽도록 만들었습니다. 이는 보일러플레이트 코드의 감소와 명료한 코드로 이어집니다.예시: Go는 상속(inheritance), 메타프로그래밍(macros), 그리고 예외(exc..
HTTP Keep Alive
·
Interview/Network
HTTP Keep AliveHTTP Keep-Alive는 클라이언트(주로 브라우저)와 서버 간의 연결을 지속적으로 유지하여, 여러 요청을 하나의 TCP 연결을 통해 처리할 수 있도록 하는 기능입니다. 기본적으로 HTTP는 "요청-응답" 모델을 따르며, 각 요청에 대해 TCP 연결을 열고, 응답이 완료되면 연결을 닫는 방식으로 동작했습니다. 이 방식을 HTTP/1.0에서는 기본적으로 사용했죠. 하지만 이 방식은 매번 TCP 연결을 새로 생성하고 끊는 과정에서 성능적인 비용이 발생합니다.Keep-Alive는 이러한 문제를 해결하기 위해 도입된 방식으로, 한 번 TCP 연결을 맺고 나면 이를 지속적으로 유지하여 여러 요청을 처리할 수 있도록 합니다. HTTP/1.1에서는 기본 동작으로 Keep-Alive가 활..
HTTP/1.1 과 HTTP/2 비교
·
Interview/Network
HTTP/1.1 과 HTTP/2 비교HTTP/1.1과 HTTP/2는 웹에서 데이터를 주고받기 위한 프로토콜로, 둘은 성능과 효율성을 크게 개선한 측면에서 차이가 있습니다. HTTP/2는 HTTP/1.1의 단점을 보완하고, 특히 속도와 효율성에 중점을 두고 설계되었습니다. 아래는 두 프로토콜 간의 주요 차이점들입니다.1. 연결 방식 (Connection Handling)HTTP/1.1:단일 요청/응답 모델: 한 번에 하나의 요청만 처리할 수 있습니다. 즉, 하나의 연결에서 하나의 요청에 대한 응답이 완료된 후에야 다른 요청을 처리할 수 있습니다. 이를 요청-응답 순차 처리라고 합니다.헤더 압축 없음: HTTP/1.1에서는 헤더 데이터가 압축되지 않고, 매번 요청마다 전체 헤더를 전송해야 합니다. 이는 비효..
AES 알고리즘
·
Interview/Network
AES 알고리즘AES(Advanced Encryption Standard)는 대칭 키 암호화 알고리즘으로, 데이터를 빠르고 안전하게 암호화하는 데 널리 사용됩니다. AES는 미국 국가표준기술연구소(NIST)에 의해 2001년에 표준으로 채택되었으며, 현재 가장 많이 사용되는 암호화 알고리즘 중 하나입니다. AES는 특히 성능이 뛰어나고 보안성이 강해 여러 분야에서 널리 사용됩니다.AES의 특징대칭 키 암호화:AES는 대칭 키 암호화 알고리즘입니다. 이는 동일한 키를 사용하여 데이터를 암호화하고 복호화하는 방식입니다. 이 때문에 AES를 사용하는 양측이 동일한 암호화 키를 공유해야 합니다.블록 암호:AES는 블록 암호로, 데이터를 고정된 크기(128비트)의 블록으로 나누어 처리합니다. 즉, 데이터를 128..
김 정출
'Interview' 카테고리의 글 목록 (2 Page)