목록Study (60)
자바칩
프로세스와 쓰레드는 컴퓨터 프로그램을 실행하는 두 가지 기본 단위이다. 각 단위는 운영 체제에서 독립적으로 관리되며 고유한 특성을 가진다. 프로세스와 쓰레드의 차이점프로세스정의: 운영 체제에서 실행 중인 프로그램의 인스턴스메모리 관리: 각 프로세스는 독립된 메모리 공간을 가진다. 프로세스 간의 메모리 공유는 기본적으로 불가능하며, IPC(Inter-Process Communication) 기법을 사용해야 한다.오버헤드: 프로세스를 생성하고 관리하는 데는 많은 자원이 소모된다.안정성: 한 프로세스가 실패해도 다른 프로세스에 영향을 미치지 않는다.쓰레드정의: 프로세스 내에서 실행되는 작은 단위의 작업 흐름메모리 관리: 쓰레드는 프로세스 내의 메모리와 자원을 공유한다. 같은 프로세스의 모든 쓰레드는 동일한 메..

AOP (Aspect-Oriented Programming, 관점 지향 프로그래밍)AOP는 프로그램의 여러 부분에 걸쳐 공통적으로 사용되는 기능을 모듈화하는 프로그래밍 패러다임이다. 예를 들어, 로깅, 보안, 트랜잭션 관리 등의 기능은 다양한 클래스와 메소드에 걸쳐 필요할 수 있다. AOP는 이러한 공통 기능을 하나의 모듈로 분리하여 코드의 중복을 줄이고 유지 보수를 용이하게 한다. AOP의 목적OOP와 이름이 비슷하여 상반된 개념 같지만, 관점 지향 프로그래밍은 객체 지향 프로그래밍을 보완하기 위해 쓰인다. 기존 객체(Object) 지향은 목적에 따라 클래스를 만들고 객체를 만들었다. 따라서 핵심 비즈니스 로직이든, 부가 기능의 로직이든 하나의 객체로 분리하는데 그치고, 그래서 이 기능들을 어떻게 바라..
기말고사 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)"라고도 부른다.그리..
API 설계의 중요성API(Application Programming Interface, 응용 프로그래밍 인터페이스)는 소프트웨어 구성 요소가 서로 상호작용할 수 있게 하는 규칙 및 도구 모음이다. 잘 설계된 API는 다음과 같은 중요한 이점을 제공한다.유지보수성: 명확하고 일관된 API는 코드의 이해와 수정이 용이하여 유지보수가 쉬워진다.확장성: 잘 설계된 API는 새로운 기능을 추가하거나 기존 기능을 개선할 때 확장이 용이하다.재사용성: 표준화된 API는 다양항 애플리케이션에서 쉽게 재사용될 수 있다.협업 용이성: API는 개발 팀 간의 협업을 용이하게 하여, 분산된 팀이 동시에 작업할 수 있도록 지원한다.사용자 경험 향상: 명확하고 직관적인 API는 개발자가 쉽게 이해하고 사용할 수 있어, 최종 사..