CS

    [디자인패턴] GoF 디자인 패턴 23가지

    디자인 패턴이란? SOLID 원칙을 지키며 소프트웨어를 설계할 때 공통점을 모아논 것이 디자인 패턴이다. 즉, 공통적으로 발생하는 문제를 예방하고 클래스의 재이용성을 높일 수 있는 해결책이다. GoF(Gang of Fout) 디자인 패턴 1. 생성(Creational) 패턴 - 객체 생성에 관련된 패턴으로 객체가 생성되거나 변경되어도 프로그램 구조에 영향을 끼치지 않도록 유연성과 재사용성을 향상시킨다. 2. 구조(Structural) 패턴 - 객체와 클래스를 보다 큰 구조로 조립하는 동시에 유연하고 효율적으로 유지하는 방법을 제공하는 패턴이다. 3. 행위(Behavior) 패턴 - 알고리즘과 객체 간의 책임 할당과 관련이 있다. 객체가 혼자서 수행할 수 없는 작업을 여러 객체로 분배하고, 이 과정에서 객..

    [데이터베이스] 인덱스

    인덱스란 RDBMS에서 검색 속도를 높이기 위한 기술 어떤 데이터가 어느 위치에 있다는 정보를 가진 주소록 데이터베이스 안의 레코드를 처음부터 풀스캔하지 않고, B+-Tree로 구성된 구조에서 Index 파일 검색으로 속도를 향상시키는 기술 파일 구성 → 테이블 생성 시, 3가지 파일 생성 FRM : 테이블 구조 저장 파일 MYD : 실제 데이터 파일 MYI : Index 정보 파일 (Index 사용 시 생성) → 사용자가 쿼리를 통해 Index를 사용하는 칼럼을 검색하게 되면, 이때 MYI 파일의 내용을 활용한다. 인덱스를 사용하는 이유 WHERE 구문과 일치하는 열을 빨리 찾기 위해서. 열을 고려 대상에서 빨리 없애 버리기 위해서 조인 (join)을 실행할 때 다른 테이블에서 열을 추출하기 위해서. ..

    [네트워크] OSI 7계층

    OSI 7 계층 디지털 통신 제품과 소프트웨어 프로그램이 상호 연동될 수 있도록 안내하고 통신 도구 간의 명확한 비교를 쉽게 하기 위해 7 계층을 나누는 이유? 통신이 일어나는 과정을 단계별로 알 수 있기 때문이다 특정한 곳에 이상이 생기면 그 단계만 수정할 수 있다. 계층 하나 하나를 모듈식으로 따로 만들어서 조립한 것이다. 자동차 부품 교환시 타사 제품의 부품으로도 교체할 수 있는데 이는 다 규격을 정의해 놓고, 각 부품별로 모듈화가 되어 있기 때문에 가능합니다. 이와 같이, 네트워크도 데이터 흐름을 파악하기 위해 계층(모듈)을 나눈 것입니다. OSI 7계층 단계 물리(Physical) 계층 단지 데이터를 전기적인 신호로 변환해서 주고받는 공간 데이터를 전송하는 역할만 진행한다. 전송 or 받으려는 ..

    [자료구조] 스택, 큐, 힙

    스택 스택의 개념 선형 자료구조의 일종 Last In First out(LIFO) 구조 차곡차곡 쌓이는 구조 나중에 들어간 원소가 먼저 나온다. 스택의 특징 같은 구조의 같은 크기의 자료를 정해진 방향으로만 쌓을 수 있고, top으로 정한 곳을 통해서만 접근 가능하다. 삭제는 top을 통해서만 가능하다. 스택의 연산 삭제 (pop()) : 스택에서 가장 위에 있는 항목을 제거한다. [O(1)] 삽입 (push(item)) : item 하나를 스택의 가장 윗부분에 추가한다. [O(1)] 읽기 (peek()) : 스택의 가장 위에 있는 항목을 반환한다. [O(1)] 스택 포인터(SP, Stack Pointer) push나 pop을 할 때 해당 값의 위치를 알고 있어야 하는데 스택 포인터가 위치를 기억한다. ..

    [자료구조] Array vs List, ArrayList vs LinkedList

    배열(Array) → 크기를 정해서 사용할 수 있는 연속적인 저장 공간 Array 선언 시 같은 자료형으로 메모리 상에 연속적으로 데이터를 저장할 수 있는 공간이 확보된다. 배열 초기화 시 메모리에 할당되어 ArrayList보다 속도가 빠르다. 시간 복잡도는 O(1) 단점 크기가 고정적이므로 고정된 크기보다 더 많은 데이터를 받으려는 경우 새로운 공간을 만들어 기존 데이터를 복사해주어야 한다. 효율적인 탐색을 위해 Array 데이터 사이에 비는 공간을 없이 만든다면 Array 중간에 데이터를 추가하거나 삭제할 때 빈 공간이 없도록 다수의 데이터를 옮겨야 한다. List(Linear List) → 데이터의 크기가 정해져 있지 않고, 삽입 삭제가 많이 일어나며, 검색이 적은 경우 유리. 항목들은 순서 또는 ..

    [컴퓨터 구조] 캐시 메모리(Cache Memory)

    캐시 메모리 속도가 빠른 장치와 느린 장치에서 속도 차이에 따른 병목 현상을 줄이기 위한 메모리입니다. CPU가 주기억장치에서 저장된 데이터를 읽어올 때, 자주 사용하는 데이터를 캐시 메모리에 저장한 뒤, 다음에 이용할 때 주기억장치가 아닌 캐시 메모리에서 먼저 가져오면서 속도를 향상시킵니다. 속도라는 장점을 얻지만, 용량이 적고 비용이 비쌉니다. CPU에는 캐시 메모리가 2~3개 정도 사용됩니다. * 듀얼 코어 프로세서의 캐시 메모리 → 각 코어마다 독립된 L1 캐시 메모리를 가지고, 두 코어가 공유하는 L2 캐시 메모리가 내장된다. L1 : CPU 내부에 존재 L2 : CPU와 RAM 사이에 존재 L3 : 보통 메인보드에 존재한다고 함 * 디스크 캐시 : 주기억장치(RAM)와 보조기억장치(하드디스크)..

    [컴퓨터 구조] CPU의 구조 및 작동 원리

    CPU가 하는 일 Central Processing Unit (중앙 처리 장치) → 프로그램을 실행하기 위해 메인 메모리에서 명령어를 인출하여 해독하고 실행한다. 연산 덧셈, 뺄셈, 곱셈 등의 산술 연산과 논리곱, 논리합, 부정 등의 논리 연산을 수행 제어 명령어를 순서대로 실행할 수 있도록 제어 저장 연산에 필요한 데이터, 연산 결과, 명령어 주소 등을 임시로 저장 CPU의 구조 레지스터(Register) CPU 내부에 있는 메모리 명령어 주소, 코드, 연산에 필요한 데이터, 연산 결과 등을 임시로 저장 고속 기억장치 다양한 종류가 있음(PC, IR, MBR 등) 제어 장치(Control Unit) 각 장치들의 동작을 결정하는 신호를 보낸다. 주기적장치에서 프로그램 명령어를 꺼내 해독하고, 그 결과에 ..