CiRe
'CS' 카테고리의 글 목록

CS

CS/데이터베이스

데이터베이스 모델링과 논리적 설계

본 글은 https://www.slideshare.net/hoyoung2jung/ss-40851049 및 https://medium.com/omarelgabrys-blog/database-modeling-logical-design-part-6-af029e93cc1f 을 참고하며 작성하며 작성되었습니다. 이전 글에서 데이터베이스의 개념적 설계를 위해 ERD(Entity-Relationship Diagram)를 작성하였습니다. ERD를 작성하면서, 개체간에 존재하는 관계를 분석했습니다. 이러한 관계를 데이터베이스 구축에 사용하기 위해서는, 먼저 관계에 대한 해석이 필요합니다. 관계의 해석은 논리적 설계 과정에서 이루어지며, 이를 통해 테이블 생성, 컬럼 정의 등의 작업이 이루어집니다. 논리적 설계 논리적 설..

CS/데이터베이스

데이터베이스 모델링과 ERD

본 글은 https://www.slideshare.net/hoyoung2jung/ss-40851049와 https://medium.com/omarelgabrys-blog/database-modeling-entity-relationship-diagram-part-5-352c5a8859e5 을 참고하며 작성되었습니다. 본 글에서는 논리적 설계 단계에서 작성되는 ERD (Entity - Relationship Diagram)에 대해서 학습하려 합니다. ERD(Entity-Relationship Diagram)는 데이터베이스 설계 과정에서 사용되는 개념적 도구로, 데이터베이스에 저장되어야 하는 데이터와 그들 사이의 관계를 시각적으로 표현합니다. ERD는 개체(Entity), 속성(Attribute), 그리고 관..

CS/데이터베이스

데이터베이스 모델링

본 글은 https://aws.amazon.com/ko/what-is/data-modeling/ 와https://www.slideshare.net/hoyoung2jung/ss-40851049 을 참조하여 작성되었습니다. 데이터 모델링이란 현실세계에서 응용에 필요한 데이터를 잘 고르고 다듬어서 DBMS에 저장하기위한 프로세스입니다. 데이터 모델링이 중요한 이유 데이터 모델링은 데이터를 이해하고 이 데이터를 저장 및 관리하기 위한 올바른 기술 선택을 할 수 있는 기회를 제공합니다. 건축가가 집을 짓기 전에 청사진을 설계하는 것과 같은 방식으로, 비즈니스 이해관계자는 조직을 위한 데이터베이스 솔루션을 엔지니어링하기 전에 데이터 모델을 설계합니다. 데이터 모델링 과정 요구사항 분석 → 개념적 설계 → 논리적 설..

CS/네트워크

[코딩 연습] 자바로 HTML 구문 분석하는 코드 구현해보기

본 글은 공부를 위해 작성된 글입니다. 설명이 많이 부족하거나 미흡할 수 있습니다. 학습 대상 XML DOM 정규표현식 Tokenizer, Lexer, Parser XML XML은 EXtensible Markup Language의 약자로, HTML과 똑같이 문자 기반의 마크업 언어입니다. 다만 HTML과는 만들어진 목적이 다릅니다. HTML은 데이터의 구조를 보여주는데 초점이 맞춰져 있다면, XML은 데이터를 저장하고 전달하기 위해 디자인 된 언어입니다. 또한 XML 태그는 HTML 태그처럼 미리 정의되어 있지 않고, 사용자가 직접 정의할 수 있습니다. Markup Language란? Markup Language는 태그 등을 이용하여 문서나 데이터의 구조를 명기하는 언어의 한 가지입니다. 일반적으로 데이..

CS/운영체제

자바로 간단한 CPU 구현하기

자바로 CPU 구현하기 들어가며 🚩 목적 CPU 명령어 Fetch, Decode, Execute을 간단하게 구현함으로써 CPU가 어떻게 동작하는지에 대해 공부한다. 🛻 알아야하는 지식 2진수 표기법과 비트 연산 Bit Shift Bit Masking 💡 프로그램 구현 사항 CPU 구현 사항 기본 처리 단위를 16비트를 기준으로 한다. ALU는 두 레지스터에 저장된 값 A, B를 계산해서 목적 레지스터에 저장한다. ALU는 +, -, |, & 연산자만을 이용한다. 메모리 주소를 정수를 입력으로 받으면, 기계어로 변환하여 사용한다. 구현할 Class Terminal : 입력을 받아 instruction 을 메모리에 저장하기 위한 Class CPU : Decode 와 ALU 를 포함하는 Class Decode..

