본문 바로가기

CS

(21)
ALU와 제어장치 CPU는 메모리에 저장된 명령어를 읽어 들이고, 해석하고, 실행하는 장치입니다. CPU 내부에는 계산을 담당하는 ALU, 명령어를 읽어 들이고 해석하는 제어장치, 작은 임시 저장 장치인 레지스터라는 구성 요소가 있습니다. 이번글에서는 ALU와 제어장치에 대해서 구체적으로 다뤄보겠습니다. ALU 이 그림은 ALU가 어떤 정보를 받아들이고 내보내는지를 표현한 그림입니다. 계산을 할 때 생각해봅시다. 1+2 을 연산하고 싶을때 1,2 피연산자가 필요하고 더하기라는 수행할 연산이 필요합니다. ALU는 '계산하는 부품'입니다. 위 연산을 기억하며 그림을 보고 생각해 봅시다. ALU는 레지스터를 통해 피연산자를 받아들입니다. ( 1,2 를 받아들이는 것과 같습니다.) 제어장치로부터 수행할 연산을 알려주는 제어 신호..
명령어의 구조 누군가에게 명령할 때 어떻게 우리는 말할까요? "학생들, 다음주까지 과제를 제출해주세요" "멍멍아, 이거 물어와!" 와 같이 말합니다. 연산 코드와 오퍼랜드 "멍멍아, 이거 물어와" 명령을 내릴때 다음과 같은 구조를 가지고 있습니다. 무엇을 대상으로, 어떤 작동을 수행하라의 구조로 되어있습니다. 컴퓨터 속 명령어도 이와 같습니다. 더해라(작동) 100과 120을 빼라(작동) 메모리 32번지 안의 값과 메모리 33번지 안의 값 빨간색 글씨는 명령의 '작동' -> '연산' 을 담고 있으며 나머지 필드는 '연산에 사용할 데이터' or '연산에 사용할 데이터가 저장된 위치' 를 담고 있습니다. 명령어 = 연선코드 + 오퍼랜드 연사코드(operation code ) : '더해라', '빼라' 와 같은 명령어가 수행..
쿠키(Cookie) 세션(Session) 쿠키, 세션의 개념과 차이를 설명해보세요 쿠키와 세션은 HTTP의 특성인 비연결성과 무상태의 특징으로 인한 약점을 보완하기 위해 쿠키와 세션을 사용합니다. 만약 쿠키와 세션을 사용하지 않는다면 물건을 구입하려 할 때 계속 로그인을 해야하는 문제가 발생할 수 있습니다. 쿠키와 세션이 있다면 로그인한 뒤 사용자에 대한 인증을 유지하게 됩니다. 쿠키는 클라이언트(브라우저)에 저장되어 키와 값이 들어있는 작은 데이터 파일입니다. 사용자 인증에 대한 유효시간을 설정할 수 있으며 브라우저가 종료되어도 인증이 유지된다는 특징이 있습니다. 쿠키의 장점으로는 기존 로그인 정보가 사용되기 때문에 인증을 위한 추가적인 데이터 저장이 필요합니다. 또한 서버가 아닌 클라이언트에 위치하기 때문에 속도가 세션에 비해서 빠릅니다. ..
CORS(Cross Origin Resource Sharing) CORS(Cross Origin Resource Sharing)에 대해 설명해주세요. CORS란 교차 출처 리소스 공유로 추가 HTTP 헤더를 사용하여, 한 Origin에서 실행 중인 웹 어플리케이션이 다른 Origin의 선택한 자원에 접근할 수 있는 권한을 부여하도록 브라우저에서 알려주는 체제입니다. 웹어플리케이션은 리소스가 자신의 Origin과 다를 때 COR HTTP 요청을 실행합니다. CORS는 HTTP요청을 보낼때 요청 헤더에 Origin 담아 보냅니다. 서버는 응답해더에 Access-Control-Allow-Origin을 담아 클라이언트로 전달합니다. 이때 Origin을 비교하는 로직은 브라우저에 구현이 되어있기 때문에 서버의 응답은 CORS정책 위반 여부에 관여하지 않습니다. 클라이언트에서는..
NoSQL과 RDBMS의 특징과 장단점 NoSQL과 RDBMS의 특징과 차이점에 대해서 장, 단점을 들어 설명해주세요. RDBMS는 관계형 데이터베이스 관리 시스템으로 관계모델, 스키마, ACID 특성을 가지고 있습니다. 테이블 형식으로 저장하며 테이블은 관계를 나타내고 있습니다. 데이터의 구조는 미리 정의된 스키마에 따라야 하며 트랜젝션의 원자성, 일관성, 고립성, 지속성을 보장합니다. 장점으로는 ACID 특성으로 데이터의 일관성 복잡한 쿼리를 다루는데 효과적입니다. 단점으로는 확장이 어렵기 때문에 성능 저하가 발생할 수 있습니다. NoSQL은 비관계형 데이터베이스로 데이터가 동적으로 정의되기 때문에 스키마가 느슨합니다. 비정형 데이터로 다양한 형식의 데이터를 저장할 수 있으며 대규모 데이터를 분산 저장하고 처리할 수 있습니다. 장점으로는 ..
기본키(Primary Key), 외래키(Foreign Key) Primary Key, Foreign Key에 대해 설명해주세요. 기본키(Primary Key)는 관계형 데이터베이스 관리 시스템 테이블에서 모든 행을 고유하게 식별하는 필드 또는 필드의 집합입니다. 데이터베이스 테이블 내에서 각 레코드는 오직 하나의 값만 존재해야하고 기본키를 구성하는 어떤 속성도 널 값을 가질 수 없는 개체 무결성 제약조건이 있습니다. 따라서 기록을 삭제하거나 업데이트 하는 경우 데이터 무결성을 확인하기 위해 지정한 조치가 수행됩니다. 기본키는 식별자 역할을 하며 빠른 검색을 가능하게 하며 상위 테이블에 대한 삭제 또는 업데이트 작업을 거부하려면 제한 작업이 수행됩니다. 외래키(Foreign Key)는 두 테이블 간의 관계를 생성하는 열입니다. 외래키는 참조 무결성 제약조건을 가지고 ..
HTTP Method HTTP 메서드에 대해 설명해주세요. HTTP 메소드는 클라이언트와 서버 사이에 이루어지는 요청과 응답 데이터를 전송하는 방식으로 서버에 주어진 리소스에 수행하길 원하는 행동과 서버가 수행해야 할 동작을 지정하는 요청을 보내는 방식입니다. 주요 메소드로는 GET, POST, PUT, PATCH 메소드가 있습니다. GET 메소드는 리소스를 조회할때 사용하며 POST는 요청 데이터를 처리하고 등록하는데 주로 사용되는 메소드로 메시지 바디(body)를 통해 서버로 요청 데이터 전달합니다. PUT메소드는 리소스를 대체하며 해당 리소스가 없으면 생성하는 메소드입니다. 일부의 리소스를 변경을 할때 PATCH메소드를 사용합니다. DELETE 메소드는 리소스를 제거할때 사용하며 GET, PUT, DELETE는 메소드를..
N+1문제의 발생이유와 해결방법 N+1 문제의 발생 이유와 해결 방법에 대해 설명해주실 수 있을까요? 해결 방법은 3가지 이상 말씀해주시면 좋습니다. N+1 문제란? N+1 문제는 데이터베이스 쿼리를 실행할 때 발생할 수 있는 성능 문제 중 하나로, 쿼리 실행 시 추가적인 N개의 쿼리가 발생하여 성능저하를 초래할 수 있습니다. 이는 주로 ORM(Object-Relation Mapping)를 사용하는 경우 발생하며, 한 번의 부모 쿼리로 N개의 자식 쿼리를 가져오는 방식에서 문제가 발생합니다. Lazy Loading(지연 로딩) : 연관된 데이터가 실제로 필요할때만 로드되도록 설계된 방식이지만, 이를 잘못 사용할 경우 여러번의 쿼리가 발생하여 N+1 문제가 발생할 수 있습니다. Eager Loading(즉시 로딩) : Eager 전략으로..