분류 전체보기
[Spring] AOP란?
OOP(Object Oriented Progamming) 객체지향 프로그래밍은 애플리케이션을 설계할 때 책임과 관심사에 따라 클래스를 분리한다. 클래스가 단일 책임을 가지도록 분리함으로써 각 모듈의 응집도는 높아지고 결합도는 낮아진다. 클래스를 변경하는 이유는 오직 한 가지이며, 애플리케이션의 한 부분에서 변경이 발생했을 때 그 파급효과가 시스템의 전체로 퍼져나가는 정도가 낮아진다. 이것이 OOP의 단점이다. 객체지향 프로그래밍은 실세계에 존재하고 인지하고 있는 객체(Object)를 소프트웨어의 세계에서 표현하기 위해 객체의 핵심적인 개념 또는 기능만을 추출하는 추상화(abstraction)를 통해 모델링하려는 프로그래밍 패러다임을 말한다. 다시 말해, 우리가 주변의 실세계에서 사물을 인지하는 방식을 프..
[네트워크] OSI 7 Layer / 7계층
1. 계층 물리 계층(Physical Layer) 실제 장치를 연결하기 위한 전기적 및 물리적 세부 사항을 정의한 계층이다. 인터넷 케이블, 라우터 스위치 등의 전기적 신호가 물리적인 장치에 의해 왔다 갔다(통신) 하는 계층이다. 이 계층에서는 단지 데이터를 전달만 할 뿐 전송하려는 또는 받으려는 데이터가 무엇인지, 어떤 에러가 있는지 등에는 전혀 신경 쓰지 않고 단지 데이터 전기적인 신호로 변환해서 주고받는 기능만 할 뿐이다. -> 케이블, 리피터, 허브를 통해 데이터를 전송한다. 2. 계층 데이터 링크 계층(Data link Layer) 해당 계층은 장치 간 신호를 전달하는 물리계층을 이용하여 네트워크 상의 주변 장치들 간의 데이터를 전송하는 역할을 한다. 쉽게 말해 물리계층을 통해 송수신되는 정보의..
[알고리즘] 자료구조: 해쉬
1. 해쉬 테이블 키(Key)에 데이터(Value)를 매핑할 수 있는 데이터 구조 해쉬 함수를 통해, 배열에 키에 대한 데이터를 저장할 수 있는 주소(인덱스 번호)를 계산 Key를 통해 바로 데이터가 저장되어 있는 주조를 알 수 있으므로, 저장 및 탐색 속도가 획기적으로 빨라짐 미리 해쉬 함수가 생성할 수 있는 주소(인덱스 번호)에 대한 공간을 배열로 할당한 후, 키에 따른 데이터 저장 및 탐색 지원 2. 알아둘 용어 해쉬 함수(Hash Function): 임의의 데이터를 고정된 길이의 값으로 리턴해주는 함수 해쉬(Hash), 해쉬 값(Hash Value), 또는 해쉬 주소(Hash Address): 해쉬 함수를 통해 리턴된 고정된 길이의 값 해쉬 테이블(Hash Table): 키 값의 연산에 의해 직접..
[알고리즘] 자료구조: 시간복잡도, 공간복잡도
알고리즘 복잡도 계산이 필요한 이우 하나의 문제를 푸는 알고리즘은 다양할 수 있음 정수의 절댓값 구하기 1, -1 --> 1 방법 1: 정수 값을 제곱한 값에 다시 루트를 씌우기 방법 2: 정수가 음수인지 확인해서, 음수일 때만, -1을 곱하기 다양한 알고리즘 중 어느 알고리즘이 더 좋은지 분석하기 위해, 복잡도를 정의하고 계산한다. 복잡도(Complexity) 시간 복잡도(Time Complexity): 특정한 크기의 입력에 대하여 알고리즘이 얼마나 오래 걸렸는지를 의미 (알고리즘을 위해 필요한 연산의 횟수) 공간 복잡도(Space Complexity): 특정한 크기의 입력에 대하여 알고리즘이 얼마나 많은 메모리를 차지하는지를 의미 (알고리즘을 위해 필요한 메모리의 양) 가장 중요한 시간 복잡도를 꼭 ..