목록2024/05 (26)
자바칩
기말고사 1. String 클래스와 StringBuilder, StringBuffer 클래스의 차이를 정리해 주세요.클래스차이점String불변성 객체이므로, + 연산을 하면 원본 객체는 버리고 새로운 객체를 리턴한다.StringBuilder가변성 객체이므로, append() 메소드를 통해 원본 객체를 변경할 수 있다. Thread Safe하지 않다.StirngBuffer가변성 객체이므로, append() 메소드를 통해 원본 객체를 변경할 수 있다. Thread Safe하다. 2. String 클래스의 indexOf(), substring(), split(), getBytes() 메소드가 어떤 용도로 사용되는지 정리해 주세요.메소드용도indexOf()문자열 내에서 매개 변수로 들어온 문자열이 시작하는 위..
// Use DBML to define your database structure// Docs: https://dbml.dbdiagram.io/docsTable user { user_id bigint [primary key] image_id bigint nickname varchar username varchar password varchar email varchar phone varchar birth varchar gender varchar role varchar created_at datetime updated_at datetime}Table artist { artist_id bigint [primary key] image_id bigint name varchar crea..
정리해 봅시다 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)"라고도 부른다.그리..
난이도: Gold 4문제: https://www.acmicpc.net/problem/16234 이 문제는 같은 영역끼리 묶어서 그 영역의 인구수의 평균만큼 이동을 시켜야 한다.처음에는 영역 체크를 boolean 배열로 만들어서 조건에 해당하면 전부 true로 체크하여서 모두 같은 영역으로 처리하여 문제를 풀었는데, 그렇게 하면 안되고 영역 체크를 int 배열을 만들어서 국경선으로 구별하여 각각 다른 영역으로 처리해주어야 한다. 말로만 보면 이해가 안될 것이다. 그림을 보자. 초기 배열은 이렇다. 처음에는 국경선을 먼저 열어야 한다.국경선을 여는 조건은 인접한 칸(상, 하, 좌, 우)과의 인구 차이가 10명 이상 50명 이하일 경우이다. 인접한 칸과의 인구 차이가 10명 이상 50명 이하일 경우, 국경..
API 설계의 중요성API(Application Programming Interface, 응용 프로그래밍 인터페이스)는 소프트웨어 구성 요소가 서로 상호작용할 수 있게 하는 규칙 및 도구 모음이다. 잘 설계된 API는 다음과 같은 중요한 이점을 제공한다.유지보수성: 명확하고 일관된 API는 코드의 이해와 수정이 용이하여 유지보수가 쉬워진다.확장성: 잘 설계된 API는 새로운 기능을 추가하거나 기존 기능을 개선할 때 확장이 용이하다.재사용성: 표준화된 API는 다양항 애플리케이션에서 쉽게 재사용될 수 있다.협업 용이성: API는 개발 팀 간의 협업을 용이하게 하여, 분산된 팀이 동시에 작업할 수 있도록 지원한다.사용자 경험 향상: 명확하고 직관적인 API는 개발자가 쉽게 이해하고 사용할 수 있어, 최종 사..