분류 전체보기 146

[ODOQ] 데이터베이스 커넥션 풀(Connection Pool)이란?

[One Day One Question]데이터베이스 커넥션 풀(Connection Pool)에 대해 설명해 주세요.데이터베이스 커넥션 풀은 데이터베이스와의 연결을 효율적으로 관리하기 위한 기술입니다. 기본적으로, 데이터베이스에 연결하는 과정은 시간이 많이 소요되고 리소스를 소모하는 작업입니다. 커넥션 풀은 이러한 연결을 미리 생성해 두고, 필요할 때마다 재사용함으로써 성능을 최적화합니다. 예를 들어, 웹 애플리케이션에서 여러 사용자가 동시에 데이터베이스에 접근할 때, 매번 새로운 연결을 생성하는 대신, 커넥션 풀에서 미리 만들어진 연결을 가져와 사용합니다. 이렇게 하면 연결을 생성하고 종료하는 데 드는 오버헤드를 줄일 수 있어, 애플리케이션의 응답 속도가 빨라집니다.또한, 커넥션 풀은 동시에 열 수 있는..

cs/ODOQ 2024.12.19

[ODOQ] 운영체제(OS)란?

[One Day One Question]운영체제(OS)에 대해 설명해 주세요.운영체제 (Operating System, OS)는 컴퓨터 시스템의 하드웨어와 소프트웨어 자원을 관리하고, 사용자와 컴퓨터 간의 상호작용을 가능하게 하는 시스템 소프트웨어입니다. 운영체제는 하드웨어와 응용 프로그램 사이의 중간 역할을 하며, 시스템의 효율적이고 안정적인 사용을 위해 다양한 기능을 제공합니다. 운영체제의 주요 역할하드웨어 자원 관리CPU 관리: 여러 프로세스가 CPU를 효율적으로 사용할 수 있도록 스케줄링하고 우선순위를 관리합니다.메모리 관리: 주기억장치(RAM)를 프로세스 간에 적절하게 할당하고 해제합니다.디스크 및 파일 관리: 데이터 저장 장치(디스크)의 파일을 읽고 쓰는 작업을 효율적으로 처리합니다.입출력 장..

cs/ODOQ 2024.12.18

[프로그래머스] 경주로 건설 - Java

문제https://school.programmers.co.kr/learn/courses/30/lessons/67259 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr  문제 개요문제 설명N x N 크기의 격자 형태의 도면에서 출발점 (0,0)부터 도착점 (N-1, N-1)까지 자동차 경주로를 건설해야 합니다.경주로는 직선 도로와 코너로 구성되며, 각 비용은 다음과 같습니다:직선 도로: 100원코너: 500원격자는 0(빈 칸) 또는 1(벽)으로 이루어져 있으며, 벽이 있는 칸을 지나갈 수 없습니다.상하좌우로 이동하며 최소 비용으로 경주로를 완성해야 합니다.목표최소 비용으로 경주로를 건설하는 비용을 반환하는..

[ODOQ] 동기(Synchronous), 비동기(Asynchronous)

[One Day One Question]동기와 비동기에 대해 설명해 주세요.1. 동기(Synchronous)정의: 작업이 순차적으로 실행되며, 이전 작업이 완료될 때까지 다음 작업이 시작되지 않습니다. 즉, 순서대로 하나씩 작업을 처리합니다.특징:하나의 작업이 끝날 때까지 기다려야 다음 작업이 시작됩니다.실행 흐름이 예측 가능하고 직관적이지만, 시간이 오래 걸리는 작업이 있으면 전체 프로세스가 지연될 수 있습니다. 2. 비동기(Asynchronous)정의: 작업이 독립적으로 실행되며, 작업 완료를 기다리지 않고 다음 작업을 바로 시작합니다. 다른 작업과 동시에 진행될 수 있습니다.특징:하나의 작업이 끝나지 않아도 다른 작업을 시작할 수 있어 효율적입니다.동시에 여러 작업을 처리할 수 있지만, 작업 완료 ..

cs/ODOQ 2024.12.17

[프로그래머스] 주차 요금 계산 - Java

