0%

스택 & 큐

전체적인 설명전에 이해를 위해 아래 그림을 먼저 살펴보겠습니다.

image

스택(Stack)

  • 나중에 넣은 데이터를 먼저 반환하도록 설계한 메모리 구조
  • Last In First Out(LIFO) / 후입선출
1
a = [1, 2, 3, 4, 5]
2
3
a.append(6) # a에 6 추가
4
a.append(7) # a에 7 추가
5
print(a) # [1, 2, 3, 4, 5, 6, 7]
6
7
a.pop() # 7
8
a.pop() # 6
9
print(a) # [1, 2, 3, 4, 5]
Read more »

Ping개념, 사용법

Ping(Paket InterNet Groper)이란?

ping명령의 기본적인 작동 원리는 네트워크 상태를 확인하려는 대상컴퓨터를 향해 일정 크기의 패킷(packet)을 보낸 후 대상 컴퓨터가 이에 대해 응답하는 메시지를 보내면 이를 수신, 분석하여 대상 컴퓨터가 작동하는지, 또는 대상 컴퓨터까지 도달하는 네트워크 상태가 어떠한지 파악할 수 있습니다.

ping명령은 TCP/IP 프로토콜 중 ICMP를 통해 동작하므로, 이 프로토콜을 지원하지 않는 기기를 대상으로 ping수행할 수 없습니다. 또한 보안의 이유로 ICMP사용을 차단하는 기기 역시 ping요청에 대응하지 않습니다.

이해를 위해 간단한 예제를 정리해볼건데, 운영체제마다 조금씩 측정하는 방법이 다르므로 전 맥 OS에서 Ping테스트 방법으로 정리해보겠습니다.

Read more »

RDB (Relational DataBase)

관계형 데이터베이스를 뜻하며 모든 데이터를 계층구조가 아닌 2차원의 단순한 표로 표현하는 형식의 데이터베이스입니다. 관계형 데이터 모델에 기초를 둔 데이터베이스로 수학적 이론에 기반을 두고 있습니다.

image-20200617195931351

RDBMS (Relational DataBase Management System)

관계형 데이터베이스를 관리하기위한 소프트웨어 입니다. 테이블기반의 DBMS로 데이터를 조건에 따라서 테이블의 행과 열로 나누어 관리하는 시스템입니다. 대표적으로 MSSQL, MYSQL, Oracle, MariaDB 등이 있습니다.

데이터 베이스의 정의와 특징

정의

데이터 베이스는 특정 조직의 업무를 수행하는데에 필요한 상호 관련된 데이터들의 모임으로 다음과 같이 정의할 수 있습니다.

  1. 통합된 데이터: 자료의 중복을 배제한 데이터의 모임
  2. 저장된 데이터: 컴퓨터가 접근할 수 있는 저장매체에 저장된 자료
  3. 운영 데이터: 조직의 고유한 업무를 수행하는데 존재가치가 확실하고 없어서는 안될 반드시 필요한 자료
  4. 공용 데이터: 여러 응용 시스템들이 공동으로 소유하고 유지하는 자료
Read more »

스키마란?

데이터 베이스 스키마(database schema)는 데이터베이스에서 자료의 구조, 자료의 표현 방법, 자료간의 관계를 형식 언어로 정의한 구조입니다. 데이터베이스관리시스템(DBMS)이 주어진 설정에 따라 데이터베이스 스키마를 생성하며, 데이터베이스 사용자가 자료를 저장, 조회, 삭제, 변경할 때 DBMS는 자신이 생성한 데이터베이스 스키마를 참조하여 명령을 수행합니다. 스키마는 3층 구조로 되어있습니다..

  • 외부 스키마: 프로그래머나 사용자의 입장에서 데이터 베이스의 모습으로 조직의 일부분을 정의한 것
  • 개념 스키마: 모든 응용 시스템과 사용자들이 필요로하는 데이터를 통합한 조식 전체의 데이터베이스 구조를 논리적으로 정의한 것
  • 내부 스키마: 전체 데이터베이스의 물리적 저장 형태를 기술하는 것

image-20200617183934251

그림 참조: 참조 블로그

Read more »

카운팅 정렬

Counting Sort는 non-comparision sort 기법으로 정렬 알고리즘이며 O(N)의 시간복잡도를 갖습니다.

먼저 예시전에 이해를 돋기 위해 누군가 만들어놓은 애니메이션을 참고해주세요.

https://www.cs.miami.edu/home/burt/learning/Csc517.091/workbook/countingsort.html

예를 들어, 다음과 같은 input에 대해 counting sort를 수행한다면,

1
input = [2, 0, 1, 4, 5, 4, 3, 2, 0, 1, 1, 0, 5, 4, 3]

첫째로, input의 원소들의 빈도 값을 세어서 counting에 저장해줍니다.

1
counting = [3, 3, 2, 2, 3, 2]

