
🖨 자바에서의 객체 복사자바에서의 객체 복사는 얕은 복사와 깊은 복사가 존재한다. 둘의 차이를 알아보자사용할 예제는 다음과 같다. import java.util.Objects;class Book { private String name; // 책 이름 private Author author; // 저자 public Book(String name, Author author) { this.name = name; this.author = author; } public Book shallowCopy() { // 얕은 복사 return new Book(this.name, this.author); } public Book deepCopy() { // 깊은 복사 Author copiedAuthor = new ..

👻 Servlet(서블릿)Servlet(서블릿)은 Java 언어를 기반으로 하는 웹 애플리케이션 개발을 위한 기술로, 클라이언트의 요청에 따라 동적으로 서버에서 처리하는 자바 클래스이다. 서블릿은 동적 웹페이지를 만들 때 사용되는 자바 기반의 웹 애플리케이션 프로그래밍 기술이며 HTTP 프로토콜을 통해 클라이언트의 요청을 받고, 자바 코드를 통해 동적인 웹 페이지를 생성하거나 데이터를 처리해서 응답을 반환해준다. 서블릿 이전에는?서블릿 이전의 초기 웹은 단순히 정적인 HTML 문서를 클라이언트에게 제공하는 방식이었다.사용자가 서버에 HTML 파일을 요청하면 👉 서버는 해당 HTML 문서를 그대로 전송한 것이다.이를 통해 웹 페이지를 표시할 수는 있었지만, 사용자 맞춤형 데이터나 동적인 컨텐츠는 제공할..

📖 Index(인덱스)Index(인덱스)란 데이터베이스 테이블의 검색 속도를 향상시키기 위한 자료구조이다. 사전의 색인과 같다. 인덱스를 사용하면 데이터베이스에서 원하는 정보(레코드, 튜플)를 빠르게 조회할 수 있다.인덱스는 튜플의 주소라고 생각하면 쉽다. (인덱스에 키를 대응시키고 튜플에 값을 대응시켜보자)또한 인덱스는 정렬되어 있다. 인덱스를 이루는 자료구조인덱스를 구현하기 위한 자료구조로 대표적인 것은 B-Tree와 해시 테이블이다. 1️⃣ B(Balanced)-Tree 인덱스B-Tree는 데이터베이스의 인덱싱 알고리즘 가운데 가장 먼저 도입되고 가장 일반적으로 사용되는 알고리즘으로 트리 구조를 따른다.(트리구조 : 루트 노드, 브랜치 노드, 리프 노드로 구성되는 형태)트리의 리프 노드가 실제 데..

☝ 일급 컬렉션일급 컬렉션이란 하나의 컬렉션을 감싸는 클래스를 만들고 해당 클래스에서 컬렉션과 관련된 비즈니스 로직을 관리하는 패턴이다. 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];..
- Total
- Today
- Yesterday
- N+1문제
- 백준
- Thymeleaf
- checkedException
- @Spring
- uncheckedException
- id생성전략
- StreamAPI
- 일급컬렉션
- 메인메소드
- 생성자
- Java
- Optional
- ddl-auto
- upperBound
- @ConfigurationProperties
- @Value
- 동등성
- 이진탐색
- 오블완
- lowerBound
- 유효성 검사
- @NoArgsConstructor
- Spring
- 자바
- NPE
- springboot
- null
- 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 |