목록Computer Science (11)
계발자 블로그
SOLID 원칙이란? SOLID 원칙이란 객체지향 프로그래밍(OOP)에서 지켜야 할 5개의 설계 원칙을 의미합니다. SRP (Single Responsibility Principle): 단일 책임 원칙 OCP (Open Closed Principle): 개방 폐쇄 원칙 LSP (Liskov SubSitution Principle): 리스코프 치환 원칙 ISP (Interface Segregation Principle): 인터페이스 분리 원칙 DIP (Dependency Inversion Principle): 의존성 역전 원칙 SOLID의 목표 유지보수정: 변경에 유연해야 한다 가독성: 이해하기 쉬워야 한다. 낮은 결합도(Loose couple), 높은 응집도(strong cohesion): 여러 소프트웨..
디자인 패턴이란? 객체 지향 프로그래밍 설계를 할 때 자주 발생하는 문제들을 피하기 위해 사용되는 패턴입니다. 디자인패턴은 반복적으로 일어나는 문제를 해결하기 위한 일종의 해결책을 정리한 것입니다. 디자인 패턴을 사용하면 미리 고안된 솔루션을 사용하여 시간과 비용을 절감할 수 있습니다. 디자인 패턴 중 가장 잘 알려진 패턴은 Gof 디자인 패턴입니다. Gof 디자인 패턴은 23가지의 디자인 패턴을 정리한 것으로 생성, 구조, 행위 디자인 패턴으로 구성됩니다. 생성 패턴(Creational Patterns) 객체 생성에 관련된 패턴입니다. 객체의 생성과 조합을 캡슐화 해 특정 객체가 생성 되거나 변경 되어도 프로그램 구조에 영향을 크게 받지 않도록 유연성을 제공합니다. 구조 패턴(Structural Pat..
프로세스(Process)란 컴퓨터에서 연속적으로 실행되고 있는 컴퓨터 프로그램을 의미합니다. 메모리에 올라와 실행되고 있는 프로그램의 인스턴스(독립적인 개체) 운영체제로부터 시스템 자원을 할당받는 작업의 단위 동적인 개념으로는 실행된 프로그램을 의미합니다. 할당 받는 시스템 자원으로는 cpu 시간 운영되기 위해 필요한 주소 공간 Code, Data, Stack, Heap의 구조로 되어 있는 독립된 메모리 영역이 있습니다. 프로세스의 특징 프로세스는 각각 독립된 메모리 영역(Code, Data, Stack, Heap)을 할당 받습니다. 기본적으로 프로세스당 최소 1개의 스레드를 가지고 있습니다. 각 프로세스는 별도의 주소 공간에서 실행되며, 한 프로세스는 다른 프로세스의 변수나 자료 구조에 접근할 수 없습..
운영체제(OS, Operating System)란 운영체제란 컴퓨터 시스템과 사용자 사이에서 중개자 역할을 하는 프로그램입니다. 컴퓨터를 켜면 제일 먼저 만나는 프로그램입니다. 운영체제는 하드웨어와 사용자 사이에서 인터페이스를 제공하고, 한정된 시스템 자원을 더욱 효율적으로 관리하여 컴퓨터의 성능을 향상 시키는 시스템 소프트웨어입니다. 일반적으로 윈도우, 맥, 유닉스, 리눅스 등이 있습니다. 운영체제의 목적 처리량 향상 : 컴퓨터 시스템이 단위 시간 동안 처리하는 작업량을 늘린다. 응답 시간 단축 : 컴퓨터 시스템에 작업을 맡긴 후 결과가 나올 때까지 소요되는 시간을 단축 시킨다. 신뢰성 향상 : 컴퓨터 시스템을 구성하는 하드웨어 장치나 프로그램이 주어진 기능을 실패 없이 안정적으로 수행할 수 있도록 한..
쿠키(Cookie)란 쿠키는 클라이언트(브라우저) 로컬에 저장되는 키와 값이 들어있는 작은 데이터 파일입니다. 사용자 인증이 유효한 시간을 명시할 수 있으며, 유효 시간이 정해지면 브라우저가 종료되어도 인증이 유지된다는 특징이 있습니다. 쿠키는 클라이언트의 상태 정보를 로컬에 저장했다가 참조합니다. 클라이언트에 300개까지 쿠키저장 가능, 하나의 도메인당 20개의 값만 가질 수 있음, 하나의 쿠키값은 4KB까지 저장합니다. Response Header에 Set-Cookie 속성을 사용하면 클라이언트에 쿠키를 만들 수 있습니다. 쿠키는 사용자가 따로 요청하지 않아도 브라우저가 Request시에 Request Header를 넣어서 자동으로 서버에 전송합니다. 쿠키의 구성 요소 이름 : 각각의 쿠키를 구별하는..
HTTP란 http는 Hyper Text Transfer Protocaol의 줄임말로써 인터넷 상에서 데이터를 주고 받기 위한 서버와 클라이언트 간에 데이터를 주고 받는 프로토콜입니다. 7계층 중 어플리케이션 계층의 프로토콜로 TCP/IP 위에서 동작합니다. http는 암호화가 되지 않은 평문 데이터를 전송하는 프로토콜이기 때문에 제3자가 정보를 조회할 수 있습니다. 이러한 무제를 해결하기 위해 HTTPS가 등장한 것입니다. HTTPS란 Hyper Text Transfer Protocol Secure로 s는 안전한 통신망을 뜻합니다. http 통신 하는 소켓 부분을 인터넷 상에서 정보를 암호화 하는 SSL(Secure Socket Layer)라는 프로토콜로 대체한 것입니다. HTTPS의 SSL에서는 대칭..
3-way handshake TCP 통신을 이용하여 데이터를 전송하기 위해 네트워크 연결을 설정 하는 과정입니다. TCP/IP 프로토콜을 이용하여 통신을 하는 응용 프로그램이 데이터를 전송하기 전에 먼저 정확한 전송을 보장하기 위해 상대방 컴퓨터와 사전에 세션을 수립하는 과정을 의미합니다. 3-way handshake 과정 Client -> Server: SYN Client가 연결 요청 메시지 전송(SYN)한다. Client가 최초로 데이터를 전송할 때 Sequence Number를 임의의 랜덤 숫자로 지정하고, SYN 플래그 비트를 1로 설정한 세그먼트를 전송한다. Server -> Client: SYN + ACK 접속 요청을 받은 Server가 요청을 수락했으며, Client도 포트를 열어달라는 메시..
TCP와 UDP는 전송 계층에서 사용하는, 데이터를 보내기 위해 사용하는 프로토콜 입니다. TCP와 UDP는 각각 가상 회선 방식과 데이터그램 방식이라는 점에서 차이를 가지며, 신뢰성과 연속성 두 측면에서 상충 관계(trade off)에 있습니다. TCP(Transmission Control Protocol)란 인터넷 상에서 데이터를 메세지 형태로 보내기 위해 IP와 함께 사용하는 프로토콜입니다. TCP와 IP를 함께 사용하는데, IP가 데이터의 배달을 처리한다면 TCP는 패킷을 추적 및 관리 합니다. TCP는 연속성 보다 신뢰성 있는 전송이 중요할 때에 사용하는 프로토콜로 파일 전송과 같은 경우에 사용됩니다. TCP 특징 연결형 서비스로 가상 회선 방식을 제공한다. 3-way handshaking 과정..
OSI 7계층이란? 두 시스템 간의 통신을 위해 필요한 기능을 7계층으로 나누어 서비스 하는 것을 말합니다. 7계층으로 나누는 이유 통신이 일어나는 과정을 단계별로 알기 쉽고 7계층 중 특정 한 곳에 이상이 생기면 그 단계만 수정 할 수 있기 때문입니다. 1계층 - 물리 계층(Physical Layer) 기계적, 전기적, 물리적인 특성을 이용해 통신 케이블로 데이터를 전송 하는 절차입니다. 리피터, 케이블, 허브 등 2계층 - 데이터링크 계층(Data Link Layer) 데이터의 물리적 전송 오류를 감지하고 복구하는 오류 제어 기능과 전송 되는 데이터의 흐름을 조절하는 흐름 제어 기능을 수행합니다. 3계층 - 네트워크 계층(Netwokr Layer) 송신 측에서 전송한 데이터가 네트워크에서 최적의 경로..
우선 순위 큐(Priority Queue) 일반적인 큐(Queue)는 먼저 들어온 데이터가 먼저 나가는 First-In First-Out의 FIFO 구조입니다. 우선 순위 큐는 들어간 순서에 상관없이 우선 순위가 높은 데이터가 먼저 나오는 것입니다. 우선 순위 큐는 힙 자료구조를 이용해 구현할 수 있습니다. 완전 이진 트리인 힙 구조이고 최대 힙입니다. 여기에 9가 추가 되었습니다 그럼 완전 이진 트리의 조건을 만족시키기 위해 왼쪽부터 채워져서 현재 자리에 위치하게 됩니다 그럼 9는 최대 힙 구조를 만족 시키기 위해 처음 부모 노드였던 3과 자리를 바꾸고 또 부모 노드였던 6과 자리를 바꾸게 됩니다. Push 연산을 봤으니 삭제하는 Pop 연산을 보겠습니다 최대 힙 구조에서 우선도가 가장 높은 17이 빠..