본문 바로가기
728x90
728x90

Study/CS19

[CS] DB - 트랜잭션과 무결성 트랜잭션은 하나의 논리적 기능을 수행하기 위한 작업의 단위를 뜻한다. 즉, 여러개의 쿼리를 하나로 묶는 단위를 말한다. 트랜잭션의 ACID 특성이란? 원자성(Atomicity) 트랜잭션 중간에 어더한 문제가 새기면 트랜잭션에 해당하는 어떠한 작업내용도 수행되어서는 안되고, 아무런 문제가 없을 경우에는 모든 작업이 수행되어야 한다. 일관성(Consistency) 트랜잭션이 완료된 다음의 상태에서도 트랜잭션이 일어나기 전의 상황과 동일하게 데이터의 일관성을 보장해야 한다. 고립성(Isolation) 각각의 트랜잭션은 서로 간섭없이 독립적으로 수행되어야한다 지속성(Durability) 트랜잭션이 정상적으로 종료된 다음에는 영구적으로 데이터베이스에 작업의 결과가 저장되어야 한다. 무결성 무결성이란 데이터의 정확.. 2023. 2. 18.
[CS] DB - ERD와 정규화 ERD는 데이터 베이스를 구축할 때 가장 기초적인 뼈대 역할을 하며, 릴레이션간의 관계들을 정의한다. ERD의 중요성 시스템의 요구사항을 기반으로 작성되고, 이 ERD를 기반으로 데이터 베이스를 구축한다. DB 구축 이후에도 디버깅 또는 비즈니스 프로세스 재설계가 필요한 경우 설계도 역할을 하기도 한다. 관계형 데이터를 구성하는데는 유용하나, 비정형 데이터를 충분히 표현할 수 없다. 정규화 과정 정규화 과정은 릴레이션 간의 잘못된 종속관계로 인해 데이터베이스 이상현상이 일어나서 이를 해결하거나, 저장 공간을 효율적으로 사용하기 위해 릴레이션을 여러개로 분리하는 과정이다. 여기서 말하는 데이터 이상 현상이란, 회원이 한 개의 등급을 가져야 하는데 세개의 등급을 갖거나, 데이터 삽입 시, 하나의 필드값이 N.. 2023. 2. 18.
[CS] DB - 데이터베이스의 기본 데이터 베이스는 일정한 규칙또는 규약을 통해 구조화 되어 저장되는 데이터의 모음이다. 해당 데이터베이스를 제어, 관리하는 통합 시스템을 DBMS라고한다. DBMS마다 query를 통해 삽입, 삭제, 수정, 조회 등을 수행할 수 있다. 또한, 데이터베이스는 실시간 접근과 동시 공유가 가능하다. 엔터티 엔터티는 사람,장소, 물건, 사건, 개념 등 여러개의 속성을 지닌 명사를 의미한다. 물론 현실세계에 있는 모든 개념을 속성으로 만드는 것이 아니라, 추상화 과정을 통해, 서비스의 요구사항에 맞춰 속성이 정해진다. 속성 속성은 릴레이션에서 관리하는 구체적이고 고유한 이름을 갖는 정보이다. 약한엔터티 강한엔터티 A가 혼자서는 존재하지 못하고, B의 존재 여부에 따라 종속적이라면 A는 약한 엔터티이고, B는 강한 .. 2023. 2. 18.
[CS] OS - 메모리 메모리 계층 메모리계층은 레지스터, 캐시, 메모리, 저장장치로 구성되어 있다. 각각의 특징은 다음과 같다. 레지스터 : CPU안의 작은 메모리, 휘발성, 속도 가장 빠름, 용량 가장 적음 캐시 : L1, L2 캐시를 지칭한다. 휘발성, 속도 빠름, 용량 적음 주기억장치 : RAM을 가리킨다. 휘발성, 속도 보통, 용량 보통 보조기억장치 : HDD, SSD를 일컬으며, 비휘발성, 속도 낮음, 용량 큼 계층의 위로올라갈수록 가격은 비싸지고, 속도는 빨라지고, 용량은 적어지는 특징을 갖고 있다. 이러한 계층이 존재하는 이유는 경제성과 캐시 때문이다. 캐시 캐시는 데이터를 미리 복사해 놓는 임시 저장소이다. 빠른 장치와 느린 장치에서 속도 차이에 따른 병목 현상을 줄이기 위한 메모리를 말한다. 예로, 메모리와 .. 2023. 1. 31.
[CS] OS - 운영체제와 컴퓨터 운영체제 운영체제란 컴퓨터 시스템을 효율적으로 관리하고, 사용자가 컴퓨터를 쉽게 다룰수 있게 해주는 인터페이스이다. 운영체제의 역할 CPU 스케줄링과 프로세스 관리 CPU소유권 할당과, 프록세스의 생성과 삭제, 자원 할당 및 반환을 관리한다. 메모리 관리 한정된 메모리를 어떤 프로세스에 얼만큼 할당해야 하는지 관리한다. 디스크 파일관리 디스크 파일을 어떠한 방법으로 보관할지 관리한다. I/O 디바이스 관리 I/O 디바이스(마우스, 키보드)와 컴퓨터 간에 데이터를 주고받는 것을 관리한다. 운영체제의 구조 운영체제의 구조는 아래와 같다. 운영체제를 크게 인터페이스(GUI)와 커널 2개의 부분으로 나눌 수 있다. 인터페이스 커널에 사용자 명령어를 전달하고, 사용자에게 실행결과를 알려주는 역할을 한다. ex) .. 2023. 1. 30.
[CS] 네트워크 - HTTP HTTP HTTP는 애플리케이션 계층에서 웹서비스 통신에 사용된다. 1.0 부터 시작하여 발전을 거듭해 현재는 HTTP/3에 이르렀다. HTTP/1.0 1.0은 기본적으로 한 연결당 하나의 요청을 처리하도록 설계되었다. 즉, 서버로 부터 하나의 파일을 가져올 때 마다, TCP의 3-way-handshake를 계속 열어아한다는 뜻이다. 이로인해, RTT가 증가하는 문제가 발생했다. RTT Round Trip Time의 약자로, 패킷이 목적지에 도달하고 나서, 다시 출발지로 돌아오기 까지 걸리는 왕복 시간. RTT 해결책 이미지 스플리팅 작은 아이콘들을 각각의 이미지 파일로 만들게 되면, 과부하가 걸리기 때문에 사용하는 방식이다. 위의 이미지 처럼 아이콘들을 하나하나 분리한 파일로 사용하는 것이 아니라, 하.. 2023. 1. 24.
[CS] 네트워크 - IP 주소 IP 주소 IP주소란 말그대로 IP가 목적지를 판단하기 위해 사용하는 '컴퓨터의 주소'를 의미한다. 당연한 소리겠지만, 중복되는 IP주소를 갖고 있는 컴퓨터가 존재한다면, 목적지를 판단하기 위한 IP주소의 역할을 제대로 수행할 수가 없을 것이다. 그렇기 때문에 번호의 중복을 피하기 위해 ICANN이라는 기관이 중심이 되어 전세계의 IP주소를 관리하고 있다. TCP/IP 계층에 대한 내용을 작성하면서 IP는 인터넷(네트워크) 계층에서 하나뿐인 중심적인 프로토콜이라 했는데, IP가 사용하는 IP주소에 대해 조금더 자세히 알아보자. ARP ARP는 인터넷계층에서 사용되는 프로토콜 중 하나로, IP의 보조적인 역할로 사용된다. 컴퓨터와 컴퓨터 간의 통신은 IP로 이뤄진다고 생각하지만, 사실은 IP주소에서 ARP.. 2023. 1. 20.
[CS] 네트워크 - 네트워크 기기 네트워크 기기의 처리범위 네트워크는 여러개의 네트워기 기기를 기반으로 구축된다. 네트워크 기기는 계층별로 처리범위를 나눌 수 있다. 상위 계층을 처리하는 기기는 하위 계층을 처리할 수 있지만, 하위계층을 처리하는 기기는 상위 계층을 처리할 수 없다. 에를 들자면, 애플리케이션 계층을 처리하는 기기는 그 밑의 모든 계층의 프로토콜을 처리할 수 있지만, 물리계층을 처리하는 기기는 다른 계층의 프로토콜을 처리할 수 없다. 스위치 스위치(Switch)란 패킷을 수신부로 보내는 역할(Switching)을 하는 기기이다. 이 때, 패킷의 어떠한 정보를 바탕으로 수신부를 판단하는지에 따라 계층이 나뉘어진다. 스위치의 종류는 L1, L2, L3, L4, L7 이 있다. OSI 7계층 모델에서 어떠한 계층에 사용되는지에.. 2023. 1. 18.
[CS] 네트워크 - TCP/IP TCP/IP 인터넷 프로토콜 스위트(Internet Protocol Suite)는 인터넷에서 컴퓨터들이 서로 정보를 주고받는 데 쓰이는 통신규약(프로토콜)의 모음이다. 인터넷 프로토콜 슈트 중 TCP와 IP가 가장 많이 쓰이기 때문에 TCP/IP 프로토콜 슈트라고도 불린다. 즉, TCP/IP란 전 세계적으로 가장 많이 사용되는 공통된 통신 프로토콜 이다. 프로토콜 데이터를 주고 받기 위해 송신측과 수신측의 컴퓨터가 미리 정해놓은 공통된 메뉴얼 TCP/IP 4계층 TCP/IP에서는 송수신과 관련된 일련의 작업을 몇개의 단계로 나눠서 수행한다. 각 단계를 계층(layer)이라고 한다. 각각의 계층들은 프로토콜의 네트워킹 범위에 따라 네개의 추상화 계층으로 구성된다. OSI 가장 널리 사용되는 네트워크 모델 .. 2023. 1. 18.
[CS] 네트워크 - 네트워크의 기초 네트워크란 네트워크란 노드와 링크가 서로 연결되어, 리소스를 공유하는 집합을 의마한다. 노드란 서버, 라우터, 스위치 등 네트워크 장치를 의미한다. 링크 유선 또는 무선을 의미한다. 좋은 네트워크란? 네트워크를 구축 할때는 좋은 네트워크로 만드는 것이 중요한데, 여기서 말하는 좋은 네트워크란, 많은 처리량을 처리할 수 있고, 지연시간이 짧고, 장애빈도가 적으며, 좋은 보안을 갖춘 네트워크를 의미한다. 처리량(throughpur) 링크를 통해 전달되는 단위 시간당 데이터양 단위로는 bps(bits per second)를 사용한다. 트래픽, 대역폭, 에러, 하드웨어 스펙에 영향을 받는다. 지연시간(latency) 요청이 처리되는 시간을 의미한다. 어떤 메세지가 두장치 사이를 왕복하는데 걸린시간을 의미한다. .. 2023. 1. 16.
[CS] 프로그래밍 패러다임 - 함수형, 절차지향형 프로그래밍 패러다임 프로그래밍 패러다임이란? 프로그래머에게 프로그램의 관점을 갖게 해주는 개발 방법론 프로그래밍 패러다임은 크게 선언형, 명령형으로 나눠지며, 선언형은 함수형이라는 하위 집합을 갖는다. 명령형은 다시 객체지향, 절차지향으로 나눠진다. 함수형 프로그래밍 함수형 프로그래밍은 선언형 패러다임의 일종이다. 순수함수들을 블록처럼 쌓아 로직을 구현하고, 고차함수를 통해 재사용성을 높인 프로그래밍 패더라임 이다. 테스트가 용이하며, 예측이 쉽다는 특징이 있다. 절차지향형 프로그래밍 절차지향형 프로그래밍은 로직이 수행되어야 할 연속적인 계산 과정으로 이루어져 있다. 일이 진행되는 방식으로 그저 코드를 구현하기만 하면 되기 때문에 코드의 가독성이 좋고, 실행속도가 빠르다는 장점이 있다. 반면, 단점으로는.. 2023. 1. 10.
[CS] 프로그래밍 패러다임 - 객체지향 프로그래밍 객체지향 프로그래밍 객체지향 프로그래밍이란? OOP(Object-Oriented Programming)라고도 불리는 객체지향 프로그래밍은 프로그램의 상호작용을 객체들의 집합으로 표현하며, 데이터를 객체로 취급하여 객체 내부에 선언된 메서드를 활용하는 방식의 프로그래밍 패러다임이다. 설계에 많은 시간이 소요되고, 처리속도가 느리지만 유지보수성이 뛰어나고, 확장에 유연하다는 장점이 있다. 객체지향 프로그래밍의 특징 추상화 추상화란 객체의 핵심적인 개념 또는 기능을 추출하여 간추려 정의하는 것. 객체들은 공통된 클래스를 토대로 생성되는데, 이때 객체들이 어떤 공통된 특징을 가지고 있어야 한다고 정의하는 것이다. 캡슐화 객체의 속성과 메서드를 하나로 묶고 일부를 외부에 감추어 은닉하는 것을 말한다. 캡슐화가 중.. 2023. 1. 10.
[CS] 디자인 패턴 - MVC, MVP, MVVM MVC MVC 패턴 Model, View, Controller 세개의 컴포넌트로 이뤄진 디자인 패턴. 애플리케이션의 구성요소를 세가지 역할로 구분하여 개발 프로세스에서 가ㅣ깍의 구성요소에만 집중해서 개발 할 수 있다. 재사용성과 확장성이 용이하지만, 반대로 애플리케이션이 복잡해질수록 모델과 뷰의 관계가 복잡해지는 단점이 있다. Model DATA, 정보들의 가공을 책임지는 컴포넌트 비즈니스 로직을 처리한 후 모데르이 변경사항을 컨트롤러와 뷰에 전달한다. 모델은 다음과 같은 규칙을 가지고 있다. 사용자가 편집하길 원하는 모든 데이터를 가지고 있다. 뷰나 컨트롤러에 대해서 어떤 정보도 알지 말하야 한다. 변경이 일어나면, 변경 통지에 대한 처리방법을 구현해야 한다. View 사용자에게 보여지는 부분을 담당하.. 2023. 1. 9.
[CS] 디자인패턴 - 이터레이터, 노출모듈 이터레이터(Iterator) 패턴 이터레이터 패턴이란 이터레이터를 사용하여, 컬렉션의 요소들에 접근하는 디자인패턴 예제 코드 Book이라는 객체를 모아둔 컬렉션(집합체)를 순회하는 Iterator를 구현 해보려고 한다. public class Book { private String name; public Book(String name) { this.name = name; } public String getName() { return name; } } public interface Aggregate { public abstract Iterator createIterator(); } public class BookShelf implements Aggregate { private Book[] books; pr.. 2023. 1. 9.
[CS] 디자인패턴 - 프록시 패턴(프록시 서버) 프록시 패턴 프록시 패턴이란? 대상 객체(subject)에 접근하기 전, 그 접근에 대한 흐름을 가로채 대상객체 앞단의 인터페이스 역할을 하는 디자인 패턴이다. 프록시 서버 프록시 서버란 서버와 클라이언트 사이에서 클라이언트가 자신을 통해 다른 네트워크 서비스에 간접적으로 접속할 수 있게 해주는 컴퓨터 시스템이나 응용 프로그램. Nginx 프록시 서버 Nginx는 비동기 이벤트 기반의 구조와 다수의 연결을 효과적으로 처리가능한 웹서버이다. 주로 Node.js 서버 앞단의 프록시 서버로 활용된다.(리버스 프록시) 이를 통해 익명 사용자의 직접적인 서버로의 접근을 차단하고, 간접적으로 한단계를 더 거침으로써 보안성을 더 강화할 수 있다. CloudFlare 프록시 서버 CloudFlare는 전 세계적으로 분.. 2023. 1. 9.
[CS] 디자인패턴 - 옵저버 패턴 디자인 패턴이란? 프로그램을 설계할 때 발생했던 문제점들을 해결 할 수 있도록 하나의 규약형태로 만들어 놓은 것. 옵저버 패턴 옵저버 패턴이란? 주체가 어떤 객체의 상태 변화를 관찰하다가, 상태 변화가 있을 때마다 메서드 등을 통해 옵저버 목록에 잇는 옵저버들에게 변화를 알려주는 디자인 패턴이다. 위에서 말하는 주체란 객체의 상태 변화를 관찰자이며, 옵저버들이란 이객체의 상태변화에 따라 전달되는 메서드 등을 기반으로 추가 변경사항이 생기는 객체들을 의미한다. 또한 주체와 객체를 따로 두지 않고, 상태가 변경되는 객체를 기반으로 구축하기도 한다. 옵저버 패턴은 MVC 패턴에도 사용 되기도 한다. 주체라고 할 수 있는 model에서 변경사항 생겨 이를 메서드를 통해 view에게 알려주고, 이를 기반으로 co.. 2023. 1. 5.
[CS] 디자인패턴 - 전략 디자인 패턴이란? 프로그램을 설계할 때 발생했던 문제점들을 해결 할 수 있도록 하나의 규약형태로 만들어 놓은 것. 전략 패턴 전략 패턴이란? 정책 패턴이라고도 하며 객체의 행위를 바꾸고 싶은 경우 직접 수정하는 것 이아닌, 전략이라고 부르는 캡슐화한 알고리즘을 컨텍스트 안에서 바꿔주며 상호교체가 가능하게 만드는 패턴 가장 큰 예로 Passport.js 라이브러리가 있다. 예제 코드 패스포트를 구현 할 수는 없으니까 간략한 예시를 구현 해보자. 장바구니에 물건을 담고, 결제를 할 때 결제수단을 Strategy로 만드는 코드이다. Strategy package org.example.strategy; public interface PaymentStrategy { public void pay(int amount.. 2023. 1. 5.
[CS] 디자인패턴 - 팩토리(if 없애기) 디자인 패턴이란? 프로그램을 설계할 때 발생했던 문제점들을 해결 할 수 있도록 하나의 규약형태로 만들어 놓은 것. 팩토리패턴 팩토리 패턴이란? 객체를 사용하는 코드에서 객체 생성 부분을 떼어내 추상화한 패턴이다. 상위 클래스가 중요한 뼈대를 겨정하고, 하위 클래스가 객체생성에 관한 구체적인 내용을 결정하는 패턴. Java 예시코드 라떼와, 아메리카노를 만들어내는 팩토리패턴을 구현해보려 한다. 우선 추상 클래스인 Coffee를 만들어 보자. public abstract class Coffee { public abstract int getPrice(); abstract String getName(); @Override public String toString() { return String.format("%.. 2023. 1. 5.
[CS] 디자인 패턴 - 싱글톤 디자인 패턴이란? 프로그램을 설계할 때 발생했던 문제점들을 해결 할 수 있도록 하나의 규약형태로 만들어 놓은 것 싱글톤 패턴(Singletone pattern) 싱글톤 패턴이란? 하나의 클래스에 오직 하나의 인스턴스만 가지는 패턴 보통 데이터베이스 연결 모듈에 많이 사용한다. Javascript 예시 코드 class SingletoneJS { constructor() { if(!SingletoneJS.instance) { SingletoneJS.instance = this } return SingletoneJS.instance; } } node 공부할 때 많이 사용 했던 코드라 익숙하다. 생성자가 호출되고, SingletonJS.instance 가 undefined인 경우 SingletoneJS.inst.. 2023. 1. 4.
728x90
728x90