분류 전체보기(250)
-
백준 21758: 꿀따기 [Java] - 포포
문제 문제 링크 https://www.acmicpc.net/problem/21758 21758번: 꿀 따기 첫 번째 줄에 가능한 최대의 꿀의 양을 출력한다. www.acmicpc.net 문제에서 주어진 장소의 크기(N)은 최대 100,000이므로 O(N*N)보다 시간복잡도가 크거나 같은 풀이로는 해결할 수 없습니다. 풀이의 핵심은 벌 두마리와 꿀통의 위치가 가능한 경우의 수를 전부 따져보는 것입니다. [1] 벌 - 벌 - 꿀통 [2] 벌 - 꿀통 - 벌 [3] 꿀통 - 벌 - 벌 총 3가지의 경우가 존재합니다. 이 3가지 경우를 전부 검사한다면, 벌 두마리가 획득할 수 있는 꿀의 최대값을 얻어낼 수 있습니다. 1번과 3번의 경우에서 벌 한마리와 꿀통은 반드시 양 끝에 위치하고 있어야합니다. 최대한 많은 ..
2023.06.12 -
[Java] Record Class란?
레코드란? 불변(immutable) 객체를 쉽게 생성할 수 있도록 하는 유형의 클래스입니다. JDK14에서 preview로 등장하여 JDK16에서 정식 스펙으로 포함되었습니다. 저는 JDK 17 LTS 버전으로 프로젝트를 진행하며 레코드 클래스의 장점을 맛봤습니다. Before 학생(Student) 클래스에 이름과 나이 필드가 있다고 가정하겠습니다. Record를 사용하기 전에, Student를 불변 객체를 생성하기 위해서는 다음과 같이 코드를 작성해야 합니다. public class Student { private String name; private int age; public Student(String name, int age) { this.name = name; this.age = age; } p..
2023.06.12 -
[DB] 파티셔닝(partitioning)
Intro 아래 영상을 보고, 글로 정리해서 포스팅합니다. https://youtu.be/P7LqaEO-nGU 파티셔닝이란? 데이터베이스의 테이블을 목적에 따라 작은 테이블들로 나누는 방식을 말합니다. 크게 수직 파티셔닝과 수평 파티셔닝으로 나뉩니다. 둘을 차례대로 살펴보도록 하겠습니다. 수직 파티셔닝 Column을 기준으로 테이블을 나누는 방식입니다. 아래는 게시글 정보를 저장하고 있는 일반적인 테이블입니다. Table name: Board id 제목 작성자id 생성 일자 조회 수 댓글 수 content 1 호식이 치킨 leehosik 2023-06-04 67 12 ... 2 날씨가 좋네요 niceWeather 2023-06-04 1 0 ... 만약 아래와 같은 게시글 목록을 구성하려면 필요한 데이터는..
2023.06.04 -
[DB] 반정규화(Denormalization)
Intro 지난 포스팅에서 정규화에 대해 알아보았습니다. 정규화는 요약하자면 데이터의 일관성을 지키고 중복을 막기 위해 데이터를 분해하는 과정입니다. 정규화를 거치면 불필요한 데이터를 입력하지 않아도 되므로, 중복 데이터가 제거된다는 장점이 있었습니다. 하지만 테이블을 분해할수록 조회 시 join 연산 수행이 많아지므로 CPU와 메모리를 많이 사용하게 된다는 단점도 존재합니다. 이때, join으로 인한 성능 저하가 예상될 때 반정규화를 적용해볼 수 있습니다. 반정규화란? 정규화된 엔티티, 속성, 관계에 대해 시스템의 성능향상과 개발과 운영의 단순화를 위해 중복, 통합, 분리 등을 수행하는 데이터 모델링의 기법으로, 의도적으로 정규화 원칙을 위배하는 행위입니다. 반정규화를 수행하는 이유 정규화에 충실하여 ..
2023.06.04 -
[DB] 정규화(Normalization)란?
정규화란? 정규화는 '이상현상'이 있는 릴레이션을 분해하여 이상현상을 없애는 과정입니다. 릴레이션을 분해하여 중복된 데이터를 줄이고 무결성(Integrity)를 유지하는 것이 정규화의 목표입니다. 정규화를 살펴보기 전에 반드시 짚고 넘어가야 하는 이상현상과 함수 종속성의 개념에 대해 알아보겠습니다. ** 해당 포스팅은 제4,5 정규형은 다루지 않습니다. 이상현상(Anomaly) 이란? 삽입 이상(Insertion Anomaly) : 튜플 삽입 시 특정 속성에 해당하는 값이 없어 NULL을 입력해야 하는 현상 삭제 이상(Deletion Anomaly) : 튜플 삭제 시 같이 저장된 다른 정보까지 연쇄적으로 삭제되는 현상 => 아래의 테이블에서 장미란이라는 학생의 정보를 지울 경우, 강의실 103도 같이 사..
2023.05.28 -
Openfeign으로 외부 API 호출하기
Intro 최근에 https://thecatapi.com/ 사이트에서 제공하는 데이터를 이용해서, 고양이 사진 정보를 제공하는 API 서버를 만들었습니다. 아 고양이 키우고싶다 제 SpringBoot 서버에서 고양이 사진 정보를 가져올 때, Spring Cloud 라이브러리의 Openfeign를 사용했습니다. 또, 최근에 본 MSA 관련 영상에서도 Openfeign을 이용해 내부 서비스들 간 데이터를 주고받는 것을 보고, 이참에 Openfeign을 포스팅해야겠다 싶었습니다. theCatApi가 제공하는 데이터는 아래 링크에 잘 나와 있습니다. https://developers.thecatapi.com/view-account/ylX4blBYT9FaoVd6OhvR?report=bOoHBz-8t Report ..
2023.05.28