목록분류 전체보기 (111)
yoongrammer
목차[자료구조] 스택 (Stack)스택은 한쪽 끝에서만 자료를 넣거나 뺄 수 있는 선형 구조로 되어 있습니다. 식당에 쌓여있는 접시들이 좋은 예입니다. 순서대로 쌓인 접시가 스택 구조와 같습니다.접시가 필요하면 제일 위에 있는 접시부터 사용하며 가장 아래 있는 접시는 마지막에 사용됩니다.스택은 LIFO (Last In First Out) / FILO (First In Last Out) 순서를 따릅니다.LIFO : 마지막으로 들어온 값이 처음으로 나가는 것FILO : 처음 들어온 값이 마지막에 나가는 것스택은 완전히 꽉 찼을 때 Overflow 상태라고 하며 완전히 비어 있으면 Underflow 상태라고 합니다.삽입(Push)과 제거(Pop)는 모두 Top이라는 스택의 한쪽 끝에서만 일어납니다.추상 자료형..
목차[자료구조] 연결 리스트 (Linked list)연결 리스트는 데이터와 포인트로 구성된 노드 간의 연결(link)을 이용해서 리스트를 구현한 자료구조입니다. 연결 리스트는 배열의 고정크기의 단점을 보완하기 위해 만들어졌으며 배열과 달리 연속적인 메모리 공간에 저장되어 있지 않기 때문에 연결이 필요합니다.연결 리스트 표현연결 리스트는 아래 그림과 같이 포인터를 사용하여 각 노드를 연결합니다.그림에서 알 수 있는 사실은 아래와 같습니다.Head 는 리스트의 처음을 나타냅니다.노드는 데이터와 다음 노드를 가리키는 Next 포인터로 구성돼 있습니다.각 노드는 next 포인터를 사용하여 다음 노드와 연결됩니다.마지막 노드는 null을 가리켜 리스트의 끝을 나타냅니다.시간 복잡도(Time complexity)o..
목차 [자료구조] 배열 (Array) 배열은 연속된 메모리 공간에 순차적으로 저장된 데이터 모음입니다 대부분에 프로그램 언어에서 동일 타입의 데이터를 저장합니다. 예를 들어 배열이 "int"타입인 경우 정수 요소만 저장할 수 있으며 double, float, char 등과 같은 다른 타입의 요소는 저장할 수 없습니다. 배열을 구성하는 각각의 값을 요소(element)라고 하며, 배열에서의 위치를 가리키는 숫자는 인덱스(index)라고 합니다. 배열 표현 C언어로 배열 선언을 해보겠습니다. 위 배열을 그림으로 표현하면 아래와 같습니다. 그림에서 알 수 있는 사실은 아래와 같습니다. 연속된 메모리 공간에 데이터들이 순차적으로 저장되 있습니다. C에서 인덱스는 0부터 시작합니다. 배열 크기는 10이므로 10개..
목차자료구조(Data structure)자료구조란 자료를 효율적으로 이용할 수 있도록 컴퓨터에 저장하는 방법입니다. 신중히 선택한 자료구조는 보다 효율적인 알고리즘을 사용할 수 있게 합니다. 자료구조의 분류자료구조는 선형구조와 비선형 구조로 구분됩니다.선형 자료 구조(Linear Data Structure)선형 자료 구조란 자료를 구성하는 원소들을 순차적으로 나열시킨 형태를 의미합니다.대표적으로 리스트, 스택, 큐, 데크가 있습니다. 특징:데이터가 순차적으로 배열되어 있습니다.단일 레벨로 표현되기 때문에 단일 실행으로 모든 요소를 순회 할 수 있습니다.메모리가 선형 방식으로 배열되기 때문에 구현하기 쉽습니다.저장되는 자료의 전후관계가 1:1 입니다.비선형 자료 구조(Non-linear Data Stru..
목차Docker 사용하기Docker 명령은 docker run, docker push와 같이 docker 형식이며, 항상 root 권한으로 실행해야 합니다. docker 명령은 root 권한으로 실행해야 하기 때문에 일반 계정에서는 항상 sudo를 사용해하지만 번거롭다면 sudo를 입력하지 않는 방법이 두 가지가 있습니다. 1. 처음부터 root 계정으로 로그인하거나 sudo su 명령을 사용하여 root 계정으로 전환합니다.$ sudo su# 2. 현재 계정을 docker 그룹에 포함시킵니다.$ sudo usermod -aG docker ${USER}$ sudo service docker restart 현재 계정에서 로그아웃한 뒤 다시 로그인 한다.만약 usermod group 'docker' dos..
목차[Go] JSON 패키지 알아보기JSON (JavaScript Object Notation)은 간단한 데이터 교환 형식입니다. json 패키지를 사용하면 go프로그램에서 JSON 데이터를 읽고 쓸 수 있습니다.EncodingJSON 데이터를 인코딩하기 위해서는 Marshal 함수를 사용합니다.func Marshal(v interface{}) ([]byte, error)Marshal 함수는 v를 인코딩한 JSON 값을 반환합니다. Marshal 함수는 아래와 같은 규칙으로 데이터를 JSON으로 인코딩합니다.- Boolean 값은 JSON boolean 값으로 인코딩 됩니다.bolB, _ := json.Marshal(true) // true - Number(int, float)값은 JSON number..
목차JSON 알아보기JSON(JavaScript Object Notation)은 경량의 Data 교환 형식입니다.일반적으로 JSON은 손쉬운 데이터 교환이 가장 큰 목적이기 때문에 주로 성능이 크게 중요하지 않을 경우에 사용됩니다.JSON 특징JSON은 텍스트로 이루어져 있으므로, 사람과 기계 모두 읽고 쓰기 쉽습니다.JSON은 텍스트 기반이므로 프로그래밍 언어와 플랫폼에 독립적입니다.JSON은 프로그래밍 언어와 플랫폼에 독립적이기 때문에 서로 다른 시스템간에 객체를 교환하기에 좋습니다.JSON 구조JSON 데이터는 name/value 형태의 쌍으로 이루어집니다.이러한 JSON 데이터는 데이터 이름, 콜론(:), 값의 순서로 구성됩니다.데이터 이름은 string 이므로, 항상 큰따옴표("")와 함께 입력..
목차 Docker 설치하기 OS별 Docker 설치방법에 대해 알아보도록 하겠습니다. MacOS 요구사항 Mac하드웨어는 Hypervisor 프래임워크를 지원하는 Intel 프로세서가 장착된 최신 모델이어야 합니다. 아래 명령으로 확인이 가능합니다. // hv기능이 지원되면 1 로 출력됩니다. $ sysctl kern.hv_support kern.hv_support: 1 macOS는 버전 10.14 이상이어야 합니다. 최소 4GB RAM이 필요합니다. 버전 4.3.30 이전의 VirtualBox는 Docker Desktop과 호환되지 않으므로 설치하면 안 됩니다. 설치방법 1. 아래 링크로 접속 후 Get Docker를 클릭하여 Docker를 다운로드합니다. https://hub.docker.com/ed..
목차 Docker 알아보기 Docker는 컨테이너 기반의 오픈소스 가상화 플랫폼입니다. Docker는 go 언어로 작성되었으며 다음과 같은 Linux 커널의 기능을 활용해 만들어졌습니다. namespaces cgroups Union file systems docker는 OS를 가상화하는 방식이 아닌 프로세스를 격리하는 방식(Container)을 사용해 가상화보다 더 가볍고 빠릅니다. 가상화 머신(Virtual Machine) OS를 설치한 가상머신 이미지를 만들어 배포를 편하게 합니다. OS를 설치해야 하기 때문에 무겁고 성능이 좋지 못한 것이 단점입니다. 전가상화(Full Virtualization)의 느린 속도를 개선하기 위해 반가상화(Paravirtualization)방식이 개발되었지만 OS를 설치..
이전 글2020/12/13 - [언어/Go 언어] - [Go] context 알아보기 목차[Go] context 사용하기context를 사용하면 작업을 취소하거나 중간에 중지할 수 있습니다. context를 취소하는 방법에는 두 가지 측면이 있습니다.취소 이벤트 수신취소 이벤트 생성취소 이벤트 수신context type에서 제공하는 Done() method는 취소 이벤트를 수신하는 역할을 합니다.을 사용하여 취소 이벤트를 수신할 때까지 기다리게 할 수 있습니다. 아래 예는 이벤트를 처리하는데 2초가 걸리고 그전에 취소되면 즉시 반환하는 HTTP 서버입니다.package mainimport ( "fmt" "net/http" "time")func ctxTest(w http.ResponseWriter, ..