전체 글

전체 글

    MacOS 네트워크 인터페이스(Networt Interfaces)

    MacOS 네트워크 인터페이스(Networt Interfaces)

    개요 tcp 3 way handshake 과정에서 실제로 헤더에 어떤 정보가 담기는지 확인하기 위한 방법을 알아보던 중 tcpdump를 통해 패킷 헤더의 내용을 확인할 수 있다는 사실을 알게되었다. 그러나 tcpdump를 활용한 예시들이 전부 'eth0'이라는 네트워크 인터페이스를 통한 접근을 기본으로 하는데, 내 맥북에는 그런 이름의 인터페이스가 존재하지 않았다. 따라서 ifconfig(interface configuration) 명령어를 통해 확인한 맥북의 네트워크 인터페이스와 각각의 역할에 대해 이해한 바를 정리하는 목적으로 작성하는 글이다. 명칭과 역할 먼저, 모든 네트워크 인터페이스의 이름만을 확인하기 위해 아래와 같은 명령어를 사용할 수 있다. $ ifconfig -l해당 명령어..

    [RBTree lab] ③ Erase

    [RBTree lab] ③ Erase

    삭제 노드의 삭제는 다음과 같은 과정을 거쳐서 일어난다. 1. 삭제 대상 노드(target)를 트리에서 제거한다. 2. RBTree의 조건에 맞게 트리를 조정한다. 1. 삭제 대상 노드(target)를 트리에서 제거 삭제 자체는 BST의 삭제와 동일하게 진행된다. 주어진 target이 항상 트리 내에 존재하는, sentinel이 아닌 노드라고 할 때, target 노드가 제거된다는 것은 target의 연결 관계가 제거되고, 트리에서 target이 차지하고 있던 위치에 다른 노드가 위치하게 되는 것을 의미한다. RB Tree에서는 3가지 경우를 나누어서 노드의 삭제를 진행한다. 1. target의 오른쪽 자식이 nil인 경우 2. target의 왼쪽 자식이 nil인 경우 3. target의 두 자식이 모두..

    [RBTree lab] ② Insert

    [RBTree lab] ② Insert

    삽입(insert) insert 자체는 BST와 동일하게 진행되고, insert 이후 RB트리를 유지시키기 위한 fix up이 진행된다. 먼저 insert부터 확인해보자. Root node부터 시작해서, 현재 insert하려는 new_node의 key값과 만나는 node의 key값을 비교한 뒤 new_node의 key값이 더 작다면 왼쪽으로, 크다면 오른쪽으로 내려간다. 더 이상 내려갈 수 없을 때(nil을 만날 때) 그 위치가 new_node가 삽입 될 위치이다. 다만, RB 트리의 1번 조건에 따라, 모든 node는 RED 또는 BLACK의 색을 가져야 하는데, 새로 insert되는 node의 색은 항상 RED 로 고정된다. 이는 RB Tree의 조건 5번을 위배하지 않기 위함이다. 5. 각 노드로부..

    [RBTree lab] ① 개요, Rotate

    [RBTree lab] ① 개요, Rotate

    RBTree(Red Black Tree) RB트리는 전체 트리의 높이를 logN (N은 노드의 개수) 으로 유지하는 이진 탐색 트리이다. RBTREE의 5가지 조건 1. 모든 노드는 RED 또는 BLACK 2. 루트는 BLACK 3. 모든 리프(NIL)는 BLACK 4. 노드가 RED 이면 그 노드의 자식은 모두 BLACK 5. 각 노드로부터 그 노드의 자손인 리프로 가는 경로들은 모두 같은 수의 BLACK 노드를 포함해야함 각 노드는 자신의 부모, 왼쪽 자식, 오른쪽 자식의 정보와 노드 자신의 key값을 가지고 있다. 구현을 용이하게 하기 위해 sentinel node를 이용하는데, sentinel node는 부모와 자식 정보를 가지지 않고 색깔이 항상 BLACK인 node로 정의한다. 💻 구현(1) ..

    [2023 (상반기) Dev-Matching : 백엔드] 코딩 테스트 후기

    [2023 (상반기) Dev-Matching : 백엔드] 코딩 테스트 후기

    환경 규정 외부 IDE 사용 불가, 인터넷 검색/오픈북 참고 불가 나는 올해 처음 데브 매칭을 신청했지만, 작년 하반기 후기들을 보니 규정이 조금 더 엄격해진 것 같다. 작년에는 인터넷 검색 및 오픈북 참고가 가능했고, 외부 IDE 사용 또한 가능했지만 올해에는 이 두가지 항목이 테스트 이행 중 위반 행동으로 바뀌었다. 응시 환경 화면 공유 + 화상 감독 화면 공유로 현재 화면을 공유한다. 구글 미트에서 사용하는 전체 화면 공유 기능과 동일하다. 테스트를 진행하는 동안 응시자의 얼굴, 허벅지, 모니터, 키보드 등이 나오는 화면을 실시간으로 공유해야 한다. 지원 시 안내되는 모바일 어플리케이션을 설치하고 안내 방법을 확인하면 쉽게 할 수 있다. 코딩 테스트 언어 : 파이썬 사용 문제 : 알고리즘 3문제 +..