counting의 각 원소 값은 인덱스에 해당하는 원소가 inpur에 얼마나 존재하는지 나타내줍니다. 예를 들어 counting[0] = 3 인데, 인덱스 값인 0이 원소로서 input에 3개 들어있다는 것을 나타냅니다. counting[1] = 3인데 인덱스 값인 1이 원소로서 input에 3개가 들어있다는 것을 나타냅니다.
두번째로 counting의 각 요솟값에 직전 요솟값을 더해서 업데이트해줍니다.

Read more »

퀵 정렬(Quick Sort)이란?

  • 교환 정렬의 일종이며 분할 정복법에 근거합니다.
  • 축값을 기준으로 정렬하는데, 축값을 중심으로 축값보다 큰 값은 오른쪽 리스트에, 작은 값은 왼쪽리스트에 이동시킵니다.
  • 오른쪽 리스트와 왼쪽 리스트 부분은 독립적인 단위로 정렬하여 오른쪽 리스트부분에 대한 새로운 분할 축값을 선택하여 두 부분을 분리하고, 왼쪽 리스트부분 역시 새로운 축값을 선택하여 두 부분으로 분리하는 과정을 반복하는데 리스트들은 재귀적 방법으로 각각 재배열 하는 방식입니다.
  • 분할 자료개수가 1이 되면 정렬은 완료됩니다.

예시

쉬운 이해를 위해서 다음과 같이 1부터 7까지 총 7개의 숫자가 들어있는 배열을 기준으로 설명하겠습니다.

1
[1, 6, 7, 4, 5, 2, 3]

항상 정 가운데를 기준으로 분할을 하는 병합 정렬과 달리, 퀵 정렬은 흔히 피봇(pivot)이라고 불리는 임의의 기준 값을 사용합니다.

pivot 값을 선택하는데는 여러가지 방법이 있지만 여기서는 간단한 설명을 위해 정 중앙에 위치한 4를 pivot으로 정하겠습니다. 다음과 같이 이 pivot값을 기준으로 pivot보다 작은 값의 그룹과 pivot보다 큰 값의 그룹으로 나눕니다.

1
[3, 2, 1] < 4(p) < [7, 5, 6]
Read more »

Big-o표기법이란?

  • 알고리즘의 “효율성”을 평가하기 위한 분석법입니다.
  • 즉, 알고리즘의 성능을 수학적으로 표현해주는 표기법입니다.
  • 시간과 공간복잡도를 표현할 수 있습니다.
  • 실제 러닝타임을 표시하기보다는 데이터나 사용자의 증가률에 따른 알고리즘의 성능을 예측하는게 목표입니다.

O(1)

언제나 일정한 시간이 걸리는 알고리즘

O(n)

입력 데이터의 크기에 비례해서 철회시간이 걸리는 알고리즘을 표현할때 사용, 데이터와 시간이 같이 증가함

O(n^2)

image-20200511153059941

O(nm)

image-20200511153227320

Read more »

절차지향 vs 객체지향

절차지향(Procedural Programming)

절차지향 프로그래밍은물이 위에서 아래로 흐르는 것처럼 순차적인 처리가 중요시 되고 프로그램 전체가 유기적으로 연결되도록 만드는 프로그래밍 기법을 말합니다. 대표적인 절차지향 언어에는 C언어가 있는데, 이는 컴퓨터의 작업 처리 방식과 유사하기 때문에 객체지향 언어를 사용하는 것에 비해 더 빨리 처리되어 시간적으로 유리하다고 볼 수 있습니다. 옛날에는 하드웨어와 소프트웨어의 개발속도 차이가 크지 않았다면 지금은 하드웨어의 개발속도가 소프트웨어의 속도를 따라오지 못하는 상황이 발생합니다.이는 객체지향 언어가 나타나면서 이러한 현상이 존재하게 되었습니다.

장점

  • 컴퓨터의 처리구와 유사해 실행속도가 빠르다.
  • 메모리를 직접 조작할 수 있다.
  • 복잡도가 단순하다.

단점

  • 유지보수가 어렵다.
  • 많은 지역변수를 사용한다.
  • 원하는 기능의 코드를 가져와서 복붙하면 오류가 발생한다.
Read more »

GET, POST

사용자가 어떤 홈페이지로 이동하기 위해서 URL을 브라우저 주소창에 작성하고 엔터를 누르면 원하는 페이지로 이동합니다. 사용자는 단순히 URL을 입력하였을 뿐이지만 서버 내부에서는 클라이언트의 요청에 응답하기 위해서 처리해주어야 합니다. 여기서 클라이언트가 서버로 요청을 보내는 방법인 HTTP Method에는 크게 두가지 방식이 있는데 그것이 GET, POST입니다.

GET 방식

어떠한 정보를 가져와서 조회하기 위해서 사용되는 방식입니다.

특징

  • URL에 변수(데이터)를 포함시켜 요청한다.
  • 데이터를 Header에 포함하여 전송한다.
  • URL에 데이터가 노출되어 보안에 취약하다.
  • 전송하는 길이에 제한이 있다.
  • 캐싱할 수 있다.
Read more »