본문 바로가기

컴퓨터 과학(CS)

(8)
TDD란 무엇인가 TDD란 무엇인가 Test-Driven Development(TDD)는 매우 짧은 개발 사이크의 반복에 의존하는 소프트웨어 개발 프로세스 이다. 우선 개발자는 요구되는 새로운 기능에 대한 자동화된 테스트 케이스를 작성하고 해당 테스트를 통과하는 가장 간단한 코드를 작성한다. 일단 테스트 통과하는 코드를 작성하고 상황에 맞게 리팩토링하는 과정을 거치는 것이다. 말 그대로 테스트가 코드 작성을 주도하는 개발방식인 것이다. Add a test 테스트 주도형 개발에선, 새로운 기능을 추가하기 전 테스트를 먼저 작성한다. 테스트를 작성하기 위해서, 개발자는 해당 요구사항과 명세를 분명히 이해하고 있어야 한다. 아는 사용자 케이스의 사용자 스토리 등으로 이해할 수 있으며, 이는 개발자가 코드를 작성하기 전에 요구사..
객체 지향 프로그램이란 무엇인가 Object Oriented Programming 객체 지향 프로그래밍 이전의 프로그래밍 패러다임을 살펴보면, 중심이 컴퓨에 있었다. 컴퓨터가 사고하는대로 프로그래밍을 하는것이다. 하지만, 객체지향 프로그램밍이랑 인간 중심적 프로그래밍 패러다림이라고 할 수 있다. 즉, 현실 세계를 프로그래밍으로 옮겨와 프로그래밍하는 것을 말한다. 현실 세계의 사람들을 객체라고 보고 그 객체로부터 개발하고자 하는 애플리케이션에 필요한 특징들을 뽑아와 프로그래밍 하는 것이다. 이것을 추상화라 한다. OOP 로 코드를 작성하면 이미 작성한 코드에 대한 재사용성이 높다. 자주 사용되는 로직을 라이브러리로 만들어두면 계속 사용할 수 있으며 그 신뢰성을 확보 할 수 있다. 또한, 라이브러리를 각종 예외상황에 맞게 잘 만들어두면 개..
HTTP Method 간단 정리 Rest 란?? Rest는 굉장히 난해한 개념입니다. 정리를 하자면 아래와 같습니다. HTTP URI를 통해 자원을 표시하고 HTTP Method를 통해 자원에 대한 처리를 표현합니다. 사람이 읽을 수 있는 API라는 것이 특징입니다. HTTP를 사용하기 때문에 HTTP의 특성을 그대로 반영합니다. 또한, 별도의 인프라 구축도 필요없습니다. 단점으로 명확한 표준이 존재하지 않는다 점, Restful을 완전히 만족하는 API를 만들기는 매우 까다롭다는 점. Rest API 가 분산환경에 적합하지 않다는 점이 있습니다.(멱등성을 보장하기 힘들기 때문) 연산을 여러 번 적용하더라도 결과가 달라지지 않는 성질을 멱등성(idempotence) 이라 한다. Rest 특징 1. Server-Client 구조 Serv..
TCP와 UDP는 무엇인가? TCP ( Transmission Control Protocol ) 연결형 서비스를 지원하는 전송 계층 프로토콜로써, 인터넷 환경에서 기본으로 사용합니다. 호스트간 신뢰성 있는 데이터 전달과 흐름제어를 합니다. 인터넷상에서 데이터를 메시지 형태로 보내기 위해 IP와 함께 사용하는 프로토콜입니다. 일반적으로 TC와 IP를 함께 사용하는데, IP가 데이터의 배달을 처리한다면 TCP의 패킷을 추적 및 관리하게 됩니다. 3way Handshake 방식으로 연결을 설정하고 , 4 Way Handshake를 통해 연결을 해제합니다. UDP ( User Datagram Protocol ) 비 연결형 서비스를 지원하는 전송계층 프로토콜로써, 인터넷상에서 서로 주고받을 정보를 보낸다는 신호나 받는다는 신호 절차를 거치지..
자료구조 - 큐(Queue), 배열로 큐 만들기 큐는 스택과 마찬가지로 데이터를 일시적으로 쌓아 놓은 자료구조입니다. 하지만 가장 먼저 넣은 데이터를 가장 먼저 꺼내는 선입선출(FIFO: First In First Out) 인 점이 스택과 다릅니다. 큐 란? 큐(Queue)는 스택과 마찬가지로 데이터를 일시적으로 쌓아 두기 위한 자료구조입니다. 가장 먼저 꺼내는 선입선출 구조로 되어 있습니다. 생활에서 볼 수 있는 큐의 예는 은행 창구에서 차례를 기다리는 대기열이나 마트에서 계산을 기다리는 대기열을 들 수 있습니다. 스택과 마찬기로 큐는 배열을 사용하여 구현할 수 있습니다. 처음이 끝과 연결되었다고 보는 자료구조입니다. 여기서 논리적으로 어떤 요소가 첫 번째 요소이고 어떤 요소가 마지막 요소인지 식별하기 위한 변수가 프런트(front) 와 리어(rea..
자료구조 - 스택(Stack) , 배열로 스택만들어 보기 스택은 데이터를 일시적으로 저장하기 위한 자료구조로, 가장 나중에 넣은 데이터를 가장 먼저 꺼냅니다. 스택이란? 스택(stack)은 데이터를 일시적으로 저장하기 위해 사용하는 자료구조, 데이터의 입력과 출력 순서는 후입선출(LIFO, Last In First Out) 입니다. (가장 나중에 넣은 데이터를 가장 먼저 꺼냅니다.) 스택에 데이터를 넣는 작업을 푸시(push)라 하고 ,스택에 데이터를 꺼내는 작업을 팝(pop)이라고 합니다. 푸시와 팝을 하는 위치를 꼭대기(top)라 하고, 스택의 가장 아랫부분을 바닥(bottom)이라고 합니다. 스택만들기 스택을 구현하는 프로그램을 만들어 보겠습니다. 스택 본체용 배열: stk 푸시된 데이터를 저장하는 스택 본체의 배열입니다. 인덱스 0인 요소가 스택의 바닥..
자료구조 - 이진 검색(binary search), 시간 복잡도(time complexity), 공간 복잡도(space complexity) 이진 검색법에 대해 알아보겠습니다. 이 알고리즘을 적용하는 전제 조건은 데이터가 키 값으로 이미 정렬(sort)되어 있다는 것입니다. 이진 검색은 선형 검색보다 좀 더 빠르게 검색 할 수 있다는 장점이 있습니다. 이진검색 이진 검색(binary search)은 요소가 오름차순 또는 내림차순으로 정렬된 배열에서 검색하는 알고리즘입니다. 오름차순에서 어떤 수 x를 검색하는 과정을 생각해보 겠습니다. 먼저 배열의 중앙에 위치한 요소부터 검색을 시작합니다. 검색하려는 값이 중앙요소보다 큰 경우 검색 범위 중앙에 위치에서 값을 확인하여 일치하는 값을 찾는 검색입니다. 이진 검색은 검색을 반복할 때마다 검색 범위가 절반이 되므로 검색에 필요한 비교 횟수의 평균값은 log n 입니다. 검색에 실패한 경우는 [ log..
자료구조 - 선형 검색(linear search), 순차 검색(sequential search) 선형 검색 요소가 직선 모양으로 늘어선 배열에서의 검색은 원한는 키 값을 갖는 요소를 만날 때까지 맨 앞에서 부터 순서대로 요소를 검색하면 되는데, 이것이 선형 검색(linear search) 또는 순차 검색(sequential search)이라는 알고리즘입니다. 요솟수가 7개 이고 [ 6, 4, 3, 2, 1, 3, 0 ] 으로 되어 있고 검색을 2로 할 때입니다. import java.util.Scanner; public class SeqSearch { static int seqSearch(int[] a, int n, int key) { int i = 0; while(true) { if ( i == n ) return -1; if ( a[i] == key ) return i; i++; } } publ..