책읽기 138

[스프링5 프로그래밍 입문][chap06] 빈 라이프사이클과 범위

1. 컨테이너 초기화와 종료 스프링 컨테이너는 "초기화"와 "종료"라는 라이프 사이클을 가짐 // 1. 컨테이너 초기화 AnnotationConfigApplicationContext ctx = new AnnotationConfigApplicationContext(AppContext.class); // 2. 컨테이너에서 빈 객체를 구해서 사용 Greeter g = ctx.getBean("greeter", Greeter.class); String msg = g.greet("스프링"); System.out.println(msg); // 3. 컨테이너 종료 ctx.close(); 초기화 AnnotationConfigApplicationContext 생성자를 이용하여 컨텍스트 객체 생성 이 때 스프링 컨테이너를 ..

책읽기 2022.03.10

[스프링5 프로그래밍 입문][chap05] 컴포넌트 스캔

컴포넌트 스캔 [개요] 자동 주입과 함께 사용하는 추가 기능 [정의] 스프링이 직접 클래스를 검색해서 빈으로 등록해주는 기능 [편의] 설정 클래스에 빈으로 등록하지 않아도 원하는 클래스를 빈으로 등록 가능 [효과] 설정 코드가 크게 줄어듦 1. @Component 애노테이션으로 스캔 대상 지정 @Component 클래스에 붙임 스캔 대상으로 표시 @Component 속성값 빈으로 등록할 때 사용할 이름 @Component("infoPrint") 속성값이 없으면 클래스 이름에서 첫글자를 소문자로 바꾸어 사용 MemberDao -> memberDao 2. @ComponentScan 애노테이션으로 스캔 설정 @ComponentScan @Component를 붙인 클래스를 스프링 빈으로 등록하려면 설정 클래스에 ..

책읽기 2022.03.10

[스프링5 프로그래밍 입문][chap04] 의존 자동 주입

1. 예제 프로젝트 의존 자동 주입 의존 대상을 설정코드에서 직접 주입하지 않고, 스프링이 자동으로 객체를 주입하는 기능 의존 주입 관련 애노테이션 @Autowired @Resource : 자바에서 제공하는 애노테이션 2. @Autowired 애노테이션을 이용한 의존 자동 주입 @Autowired 의존을 주입할 대상에 붙이는 애노테이션 필드나 세터 메서드에 붙이면 스프링은 타입이 일치하는 빈 객체를 찾아서 주입 설정 파일에서 사용하기 위해 기본 생성자가 필요 @Bean public MemberDao memberDao() { return new MemberDao(); } 세터 메서드의 자동 주입 구현 과정 기본 생성자를 추가 세터 메서드에 @Autowired 추가 설정 파일에서 기본 생성자로 return ..

책읽기 2022.03.08

[스프링5 프로그래밍 입문][chap01/chap02] 들어가며/스프링 시작하기

https://github.com/pythaac/Spring_tutorial/tree/main/%EC%8A%A4%ED%94%84%EB%A7%815%20%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D%20%EC%9E%85%EB%AC%B8/chap02/src/main/java/com/example/chap02 GitHub - pythaac/Spring_tutorial: These are test tutorial codes between react native(android) and spring boot These are test tutorial codes between react native(android) and spring boot - GitHub - pythaac/Sp..

책읽기 2022.02.04

[파이썬 알고리즘 인터뷰] 14장 - 트리

이 글은 "파이썬 알고리즘 인터뷰 (박상길 지음)"을 읽고 주관적으로 요약한 글입니다. 트리 계층형 트리 구조를 시뮬레이션 하는 추상 자료형 서로 연결된 노드의 집합 재귀로 정의된 자기 참조 자료구조 - Recursively Defined Self-Referential - 즉, 트리는 자식도 트리, 그 자식도 트리 (서브트리) 트리의 명칭 차수 (Degree) - 자식 노드의 개수 크기 (Size) - 차수 + 자신을 포함(1) 깊이 (Depth) - 루트에서 현재 노드까지의 거리 높이 (Height) - 현재 노드에서 리프 노드까지의 거리 (가장 깊은) 그래프 vs 트리 트리는 순환(cycle)이 없어야 함 - 간선을 따라 탐색했을 때, 이미 탐색된 노드를 다시 만나지 않음 트리는 부모 -> 자식 단방..

책읽기 2021.09.13

[파이썬 알고리즘 인터뷰][그리디] 쿠키 부여

이 글은 "파이썬 알고리즘 인터뷰 (박상길 지음)"을 읽고 주관적으로 요약한 글입니다. 문제 정의 g 이상인 값을 s와 매칭할 수 있는 최대 개수 책에서 구현된 코드 # 그리디 알고리즘 from typing import List class Solution: def findContentChildren(self, g: List[int], s: List[int]) -> int: g.sort() s.sort() child_i = cookie_j = 0 # 만족하지 못할 때까지 그리디 진행 while child_i = g[child_i]: child_i += 1 cookie_j += 1 return child_i # 이진 탐색 ..

책읽기 2021.09.01

[파이썬 알고리즘 인터뷰][그리디] 주유소

이 글은 "파이썬 알고리즘 인터뷰 (박상길 지음)"을 읽고 주관적으로 요약한 글입니다. 문제 정의 주유소를 원형 큐에서 시계방향으로 돌 때, 현재 채울 수 있는 gas와 다음 주유소의 cost로 모든 주유소에 도달할 수 있는 시작점 출력 책에서 구현된 코드 from typing import List class Solution: def canCompleteCircuit(self, gas: List[int], cost: List[int]) -> int: # 모든 주유소 방문 가능 여부 판별 if sum(gas) < sum(cost): return -1 start, fuel = 0, 0 for i in range(len(gas)): # 출발점이 안되는 지점 판별 if gas[i] + fuel < cost[i]..

책읽기 2021.09.01

[파이썬 알고리즘 인터뷰][그리디] 태스크 스케줄러

이 글은 "파이썬 알고리즘 인터뷰 (박상길 지음)"을 읽고 주관적으로 요약한 글입니다. 문제 정의 n개 안에 겹치는 문자가 없도록 배열, 불가능할 경우 "idle"을 삽입하여 최소 길이 출력 책에서 구현된 코드 import collections from typing import List class Solution: def leastInterval(self, tasks: List[str], n: int) -> int: counter = collections.Counter(tasks) result = 0 while True: sub_count = 0 # 개수 순 추출 for task, _ in counter.most_common(n + 1): sub_count += 1 result += 1 counter.s..

책읽기 2021.09.01

[파이썬 알고리즘 인터뷰][그리디] 키에 따른 대기열 재구성

이 글은 "파이썬 알고리즘 인터뷰 (박상길 지음)"을 읽고 주관적으로 요약한 글입니다. 문제 정의 (내 키, 앞에 줄 선 사람 중 내 키 이상인 사람)이 주어질 때 재정렬 책에서 구현된 코드 import heapq from typing import List class Solution: def reconstructQueue(self, people: List[List[int]]) -> List[List[int]]: heap = [] # 키 역순, 인덱스 삽입 for person in people: heapq.heappush(heap, (-person[0], person[1])) result = [] # 키 역순, 인덱스 추출 while heap: person = heapq.heappop(heap) resul..

책읽기 2021.08.30