CS
-
4장 - 부호화와 발전CS/데이터 중심 애플리케이션 설계 요약 2022. 11. 18. 00:01
변화하는 애플리케이션 애플리케이션은 시간이 지나 사용자 요구사항에 따라 변경하거나 비즈니스 환경에 따라 변합니다. 따라서 변경 사항을 쉽게 적용할 수 있게 시스템을 구축해야 합니다. 대부분 기능을 변경하기 위해서는 저장하는 데이터도 변경해야 합니다. 새로운 필드나 레코드 유형을 저장해야 하거나 기존 데이터를 새로운 방법으로 제공해야 할 수 있습니다. 서버에서는 한 번에 몇 개의 노드에 새 버전을 배포하고 새로운 버전이 원활하게 실행되는지 확인한 후 모든 노드에서 실행되게 하는 순회식 업그레이드 방식을 사용합니다. 새로운 코드가 예전 코드가 기록한 데이터를 읽을 수 있는 건 어렵지 않습니다. 하지만 예전 코드는 새로운 코드가 기록한 데이터를 읽는 건 어렵습니다. 이번장에서는 데이터 부호화를 위한 다양한 형..
-
3장 - 저장소와 검색CS/데이터 중심 애플리케이션 설계 요약 2022. 11. 17. 00:01
DB의 내부 상황 항상 주변을 단정히 정돈하는 사람은 단지 찾기를 너무 귀찮아하는 사람이다. DB는 대표적으로 두 가지 작업을 수행합니다. 1. 데이터 저장 2. 데이터 조회 2장에서 여러 데이터 모델들을 알아보았고 질의 언어를 통해 조회하는 것도 알아보았습니다. 데이터베이스가 데이터를 어떻게 저장하고 어떻게 조회할까요? 데이터베이스가 저장과 검색을 내부적으로 처리할 때 개발자가 주의해야 하는 이유는 무엇일까요? DB를 강력하게 만드는 데이터 구조 많은 데이터베이스는 내부적으로 추가 전용 데이터 파일인 로그를 사용합니다. 사람이 읽을 수 있는 형식일 필요는 없으며 특정 읽기 전용 프로그램만 읽을 수 있는 바이너리여도 상관없습니다. 색인 어떤 부가적인 메타데이터를 유지하며 이정표의 역할을 하여 원하는 데이..
-
2장 - 데이터 모델과 질의 언어CS/데이터 중심 애플리케이션 설계 요약 2022. 11. 16. 00:01
데이터 모델 데이터 모델은 아마도 소프트웨어 개발에서 가장 중요한 부분일 것입니다. 데이터 모델을 통해 해결하려는 문제를 어떻게 생각해야 하는지에 대해 큰 영향을 미치기 때문입니다. 대부분의 애플리케이션은 하나의 데이터 모델을 다른 데이터 모델 위에 계층을 두어 만듭니다. 각 계층의 핵심적인 문제는 다음 하위 계층 관점에서 데이터 모델을 표현하는 방법입니다. 예를 들어 각 계층별로 데이터를 표현하는 방법입니다. - 애플리케이션 개발자는 현실을 보고 객체나 데이터 구조를 다루는 API를 모델링합니다. - 데이터 구조를 저장할 때는 JSON, XML, RDB, NoSQL 등으로 표현합니다. - DB 소프트웨어를 개발자는 JSON, XML, RDB, NoSQL 데이터를 메모리나 디스크 또는 네트워크 상의 바이..
-
반효경[운영체제] - 운영체제 소개CS/운영체제 2022. 11. 15. 00:01
https://core.ewha.ac.kr/publicview/C0101020140307151724641842?vmode=f 반효경 [운영체제] 2. Introduction to Operating Systems 설명이 없습니다. core.ewha.ac.kr 이화여대의 반효경 님의 운영체제 강의 중 "반효경 [운영체제] 2. Introduction to Operating Systems"을 요약한 내용입니다. 만약 영상을 보고싶으시다면 내용의 위의 영상을 참고해주세요! 운영체제란 무엇인가? 컴퓨터 하드웨어 바로 위에 설치되어 사용자 및 다른 모든 소프트웨어와 하드웨어를 연결하는 소프트웨어 계층 보통 운영체제라고 보통 커널을 뜻하며 항상 메모리에 상주합니다. 운영체제의 목적 컴퓨터 하드웨어(CPU,RAM 등)..
-
1장 - 신뢰할 수 있고 확장 가능하며 유지보수하기 쉬운 애플리케이션CS/데이터 중심 애플리케이션 설계 요약 2022. 11. 6. 00:01
데이터 중심적인 애플리케이션 오늘날 많은 애플리케이션은 계산 중심과는 다르게 데이터 중심적입니다. 즉, CPU의 성능은 애플리케이션에 크게 문제가 되지 않으나 데이터의 양, 데이터의 복잡도, 데이터의 변화 속도가 문제가 될 수 있습니다. 예를 들어 많은 애플리케이션은 다음을 필요로 합니다. - 데이터베이스 - 읽기 속도 향상을 위해 값비싼 수행 결과를 기억(캐시) - 사용자가 키워드로 데이터를 검색 또는 다양한 방법으로 필터링할 수 있도록 제공 (검색 색인) - 비동기 처리를 위해 다른 프로세스로 메시지 보내기(스트림 처리) - 주기적으로 대량의 누적된 데이터를 분석(일괄 처리 = batch processing) 너무 뻔한 말처럼 들릴 수 있지만 현실의 애플리케이션은 요구사항이 다양하기 때문에 다양한 데..
-
가상메모리CS/운영체제 2022. 8. 26. 00:01
메모리란? 메모리란 프로그램과 프로그램 수행에 필요한 데이터 및 코드를 저장하는 장치입니다. 가상 메모리의 등장 배경 만약 컴퓨터에서 가지고 있는 RAM의 용량보다 애플리케이션이 실행되는데 필요한 RAM의 용량이 더 크면 어떻게 될까요? 프로그램을 절대 실행할 수 없게 됩니다. 따라서 가상 메모리 기법은 애플리케이션의 일부분만 메모리에 올려 실행하도록 합니다. 실제로 프로세스 전체가 물리적 메모리에 있는 것처럼 수행되지만 사실은 일부만 메모리에 존재하고 나머지는 디스크에 있습니다. 즉, 가상 메모리는 물리적 메모리 크기의 한계를 극복하기 나온 기술입니다. Page Fault(페이지 부재) 만약 CPU에서 접근하려는 페이지가 메모리에 없는 경우입니다. 페이지 테이블의 valid bit가 0이라면 CPU에 ..
-
세션 하이재킹과 TCP Sequence NumberCS/네트워크 2022. 7. 28. 00:01
세션 하이재킹이란? 세션은 클라이언트와 서버 두 대의 컴퓨터 간의 활성화된 상태를 말합니다. 이때 세션 하이재킹은 로그인된 상태를 가로채는 것을 말합니다. TCP 세션 하이재킹은 TCP의 고유한 취약점을 이용하여 정상적인 접속을 빼앗는 방식입니다. TCP는 클라이언트와 서버 간 통신을 할 때 패킷의 연속성을 보장하기 위해 각각 시퀀스 넘버를 사용합니다. 이 시퀀스 넘버가 잘못되면 이를 바로잡기 위한 작업을 하는데 TCP 세션 하이재킹은 서버와 클라이언트에 각각 잘못된 시퀀스 넘버를 위조하여 연결된 세션에 혼란을 주고 자신이 끼어들어가는 방식입니다. TCP 패킷 TCP 프로토콜은 신뢰형 프로토콜로 다음과 같은 기능을 제공합니다. 1. 데이터 양을 조절하는 흐름 제어 2. 데이터 유실에 대처하는 오류 제어 ..
-
ICMP 프로토콜이란?CS/네트워크 2022. 7. 22. 00:01
ICMP 프로토콜이란? ICMP는 Internet Control Message Protocol (인터넷 제어 메시지 프로토콜)입니다. 네트워크 컴퓨터 위에서 돌아가는 운영체제에서 오류 메시지를 전송받는데 주로 쓰입니다. 프로토콜 구조의 Type과 Code를 통해 오류 메시지를 전송받습니다. 보통 상대방과 통신이 되는지 안되는지 확인하는 데 사용됩니다. 통신 환경의 문제점에 대한 피드백을 제공하지만 IP가 신뢰 가능하도록 만들지는 않습니다. 네트워크 계층인 3 계층에 속하며 IP 프로토콜과 같이 사용됩니다. ICMP 프로토콜의 구조 Type 대분류의 개념으로 30개의 종류가 있습니다. 가장 많이 쓰이는 타입은 다음과 같습니다. 0번 : Echo Reply (응답) 3번 : Destinatnion Unrea..