본문 바로가기

전체 글64

[MySQL] 조건문 (IF문, CASE문) CASEWHEN [조건식1] THEN [값1]WHEN [조건식2] THEN [값2]...ELSE [값3]END1. IF문MySQL의 IF문은 기본적으로 엑셀에서 IF함수를 작성하는 방법과 같다.사용방법은 아래와 같이 조건, 참일 때의 값, 거짓일 때의 값을 차례로 명시한다.IF( [조건식], [조건 참일 때 값], [조건 거짓일 때 값] ) 간단한 예시를 통해 실제 사용되는 IF문을 알아보자.SELECT SUBWAY_LINE,IF (SUBWAY_LINE = 1, 'BLUE', 'GRAY') AS 'LINE_COLOR'FROM SUBWAY_INFO 2. CASE ~ THEN문 CASE ~ THEN 문은 IF문과는 다르게 여러 개의 조건이 있을 때 사용할 수 있다.반드시 마지막에 END를 통해 CASE ~ .. 2024. 10. 23.
[프로그래머스 | MySQL] 자동차 대여 기록에서 장기/단기 대여 구분하기 1. 문제https://school.programmers.co.kr/learn/courses/30/lessons/151138 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr다음은 어느 자동차 대여 회사의 자동차 대여 기록 정보를 담 은 CAR_RENTAL_COMPANY_RENTAL_HISTORY 테이블입니 다. CAR_RENTAL_COMPANY_RENTAL_HISTORY 테이블은 아래와 같은 구조로 되어있으 며, HISTORY_ID, CAR_ID, START_DATE, END_DATE 는 각각 자동차 대여 기록 ID, 자동차 ID, 대 여 시작일, 대여 종료일.. 2024. 10. 17.
[Spring Boot] PresignedUrl 활용한 AWS S3 버킷에 이미지 업로드 구현 0. PresignedUrl 사용 배경보통 이미지의 업로드/다운로드의 과정은 어떻게 진행할까?이미지 자체는 S3에 업로드하고, S3의 url을 백엔드 서버에 저장클라이언트가 이미지를 요청하면 서버는 저장된 url을 반환한다.즉, 크게 나눈다면 "S3에 이미지 업로드/다운로드", "S3에 접근하는 url 저장" 두가지라고 생각할 수 있다.하지만 S3에 이미지를 업로드/다운로드를 하는 과정은 어떻게 진행되었을까? 기존의 방식서버가 클라이언트에게 이미지 자체를 받는다.서버가 보안절차를 거친다.(AWS sdk secret key를 활용해 s3접속)서버가 버킷에 이미지를 올린다.이렇게 구현된 이유는 보안이슈 때문이다. 아무나 이미지를 업로드하게 하면 안되기에, 서버를 거쳐 이미지 업로드를 구현했었다. 그렇다면 위.. 2024. 8. 28.
[백준] 13397번 구간 나누기 2 (Gold 4) 문제 링크 : https://www.acmicpc.net/problem/13397 1. 문제 접근N개의 수로 이루어진 배열을 m개의 구간으로 나누어야 한다.하나의 구간은 하나 이상의 연속된 수로 이루어져 있다.구간의 점수 = 구간 내 최대값 - 구간 내 최소값"n개의 수로 이루어진 배열" 과 "구간의 개수 m"이 주어졌을 때, "구간의 점수"의 최댓값의 최소값을 구하는 문제일단 이 문제를 이해하기 전 최대값의 최소값이 무엇인지 알아보자.정말 말도 안되는 말인 것 같지만 문장의 흐름을 어느 구간에서 끊는가가 문제를 이해하는데 아주 큰 도움이 된다.구간의 점수의 최댓값 / 의 최소값 이라고 생각해보자.m개의 구간에서 "구간의 점수"가 나올 것이다.이러한 각 구간의 점수의 최대값을 구해보자.만약 제시된 예제와.. 2024. 8. 19.
이진 탐색 / 매개 변수 탐색 1. 선형 탐색보통 생각하는 탐색(완전 탐색)은 선형 탐색으로 수행된다.예를 들어 어떤 수(10)가 배열에 존재 하는지 탐색하는 상황을 말한다.선형 탐색은 일렬된 자료를 단방향으로 모두 확인하며 탐색을 진행하기 때문에 시간복잡도는 O(n)이 나온다.만약, 배열이 정렬이 되어 있다면 더 빠르게 탐색할 수 있다.정렬이 기본적인 전제 조건으로 배열이 있다면?2. 이진 탐색정렬된 상태의 배열에서의 탐색 (10을 찾기)이진 탐색 : 탐색 범위를 절반씩 좁혀가며 탐색을 진행어떤 수를 찾을 때, 범위를 절반씩 줄여나가며 정답 후보를 갱신하므로 시간복잡도는 O(logN)이 나온다.ex) [1, 6, 8, 10, 15, 16, 20, 22, 23, 24] - 배열 내 10을 찾는 과정start 1 ~ end 24 → m.. 2024. 8. 12.
[DBMS] DB Locking 1. DB Locking 이란?DB Locking은 데이터베이스 내 동시성과 데이터의 일관성을 보장하기 위해 사용되는 데이터 관리 메커니즘이다.보통 데이터베이스에 여러 사용자가 동시에 데이터에 접근하거나 수정할 때 충돌이 일어날 수 있다.이러한 충돌을 제어하기 위해 트랜잭션의 격리 수준과 비즈니스 로직에 따라 데이터에 접근을 막는 Locking이 필요하다.1-1. Lock의 설정 범위데이터베이스데이터베이스 범위의 Lock은 1개의 세션만이 데이터베이스 내 데이터에 접근 가능하게 하는 Lock의 범위이다.보통 데이터베이스 전체 범위로 Lock을 설정하면 동시성과 효율이 매우 떨어지기 때문에 사용하지 않는다.하지만 데이터베이스의 소프트웨어 버전을 변경하거나 중요한 데이터베이스의 업데이트를 진행할 때 설정한다.. 2024. 8. 6.
우선순위 큐(최대힙, 최소힙), 다익스트라 알고리즘 1. 최소 힙, 최대 힙 (우선 순위 큐)우선순위 큐 : 들어온 순서와 상관없이 정해진 기준에 따라 값이 먼저 나간다.1-1. 사용법최대 힙 - priority_queue pq;최소 힙 - priority_queue, greater> pq;맨 앞 - pq.top()1-2. 사용 예시최대값 또는 최소값의 빠른 접근 및 삭제가 필요한 경우예를 들어, 데이터 스트림에서 현재까지 입력된 값 중 최대값 또는 최소값을 실시간으로 추적해야 할 때 유용합니다.예시: 주어진 데이터에서 k번째로 큰 요소를 찾아야 하는 경우.동적으로 데이터의 정렬이 필요한 경우리스트나 배열에 요소를 삽입하면서 정렬된 상태를 유지해야 하는 경우에 우선순위 큐가 유리합니다.예시: 정렬된 데이터 스트림에서 새로운 데이터가 추가될 때마다 정렬을 .. 2024. 7. 29.
[Spring Boot] IoC(제어의 역전, Inversion of Control) / DI(의존성 주입, Dependency Injection) 1. IoC(Inversion of Control)란IoC는 Inversion of Control의 약자로 말 그대로 제어의 역전이라 한다.제어의 역전은 메서드나 객체의 호출 작업을 개발자가 아닌 프레임워크에게 제어권을 넘기는 행위다.스프링에서의 IoC는 Controller, Service와 같은 객체들의 동작을 개발자가 직접 구현하지만 해당 객체들의 호출 시점을 개발자가 제어하지 않는다.스프링 프레임워크가 요구하는 방식으로 메서드나 객체를 구현하면 해당 메서드와 객체의 생성, 호출, 소멸은 프레임워크가 알아서 해주는 것을 의미한다.이전까지는 개발자가 객체의 생성을 관리하며 제어했지만, 스프링을 사용하게 되면 스프링 컨테이너에게 제어권을 넘겨 스프링 컨테이너가 흐름을 제어하게 된다.2. IoC의 장점객체.. 2024. 7. 28.
[Spring Data JPA] 실전! 스프링 데이터 JPA 정리 해당 포스팅은 인프런에서 김영한님의 "실전! 스프링 데이터 JPA" 강의를 수강 후 핵심 개념을 정리한 내용입니다. 실전! 스프링 데이터 JPA 강의 | 김영한 - 인프런김영한 | 스프링 데이터 JPA는 기존의 한계를 넘어 마치 마법처럼 리포지토리에 구현 클래스 없이 인터페이스만으로 개발을 완료할 수 있습니다. 그리고 반복 개발해온 기본 CRUD 기능도 모두 제www.inflearn.com 1.  공통 인터페이스 적용컴포넌트 스캔을 스프링 데이터 JPA가 자동으로 처리하기 때문에 @Repository 애노테이션 생략이 가능하다.JpaRepository 인터페이스를 통해 기본적인 CRUD를 제공한다.생성하는 인터페이스는 "엔티티명" + Repository로 네이밍 해야 한다.인터페이스를 생성 후 JpaRe.. 2024. 7. 18.