본문 바로가기

교육후 개인공부61

[CS] DI, DIP DI(dependency injection) -의존성주입(DI)이란 메인 모듈이 '직접' 다른 하위 모듈에 대한 의존성을 주기보다는 중간에 의존성 주입자가 이 부분을 가로채 메인모듈이 '간접'적으로 의존성을 주입하는 방식이다. -이를 통해 메인 모듈과 하위모듈간의 의존성을 조금 더 느슨하게 만들수 있으며 모듈을 쉽게 교체 가능한 구조로 만든다. -A가 B에 의존한다 = B가 변하면 A에 영향을 미치는 관계 = A -> B 의존관계역전원칙 -의존성 주입을 할때는 의존관계역전원칙(DIP, dependency inversion principle)이 적용된다. *이는 2가지 규칙을 지키는 상태를 말한다. -상위모듈은 하위 모듈에 의존해서는 안된다. 둘다 추상화에 의존해야 한다. -추상화는 세부사항에 의존해서는 .. 2024. 1. 28.
[CS] 디자인패턴 디자인패턴 -프로그램을 설계할때 발생했던 문제점들을 객체 간의 상호 관계 등을 이용하여 해결할수 있도록 하나의 규약형태로 만들어 놓은 것을 의미한다. -라이브러리나 프레임워크를 만드는데 기초적인 원리가 된다. -협업시 문제가 발생하면 빠른 의사소통이 가능해진다. -생성패턴, 구조패턴, 행동패턴 3가지로 나눠진다. *생성패턴 -객체 생성 방법이 들어간 디자인패턴이다. -싱글톤, 팩토리, 추상팩토리, 빌더, 프로토타입패턴 *구조패턴 -객체, 클래스 등으로 큰 구조를 만들때 유연하고 효율적으로 만드는 방법이 들어간 디자인패턴이다. -프록시, 어댑터, 브리지, 복합체, 데코레이터, 퍼사드, 플라이웨이트패턴 *행동패턴 -객체나 클래스 간의 알고리즘, 책임 할당에 관한 디자인패턴이다. -이터레이터, 옵저버, 전략,.. 2024. 1. 27.
[알고리즘] 공간복잡도 공간복잡도 -입력크기에 대해 어떠한 알고리즘이 실행되는데 필요한 메모리 공간의 양 -정적변수로 선언된 것 말고도 동적으로 재귀적인 함수로 인해 공간을 계속해서 필요로 할경우도 포함하며 배열이든 맵이든 셋이든 요소들을 담을 공간이면 다 적용된다. 2024. 1. 27.
[알고리즘] 시간복잡도 시간복잡도 입력크기에 대해 어떠한 알고리즘이 실행되는데 걸리는 시간이며 주요로직의 반복횟수를 중점으로 측정된다. 어떠한 알고리즘이 주어진 입력크기를 기반으로 어떠한 로직이 몇번 반복되었는가를 중점으로 설명한다. 시간복잡도가 필요한이유 효율적인 코드로 개선하는데 쓰이는 기준이 된다. (성능향상) 빅오표기법 복잡도에 가장 영향을 많이 끼치는 항의 상수인자를 빼고 나머지 항을 없애서 복잡도를 나타내는 표기법이다. 상수시간 시간복잡도 O(1) 상수시간 시간복잡도는 입력크기와 상관없이 일정한 시간복잡도를 가지는 것을 말하며 O(1)의 시간복잡도를 쓴다. ex) cin, cout, scanf, printf, 곱하기, 나누기, 나머지연산, 빼기, 간단한비교if문, 배열의 인덱스참조, 2024. 1. 27.