본문 바로가기

Archived(IT)/배경지식_CSE

(8)
STL 라이브러리_ 자료형 C++의 대표적인 라이브러리인 STL(Standard Template Library)는 말 그대로, C++의 문법인 Template을 활용하여 구현한 자료구조들이다. 이러한 Template을 활용하여 내부에는 다양한 자료구조인 컨테이너들을 지원한다 크게 다음의 3 가지 종류의 컨테이너들이 존재한다. 1. 순차 컨테이너 (Sequence Container) : Vector(벡터) : 대표적인 순차 컨테이너로 순차성을 보장하는 동적 배열이다. 임의 접근과 원소 추가(push_back)은 O(1)을 보장하고 있다 Deque(덱) : 벡터와 유사한 동적 배열로, 임의 접근과 앞뒤의 원소 추가는 O(1)을 보장하고 있다 List(리스트) : 리스트는 노드 기반의 시퀀스 컨테이너로, 이중 연결리스트를 기반으로 구현..
트랜잭션과 스케줄 1. 트랜잭션(Transaction) 데이터베이스에서의 논리적 작업 단위를 트랜잭션이라고 표현한다. 트랜잭션은 Commit 과 Rollback 단위로 끊길 수 있는 작업 단위이다. 이러한 트랜잭션은 ACID의 특성을 지니고 있는데 다음과 같다. (A - atomicity, C - consistency, I - Isolation, D - durability) 원자성(Atomicity) : 트랜잭션 수행은 다 되던지 안되던지(부분적 수행 불가, Commit/Rollback) 일관성(Consistency) : 트랜잭션 수행은 DB를 일관적 상태에서 다른 일관적 상태로 옮기는 것 격리성(Isolation) : 트랜잭션이 동시에 수행되더라도 혼자서 수행한 것처럼(끼어들 수 없다, LOCK) 지속성(Durabili..
애자일(Agile) 방법론 애자일 방법론이 등장하게 된 배경은 SW의 불확실성에 기인한다. 기존의 폭포수(Waterfall) 방식에서는 계획을 통해 각 단계가 마무리되면 다음 단계로 넘어간다. 이러한 개발 방식은 현실적으로 끊임없이 수정을 요하는 SW의 불확실성에 대한 대처가 힘들었다. 이전 단계로 돌아가는 과정에 있어 많은 비용이 발생하고 또한 다음 단계에 대한 고려 없이 이전 단계를 마무리 짓는다는 것 자체가 현실적으로 맞지 않았다. 그래서 등장하게 된 것이 Agile(애자일) 방법론이다. 날렵한, 민첩한이라는 뜻을 지는 Agile에서 알 수 있듯이 개발 과정에서 빠르고 유연하게 대처한다. 정의는 다음과 같다. "애자일 방법론은 소프트웨어 개발 방법에 있어서 아무런 계획이 없는 개발 방법과 계획이 지나치게 많은 개발 방법들 사..
TCP / UDP 네트워크 및 통신의 기본이 되는 이론으로 TCP와 UDP의 차이점이다. TCP(Transfer Control Protocol) 인터넷 상에서 보내는 데이터들을 제어하기 위한 전송 계층 프로토콜이다. Stream을 통한 연결형 서비스로 가상회선 제공 방식을 제공한다. ACK와 Sequence Number를 통해 높은 신뢰성을 제공한다. 흐름 제어, 오류 제어, 혼잡 제어를 보장한다. 속도가 느리다. 3 Way HandShaking 을 통한 연결 / 4 Way HandShaking 을 통한 해제 UDP(User Datagram Protocol) Datagram을 제어하기 위한 전송 계층 프로토콜이다. Port 번호만을 통해 비연결형 서비스를 제공한다. 데이터를 전송 후에 별다른 제어가 없는 낮은 신뢰성을 지..
메모리 단편화(페이징, 세그먼테이션) 단편화란 프로세스가 메모리를 요청할 때 할당 가능한 메모리가 충분히 존재함에도 메모리가 나누어져 존재하여 할당을 할 수 없을 경우를 말한다. 이러한 단편화는 외부 단편화와 내부 단편화로 구분한다. 외부 단편화: 할당 후 메모리 자체에 남는 공간 (페이징 기법-> 메모리를 페이지라는 단위로 나눈 다음 필요한 페이지 단위만큼 할당, 너무 작게하면 페이지 맵핑 비효율) 내부 단편화: 할당 후 프로세스 내부에서 남는 공간 (세그먼테이션 기법 -> 가상메모리를 서로 다른 논리적 크기인 세그먼트로 분할하여 제공, 실제 연속적인 공간에 저장)
정렬 알고리즘 1. 선택정렬(Selection Sort) 선택 정렬이란 n-1번 원소 넣을 위치를 선택하고 해당 위치의 원소를 정하는 알고리즘이다. 따라서 1번째 위치에서는 가장 우선순위가 높은 원소를 찾아 넣는다. 그 다음 2번째 위치에서는 2번째부터 n번째까지 원소 중 우선순위가 높은 원소를 넣는다. 이런식으로 n-1번째까지 반복하면 원소가 다 위치를 찾아들어간다. 시간복잡도는 O(n^2)이다. 참고로 이중선택정렬이라해서 처음부터 끝까지 훑어서 최소, 최대값을 동시에 탐색하여 넣으면서 탐색횟수를 절반으로 줄여주는 파생알고리즘도 있다. void Selection_Sort(int a[], int size) { int min_idx, temp; for (int i = 0; i < size - 1; i++) { min_i..
자료 구조 정리 1. Heap https://namu.wiki/w/%ED%9E%99%20%ED%8A%B8%EB%A6%AC 힙 트리 - 나무위키 최댓값 혹은 최솟값이 저장된 루트 노드만 제거할 수 있다. 루트 노드를 제거한다.루트 자리에 가장 마지막 노드를 삽입한다.[3]올라간 노드와 그의 자식 노드(들)와 비교한다.조건에 만족하면 그대로 두고, 그렇지 않으면 자식과 교환한다. 최대 힙부모보다 더 큰 자식이 없으면 교환하지 않고 끝낸다.부모보다 더 큰 자식이 하나만 있으면 그 자식하고 교환하면 된다.부모보다 더 큰 자식이 둘 있으면 자식들 중 큰 값과 교환한다. 최소 힙부모보다 더 작은 자식이 없 namu.wiki 2. Stack https://namu.wiki/w/%EC%8A%A4%ED%83%9D(%EC%9E%90%EB..
C++ 관련 참고 URL 1. c++ 스마트 포인터 http://tcpschool.com/cpp/cpp_template_smartPointer 코딩교육 티씨피스쿨 4차산업혁명, 코딩교육, 소프트웨어교육, 코딩기초, SW코딩, 기초코딩부터 자바 파이썬 등 tcpschool.com 2. c++ STL 라이브러리(vector, list, deque) https://modoocode.com/223 씹어먹는 C++ - 이번 강좌에서는 C++ 표준 템플릿 라이브러리 개요 시퀀스 컨테이너(sequence container) 반복자 (iterator) 범위 기반 for 문 (Range-based for loop)에 대해 배웁니다.안녕하세요 여러분! 지난번 템플릿 메타프로그래밍 강좌는 어떠셨나요? TMP 를 활용해서 프로그래밍을 하는 것은 엄청..