시간복잡도란?- 문제를 해결하는데 걸리는 시간과 입력의 함수 관계- 시간복잡도를 이용하는 알고리즘 분석은 알고리즘의 성능이 얼마나 효율적인지 알 수 있는 가장 일반적인 방법이다.- 어떠한 알고리즘의 로직이 얼마나 오랜시간이 걸리는지 를 나타내는데 쓰인다.- 알고리즘의 로직이 최악의 경우 걸리는 실행시간을 나타내며 이것을 보통 빅오 표기법으로 나타낸다.더보기빅오 표기법이란?• 입력 범위 n을기준으로 해서 로직이 몇번 반복되는지 나타내는 것• 가장 영향을 많이 끼치는 항의 상수인자를 빼고 나머지 항을 없앤것 빅오 표기법을 쉽게 적용할 수 있는 규칙- 덧셈, 뺼셈, 곱셈, 나눗셈과 같은 산수는 상수이다, 상수시간에 포함된다. • n의 값이 상관이 없다. 10이들어오든 100이 들어오든 1억이 들어오든 컴..
Stateful (상태 유지) - 클라이언트와 서버 관계에서 서버가 클라이언트의 상태를 보존하는것이다. - 보존을 하기 위한 클라이언트의 정보는 세션 또는 쿠키에 저장하여 상태를 유지한다. - Stateful 구조를 따르는 프로토콜로 TCP의 3-way handshaking과정이 있다. • 클라이언트가 서버에게 통신을 시작하려는 의도를 알리기 위해 SYN 패킷을 보낸다. • 서버는 클라이언트의 SYN패킷을 받고 통신을 수락할 준비가 되었다는 신호로 SYN-ACK패킷을 보낸다. • 클라이언트는 SYN-ACK를 받고 응답을 위해 ACK패킷을 보낸다. • 이 과정은 클라이언트와 서버간의 TCP연결 설정이며 데이터를 전송 가능하게 하는 과정이다. • 웹 브라우징, 파일전송, 원격전송과 같은 인터넷을 통한 거의 ..
AOP - 관점(관심) 지향 프로그래밍 ■ Aspect Oriented Programming의 축약어이다. ■ 핵심 로직과 부가 기능을 분리하여 애플리케이션 전체에 걸쳐 사용되는 부가 기능을 모듈화 하여 재사용 할수 있도록 지원. ■ OOP에서 바라보던 관점을 다르게 하여 부가기능적인 측면에서 보았을때 공통된 요소를 추출. ■ 가로(횡단)영역의 공통된 부분을 잘라냈다고 하여, 크로스컷팅(Cross-Cutting)이라고도 부름. 역할 - 인프라, 부가기능의 모듈화 ° 모니터링, 로깅, 동기화, 오류검사 및 처리, 성능 최적화(캐싱)에 사용됨. ° 그 외의 각각 모듈들의 주 목적 외에 필요한 부가적인 기능에 사용. aop를 사용하는 이유 → oop에선 공통된 기능을 재사용하는 방법으로 상속이나 위임을 사용하..
IoC(Inversion of Control) ■ Inversion of Control의 뜻 그 대로 제어의 역전이다. ■ 컨트롤의 제어권이 사용자(개발자)가 아니라 프레임워크에 있어 프레임워크가 필요에 따라 사용자의 코드를 호출 한다. ■ IoC원칙을 사용하면 구체적인 구현보다는 인터페이스나 추상 클래스에 의존하게 된다. 즉, 서비스가 변경되어도 관계없이 사용가능. ■ 코드의 결합도가 감소하고, 다른 구현체로 쉽게 교체할 수 있다. import { prisma } from '../utils/prisma/index.js'; import { UsersController } from '../controllers/users.controller.js'; import { UsersServices } from '...
객체지향 프로그래밍 설계 5원칙 SOLID란? SOLID - 객체지향 프로그래밍 및 설계의 다섯가지 기본 원칙의 맨 앞단어를 하나씩 가져와 만든것 입니다. - 이 원칙을 따르면 시간이 지나도 유지 보수와 확장이 쉬운 시스템을 구축할 수 있습니다. - 소프트웨어 작업에서 프로그래머가 소스 코드가 읽기 쉽고 확장하기 쉽게 될 때까지 소프트웨어 소스 코드를 리팩터링하여 코드 냄새를 제거하기 위해 적용할 수 있는 지침입니다. SOLID종류 S | SRP | Single Responsibility Principle | 단일 책임 원칙 ■ 한 클래스는 하나의 책임을 가져야 한다, 즉 클래스나 모듈을 변경할 이유는 단 하나 뿐이여야 한다. ■ 소프트웨어의 유지보수성과 확장성을 향상시키는 데 도움이 된다. ■ 각 클래..
동시성(Concurrency)이란? • 여러 클라이언트가 동시에 하나의 데이터를 사용 및 공유하는 것을 뜻합니다. • 다수의 사용자가 동일한 시스템을 공유하면서 발생하는 동시 접근 문제를 해결해야합니다. 동시성문제 (Concurrency Issue) 동시성 문제는 여러 클라이언트가 동시에 같은 데이터를 접근하려고 할때 발생합니다. 🔖 예시 철수가 은행에 가서 총잔액 10,000인 A계좌를 통해 1,000원을 인출하였습니다. (10,000원 → 9,000원 커밋X) 같은시간 민수가 은행에가서 철수와 같은시간에 A계좌에서 1000원을 인출하였습니다. (9,000원 → 8,000원) 철수가 인출했을 당시에는 9,000원이였지만 8,000원으로 되어 있는 에러가 발생하여 Rollback하였습니다.(10,000원..
Access Token Access Token은 사용자의 인증이 완료된 후 해당 사용자를 인증하는 용도로 발급하는 토큰입니다. Access Token에는 사용자인증의 필요한 모든 Secret 한 정보가 JWT형태로 들어있습니다. 만약 탈취를 당하게 된다면 서버는 탈취된 토큰인지 알지못해 피해가 커질수 있습니다. 그렇기 때문에 피해를 최소화 하기위해 만료시간을 최소화 해야합니다. Refresh Token Refresh Token은 Access Token을 발급받기 위한 목적으로 사용하는 토큰입니다. Refresh Token은 사용자의 인증 정보를 검증하는데 사용되며, 이를 서버에서 관리합니다. 서버는 Refresh Token을 디코딩하여 사용자의 정보를 확인하고 사용자의 인증상태를 언제든지 서버에서 제어할..
JWT(Json Web Token)란? • 두 당사자 간의 청구를 JSON개체로 안전하게 전송하기 위한 간결하고 독립적인 방법을 정의하는 개방형 업계 표준 RFC7519방법입니다. • 이 정보는 디지털 서명이 되어 있으므로 확인하고 신뢰할 수 있는 정보입니다. • JWT는 공개 / 개인 키 쌍을 사용하여 서명할 수 있습니다. • 서명된 토큰은 그 안에 포함된 청구의 무결성을 확인할 수 있는 반면, 암호화된 토큰은 이러한 청구를 다른 당사자로부터 숨깁니다 . • 공개/개인 키 쌍을 사용하여 토큰에 서명하는 경우, 서명은 개인 키를 보유하고 있는 당사자만이 서명한 사람임을 인증 할 수 있습니다. JWT (Json Web Token)는 언제 사용 하는가? ● 승인 • JWT를 사용하는 가장 일반적인 경우입니다..