본문 바로가기

분류 전체보기204

[네트워크] 네트워크 성능 분석 명령어 ping ping(Packet INternet Groper)은 네트워크 상태를 확인하려는 대상 노드를 향해 일정 크기의 패킷을 전송하는 명령어 이다. 해당 노드까지 패킷 수신 상태, 도달하기까지 시간, 네트워크 연결이 잘 돼 있는지 확인할 수 있다. ICMP 프로토콜(OSI 3계층)을 사용한다. netstat 접속되어 있는 서비스들의 네트워크 상태를 표시하는 데 사용되며 네트워크 접속, 라우팅 테이블, 네트워크 프로토콜 등 리스트를 보여준다. nslookup DNS에 관련된 내용을 확인하기 위해 사용하는 명령어이다. 특정 도메인에 매핑된 IP를 확인할 때 사용한다. tracert(Windows), traceroute(Linux) 목적지 노드까지 네트워크 경로를 확인할 때 사용하는 명령어이다. 목적지 노드.. 2023. 4. 27.
[알고리즘] 퀵 정렬과 병합 정렬 퀵 정렬 배열에서 기준값(Pivot)을 설정해 작은 값은 왼쪽에, 큰 값은 오른쪽에 배치한다. 재귀적으로 분할해 정렬을 수행한다. pivot, left 인덱스와 right 인덱스를 설정한다. left값이 피봇보다 작으면 오른쪽으로 이동하고 크면 stop, right값도 똑같이 피봇보다 크면 왼쪽으로 이동하고 작으면 stop한다. 둘 다 stop인 경우 두 값을 swap한다. left 인덱스와 right 인덱스가 만날 때까지 수행하고, 그 인덱스를 기준으로 파티션을 분할해 정렬을 수행한다. 평균 시간복잡도는 O(nlogn)이지만 최악의 경우(오름차순 되어 있는데 내림차순으로 변경할 때) O(n^2)이다. 병합 정렬 https://i.namu.wiki/i/4JKVP3wRyMYaDKU_CBtFlxlJletKN.. 2023. 4. 26.
[독후감 23년-19] 물고기는 존재하지 않는다: 상실, 사랑 그리고 숨어 있는 삶의 질서에 관한 이야기 독서기간_2023년 2월 10일 ~ 2023년 2월 18일? 저자_룰루 밀러 출간일_2021년 12월 17일 이것은 과학책인가 심리학책인가 에세이인가 철학책인가 소설인가 역사책인가. 초중반까지 읽는데 무슨 내용인지 도저히 감이 안 오던 책이었다. 작가의 경험담인 듯 하면서 소설인 것 같은데 또 소설은 아닌 것 같고... 장(챕터) 마다 주요 인물이 달라져서 혼란스러웠다. 물고기 분류학자 이야기가 나올 때면 물고기 학명이 머리를 어지럽게 했다. 예를 들어 뤼세이데스 이다스 롱기누스, 에베르만니아 파나멘시스 등등. 책이 전달하고 싶은 내용을 당최 모르겠어서 중간에 포기할까 생각도 여러 번 들었다. 근데 다들 스포일러 없이 후반부를 꼭 읽어야만 한다길래 꾹 참고 읽었다. 그렇게 중반부를 읽다가 눈이 트이게 되.. 2023. 4. 25.
[자료구조] B-tree와 B+tree 이진트리 종류 정이진트리 Full Binary Tree 트리의 모든 노드가 0개 혹은 2개의 자식을 가지는 경우 (한국의 교재에선 포화이진트리라고 번역된 게 있는데 둘은 다른 개념이다.) 포화이진트리 Perfect Binary Tree 말 그대로 마지막 레벨까지 노드가 꽉 찬 트리, (2^N-1)개의 노드를 가진다. 완전이진트리 Complete Binary Tree 마지막 레벨을 제외한 모든 레벨에서 순서대로 노드가 꽉 찬 트리, 마지막 레벨은 왼쪽부터 채워져야 한다. 균형이진트리 Balanced Binary Tree 말단 노드들의 레벨 차이가 최대 1레벨까지만 나는 트리, 균형이 깨지면 별도의 로직을 통해 다시 균형을 잡게 된다. 포화이진트리, 완전이진트리, 정이진트리는 이상적인만큼 현실에서 잘 찾아볼.. 2023. 4. 24.
[운영체제] 세마포어와 뮤텍스 공유된 자원에 여러 프로세스가 동시에 접근하면 문제가 발생할 수 있다. 이러한 문제를 제한하기 위해 고안된 방법이 세마포어와 뮤텍스이다. 이때 각 프로세스가 접근하는 공유 데이터 부분을 임계 구역(Critical Section)이라고 한다. 세마포어: 멀티 프로세스 환경에서 공유 자원에 대한 접근을 제한하는 방법 뮤텍스: 임계 구역을 가진 스레드들의 실행시간이 서로 겹치지 않고 각각 단독으로 실행되게 하는 기술 상호배제(Mutual Exclusion)의 약자이다. 뮤텍스보다 세마포어가 좀 더 상위 개념이다. 세마포어의 P, V연산 P연산: 임계 구역에 들어가기 전 수행 (프로세스 진입 여부를 자원의 개수 S를 통해 결정) V연산: 임계 구역에서 나올 때 수행 (자원 반납 알림, 대기 중인 프로세스를 깨우.. 2023. 4. 22.
[네트워크] 주소창에 URL을 입력 시 일어나는 일 요약 주소창에 도메인을 입력한다. 브라우저가 캐시에서 DNS 기록이 있는지 확인한다. 없다면 ISP의 DNS 서버가 도메인을 호스팅하는 IP주소를 찾기 위해 DNS 쿼리를 날린다. 브라우저가 해당 서버와 TCP 연결을 한다. 브라우저가 웹서버에 HTTP 요청을 보낸다. 서버는 요청을 처리하고 응답을 보낸다. 서버는 HTTP 응답을 보낸다. 브라우저는 HTML 콘텐츠를 가시화한다. DNS(Domain Name System)은 URL의 이름이고 특정 IP 주소와 연결되어 있다. 모든 URL은 유일한 IP 주소와 매치된다. IP주소는 요청하는 웹사이트의 서버 호스트 컴퓨터에 종속된다. 예를 들어 www.google.com URL이 20.85.227.104 IP주소를 가지는 것처럼. #2 DNS 기록을 찾기 위.. 2023. 4. 21.
[네트워크] OSI 7계층, PDU OSI 7 Layers OSI(Open Systems Interconnection) 모형은 네트워크 통신을 저수준에서 고수준까지 7단계로 분류한 것이다. 인터넷에서 컴퓨터들이 서로 정보를 주고 받는 데 쓰이는 프로토콜의 집합이다. 1단계부터 4단계까지는 저수준, 5단계부터 7단계까지는 고수준 계층이라고 한다. 네트워크의 기본 원리는 '데이터를 받아서 가야 할 곳으로 전달해 주는 것'이다. 저수준일수록 하드웨어적, 전기적, 기계적 관점으로, 고수준일수록 응용 프로그램과 사용자 영역관점으로 다룬다. 이 계층들은 특정 계층이 변경되었을 때 다른 계층이 영향을 받지 않도록 설계되었다. 물리 계층 (Physical) 물리적으로 전류나 광신호, 라디오 신호를 통해 비트 단위의 데이터 전달이 이루어진다. 즉, 데이터.. 2023. 4. 20.
RabbitMQ의 메시지 전달 방식 (Direct, Fanout, Topic, Headers Exchange) 래빗엠큐로 살펴보는 메시지 프로듀서의 메시지 전달 방식을 알아보자. 래빗엠큐가 아니더라도 Kafka, JMS 등 다른 메시지브로커들도 비슷한 모델을 사용한다. 하나를 알면 열을 안다...!! 기본적으로 구독-발행 시스템을이용한다고 생각하면 된다. 유튜브 구독을 예시로 들면 특정 사용자에게만 알림 보내기, 전체 사용자에게 알림 보내기, 특정 유튜버 구독자에게만 알림 보내기 처럼 이해하면 쉽다. Binding : 익스체인지가 어떤 큐에 메시지를 적재할지 정하는 규칙 Exchange : 프로듀서로 부터 발행된 메시지를 받고, 큐에 메시지를 라우트한다. 라우팅 알고리즘은 익스체인지 타입과 바인딩 규칙에 따른다. Direct Exchange Key 값에 해당하는 큐에만 메시지를 적재한다. 유니캐스트와 개념이 비슷.. 2023. 4. 19.