Curt Poem

프론트 엔드 공부와 지식 나눔을 위한 블로그

CS(computer Science)/CS 공부 7

컴퓨터에서 실수를 표현할 때 오차는 왜 발생하는 걸까요?

모두가 아시다시피 컴퓨터는 이진수를 사용합니다. 그리고 하나의 데이터를 저장하는 공간은 한정되어 있습니다. 이로 인해 작은 숫자를 표현할 때는 오차가 발생하게 됩니다. 이 오차가 바로 개발자 면접의 단골질문인 0.1 + 0.2 == 0.3의 결과가 false가 되는 원인이 되는 오차입니다.이진법으로 소수점 이하의 숫자 표현하기이진법에서 소수점 이하의 숫자를 표현하는 방법은 십진법과 같습니다. 십진법에서 소수점 오른쪽 자리가 10의 음의 거듭제곱을 나타내듯이 소수점 오른쪽에 있는 자리는 2의 음의 거듭제곱으로 표현됩니다. 예를 들어, 0.1(이진수)는 1/2를 의미하며, 0.01(이진수)은 1/4, 0.11(이진수)은 1/2 + 1/4로 3/4을 나타냅니다. 진법의 문제로 일부 십진법 숫자들은 이진법으로 ..

TCP/IP와 작동원리

TCP/IP TCP/IP(Transmission Control Protocol/Internet Protocol) 흔히 TCP/IP라고 알려진 인터넷 프로토콜 스위트 (Internet Protocol Suite)는 인터넷과 이와 유사한 컴퓨터 네트워크 사이에서 정보를 주고받는 데 이용되는 통신 프로토콜의 모음입니다. 프로토콜? 프로토콜은 시스템과 애플리케이션 프로그램에서 정보를 교환할 수 있도록 하는 메시지 형식 및 프로시저에 대한 규칙 세트입니다. 우리가 이용하는 앱과 기기는 정보를 전송하고 수신하기 위해 이러한 규칙을 따라야 합니다. 인터넷 서비스 대부분이 TCP/IP를 기반으로 만들졌습니다. 데이터 전송의 과정에서 TCP와 IP 각각 담당하는 작업이 있지만, HTTP, FTP, SMTP 등 TCP를 ..

OSI 7계층(OSI 7Layer) 모델 핵심 정리

OSI모델? OSI 모델이 뭐길래 네트워크 파트에서 가장 먼저 소개할까요? OSI(Open Systems Interconnection, 개방형 시스템 상호 연결)란 국제표준화기구(ISO)에서 개발한 모델로, 컴퓨터 네트워크 프로토콜 디자인과 통신을 계층으로 나눠서 설명하는 모델입니다. OSI 모델은 네트워크 통신의 복잡한 프로세스를 간단한 계층으로 분리하여 네트워크가 작동하는 방식을 설명합니다. 이런 계층적 접근 방식은 작업과 책임을 별개의 계층으로 나누어 네트워크 통신의 복잡성을 단순화하고, 초보자가 데이터 전송과 관련된 다양한 기능을 더 쉽게 파악할 수 있도록 해줍니다. 결과적으로 OSI 모델은 (실제 프로토콜은 종종 레이어 간의 경계를 모호하게 만들기 때문에)항상 실제 네트워크를 완벽하게 표현하는 ..

캐시 (Cache)

데이터나 값을 미리 복사해 놓는 임시 장소 캐시 컴퓨터 구조에서 캐시는 중앙 처리 장치(CPU)와 주기억장치(메인 메모리) 사이에 위치한 고속의 임시 데이터 저장소를 의미한다. 원래 데이터에 접근하는 시간이 오래 걸리는 경우나 자주 사용하기에 값을 다시 계산하는 시간을 절약하고 싶은 경우에 사용한다. 캐시에 데이터를 미리 복사해 놓으면 계산이나 접근 시간없이 더 빠른 속도로 데이터에 접근할 수 있다. 필요성 컴퓨터는 프로그램을 실행하거나 데이터에 접근할 때, 데이터가 임시 저장되어 있는 메인 메모리(RAM)에서 정보를 가져온다. 그러나 RAM에서 데이터에 접근하는 속도는 CPU의 처리 속도에 비해 현저히 느리다. 이러한 속도 차이 때문에 CPU는 작동하지 않고 RAM에서 데이터를 가져다 줄 때까지 기다리..

ERD(Entity Relationship Diagram, 개체 관계도)

ERD란? 데이터베이스에 저장된 객체를 개체(entity)와 관계(relationship)을 중심으로 작성한 다이어그램 엔터티가 상호 작용하는 방식을 보여주는 개념적 데이터 모델 또는 스키마 직사각형, 다이아몬드, 타원형 및 이들을 연결하는 선등 미리 약속된 기호들을 사용하여 각 엔터티의 속성과 관계를 나타낸다. 쉽게 표현하자면, 데이터베이스의 구조를 시각적으로 표현하는 도구이다. 이러한 모델 구조를 기반으로 API를 작성하면, 각 개체(DB의 테이블) 간의 관계를 효과적으로 표현하여 데이터베이스 설계를 돕는 역할을 한다. 개체(Entity, 엔터티) 엔터티는 특정 사람, 자동차, 집, 직원 등 물리적 존재를 갖는 객체, 혹은 회사, 직업, 대학 과정 등 개념적 존재를 갖는 객체를 뜻한다. 사진, 그래픽..

동기(synchronous)와 비동기(Asynchronous)(feat. 직렬과 병렬 그리고 블록과 논블록)

동기와 비동기동기한 작업이 다른 작업에 종속되어 순차적으로 실행되는 개념프로그램이 실행 될 때, 한 작업이 완료되고 나서야 다음 작업이 실행된다면 동기적인 것이다.작업(코드)의 순서가 곧 실행 순서이다.동기는 실행 순서가 보장되어 있다.비동기한 작업의 완료를 기다리지 않고, 다른 작업을 동시에 실행하도록 하는 프로그래밍 개념비동기적인 코드는 작업이 완료될 때까지 대기하지 않고, 다른 작업을 계속해서 진행한다.처리에 오랜 시간이 걸리는 작업(네트워크 통신, 파일 입출력, 웹 요청 등)이 존재할 시, 다른 작업을 실행함으로 효율적인 작업처리에 도움을 준다.작업(코드)의 순서와 실행의 순서가 다를 수 있다.동기는 실행 순서가 보장되어 있지 않다.실행 순서가 보장되어 있다?프로그래밍에서의 실행은 작업의 시작, ..

표현식 (expression)

어떤 프로그래밍 언어를 배우던 간에 표현식이라는 단어를 접해본 적이 있을 것이다.그다지 중요하지 않게 보고 넘어갈 수도 있겠지만, 표현식은 프로그래밍의 가장 기본적인 조각이다.표현식(expression)이란?일단 단어 자체의 뜻부터 파헤쳐 보자.표현이란, "눈앞에 나타나 보이는 사물의 이러저러한 모양과 상태"를 뜻한다.이 뜻을 참고하면 표현식은 모양과 상태를 나타내는 식이라고 볼 수 있다.그렇다면 식은 무엇인가? 사실 프로그래밍에서는 표현과 식은 비슷한 의미를 가진다.'식'을 광의적으로 해석한다면 '표현'이며,기본적인 구문 요소와 연산(operation)을 조합시킨 문법 단위를 가리킨다. MDN에서는 표현식을 어떤 값으로 이행하는 임의의 유효한 코드 단위로 정의하고 있다.결국 표현식이란 특정한 값을 ..