문제 링크 https://school.programmers.co.kr/learn/courses/30/lessons/42890? 카카오 코딩 테스트 문제 위주로 풀고 있는데, 어째 Level 2에 나오는 문제는 왜 전부 유형이 비슷한 거 같지? 문제 핵심 및 풀이 제한 사항 부분에서 문제의 유형을 알 수 있다. 고를 수 있는 선택지인 column이 최대 8개, 판별해야 할 row는 최대 20밖에 되지 않는다. 탐색 범위가 엄청 작은 것을 알 수 있어서, 이 문제는 완전 탐색으로 충분히 풀 수 있다는 것을 알 수 있다. 키 쌍이 될 수 있는 경우의 수 어떤 속성(column)의 조합이 후보키가 될 수 있는지는 속성 조합을 만들어보고, 직접 모든 row와 비교해 보는 수밖에 없다. 그렇기 때문에 결국엔 조합이..
교착 상태 회피(Deadlock Avoidance) 교착 상태 예방의 단점 장치의 이용률이 저하됨 시스템 총 처리율(throughput)이 감소 교착 상태 회피 원리 자원이 어떻게 요청될지에 대한 추가 정보를 제공하도록 요구하는 것 각 스레드의 요청과 방출에 대한 완전한 순서를 미리 안다면, 각 요청에 대해 스레드가 대기해야 하는지의 여부를 결정할 수 있다. → 각 요청에서 발생할 수 있는 교착 상태를 피할 수 있다. 스레드 대기 여부를 결정하기 위해, 여러 가지 정보를 고려해야 한다. 현재 가용 자원 현재 각 스레드에 할당된 자원 각 스레드가 앞으로 요청하거나 방출할 자원 교착 상태 회피 알고리즘 각 스레드가 자신이 필요로 하는 각 유형의 자원마다 최대 수를 선언하도록 요구하는 것 → 가장 단순하고 제..
문제 링크 https://school.programmers.co.kr/learn/courses/30/lessons/72411 2021 카카오 블라인드 코딩 테스트에서 나온 문제. 자료구조 Map을 잘 알아야 풀 수 있는 문제 같다. Map을 사용하지 않고 다른 건 잘 모르겠다. 문제 핵심 및 풀이 메뉴(orders)의 개수가 최대 20개, 메뉴 조합(course)의 가짓수는 최대 10가지. 문제 풀이에 핵심이 되는 조합과 개수가 엄청 작기 때문에, 해당 문제는 완전 탐색으로 풀 수 있다. 여기서 문제가 되는 것은 메뉴 조합이 구성되는 방식이 "AB", "ABC" , "CDE", "A" 이렇게 정수가 아닌 문자열이기 때문에, 인덱스로 문자열을 사용하기 위해 자료구조 Map을 사용해야 한다. orders에서..
자원 레코드(resource record, RR) DNS 서버들은 호스트 이름을 IP 주소로 매핑하기 위해 자원 레코드를 저장한다. 각 DNS는 하나 이상의 자원 레코드를 가진 메시지로 응답 자원 레코드의 구성 4개의 튜플(tuple)로 구성 → {Name, Value, Type, TTL} TTL(time to live) : 자원 레코드의 생존 기간 자원이 캐시에서 제거되는 시간을 결정 Type의 종류 Name과 Value의 의미는 Type에 따른다. 여기서의 서술은 TTL을 무시한 채 작성 Type = A인 경우 Type A 레코드는 표준 호스트 이름의 IP 이름의 IP 주소 매핑을 제공 Name : 호스트 이름 Value : 호스트 이름에 대한 IP 주소 Type A 레코드 예시 → ( relay1...
DNS: 인터넷의 디렉터리 서비스 호스트 이름(host name) 호스트의 식별자 중 하나 호스트는 IP 주소(IP address)로도 식별됨 예시 : www.facebook.com, www.google.com … 사용 이유(장점) 호스트 이름은 기억하기 쉬워 사용자가 편리함 단점 호스트 이름은 인터넷에서의 호스트 위치에 대한 정보를 거의 제공하지 않는다. 호스트 이름은 라우터가 처리하는데 어려움이 있다. ← 가변 길이의 알파뉴메릭 문자로 구성되어 있기 때문 DNS가 제공하는 서비스 인터넷 디렉터리 서비스(DNS)가 필요한 이유 라우터와 사람의 차이로 인해 호스트 이름을 IP 주소로 변환해 주는 서비스 필요 → 인터넷 DNS(domain name system)의 주요 임무 사람은 기억하기 쉬운 호스트 이..
더보기 메일 메시지 포맷 전자메일을 보낼 때 주변 정보가 포함된 헤더가 메시지 몸체 앞에 오게 된다. 주변 정보는 일련의 헤더 라인에 포함되는데 RFC 5322에 정의되어 있다. RFC 5322는 메일 헤더 라인에 대한 정확한 포맷과 그 의미에 대해 해석을 기술 헤더라인과 메시지 몸체는 빈 줄(CRLF)로 분리됨 각 헤더 라인은 키워드, 콜론 값의 순서로 구성되고, 읽을 수 있는 텍스트를 포함 키워드 중엔 반드시 필요한 것과 선택 사항이 있다. 반드시 필요한 키워드 → From: 헤더 라인과 To: 헤더 라인 선택 사항 키워드 → Subject: 헤더 등 이러한 명령어는 SMTP 명령과는 다르다. From To과 같은 공통 단어가 있긴 함 메일 메시지 포맷의 From To→ 메일 메시지 자체의 일부 SM..
인터넷 전자메일 오늘날 인터넷의 가장 중요하고 널리 사용되는 애플리케이션 중 하나 전자메일은 비동기적인 통신 매체 → 상대방 스케줄과 상관없이 자신이 편할 때 메시지를 보내거나 읽는다. 전자 메일은 분배가 쉽고, 빠르고, 저렴함 전자메일은 HTML 포맷 텍스트, 첨부 메시지, 하이퍼링크, 내장된 사진 등의 특성을 지님 인터넷 메일 시스템의 상위 레벨 개념 3개의 주요 요소가 존재 → 사용자 에이전트, 메일 서버, SMTP 사용자 에이전트(user agent) 사용자가 메시지의 응답, 읽기, 전달, 저장, 구성을 가능하게 함 대표적인 사용자 에이전트의 예시 마이크로소프트 아웃룩, 애플 메일, G-Mail 등 사용자가 메시지를 쓰면, 메시지를 메일 서버로 보냄 → 메시지는 메일 서버의 출력 메시지 큐에 들어..
HTTP/2 HTTP/1.1 이후 새로운 첫 번째 HTTP 버전 HTTP/2 가 발표된 이후 2020년 기준 주요 웹사이트 천만 개가 해당 버전을 사용 구글 크롬, 인터넷 익스플로러, 사파리, 오페라, 파이오폭스 등이 지원 HTTP/2는 클라이언트와 서버 간의 데이터 포맷 방법과 전송 방법을 변경 상태 코드, URL, 헤더 필드 등 HTTP 메서드 자체를 변경하진 않음 HTTP/2의 주요 목표 하나의 TCP 연결상에서 멀티플렉싱 요청/응답 지연 시간을 줄이는 것 요청 우선순위화, 서버 푸시, HTTP 헤더 필드의 효율적인 압축 기능 등을 제공 하나의 웹 페이지를 전송하기 위해 병렬 TCP의 수를 줄이는 것 서버를 열고 유지하는데 필요한 소켓을 줄일 수 있다. TCP 혼잡 제어를 제어할 수 있다. But,..