반응형

전체 글 68

[PostgreSQL] PostgreSQL의 문자 타입에 대해서 알아보자. (Character Types)

1. character varying(n), varchar(n) - 제한이 있는 가변길이 (최대 길이 n 까지) - varchar(10)에 'abc'가 들어가면 3바이트의 크기를 가짐 - 길이 지정을 하지 않으면 (n을 명시하지 않으면) 문자 길이 제한 없음으로 간주 2. character(n), char(n) - 고정 길이, 후행 공백 제거 - char(10)에 'abc'가 들어가도 10바이트의 크기를 가짐 - 길이 지정 안하면 character(1)로 간주 3. text - 제한없이 가변 길이 char는 추가 스토리지 비용(+ 후행공백처리 등)으로 3개 중 가장 느리다. 길이가 고정인 주민등록번호와 같은 경우가 아니라면 일반적으로 text나 varchar를 사용한다. ** varchar에서 n을 명시..

DB/PostgreSQL 2022.06.14

[PostgreSQL] PostgreSQL의 숫자 타입에 대해서 알아보자.

PSQL에서는 다양한 데이터 타입에 대해서 지원한다. 하나하나 알아보자. 1. Numeric Types (숫자 타입) (1) Integer (int, int4) - 4 byte - 일반적인 선택 - -2147483648 ~ +2147483648 (2) smallInt (int2) - 2 byte - generally only used if disk space is at a premium (일반적으로 디스크 용량이 없을 때) - -32768 ~ +32767 (3) bigInt (int8) - 8 byte - be used when the range of the integer type is insufficient (integer의 범위가 충분하지 않을 때 보통 사용한다.) - -9223372036854775..

DB/PostgreSQL 2022.06.06

[.Net Framework] SignalR에 대해서 알아보자.

1. SignalR - 실시간으로 웹 기능을 앱에 추가하는 것을 간소화 해준다. - Realtime, 비동기, 쌍방향 통신 기능을 쉽게 사용할 수 있게 해주는 오픈소스 라이브러리로 ASP.NET Core에 추가됨. - 서버로부터 빈번한 업데이트가 필요한 어플리케이션에 권장된다. - 서버 대 클라이언트 RPC를 위한 API를 제공한다. - RPC 통신은 서버측의 .NET Core 코드에서 클라이언트 상의 자바스크립트 함수를 호출한다. 2. RPC 통신 - Remote Procedure Call의 약자 - 서버에 만들어진 함수를 클라이언트에서 호출되는 방식으로 서버 측 API를 실행할 수 있다. - SignalR은 클라이언트에서 호출 가능한 서버의 함수 집합을 hub라고 부른다. - 클라이언트에서 Hub의 ..

Programming/C# 2022.03.17

[Javascript & Node] 자바스크립트 메모리 구조에 대해서 알아보자. (가비지 컬렉션 까지)

1. 메모리 구조 자바스크립트 엔진이 가지는 세 가지 메모리 공간이다. Code Area, Call Stack, Heap을 시각화한 모습으로, 하나로 묶어 프로그램의 주소 공간이라고 한다. (1) Code Area : 실행할 JS 코드를 저장한다. (2) Call Stack : 실행 중인 함수를 추적하며 계산을 수행하고, 지역 변수를 저장한다. 변수들은 LIFO 형식으로 저장된다. 또한 원시 타입들이 이 곳에 저장된다. 1) 변수 식별자(이름) 저장 2) 스코프 체인 및 this 관리 3) 코드 실행 순서 관리 등을 수행 (3) Heap : 참조 타입(객체 등)들이 할당되는 곳이다. Heap의 메모리 할당은 LIFO 정책을 따르지 않고 랜덤하게 배치된다. 또한, 메모리 누수를 방지하기 위해 JS 엔진의 ..

[자료구조] 힙(Heap)에 대해서 알아보자.

오늘은 힙(Heap)에 대해서 알아보는 시간을 갖도록 하겠다. Heap (1) 정의 - 데이터에서 최대값과 최소값을 빠르게 찾기 위해 고안된 완전 이진 트리(Complete Binary Tree) * 완전 이진 트리 : 노드를 삽일할 때 최하단 왼쪽 노드부터 차례대로 삽입하는 트리 (2) 특징 - 배열에 데이터를 넣고, 최대값과 최소값을 찾으려면 O(n)이 걸린다. - 힙에 데이터를 넣고, 최대값과 최소값을 찾으면, 𝑂(𝑙𝑜𝑔𝑛)이 걸린다. - 우선순위 큐와 같이 최대값 또는 최소값을 빠르게 찾아야 하는 자료구조 및 알고리즘 구현 등에 활용된다. - 최대값 또는 최소값을 구하기 위한 구조로 분류되어있다. - 완전 이진 트리 형태를 가진다. - 각 노드의 값은 해당 노드의 자식 노드가 가진 값보다 크거나 ..

