본문 바로가기
Coroutine vs Thread 1. Subroutine C언어 등에서 일반적으로 사용하는 함수는 시작할 때 진입하는 지점이 하나 존재하고 함수가 모두 실행되거나, return 구문에 의해 종료되는 지점을 설정할 수있다. 이러한 함수를 Subroutine 이라고 한다. 2. Coroutine 개요 코루틴은 subroutine을 더 일반화한 개념으로 진입하는 시점까지 여러 개를 가질 수 있는 함수를 의미한다 C#, JavaScript, Python 등이 제공하는 Generator가 사실 코루틴의 한 형태이다 caller가 함수를 call하고, 함수가 caller에게 값을 return하면서 종료하는 것에 더해 return하는 대신 suspend(혹은 yield)하면 caller가 나중에 esume하여 중단된 지점부터 실행을 이어갈 수 있다.. 2020. 10. 24.
Concurrency vs Parallelism Concurrency Concurrency is when two or more tasks can start, run, and complete in overlapping time periods. It doesn't necessarily mean they'll ever both be running at the same instant. For example, multitasking on a single-core machine. 동시성은 두 개 이상의 작업이 겹쳐있는 시간에 실행, 실행 및 완료 될 수 있다. 하지만 반드시 둘 다 같은 순간에 실행 된다는 의미는 아니다. 예시로 단일 코어 컴퓨터에서의 멀티태스킹이 있다. 동시성은 서로의 작업들이 인터럽트되며 동작이 이루어 진다. Parallelism Parall.. 2020. 10. 24.
6. Web request senario 상황 : host A가 www.google.com에 접속하려고 함. 1. host A는 LAN에 접속 (no IP) 2. host A는 DHCP request 메세지를 flooding 기법으로 broadcast (UDP) -> switch는 호스트의 MAC address와 inteface를 learning 3. DHCP 서버는 UDP demux로 request 메세지를 이해 4. DHCP 서버는 DHCP ACK 메시지 전송 ( yiaddr, ip addr of first hop router, DNS server name & id 포함) -> 2번에서 host의 MAC address와 inteface를 learning했으므로 uni cast 가능 5. host A는 ip 할당 받음 , www.google... 2020. 7. 26.
Computer Algorithm 1. 문제해결과 알고리즘 - 문제해결과정 - 알고리즘 분석 2. 데이터 추상화와 자료구조 - 데이터 추상화 - 자료구조 : tree, binary tree, stack, queue, heap, union-find, dictionary, ... 4. Sorting - 정렬 : insertion sort, quick sort, merge sort, heap sort, radix sort 6. Dynamic sets & Searching - array doubling & amortized analysis - BST - Red-Black tree 7. Graph and Graph Search - Graph - Graph traversal : pre-order, in-order, post-order - Graph.. 2020. 7. 26.
문자열 매칭 알고리즘 단순 문자열 매칭 KMP (Knuth-Morris-Pratt) 알고리즘 Boyer-Moore 알고리즘 kmp 단순 문자열 매칭 알고리즘 문자 하나씩 확인하는 알고리즘으로 가장 간단한 형태의 알고리즘 의사코드 전체 문자열의 첫번째 문자에서 시작하여 찾을 문자열의 첫번째 문자를 비교 매칭이 이루어지면 찾을 문자열의 다음 문자를 비교 매칭이 이루어지지 않으면 전체 문자열의 두번째 문자에서 다시 시작 위의 과정을 반복하여 문자열을 찾는다 시간 복잡도 : O(N*M) // N = 전체 문자열 길이, M = 찾을 문자열 길이 KMP (Knuth-Morris-Pratt) 알고리즘 접두사와 접미사의 개념을 활용하여 '반복되는 연산을 얼마나 줄일 수 있는지 판별'하고 매칭할 문자열을 빠르게 점프하는 기법 접두사 : 찾을.. 2020. 7. 19.
Greedy Algorithm Greedy Algorithm, 탐욕알고리즘 정의 : 당장 눈 앞에 보이는 최적의 상황만을 쫒는 알고리즘 특징 : 탐욕알고리즘은 최적해를 구하는 데에 사용되는 근사적인 방법으로, 여러 경우 중 하나를 결정해야 할 때마다 그 순간에 최적이라고 생각되는 것을 선택해 나가는 방식으로 진행하여 최종적인 해답에 도달한다. 순간마다 하는 선택은 그 순간에 대해 지역적으로는 최적이지만, 그 선택들을 계속 수집하여 최종적(전역적)인 해답을 만들었다고 해서, 그것이 최적이라는 보장은 없다. 출처: https://yongmin0000.tistory.com/70?category=847685 [yongmin] 2020. 7. 19.