CS/네트워크

DNS(Domain Name System)

개요 우리는 IP 주소를 통해 컴퓨터간의 통신을 할 수 있게 되었다. IP 주소만 알고있다면, 내가 원하는 서버에 접속하고 통신할 수 있다. 하지만 IP 주소는 알다시피 숫자로만 구성되어 있고, 이를 외우고 다니는 것은 굉장히 비효율적인 일 일것이다. 이러한 비효율적인 일을 효율적으로 만드는 방법은 숫자로 구성된 IP 를 문자로 바꾸어서 사용하는, 즉 IP 에 이름을 부여하는 방법이 효율적일 것이다. DNS(Domain Name System)를 사용하여 위와 같은 일을 할 수 있다. DNS를 사용하지 않고 IP에 이름 부여하기 DNS 를 사용하여 IP 에 부여된 이름을 사용하기 전에, 우리가 먼저 IP 에 이름을 붙이는 방법을 알아보자 (그냥 공부용도로) 모든 OS에는 hosts라는 파일이 존재한다. h..

CS/네트워크

웹 서버에 대해 알아가는 과정(2/2)

개요 전의 글을 통해 IP 주소를 사용하여 다른 컴퓨터와 통신할 수 있다는 것을 알았다. 하지만 그건 우리 컴퓨터를 클라이언트로 사용하여 통신하는 방법이었다. (나의 컴퓨터가 통신을 요청하고 응답을 받는것이기 때문!) 외부의 컴퓨터는 나의 public IP 주소(공유기 주소)는 알 수 있지만, 나의 private IP 주소는 알 수 없다. (내가 따로 알려주지 않는 이상 말이다.) 나의 최종 목표는 내 컴퓨터가 서버로 동작하는 것을 원하기 때문에, 상대방이 나의 private IP주소를 몰라도 나와 통신할 수 있는, 나의 컴퓨터가 서버로써 통신하는 방법에 대해 알아볼 것이다. Port Forwarding 방법은 간단하다. 나의 private IP주소를 몰라도 나의 컴퓨터와 통신할 수 있도록 하면 될 것이..

CS/네트워크

웹 서버에 대해 알아가는 과정 (1/2)

개요 나는 백엔드 개발자가 되기 위해 네트워크를 공부하기 시작하였고, 네트워크 동작의 전체적인 흐름을 파악하기위해서, 내 컴퓨터에 서버를 설치하려 한다. 서버를 설치함으로써 세계의 모든 사람들이 내 컴퓨터에 접속하고, 나의 서비스를 제공받을 수 있을 것이다! 수 많은 서비스들은 네트워크를 통해 제공되고 있다. 서비스는 서버에서 제공되며, 서버는 컴퓨터에서 동작한다. 나는 서버를 내 컴퓨터에 설치함으로써, 다음 목차의 내용을 학습할 것이다. 목차 Router 또는 공유기 Public VS private IP Adress Network Address Translation Port forwarding Dynamic VS Static IP address Dynamic DNS 공유기 또는 Router 우리의 컴퓨..

CS/운영체제

쓰레드와 프로세스

쓰레드와 프로세스 쓰레드 하나의 프로세스는 하나 이상의 쓰레드를 가지게 되고, 실제 작업을 단위는 쓰레드 프로세스 실행 중인 프로그램 프로그램이 실행되면 OS로부터 메모리를 할당받아 프로세스 상태가 됨 멀티쓰레드 여러 쓰레드가 동시에 수행되는 프로그래밍, 여러 작업이 동시에 실행되는 효과 쓰레드는 각각 자신만의 작업 공간을 가짐 (context) 각 쓰레드 사이에서 공유하는 자원이 있을 수 있음 (자바에서는 static instance) 여러 thread가 자원을 공유하여 작업이 수행되는 경우 서로 자원을 차지하려는 race condition이 발생할 수 있음 이렇게 여러 thread가 공유하는 자원중 경쟁이 발생하는 부분을 critical section 이라고 함 critical section에 대한 ..