목록분류 전체보기 (153)
자바칩

// 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는 개발자가 쉽게 이해하고 사용할 수 있어, 최종 사..
상속 조합을 사용하는 상황 구분상속(Inheritance)상속은 부모 클래스의 속성과 메서드를 자식 클래스가 물려받는 관계를 의미한다.상속은 확장을 고려하고 설계가 확실한 "is-a" 관계일 때와, API에 아무런 결함이 없는 경우, 결함이 있다면 하위 클래스까지 전파되어도 괜찮은 경우에 사용한다.예: Bird 클래스는 Animal 클래스를 상속받을 수 있다. 이는 "새는 동물이다"라는 관계를 표현한다.조합(Composition)조합은 새로운 클래스가 기존 클래스를 포함하는 관계를 의미한다. 새로운 클래스를 만들고 private 필드로 기존 클래스의 인스턴스를 참조한다.조합은 "has-a" 관계를 나타낼 때 사용한다.예: Car 클래스가 Engine 클래스를 포함할 수 있다. 이는 "자동차는 엔진을 가지..