[자료구조] 트리(Tree)에 대해서 알아보자.

오늘은 트리에 대해서 알아보는 시간을 갖도록 하겠다. Tree (0) 배경지식 * Node : 트리에서 데이터를 저장하는 기본 요소 (데이터와 다른 연결된 노드에 대한 Branch 정보 포함) * Root Node : 트리 맨 위에 노드 * Level : 최상위 노드를 Level 0으로 하였을 때, 하위 Branch로 연결된 노드의 깊이를 나타냄 * Parent Node : 어떤 노드의 다음 레벨에 연결된 노드 * Child Node : 어떤 노드의 상위 레벨에 연결된 노드 * Leaf Node (Terminal Node) : Child Node가 하나도 없는 노드 * Sibling (Brother Node) : 동일한 Parent Node를 가진 노드 * Depth : 트리에서 Node가 가질 수 있는..

[자료구조] 큐(Queue)에 대해서 알아보자.

오늘은 큐(Queue)에 대해서 알아보는 시간을 갖도록 하겠다. Queue (1) 정의 - 선입선출(First In First Out - FIFO)의 자료구조이다. Queue라는 단어 자체가 표 같은 것을 구매하기 위해 줄서는 것을 의미한다. (2) 특징 - 가장 먼저 넣은 데이터를 가장 먼저 꺼낼 수 있는 구조이다. - FIFO(First In First out)로 스택과 꺼내는 순서가 반대이다.. - Enqueue() : 큐에서 데이터를 넣는 기능 - Dequeue() : 큐에서 데이터를 꺼내는 기능 (3) 활용 - 멀티 테스킹을 위한 프로세스 스케쥴링 방식을 구현하기 위해 많이 사용된다. (운영체제 참조) - 큐의 경우에는 장단점 보다는 (특별히 언급되는 장단점이 없음), 큐의 활용 예로 프로세스 ..

[자료구조] 스택(Stack)에 대해서 알아보자.

오늘은 스택(Stack)에 대해서 알아보는 시간을 갖도록 하겠다. Stack (1) 정의 - 후입선출 특성을 가지고 있는 자료구조를 말한다. - 바닥이 막힌 상자라고 생각하면 된다. 나중에 넣은 물건을 먼저 꺼내야하는 구조이다. (2) 특징 - 한쪽 끝에서만 자료를 넣거나 뺄 수 있다. - 가장 나중에 쌓은 데이터를 가장 먼저 빼낼수 있는 데이터 구조이다. - LIFO(Last-In First Out) (큐는 FIFO - First In First Out) - push() : 데이터를 스택에 넣기 - pop() : 데이터를 스택에서 꺼내기 (3) 장단점 1. 장점 - 구조가 단순해서, 구현이 쉽다. - 데이터 저장/읽기 속도가 빠르다. 2. 단점 (일반적인 스택) - 데이터 최대 갯수를 미리 정해야 한다..

[자료구조] Linked List에 대해서 알아보자.

오늘은 Linked List(링크드 리스트)에 대해서 알아보는 시간을 갖도록 하겠다. (1) 정의 - Linked List는 연결 리스트라고도 한다. - 노드(Node)와 포인터(Pointer)를 가지고 한 줄로 연결되어 있는 방식의 자료구조이다. - 배열은 순차적으로 연결된 공간에 데이터를 나열하는데 반해 linked list는 떨어진 곳에 존재하는 데이터를 화살표로 연결해서 관리하는 데이터 구조이다. *노드(Node) : 데이터의 저장 단위 (데이터값, 포인터)로 구성 *포인터(Pointer) : 각 노드 안에서, 다음이나 이전의 노드와의 연결 정보를 가지고 있는 공간 (2) 장점 - 미리 데이터 공간을 할당하지 않아도 된다. (배열은 미리 데이터 공간을 할당해야 함) (3) 단점 - 연결을 위한 별..

[자료구조] Hash Table에 대해서 알아보자.

오늘은 자료구조에서 Hash Map에 대해서 알아보는 시간을 갖도록 하겠다. Hash Table (0) 배경 지식 * Hash 임의의 길이의 값을 해시함수(Hash Function)를 사용하여 고정된 크기의 값으로 변환하는 작업을 말한다. * Hash Function 키(Key)를 해시(Hash)로 바꿔주는 역할을 한다. 다양한 길이를 가지고 있는 key를 가지는 hash로 변경하여 저장소를 효율적으로 운영할 수 있도록 도와준다. 다만, 서로 다른 key가 같은 hash가 되는 경우를 해시 충돌(Hash Collision)이라고 하는데, 해시 충돌을 일으키는 확률을 최대한 줄이는 함수를 만드는 것이 중요하다. * Key 고유한 값이며, 해시 함수의 input이 된다. 다양한 길이의 값이 될 수 있다. 이..

반응형