스프링 프레임 워크는 자바 객체를 직접 관리한다. 소멸과 같은 라이프 사이클을 관리하며 스프링으로 부터 필요한 객체를 얻는다.
스프링은 POJO기반의 프레임 워크이며, 주요 모듈인 IoC, DI, AOP, PSA를 지원한다.
프로그래밍에서 의존성이란?
운영체제가 프로세스 들에게 공정한 CPU자원을 배분하는 것을 CPU 스케줄링 이라고 한다.
프로세스 종류마다 입출력 장치를 이용하는 시간과 CPU를 이용하는 시간의 양에는 차이가 있다.
전자의 작업을 입출력 집중 프로세스, 후자를 CPU집중 프로세스라고한다.
입출력 집중 프로세스는 수행 속도가 오래걸려 CPU집중 프로세스보다 먼저 처리하는 것이 효율적이다.
이러한 경우처럼 CPU의 자원을 차례대로 사용하기보다는 각각의 상황에 맞게 CPU를 배분한다.
이미 얻은 답을 활용하여 다음 답을 구하는 방식
구현해야할 기능이 겹치거나 특정 범위를 반복적으로 호출하는 구조
조금씩 겹치는 구조를 갖는다면 해당 범위의 결과를 따로 저장하여 나중에 다시 계산하지않게 최적화
완전탐색의 문제점
완전탐색은 비용이 높고 조금만 경우의 수가 많아져도 시간이 오래걸린다.
동적 프로그래밍 핵심, 메모이제이션
def solution(n):
answer = [0] * (n) #크기가 n이고 값이 0인 배열을 생성
answer[0] = answer[1] = 1
return answer[-1] % 1234567
def fibo(n,answer):
if n < 2: return 1
if answer[n] == 0:
answer[n] = fibo(n -1, answer) + fibo(n-1, answer)
# n번째 피보나치 수를 구하기 위해 n-1과 n-2번째 수를 더하는것
return answer[n]
def solution(n):
answer = [0] * (n) #크기가 n이고 값이 0인 배열을 생성
answer[0] = answer[1] = 1
for i in range(2,n):
answer[n] = answer[n-1]+answer[n-2]
return answer[-1] % 1234567