문제https://school.programmers.co.kr/learn/courses/30/lessons/92341 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr  문제 개요주어진 차량의 입출차 기록을 기반으로 주차 요금을 계산하는 문제입니다. 기본 시간과 요금, 단위 시간과 요금이 제공되며, 각 차량의 총 주차 시간을 계산한 후 요금 정책에 따라 최종 주차 요금을 산출해야 합니다. 접근 방법단순 구현 코드import java.util.*;class Solution { static Map map = new HashMap(); static Map info = new HashMap();..

[ODOQ] JPA ID 생성 전략

[One Day One Question]JPA ID 생성 전략에 대해 설명해 주세요.JPA에서 ID 생성 전략은 직접 할당 방식과 자동 생성 방식 두 가지로 나뉩니다. 각각의 방식은 기본 키를 어떻게 관리하고 생성할지 결정하며, 데이터베이스 설계 및 애플리케이션 요구사항에 따라 선택됩니다. 1. 직접 할당 방식 (Manual Assignment)설명: 개발자가 직접 기본 키 값을 설정하여 관리하는 방식입니다. JPA는 엔티티를 저장하기 전에 기본 키 필드에 값이 설정되어 있어야 하며, 그렇지 않으면 오류가 발생합니다.특징:개발자가 값을 명시적으로 설정.외부 시스템(예: REST API, 시퀀스 생성기 등)에서 기본 키를 생성할 수 있습니다.ID 생성 방식이 데이터베이스에 의존적이지 않음.복합 키를 사용하..

cs/ODOQ 2024.12.06

[ODOQ] 동일성과 동등성

[One Day One Question]동일성과 동등성에 대해 설명해 주세요.1. 동일성 (Identity)정의: 동일성은 두 객체가 같은 메모리 주소를 참조하고 있는지를 확인합니다.비교 방법: == 연산자를 사용합니다.사용 예:동일성은 객체가 같은 인스턴스인지 확인하는 데 사용됩니다.public class IdentityExample { public static void main(String[] args) { String str1 = new String("Hello"); // 새로운 String 객체 생성 String str2 = new String("Hello"); // 또 다른 String 객체 생성 String str3 = str1; // str3은 st..

cs/ODOQ 2024.12.06

[Spring boot] compile과 implementation

build.gradle에서 compile과 implementation은 모두 의존성을 선언하는 데 사용되지만, 둘 사이에는 중요한 차이가 있습니다. Gradle 7.0부터는 compile이 deprecated(사용 중지)되었고, 대신 implementation과 api로 대체되었습니다. 1. compile vs implementation의 차이compile예전 방식: compile은 이전 Gradle 버전에서 의존성을 선언할 때 사용되던 기본 방식입니다. 이 방식으로 선언된 의존성은 컴파일 시간과 런타임 시간 모두에서 프로젝트에 포함됩니다.특징:해당 의존성은 compile에 의해 컴파일 시점과 실행 시점 모두에서 사용할 수 있습니다.compile 의존성은 해당 프로젝트를 사용하는 다른 프로젝트에 전이적(..

cs 2024.12.04

[Spring boot / 오류] build.gradle 오류 (gradle버전과 의존성 옵션)

gmail API를 사용하기 위해 공식 홈페이지에서 제공하는 레퍼런스를 보면서 dependencies에 추가하다가 오류가 발생했다. https://developers.google.com/gmail/api/downloads?hl=ko#gradle Gmail API 클라이언트 라이브러리  |  Google for Developers이 페이지는 Cloud Translation API를 통해 번역되었습니다. 의견 보내기 Gmail API 클라이언트 라이브러리 컬렉션을 사용해 정리하기 내 환경설정을 기준으로 콘텐츠를 저장하고 분류하세요. Gmail API는developers.google.comdependencies { //gmail API compile 'com.google.apis:google-api..

삽질 2024.12.04

[프로그래머스] 보석 쇼핑 - Java

문제https://school.programmers.co.kr/learn/courses/30/lessons/67258 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr  문제 개요어피치가 보석 매장에서 모든 종류의 보석을 적어도 하나씩 포함하는 가장 짧은 구간을 찾으려 한다. 진열대 번호 순서대로 주어진 보석 배열에서 이러한 구간의 시작과 끝 번호를 반환하는 문제이다.접근 방법보석 종류 개수 파악:주어진 gems 배열에서 HashSet을 사용해 보석의 고유한 종류 개수를 구한다. 이를 기준으로 구간 내에서 모든 보석 종류를 포함했는지 판단한다.투 포인터 알고리즘 활용:start와 end 포인터를 사용해 현..