
☝ 일급 컬렉션일급 컬렉션이란 하나의 컬렉션을 감싸는 클래스를 만들고 해당 클래스에서 컬렉션과 관련된 비즈니스 로직을 관리하는 패턴이다. Wrapping된 컬렉션 이외의 다른 멤버 변수는 없어야한다.public class Orders { private final List orders; public Orders(List orders) { this.orders = orders; }}여기서 Order List 컬렉션을 감싼 Orders 클래스가 일급 컬렉션이다. 왜 사용하는가?1️⃣ 비즈니스에 종속적인 자료구조일급 컬렉션에 비즈니스 로직을 작성하면 중복 제거, 안정성 향상, 유지보수성 증가 등의 이점을 얻을 수 있다. Orders라는 일급 컬렉션이 Order 클래스를 관리한다고 해보..

🎮 자바의 Exception자바는 Throwable이라는 모든 예외와 오류의 최상위 클래스를 가진다.그리고 Error와 Exception이 각각 Throwable을 상속하는 구조이다.Exception 클래스는 예외의 슈퍼 클래스로 Checked Exception과 Runtime Exception 으로 나뉜다. Unchecked Exception이 Runtime Exception의 하위 클래스이다. (Error는 Exceptoin에 속하지 않는다.) Checked Exception컴파일 타임에 처리해야 하는 예외로 개발자가 강제적으로 처리해야 하는 Exception 중요한 것은 Checked Exception은 예외 처리가 강제된다는 것이다.public void throwsCheckedException(..

🪐 N + 1 문제JPA의 N+1 문제는 연관 관계가 설정된 엔티티를 조회할 경우 조회된 데이터 개수(N)만큼 연관관계의 조회 쿼리가 추가로 발생하는 현상이다.만약, 유저와 게시물 엔티티가 1 : N의 관계를 맺고 있는 경우, 유저를 조회한 후 각 유저마다 게시물을 조회하기 위해 유저의 개수(N)만큼의 쿼리가 더 날아간다.데이터가 얼마 없는 환경에서는 큰 성능 이슈가 없겠지만 실제 업무를 수행하거나 많은 양의 데이터를 조회할 시에는 성능 이슈가 생기게 된다. JPA로 개발 시 성능상 가장 주의해야 하는 것이 N+!문제다. 즉시 로딩 즉시 로딩은 JPQL을 실행할 때 N + 1 문제가 발생할 수 있다. // User.java@OneToMany(mappedBy = "user", fetch = FetchTy..
🗳 ddl-auto 옵션JPA의 구현체 중 하나인 Hibernate가 제공하는 기능 중에 하나로, 데이터베이스 스키마 관리를 제어하는 설정 application.yml이나 application.properties에서 관련 설정이 가능하다. ddl-auto 속성1. none데이터베이스 스키마와 관련된 작업을 수행하지 않는다.실제 운영 환경인 프로덕션 환경에서 주로 사용된다.2. validate애플리케이션 실행 시점에 엔티티와 테이블이 정상적으로 매핑되었는지 확인한다.따로 스키마 변경을 없다.3. update애플리케이션 실행 시점에 엔티티와 테이블 상태를 확인하여(엔티티 매핑과 데이터베이스 스키마 비교) 필요한 경우 스키마를 업데이트한다.기존 데이터는 유지되고, 새로운 엔티티나 변경된 엔티티 필드가 스키마..
SWEA 0/1 Knapsack (D 3)// 0/1 Knapsackimport java.util.*;public class Swea3282 { public static void main(String args[]) throws Exception { Scanner sc = new Scanner(System.in); int T; T=sc.nextInt(); for(int test_case = 1; test_case = v) { dp[i][j] = Math.max(dp[i - 1][j - v] + c, dp[i - 1][j]); } // 내가 못 들어감 else { dp[i][j] = dp[i - 1][j]; } } } System.out.pr..
SWEA 햄버거 다이어트 (D 3)package test;import java.util.*;import java.io.FileInputStream;public class Swea5215 { static int[] score; static int[] calory; static int n; static int max; public static void main(String args[]) throws Exception { //System.setIn(new FileInputStream("res/input.txt")); /* 표준입력 System.in 으로부터 스캐너를 만들어 데이터를 읽어옵니다. */ Scanner sc = new Scanner(System.in); int T; T=sc.ne..
백준 가장 긴 증가하는 부분 수열 4 (골드 IV)import java.util.ArrayList;import java.util.LinkedList;import java.util.List;import java.util.Scanner;// 가장 긴 증가하는 부분 수열 4(골드 4)public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int n = sc.nextInt(); int[] arr = new int[n]; for (int i = 0; i > list = new ArrayList(); for (int i = 0; i ()); } int[] dp = new int[n];..
🧪 @Value 어노테이션@Value 어노테이션은 설정파일에 설정한 내용을 주입시키는 어노테이션이다.예를 들어, GitHub 레포지토리에 코드를 공유하는 상황에서 DB 연결에 필요한 비밀번호나 클라우드 관련 민감 정보가 노출되는 상황은 매우 위험한 상황이다. 즉, 메타정보들은 파일로 따로 빼서 관리해야 한다. 그리고 그런 정보들을 주입시키는 어노테이션이 @Value 이다. 간단한 코드로 예시를 살펴보면@Configurationpublic class RedisConfig { @Value("${spring.data.redis.host}") private String redisHost; @Value("${spring.data.redis.port}") private int redisPor..

💽 RAID RAID(Redundant Array Of Independent Disks)란 수 많은 데이터들을 안전하게 저장하거나 성능을 높이기 위해서 여러 디스크나 SSD를 마치 하나의 장치처럼 사용하는 기술이다. RAID는 여러 개의 디스크를 묶어서 논리적으로 하나의 디스크 시스템의 역할을 하도록 만든 것이다.기본적으로 비용이 낮은 소규모 디스크들을 여러 개 사용하여 이를 배열 형태로 구성한다.결국 컴퓨터를 구성하는 부품 중 속도가 느린 하드디스크를 보완하기 위해 만든 기술이다. RAID Level데이터 저장 방식에 따라 Level이 나뉜다.RAID 0디스크 스트라이핑이라고도 하며 여러 디스크에 데이터를 나누어 저장한다. 즉, 최소 2개의 디스크가 필요하다.데이터를 분산 저장하므로 데이터 조회 속도..
스터디 참여CS를 준비해야 한다는 것은 너무 잘 알았지만 양도 방대하고 도저히 엄두가 안났다.더이상 미룰 수 없다고 생각한 시기에 우연히 Jscode에서 CS 스터디를 진행한다는 글을 보았고, Java 분반을 신청했다.자바로 개발을 하고 있지만 겉핥기식으로 공부하고 있다고 느끼던 도중이라 더 기대가 되었다. 스터디 규칙총 5주간 진행되는 스터디였다.매주 멘토님들이 문제를 뽑아주시면 그에 대한 답변을 공부해가고, 스터디 시간에 모의 면접을 보는 방식이었다.면접자, 면접관, 타임키퍼의 역할을 돌아가며 수행하는 방식이었다. 스터디 후 성장한 점문제에 대해 답변을 달면서 느낀건 구글링 없이 혼자 답변할 수 있는게 거의 없다는 것이었다.예를 들면 == 과 equals()의 차이라던지, 어노테이션에 관해서라던지 평..
- Total
- Today
- Yesterday
- 생성자
- @ConfigurationProperties
- 백준
- 자바
- @Spring
- @NoArgsConstructor
- Java
- 티스토리챌린지
- 이진탐색
- Thymeleaf
- Spring
- 오블완
- Optional
- lowerBound
- null
- checkedException
- @Value
- id생성전략
- 일급컬렉션
- 메인메소드
- StreamAPI
- ddl-auto
- NPE
- springboot
- N+1문제
- 동등성
- 유효성 검사
- upperBound
- uncheckedException
- JPA
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |