[토비의 스프링 3.1] 5장 정리 - 1

5-1. 사용자 레벨 관리 기능 추가 정해진 조건에 따라 사용자의 레벨을 변경하는 기능 추가 5.1.1 필드 추가 Level 이늄 사용자 레벨을 이늄(enum)으로 정의 public enum Level { Basic(1), SILVER(2), GOLD(3); private final int value; Level(int value) { this.value=value; } public int intValue() { return value; } public static Level valueOf(int value) { switch(value) { case 1: return BASIC; case 2: return SILVER; case 3: return GOLD; default: throw new AssertionError("Unknown value: "+ value"); } } } User 필드 추가 public class User { ....

January 14, 2023 · 4 min · 815 words · Me

[토비의 스프링 3.1] 4장 정리

4.1 사라진 SQLException 4.1.1 초난감 예외처리 예외 블랙홀 - catch 문에 아무것도 넣지 않는 경우 무의미하고 무책임한 throws 예외 처리시 핵심 원칙 모든 예외는 적절하게 복구되거나 작업을 중단시키고 개발자에게 통보되어야 함. 4.1.2 예외의 종류와 특징 체크 예외(checked exception) - 명시적인 처리가 필요한 예외를 사용하고 다루는 법 자바에서 throw를 통해서 발생시킬 수 있는 예외 Error - java.lang.Error 클래스의 서브클래스들 시스템 레벨에서 특별한 작업을 하는게 아니라면 애플리케이션에서는 신경 쓰지 않아도 됨. Exception과 체크 예외 체크 예외 - Exception 클래스의 서브클래스이면서 RuntimeException 클래스를 상속하지 않은 것....

January 8, 2023 · 3 min · 594 words · Me

[토비의 스프링 3.1] 3장 정리

Intro 개방 폐쇄 원칙(OCP) : 변화의 특성이 다른 부분을 구분해주고, 각각 다른 목적과 다른 이유에 의해 다른 시점에 독립적으로 변경될 수 있는 효율적인 구조를 만들어주는 것 템플릿 : 일정한 패턴으로 유지되는 특성을 가진 부분을 자유롭게 변경되는 성질을 가진 부분으로부터 독립시켜서 효과적으로 활용할 수 있도록하는 방법 3.1 다시 보는 초난감 DAO 3.1.1 예외처리 기능을 갖춘 DAO DB 커넥션이라는 제한적인 리소스를 공유해 사용하는 서버에서 동작하는 JDBC 코드에는 반드시 지켜야 할 원칙이 있음. → 예외처리 (예외가 발생할 경우 리소스를 반환하도록 만들어야함....

December 18, 2022 · 5 min · 1063 words · Me

[토비의 스프링 3.1] 2장 정리

Intro 스프링의 핵심 = 객체지향 & 테스트 테스트 = 의도했던 대로 코드가 동작하는지를 확인해서, 만든 코드를 확신할 수 있게 해주는 작업임. 2.1 UserDaoTest 다시 보기 2.1.2 UserDaoTest의 특징 작은 단위의 테스트 테스트하고자 하는 대상이 명확하면 대상에만 집중해서 테스트하는 것이 바람직함. → 테스트는 작은 단위로 쪼개서 집중 (관심사의 분리) → 단위 테스트(unit test) 자동수행 테스트 코드 테스트는 자동으로 수행되도록 코드로 만들어지는 것이 중요함. (자주 반복할 수 있다는 장점이 있음.) 2.1.3 UserDaoTest의 문제점 수동 확인 작업의 번거로움 테스트의 수행은 코드에의해 자동으로 진행되지만 확인하는 일은 사람의 책임....

December 11, 2022 · 5 min · 867 words · Me

[백준] DP 1 - 2579번 계단 오르기

문제(link) DP로 해결하는 문제입니다. 풀이 방법 기본 조건 : 계단의 개수는 300이하의 자연수 arr = [0 for i in range(301)] dp = [0 for i in range(301)] 계단 오르기 규칙 1)1칸 or 2칸 오르기 가능 2)연속 3칸 밟기 불가능 3)마지막 칸 반드시 밟아야 함. → DP는 큰 문제를 작은 문제로 나누어 푸는 문제임. 어떤 큰 문제가 있을 때 그것의 가장 작은 문제부터 생각해야함. → 마지막 칸은 반드시 밟아야 하므로 다음과 같은 두 개의 경우의 수 존재함....

December 10, 2022 · 1 min · 200 words · Me

[토비의 스프링 3.1] 1.5~1.9 정리

1.5 스프링의 IoC 스프링의 핵심 → 애플리케이션 컨텍스트(빈 팩토리) 1.5.1 오브젝트 팩토리를 이용한 스프링 IoC 어플리케이션 컨텍스트와 설정정보 빈(bean) : 스프링이 제어권을 가지고 직접 만들고 관계를 부여하는 오브젝트 스프링 빈은 스프링 컨테이너가 생성과 관계설정, 사용 등을 제어해주는 제어의 역전이 적용된 오브젝트를 가리키는 말 빈 팩토리(bean factory) : 빈의 생성과 관계 설정과 같은 제어를 담당하는 IoC 오브젝트 애플리케이션 컨텍스트 : 별도의 정보를 참고해서 빈의 생성, 관계설정 등의 제어 작업 총괄. IoC엔진이라는 의미가 부각됨....

December 3, 2022 · 6 min · 1075 words · Me

[백준] Brute Force 1- 18111번 마인크래프트

문제(link) 브루트포스 알고리즘으로 해결하는 문제입니다. 땅의 높이는 256블록을 초과할 수 없습니다. 층을 기준으로해서모든 경우의 수를 계산합니다. 층(target)과 같은 높이만큼 블록을 제거하거나 추가해서 (작업 최소 시간, 높이)를 구할 수 있습니다. 풀이 방법 [1] 0~256층까지 반복 [1-1] graph 좌표에 저장되어 있는 블록이 층 수보다 크거나 같으면 → 블록 제거, 인벤토리에 추가 [1-2] graph 좌표에 저장되어 있는 블록이 층 수보다 작으면 → 블록 추가, 인벤토리에서 제거 [1-3] 인벤토리 블록의 범위 안에서 작업했다면 [1-3-1] 최소 시간이라면 Update (작업 최소시간, 높이)...

November 28, 2022 · 1 min · 201 words · Me

[토비의 스프링 3.1] 1.1~1.4 정리

스프링이란 무엇인가? 스프링은 자바 엔터프라이즈 애플리케이션 개발에 사용되는 애플리케이션 프레임워크다. 스프링을 사용한다는 것은 다음의 세 가지 요소를 적극적으로 활용해서 애플리케이션을 개발한다는 뜻이다. 스프링 개발 철학 중 하나는 ‘항상 프레임워크 기반의 접근 방법을 사용하라’이다. 프레임워크의 가장 중요한 목적은 개발자가 일정한 틀을 따라 효과적으로 애플리케이션을 개발하도록 돕는 것이다. 따라서 프레임워크를 잘 이해하려면 프레임워크를 사용했을 때 애플리케이션 코드가 어떻게 만들어지는지 자세히 살펴봐야 한다. 1) 애플리케이션의 기본 틀 - 스프링 컨테이너 스프링은 스프링 컨테이너라고 불리는 스프링 런타임 엔진을 제공한다....

November 26, 2022 · 11 min · 2259 words · Me

[algorithm] 소수 판별

소수 판별 Intro 코딩테스트 문제를 풀다보면 가끔 소수 판별하는 문제가 나옵니다. 소수는 간단하게 정의하자면 1보다 큰 자연수 중 1과 자기 자신만을 약수로 가지는 수입니다. 수학 시간에 소수를 많이 다뤘다보니 수를 보면 이 수는 소수인지 아닌지는 작은 수면 바로 판별이 가능하지만 이를 알고리즘으로 바꾸는 것은 좀 어려웠습니다. 다행히 소수 판별 문제를 해결하기 위한 대표적인 방법이 의미 정의 되어있습니다. 에라토스테네스의 체 알고리즘을 활용하는 것입니다. 이는 다수의 자연수에 대하여 소수 여부를 판별할 때 사용하는 대표적인 알고리즘이며 N보다 작거나 같은 모두 소수를 찾을 때 사용할 수 있습니다....

November 24, 2022 · 2 min · 241 words · Me

[MySQL] joins

Table간 Join을 수행해야할 때는 다음과 같이 집합의 개념을 활용해서 생각하면 좋습니다. MySQL 언어로 아래의 모든 집합 관계에 대해서 표현해보려고 합니다. MySQL JOINS 0. Full Outer Join [0] problem /* Input: Employees table: +-------------+----------+ | employee_id | name | +-------------+----------+ | 2 | Crew | | 4 | Haven | | 5 | Kristian | +-------------+----------+ Salaries table: +-------------+--------+ | employee_id | salary | +-------------+--------+ | 5 | 76071 | | 1 | 22517 | | 4 | 63539 | +-------------+--------+ Output: +-------------+ | employee_id | +-------------+ | 1 | | 2 | +-------------+ */ select Employees....

November 1, 2022 · 3 min · 470 words · Me