본문 바로가기
728x90

스터디101

[네트워크] HTTP 개념 HTTP (Hyper Text Transfer Protocol) 텍스트 기반의 통신 규약으로 인터넷에서 데이터를 주고받을 수 있는 프로토콜이다. 정해둔 규약으로 모든 프로그램이 서러 정보를 교환할 수 있게 된다 1. 동작 클라이언트(사용자)가 웹 브라우저를 통해 어떠한 서비스를 url을 통하거나 다른 것을 통해서 요청(request)를 하면 서버에서는 해당 요청사항에 맞는 결과를 사용자에게 응답(response)한다. HTML만이 http통신을 위한 정보 문서는 아니다. json 및 xml 형태로도 주고 받을 수 있으며 보통 클라이언트가 어떤 정보를 어떤 형태로 받고싶은지 명시해 준다. 2.Request Request Method 종류 GET : 자료를 요청할 때 사용 POST : 자료의 생성을 요청할 .. 2021. 3. 16.
[네트워크] HTTP와 HTTPS 💡HTTP란 HTTP (Hyper Text Transfer Protocol) HTTP는 인터넷에서 웹서버와 사용자 컴퓨터의 웹 브라우저 사이에서 문서를 전송하기 위한 통신 규약 (Protocol)이다. 즉, http 는 hyper text를 전송(transfer) 하기 위해 사용되는 통신 규약(protocol)이다. http 서버는 기본 포트 80번 port에서 서비스 대기하고, 클라이언트 (웹 브라우저)가 tcp 80번 port를 사용해 연결하면 서버는 요청에 응답하면서 자료(정보)를 전송한다. http는 단순히 텍스트를 주고받기 때문에 네트워크에서 전송 신호를 인터셉트 하는 경우 데이터 유출이 발생할 수 있다. 따라서 이러한 HTTP의 보안 취약점을 해결하기 위해 HTTPS 를 사용한다. 💡HTTPS.. 2021. 3. 16.
[자료구조] Queue (큐) 📌큐 개념 먼저 들어온 자료가 먼자 나가는 FIFO (First in First Out), 선입선출 구조의 자료구조이다. 📌큐 주요 함수 front (): 맨 앞의 요소 출력 rear() : 맨 뒤의 요소 출력 enqueue() : 큐 뒤에 요소 추가하는 함수 dequeue() : 큐 맨 앞 요소를 빼는 함수 isFull() : 큐가 가득 찼는지 확인하는 함수 isEmpty() : 큐가 비었는지 확인하는 함수 📌큐 사용 사례 데이터가 입력된 시간 순서대로 처리해야 할 필요가 있는 상황에 이용한다. 우선순위가 같은 작업 예약 (프린터의 인쇄 대기열) 은행 업무 콜센터 고객 대기시간 프로세스 관리 너비 우선 탐색(BFS, Breadth-First Search) 구현 캐시(Cache) 구현 📌구현 코드 #in.. 2021. 3. 8.
[자료구조] Stack (스택) 📌스택이란 한 쪽 끝에서만 자료를 넣고 뺄 수 있는 LIFO (Last In First Out) 구조의 자료 구조 📌스택 주요 함수 스택은 LIFO 구조로 가장 최근에 추가한 항목이 가장 먼저 제거된다. push() : 스택에 자료를 넣는 함수 pop() : 가장 최근에 추가한 자료를 빼는 함수 isFull() : 스택이 가득 찼는지 확인하는 함수 isEmpty() : 스택이 비었는지 확인하는 함수 📌스택 사용 사례 웹 브라우저 방문 기록 (뒤로가기) 역수 문자열 만들기 수식의 괄호 검사 (ex: 올바른 괄호 문자열 판단 등) 📌구현 코드 class Stack { private: int top, MaxSize; int *stack; public: Stack(int size); bool isFull(), .. 2021. 3. 8.
[Algorithm] Binary Search (이분 탐색) 개념 📌이분 탐색(바이너리 서치)이란? 각 노드에 값이 있다. 노드의 왼쪽 서브트리에는 그 노드의 값보다 작은 값들을 지닌 노드들로 이루어져 있다. 노드의 오른쪽 서브트리에는 그 노드의 값보다 큰 값들을 지닌 노드들로 이루어져 있다. 좌우 하위 트리는 각각이 다시 이진 탐색 트리여야 한다. 📌이분 탐색의 검색 (Search) **조건 : 미리 정렬되어 있어야 한다. 이진탐색트리에서 키 x를 가진 노드를 검색하고자 할때, 트리에 해당 노드가 존재하면 해당 노드를 리턴하고, 존재하지 않으면 NULL을 리턴한다. 검색하고자 하는 값을 루트노드와 먼저 비교하고, 일치할 경우 루트노드를 리턴한다. 불일치하고 검색하고자 하는 값이 루트노드의 값보다 작을 경우 왼쪽 서브트리에서 재귀적으로 검색한다. 불일치하고 검색하고자 .. 2021. 3. 2.
[Algorithm] Binary Search (이분 탐색) 코딩 테스트 공부를 하다가 Binary Search와 관련하여 문제풀이 방법이 다른 방법이 있어 정리를 한다. 📌기존에 자주 쓰던 Binary Search 코드 #include int BinarySearch(vector &A, int target) { int N = A.size(); if(N == 0) { return -1; } int l = 0; int r = N-1; while(l target){ r = m - 1; } else{ l = m + 1; } } return -1; } 이 코드에서 문제점이 있다. 바로 int m 을 구하는 과정에서 값이 커질 경우 overflow 문제가 발생한다. int 형의 경우 –2,147,483,648 ~ 2,147,483,647 사이의 값을 가지기 때문에 ( l +.. 2021. 2. 26.
자료형 크기 및 범위 정리 📌32bit (4Byte) 운영체제 기준 2021. 2. 26.
[Algorithm] Priority Queue (우선순위 큐) 기본적으로 큰 값이 가장 맨 위에 오도록 queue를 쌓는다. priority_queue의 구조는 priority_queue 이다. 따라서 아래와 같이 코드를 짜면 된다. (C++기준) #include priority_queue pq; priority_queue pq; less : 가장 큰 값이 맨 위에 온다. greater : 가장 작은 값이 맨 위에 온다. 만약 직접 구현한 구조체에 해당하는 비교함수를 쓰고싶다면 아래와 같이 사용하면 된다. #include struct node{ int x, y, cost; node(int x, int y, int cost):x(x), y(y), cost(cost){} }; struct cmp{ bool operator()(node a, node b){ return .. 2021. 2. 17.
[Algorithm] Kruskal Algorithm (크루스칼 알고리즘) 💡크루스칼 알고리즘이란? Greedy 알고리즘으로 MST(Minimum Spannig Tree, 최소 신장 트리) 문제 해결할 때 사용하는 알고리즘. 변의 개수를 E, 꼭짓점의 개수를V라고 하면 이 알고리즘은(Elog V)의 시간복잡도를 가진다. 즉, 모든 노드를 최소한의 비용으로 연결만 시키면 되기 때문에 간선의 비용을 오름차순으로 정렬 후 비용이 작은 간선부터 차례로 노드를 연결한다. 📌최소 신장 트리 구성 과정 1. 간선의 비용을 기준으로 정렬 2. 정렬된 순서에 맞게 최소 비용 순으로 그래프 연결 3. 연결 전 사이클이 발생하는지 확인 4. 사이클이 발생하는 경우 그래프에 포함하지 않음. 5. 위 과정을 반복 스패닝 트리 : 1) 모든 노드(정점)을 포함하고, 2) 노드간 연결되어 있으며 사이클을.. 2021. 2. 17.
[Algorithm] Segment Tree (세그먼트 트리) 💡Segmet Tree (세그먼트 트리) 란? 세그먼트 트리는 Binary Tree로 리프노드가 배열의 원소이고, 부모 노드는 각 배열 원소의 값의 합입니다. 따라서 배열의 원소값이 계속 변하고, 배열의 부분 합을 구할 때 부분 합을 트리에 계속 저장하여 O(logN)의 속도로 빠르게 부분 합을 구할 수 있습니다. 세그먼트 트리의 구현을 배열을 통해 구현 할 수 있다. 인덱스 i를 기준으로 했을 경우, 각 노드의 위치는 아래와 같습니다. - 부모노드 : i - 왼쪽 자식 노드 : 2*i - 오른쪽 자식 노드 : 2*i + 1 📌세그먼트 트리 구현 함수 void init(int tree[], int arr[], int left, int right, int idx) { if(left == right) { t.. 2021. 2. 11.
[Algorithm] Floyd-Warshall Algorithm 알고리즘 문제를 풀다가 최소 비용 문제와 관련하여 플로이드 워셜 알고리즘을 알게되어 정리해 본다. 💡알고리즘 설명 플로이드-워셜 알고리즘(Floyd-Warshall Algorithm)은 그래프에서 가능한 모든 노드 쌍에 대해 최단 거리를 구하는 알고리즘이다. 그래프 - 나무위키 이 문서는 대한민국에서 불법인 내용을 다룹니다. 본 문서는 대한민국에서 범죄를 구성하는 행위에 관한 헌법·법률·대통령령·조례를 다루고 있습니다. 일부 예외를 제외하고, 대한민국이 아 namu.wiki 플로이드-워셜 알고리즘은 임의의 노드 s에서 e까지 가는 데 걸리는 최단거리를 구하기 위해, s와 e 사이의 노드인 m에 대해 s에서 m까지 가는 데 걸리는 최단거리와 m에서 e까지 가는 데 걸리는 최단거리를 이용한다. 조금 더 구체.. 2021. 2. 7.
[Hive] Hive 개념 Hive(벌떼)는 HDFS(컴퓨터들로 구성된 클러스터에서 수행되는 분산파일 시스템)에 저장된 데이터를 관리할 수 있도록 쿼리를 제공하는 데이터 웨어하우스 프로젝트라고 할 수 있습니다. 페이스 북에서 개발한 하이브는 하둡에 저장된 데이터를 쉽게 처리할 수 있는 데이터웨어하우스(DW) 패키지 이다. 출처: https://excelsior-cjh.tistory.com/39 [EXCELSIOR] Apache Hadoop 데이터 웨어하우스 시스템입니다. Hive를 사용하면 데이터의 요약, 쿼리 및 분석을 수행할 수 있습니다. Hive 쿼리는 SQL과 유사한 쿼리 언어인 HiveQL로 작성합니다. 맵리듀스는 기본적으로 자바 기반의 프레임워크이므로 기존 데이터베이스나 DW를 통해 분석을 하던 개발자가 아닌 사용자들에.. 2020. 7. 4.
[Spark] OnlineRetail ItemCount - GCP 시스템 환경 - Hadoop 2.9.2 Hive 2.3.7 Spark version 2.3.4 Scala 2.11.8 - 상품명만 추출 val items = dataInfo.map(mi => mi(2)) items.take(3) #res10: Array[String] = Array(Description, WHITE HANGING HEART T-LIGHT HOLDER, WHITE METAL LANTERN) val items = dataInfo.flatMap(mi => mi(2)) items.take(3) #res11: Array[Char] = Array(D, e, s) - (PID , ITEM) 튜플 생성 # mi(1) : 배열의 1 index 원소 # mi(2) : 배열의 2 index 원소 .. 2020. 7. 4.
[Spark] Scala 기초 문법 first() : 첫 줄 가져오기 count() : rdd 안의 객체수 take(int) : 첫 줄부터 해당 수만큼 collect() : 모든 객체를 배열에 담아 반환 foreach(println) : 모든 줄을 한 줄씩 띄어서 출력 println이니까..!! 2020. 7. 4.
[Spark] Spark 개념 참고 : http://www.itworld.co.kr/insight/147556 스파크란? 스파크는 빅데이터 워크로드에 주로 사용되는 분산처리 시스템이며 하둡과 마찬가지로 오픈소스 입니다. 특징은 빠른 성능을 위해 인 메모리 캐싱과 최적화 된 실행을 사용하고 일반 배치처리, 스트리밍 분석, 머신러닝, 그래프 데이터 베이스 및 임시 쿼리를 지원 하둡없이도 클라우드 기반 데이터 플랫폼과 융합하며 원래는 하둡을 이용한 정보활용을 위한 데이터 프로세싱 툴입니다. 기존의 하둡을 통해 끌어오는 데이터들은 시간 소요가 크기 때문에 실시간으로 분석해야 하는 업무에서는 어려운 부분이 있어 새로이 개발 되었구요. 함수형 프로그래밍이 가능한 언어 스칼라(Scala)를 사용해 간단한 코드로 인터렉티브 쉘(Interactive.. 2020. 7. 2.
[Hadoop] Hadoop 개념 ‘하둡’이라는 이름이 어디서 왔는고 하니, 바로 이 더그 커팅의 아들이 갖고 놀던 노란 코끼리 봉제 인형에서 유래했다고 합니다. 더그 커팅은 아들이 이 노란 코끼리를 발음하는 것을 듣고 이름을 ‘하둡’으로 지었다고 합니다. 1. Hadoop 하둡이란? 하둡은 대용량 데이터를 분산 처리할 수 있는 자바 기반의 오픈소스 프레임워크 입니다. 대용량 파일을 저장할 수 있는 기능을 제공하는 분산파일 시스템(HDFS)과, 저장된 파일을 분산된 서버의 CPU와 메모리 자원을 이용하여 빠르게 분석하는 맵리듀스 플랫폼으로 구성되어 있다. 하둡은 아파치 루씬 창업자인 더그 커팅이 2006년 야후 엔지니어로 일하면서 개발 분산 프로그래밍이란? 간단히 말해 여러 디스크로부터 데이터를 한번에 읽는 것을 말합니다. 사실 하드디스.. 2020. 7. 2.
DL (Data Lake) 데이터 호수(Data Lake) :데이터 호수(Data Lake)는 시스템 또는 자연적인 형식으로 저장된 데이터 저장소이며, 일반적으로 소스 시스템 데이터의 원시 사본 및 보고, 시각화, 분석 및 기계 학습(Machine Learning)과 같은 작업에 사용되는 변환된 데이터를 포함하여 모든 엔터프라이즈 데이터의 단일 저장소이다. 데이터 호수에는 관계형 데이터베이스(행과 열), 반 구조화 된 데이터(CSV, 로그, XML, JSON), 구조화되지 않은 데이터(전자 메일, 문서, PDF) 및 바이너리 데이터(이미지, 오디오, 비디오)의 구조화된 데이터가 포함될 수 있다. 데이터 웨어하우스 vs 데이터 레이크 데이터 웨어하우스와는 다르게 데이터 레이크는 데이터의 종류를 묻지도 따지지도 말고 저장하는 공간이다.. 2020. 4. 20.
DM (Data Mart) DM (Data Mart) : 데이터 웨어하우스와 사용자 사이의 중간층에 위치한 것으로, 하나의 주제 또는 하나의 부서 중심의 데이터 웨어하우스라고 할 수 있다. 전사적으로 구축된 데이터 웨어하우스로부터 특정 주제, 부서 중심으로 구축된 소규모 단일 주제의 데이터 웨어하우스이다. 데이터 마트 내 대부분의 데이터는 데이터 웨어하우스로부터 복제되지만, 자체적으로 수집될 수도 있으며, 관계형 데이터 베이스나 다차원 데이터 베이스를 이용하여 구축한다. 즉, 일반적인 데이터베이스 형태로 갖고 있는 다양한 정보를 사용자의 요구 항목에 따라 체계적으로 분석하여 기업의 경영 활동을 돕기 위한 시스템을 말한다. 데이터 웨어하우스는 정부 기관 또는 정부 전체의 상세 데이터를 포함하는 데 비해, 데이터 마트는 전체적인 데이.. 2020. 4. 20.
OLTP / OLAP OLTP (On-line Transaction Precessing) : 온라인 트랜잭션 처리 여러 과정의 연산이 하나의 단위 프로세스(트랜잭션)로 실행되도록하는 처리이다. 네트워크상의 여러 이용자가 실시간으로 데이터베이스의 데이터를 갱신하거나 조회하는 등의 단위 작업을 처리하는 방식을 말한다. 주로 신용카드 조회 업무나 자동 현금 지급 등 금융 전산 관련 부문에서 많이 발생하기 때문에 ‘온라인 거래처리’라고도 한다. 이 방식의 특징은 기존 컴퓨터 통신에서 이용해 온 온라인 방식과 달리 다수의 이용자가 거의 동시에 이용할 수 있도록 송수신 자료를 트랜잭션(데이터 파일의 내용에 영향을 미치는 거래 ·입출고 ·저장 등의 단위 행위) 단위로 압축, 비어 있는 공간을 다른 사용자들이 함께 쓸 수 있도록 한 점이다.. 2020. 4. 20.
ETL (Extract, Transform, Load) ETL (Extract, Transform, Load) : 저장된 데이터를 추출하고 변형하여(요구사항에 맞게) 다른 곳으로 적재하는 모든 과정 Extract : 테이블에서 데이터를 추출 Transform : 추출한 데이터를 요구하는 형태로 변형 (필터링, 정렬, 집계, 데이터 조인, 데이터 정리, 중복 제거 및 데이터 유효성 검사 등) Load : 변경된 데이터를 테이블에 적재 OLTP에서 DW, DM, OLAP에 이르기까지의 과정에서 중간 중간에서 데이터를 이관하는 과정을 모두 ETL이라고 한다. 다음 그림과 같이 중간에 변형작업에서 주로 하는 일은 바로 정제이다. OLTP에서 발생한 데이터를 그대로 이관하여 DW, DM을 만들게 될 때 가장 먼저 부딪히는 벽이 바로 데이터의 정합성 문제이다. 이를 해.. 2020. 4. 20.
728x90