전체 글
SOLID 5원칙 - 좋은 객체 지향 설계의 5가지 원칙 SOLID란 로버트 마틴이 2000년대 초반에 명명한 객체 지향 프로그래밍 및 설계의 다섯 가지 기본 원칙을 마이클 페더스가 두문자어 기억술로 소개한 것이다. 프로그래머가 시간이 지나도 유지 보수와 확장이 쉬운 시스템을 만들고자 할 때 이 원칙들을 함께 적용할 수 있다. SOLID 원칙들은 소프트웨어 작업에서 프로그래머가 소스 코드가 읽기 쉽고 확장하기 쉽게 될 때까지 소프트웨어 소스 코드를 리팩터링 하여 코드 냄새를 제거하기 위해 적용할 수 있는 지침이다. 이 원칙들은 애자일 소프트웨어 개발과 적응적 소프트웨어 개발의 전반적 전략의 일부다. - 위키 백과 SRP : 단일 책임 원칙 (Single Responsibility Principle) OC..
데이터베이스 생성 - CREATE DATABASE [DB이름] CREATE DATABASE mydb; 데이터베이스 사용 - USE [DB이름] USE mydb; 데이터베이스 삭제 - DROP DATABASE [DB이름] DROP DATABASE mydb; 테이블 생성 - CREATE TABLE [tb이름] ([column name] [type], [column name] [type],...) CREATE TABLE tb( id int, name varchar(255) ); 테이블 삭제 - DROP TABLE [tb이름] DROP TABLE tb; 테이블 컬럼 추가 - ALTER TABLE [tb이름] ADD [column name] [type] ALTER TABLE tb ADD age int; 테이블 컬..
데이터베이스 (Database) 데이터베이스는 데이터들의 집합이다. 데이터베이스는 관계형 데이터베이스와 비관계형 데이터베이스로 구분해서 설명할 수 있다. 관계형 데이터베이스는 SQL을 기반으로 한 데이터베이스이고 비관계형 데이터베이스는 NoSQL을 기반으로 한 데이터베이스이다. SQL과 NoSQL은 만들어진 방식, 저장하는 정보의 종류, 저장하는 방법 등에 차이가 있다. SQL (Structed Query Language) - 관계형 데이터베이스 관계형 데이터베이스는 SQL을 기반으로 행과 열로 이루어진 테이블에 데이터를 저장한다. 정해진 테이블의 구조에 맞추어 데이터를 저장하고 테이블 간 관계를 맺는다. 테이블의 구조가 정해져 있기 때문에 데이터를 테이블의 구조에 맞춰서 저장하지 않으면 저장할 수 없다..
URI (Uniform Resource Identifier) URI는 URL(Uniform Resource Locator), URN(Uniform Resource Name)을 포함한다. URL, URN은 항상 성립하지만 반대는 성립하지 않는다. Uniform : 리소스를 식별하기 위한 통일된 방식 Resource : 리소스 Identifier : 구분하기 위한 식별자 이름에서 알 수 있듯이 URI는 리소스에 접근하기 위해 필요한 정보이다. URL (Uniform Resource Locator) URL은 리소스가 위치한 정보를 나타낸다. scheme://[host][:port]/[path][query] https://www.google.com:443/search?q=hello scheme : 주로 응용 계..
HTTP HTTP(Hyper Text Transfer Protocol)은 웹 상에서 서버 및 클라이언트 간의 데이터를 주고받기 위한 응용 계층(Application Layer)의 프로토콜로 초기엔 하이퍼 텍스트 형식의 데이터를 주고받았고 현재엔 이미지, 비디오 등 거의 모든 형식의 데이터를 주고받을 수 있게 되었다. 실제로 위와 같이 브라우저에서 확인해보면 HTTP를 사용해서 데이터들을 받는 것을 볼 수 있다. HTTP의 특징 1. 클라이언트 - 서버 (Client - Server) 구조 Request Response 구조 클라이언트는 서버에 요청을 보내고 대기하면 서버는 요청에 대한 결과를 만들어서 응답해준다. 2. 무상태 (Stateless) HTTP 통신에서 서버는 클라이언트의 상태를 보존하지 않는..
전송 계층 (Transport Layer) 네트워크 계층에서는 데이터가 정확하게 목적지까지 도달할 수 있도록 최적의 경로와 대상 IP를 찾아서 전달해준다. 하지만 전송계층보다 아래쪽에 있는 계층들은 데이터가 제대로 잘 전달되었는지 확인하지 않는다. 패킷을 분할해서 전달하는 상황을 생각해보자. 전송계층이 없다면 수신자 입장에선 정확한 데이터인지, 모든 패킷이 도착했는지 알 수 있는 방법이 없다. 전송계층은 위와 같은 상황이 발생하지 않도록 도달한 데이터 손상이 있는지 확인해서 재전송을 요청하기도 하고 무작위로 도착한 분할된 데이터 조각들을 재조립해서 애플리케이션에 전달해준다. 정리하면 전송 계층은 데이터의 오류를 검증하고 순차적으로 잘 전달해주는 서비스를 제공한다. TCP(Transmission Contr..
IP 주소 (IP Address) 군대에 있는 친구에게 택배를 보내야 하면 친구가 있는 부대의 주소를 알아야 보낼 수 있다. 인터넷에선 이 주소와 같은 개념이 IP 주소이다. 우리가 많이 사용하는 IP Version 4의 주소는 네 개의 10진수로 나타내고 있지만 사실은 8비트씩 네 개인 32bit로 표현된다. 숫자 사이의 점(dot)을 각 바이트들을 옥텟(octet)이라고 하고 왼쪽부터 차례로 1 옥텟, 2 옥텟, 3 옥텟, 4 옥텟이라고 부름 여기서 IP 주소는 네트워크 id(Network Id), 호스트 id(Host id) 두 가지 파트로 나뉜다. 네트워크 파트는 IP 주소가 어느 네트워크에 속해있는지 알 수 있는 주소이고 호스트 파트는 네트워크에 안에 속해 있는 기기가 할당받는 주소이다. 네트워..
프로토콜 (Protocol) 컴퓨터와 컴퓨터 사이, 또는 한 장치와 다른 장치 사이에서 데이터를 원활히 주고받기 위하여 약속한 여러 가지 규약. 인터넷 프로토콜 슈트 (Internet Protocol Suite)는 인터넷에서 컴퓨터들이 서로 정보를 주고받는 데 쓰이는 프로토콜의 모음이다. 이 모음은 다른 컴퓨터나 운영체제, 회선 간의 통신이 가능하게 해 주고, 인터넷이 처음 시작하던 시기에 정의되어 현재까지 표준으로 사용하고 있는 TCP(Transmission Control Protocol)와 IP(Internet Protocol)에서 가져와 TCP/IP라고 부르고 이는 OSI 7 계층 모델을 기반으로 단순화한 것이다. 1 계층 - Network Interface OSI 모델의 물리 계층과 데이터 링크 ..
이진 탐색 트리(Binary Search Tree) 이진 탐색 트리(Binary Search Tree)는 트리 자료구조의 한 종류로 노드의 차수가 0~2로 자식 노드가 최대 두 개까지만 허용되는 트리이다. 이진 트리와 다르게 부모 노드를 기준으로 작은 값은 왼쪽 노드에 저장되고 큰 값은 오른쪽 노드에 저장된다. 이진 탐색 트리의 특징 이진 탐색 트리는 기본적으로 이진 트리에 데이터의 대소를 비교하여 왼쪽이나 오른쪽 노드에 저장하게 된다. 탐색을 목적으로 한 자료구조이기 때문에 데이터의 중복을 허용하지 않는다. 트리에 데이터가 한쪽 방향으로만 저장되는 경우엔 탐색 속도는 O(N), 포화 이진 트리의 경우 탐색 속도는 O(logN)이다. 중위순회(inorder traversal) 방법으로 순회한다. 이진 탐..