목록Study/Java (18)
자바칩
프로세스와 쓰레드는 컴퓨터 프로그램을 실행하는 두 가지 기본 단위이다. 각 단위는 운영 체제에서 독립적으로 관리되며 고유한 특성을 가진다. 프로세스와 쓰레드의 차이점프로세스정의: 운영 체제에서 실행 중인 프로그램의 인스턴스메모리 관리: 각 프로세스는 독립된 메모리 공간을 가진다. 프로세스 간의 메모리 공유는 기본적으로 불가능하며, IPC(Inter-Process Communication) 기법을 사용해야 한다.오버헤드: 프로세스를 생성하고 관리하는 데는 많은 자원이 소모된다.안정성: 한 프로세스가 실패해도 다른 프로세스에 영향을 미치지 않는다.쓰레드정의: 프로세스 내에서 실행되는 작은 단위의 작업 흐름메모리 관리: 쓰레드는 프로세스 내의 메모리와 자원을 공유한다. 같은 프로세스의 모든 쓰레드는 동일한 메..
기말고사 1. String 클래스와 StringBuilder, StringBuffer 클래스의 차이를 정리해 주세요.클래스차이점String불변성 객체이므로, + 연산을 하면 원본 객체는 버리고 새로운 객체를 리턴한다.StringBuilder가변성 객체이므로, append() 메소드를 통해 원본 객체를 변경할 수 있다. Thread Safe하지 않다.StirngBuffer가변성 객체이므로, append() 메소드를 통해 원본 객체를 변경할 수 있다. Thread Safe하다. 2. String 클래스의 indexOf(), substring(), split(), getBytes() 메소드가 어떤 용도로 사용되는지 정리해 주세요.메소드용도indexOf()문자열 내에서 매개 변수로 들어온 문자열이 시작하는 위..
정리해 봅시다 1. TCP 통신과 UDP 통신의 차이는 무엇인가요?통신 방법차이점TCP- 상대 서버가 데이터를 받았는지를 확실히 보장 가능- 내부적으로 처리되는 절차가 매우 복잡하여 UDP보다 비싸고, 느리고, 무거움UDP- 상대 서버가 데이터를 받았는지 보장 불가능- 내부적으로 처리되는 절차가 덜 복잡하여 TCP보다 싸고, 빠르고, 가벼움 2. 네트워크 통신 시 포트 번호를 지정하는 이유는 무엇인가요?포트 번호를 지정한 곳에서만 통신할 수 있게 하기 위해서이다.일반적인 웹 애플리케이션에서는 80이라는 번호의 포트를 사용한다. 이것은 정해져 있는 것이다. 만약 99를 쓰고 싶다면, 웹 서버에 99번을 사용한다고 지정을 해 놓고, 사용자가 웹 서버에 붙기 위해서 주소 뒤에 콜론(:)을 붙인 뒤 99라고 ..
1. java.io.Serializable을 import하는 이유는 무엇인가요?객체를 파일에 읽거나 쓸 수 있도록 하거나, 다른 서버로 보내거나 받을 수 있도록 하려면 반드시 Serializable 인터페이스를 구현해야 한다. Serializable 인터페이스를 구현하면 JVM에서 해당 객체는 저장하거나 다른 서버로 전송할 수 있도록 해준다. 이 인터페이스는 java.io 패키지에 있으므로, java.io.Serializable을 import 해야 한다. 2. java.io.Serializable의 serialVersionUID를 지정하는 이유는 무엇인가요?각 서버에서 쉽게 해당 객체가 같은지 다른지를 확인하기 위해 serialVersionUID을 지정해야 한다. 클래스 이름이 같더라도, serial..
정리해 봅시다 1. I/O는 각각 무엇의 약자인가요?Input/OutputI/O는 JVM을 기준으로 읽을 때에는 Input을, 파일로 쓰거나 외부로 전송할 때에는 Output이라는 용어를 사용한다. 2. File 클래스는 파일만 지정할 수 있나요?파일뿐만 아니라, 파일의 경로도 지정할 수 있다. 3. OS마다 다른 경로 구분자를 처리하기 위해서는 File 클래스의 어떤 상수를 사용해야 하나요?separator (static 상수)*사용 예시1import java.io.File;String filePath1 = "C:\\godofjava\\text"; String filePath2 = File.separator + "godofjava" + File.separator + "text"; //..
정리해 봅시다 1. 쓰레드와 프로세스의 차이를 이야기해 보세요.클래스를 실행하면 적어도 하나의 JVM이 시작되고, 자바 프로세스가 시작한다. 이 프로세스 안에서는 여러개의 쓰레드들이 수행된다. 어떤 프로세스든 간에 쓰레드가 하나 이상 수행된다.*쓰레드를 만든 이유프로세스가 하나 시작하려면 많은 자원이 필요하다. 만약 하나의 작업을 동시에 수행하려고 할 때 여러 개의 프로세스를 띄워서 실행하면 각각 메모리를 할당해 주어야만 한다. JVM은 기본적으로 아무런 옵션 없이 실행하면 OS마다 다르지만, 적어도 32MB~64MB의 물리 메모리를 점유한다. 그에 반해서, 쓰레드를 하나 추가하면 1MB 이내의 메모리를 점유한다. 그래서, 쓰레드를 "경량 프로세스(lightweight process)"라고도 부른다.그리..
상속 조합을 사용하는 상황 구분상속(Inheritance)상속은 부모 클래스의 속성과 메서드를 자식 클래스가 물려받는 관계를 의미한다.상속은 확장을 고려하고 설계가 확실한 "is-a" 관계일 때와, API에 아무런 결함이 없는 경우, 결함이 있다면 하위 클래스까지 전파되어도 괜찮은 경우에 사용한다.예: Bird 클래스는 Animal 클래스를 상속받을 수 있다. 이는 "새는 동물이다"라는 관계를 표현한다.조합(Composition)조합은 새로운 클래스가 기존 클래스를 포함하는 관계를 의미한다. 새로운 클래스를 만들고 private 필드로 기존 클래스의 인스턴스를 참조한다.조합은 "has-a" 관계를 나타낼 때 사용한다.예: Car 클래스가 Engine 클래스를 포함할 수 있다. 이는 "자동차는 엔진을 가지..
가비지 컬렉션의 작동 원리가비지 컬렉션(Garbage Collection, GC)은 프로그램이 더 이상 사용하지 않는 메모리를 자동으로 해제하는 과정이다. 자바에서는 JVM이 가비지 컬렉터를 사용하여 이 작업을 수행한다. 기본적인 작동 원리는 다음과 같다.객체 생성: 프로그램이 새로운 객체를 생성하면 힙(heap) 메모리 영역에 할당된다.사용 중인 객체 추적: JVM은 프로그램이 참조하는 모든 객체를 추적한다.미사용 객체 식별: 더 이상 참조되지 않는 객체는 "가비지"로 간주된다.가비지 수집: 가비지 컬렉터가 주기적으로 실행되어 미사용 객체를 메모리에서 제거하고, 메모리를 재사용할 수 있게 한다.G1GC와 기존의 가비지 컬렉션 방식 비교G1GC(Garbage-First Garbage Collector)는..