목록전체 글 (138)
공부하는 스누피
패킷이 송신측에서 출발해 수신측까지 도달하기까지의 과정에서 수많은 라우터를 거친다. 경로상의 각 노드에서 패킷은 다양한 지연(delay)를 겪게 되는데, 노드 처리 지연, 큐잉 지연, 전송 지연, 전파 지연이 대표적이다. 이 지연들이 쌓여 전체 노드 지연(total nodal delay)를 일으킨다. 1. 처리 지연(processing delay) 패킷 헤더를 조사하고 패킷을 어디로 보낼지 결정하는 시간. 노드 처리 이후에 라우터는 목적지 라우터로 향하는 링크의 큐에 보낸다. ex) 놀이공원에 갔는데 롤러코스터를 타려면 어디로 어떻게 갈지 결정하는 시간. 2. 큐잉 지연(queuing delay) 큐에 저장되어 링크로 전송되기를 기다리는 패킷의 수에 따라 결정된다. 큐가 비어 있다면 큐잉 지연은 0이다...
링크와 스위치를 통해 데이터를 이동시키는 방식에는 패킷 교환(packet switching)과 회선 교환(circuit switching)이 있다. 1. 패킷 교환 네트워크에서 종단 시스템들은 서로 메시지를 교환한다. 송신 측에서는 메시지를 보내기 위해 긴 메세지를 패킷(packet)이라고 하는 작은 데이터 블록으로 나눈다. 각 패킷은 통신 링크와 패킷 스위치(라우터/스위치)를 거친다. 패킷은 링크의 최대 전송 속도와 같은 속도로 각각의 링크를 통해 전송된다. store-and-forward transmission 대부분의 패킷 스위치는 저장-후-전달 전송(store-and-forward transmission) 방식을 이용한다. 스위치가 패킷을 전송하기 전에 전체 패킷을 받아야 하는 것을 의미한다. 큐..
슈도코드(pseudocode)라고도 하는 의사 코드는 알고리즘이나 다른 시스템에서 작동하는 과정을 설명하는 언어입니다. 슈도코드는 프로그래밍 언어와 같이 구조적 형태를 자주 사용하지만, 사람이 읽기 좋게 되어 있습니다. 프로그래밍 언어와 일반적인 언어를 함께 쓰면서, 필요하다면 수학적 기호를 사용해 표현할 수 있습니다. 슈도코드를 왜 사용할까요? 슈도코드는 영어의 정보와 코드의 정확성 사이의 균형을 맞추어 작성됩니다. 만약 우리가 알고리즘을 영어로만 작성한다면, 코드로 변환하고 알고리즘적으로 분석하기에 어렵습니다. 대신 코드로만 작성하는 경우, 실제 코드를 구현하고 싶지 않아도 모든 디테일을 알아야 해 많은 시간이 걸립니다. 그래서 슈도코드의 목적은 high-level로 된 설명을 분석과 코딩이 가능하도..
이진 탐색 트리가 편향 트리이면 최악의 경우 O(h)의 시간복잡도를 가진다. 항상 O(logh)의 시간복잡도를 유지하려면 트리의 균형을 맞추어야 한다. AVL 트리는 균형 잡힌 트리 중 하나이다. AVL 트리에서는 균형의 정도를 표현하기 위해 균형 인수를 사용한다. 균형 인수는 왼쪽 서브트리의 높이 - 오른쪽 서브트리의 높이이다. 균형을 잡기 위해 트리를 재조정할 때, 균형 인수의 절댓값이 크면 클수록 트리의 균형이 무너진 상태이다. 균형 인수의 절대값이 1 이하여야 균형 잡힌 트리라고 할 수 있다. 트리의 균형을 잡는 방법은 Rebalancing, Refactoring 등으로 부른다. 재조정이 필요한 상태는 크게 4가지이다. 1) Left Left 상태 루트 노드의 균형 인수가 +2인 경우. 왼쪽 서브..
kjsu0209.github.io/Tech-Interview/data-structure/ds 자료구조 기술면접 대비 CS 질문 모음 kjsu0209.github.io 1. 스택과 큐 - 스택, 큐 둘다 선형 자료구조이다. - 스택은 선입후출LIFO 형식이고, 재귀 알고리즘의 작동 원리이다. - 큐는 후입후출FIFO 형식이고, 넓이 우선 탐색에 사용된다. - 큐는 스택 2개로 만들 수 있다. 큐에 들어온 값을 넣는 스택 a, dequeue 요청된 값을 넣는 스택 b를 구현한다. - dequeue는 b가 비어있다면 a를 모두 pop하여 b에 넣은 후 b를 pop하면 된다. b가 비어있지 않다면 그냥 pop하면 된다. a = [] b = [] for i in input: c = input('Command (I..
정규표현식(Regular Expression) 정규표현식은 특정한 패턴을 가진 문자열의 집합을 표현하는 방법이다. 문자열의 검색 및 치환에서 많이 쓰인다. 대표적인 정규표현식 라이브러리로 Python의 re 모듈이 있다. 문법 정규표현식의 패턴은 대상 문자열과 일치시키는데 쓰이며, 일련의 문자들로 구성된다. 양의 지정 ? : 있어도 되고 없어도 되는 문자를 일치. ex) colou?r -> u는 있어도 되고 없어도 된다. * : 0번 이상 나타나는 문자를 일치시킴. ex) ab*c -> b가 없어도 되고, 여러번 연속해서 나타나도 된다. + : 1번 이상 나타나는 경우 ex) ab*c -> b가 없으면 안된다. 메타문자 (특수 문자 기호) 정규표현식 내 특별한 의미를 갖는 문자 기호이다. ex) |, [..
선택 정렬 - 가장 작은 데이터를 앞으로 보내는 과정을 N-1번 반복한다. - 시간복잡도는 O(N^2)이다. => 배열 순회하는 반복문(N) + 가장 작은 데이터를 찾는 반복문(N-1+N-2+...+2) = N * (N+1) / 2 1) 바꿀 데이터의 인덱스를 i라 하고, 0(맨 앞)으로 초기화한다. 2) 가장 작은 데이터를 선택해 i 인덱스의 데이터와 바꾼다. 3) 그다음 작은 데이터를 선택해 i+1 인덱스에 있는 데이터와 바꾼다. 4) i가 배열의 마지막에 도착할 때까지 반복한다. def selection(arr): for i in range(len(arr)): min_index = i for j in range(i+1, len(arr)): if arr[i] > arr[j]: min_index = j..
시큐어코딩 가이드는 한국인터넷진흥원의 기술안내서 가이드로, 2020년 기준 한국인터넷진흥원에서는 JAVA, C, Android(JAVA) 가이드를 제공하고 있다. 정보처리기사에서는 인터페이스 개발 시 보안 취약점을 방지할 수 있는 JAVA 가이드라인으로 소개된다. 적용대상 보안약점 대응방안 입력데이터 검증 및 표현 입력값에 대한 검증 누락 입력 데이터에 대한 유효성 검증 체계 수립 보안 기능 보안 기능의 부적절한 구현 비밀번호 등 보안 정책이 적절하게 반영되도록 구현 시간 및 상태 병렬 시스템이나 멀티 프로세스 환경에서 시간/상태의 부적절한 관리 공유 자원의 접근 직렬화 에러 처리 에러 미처리 에러 상황 처리하도록 구현 코드 오류 개발자에 의한 코딩 오류 경고 순위의 최상향 조정 후 경고 메시지 코드 제..