Computer Science 35

NoSQL이랑 RDBMS의 특징과 차이점

✅ DB(DataBase) 우리가 사용하는 정보는 DB에 저장하지 않고 연결이 끊어지면 휘발성으로 인해 사라진다. 그러므로 DB에 저장하여 다른 사람들과 정보를 공유하기 위해 만들어진 공간이다. 구조화된 정보 또는 데이터의 체계적인 집합을 말한다. ✅DBMS(DataBase Management System) 데이터베이스 관리 시스템으로 사용자와 데이터 사이에서 사용자의 요청에 의해 데이터의 생성 조회 등 데이터베이스를 관리해주는 역할을 한다. ✅ SQL(Structured Query Language) 관계형 데이터베이스 관리 시스템(RDBMS)의 관리를 위해 제작된 언어로써, 자료의 검색과 재조합, 스키마 생성과 수정과 같은 데이터베이스 객체 조정 관리를 위해 사용되고 있다. ✅RDBMS RDBMS에는 ..

Computer Science 2023.01.21

[앱의 종류] 네이티브 앱 & 웹 앱 & 하이브리드 앱

우리가 사용하는 어플리케이션은 사용자에게는 화면 구성이나 구동방식이 비슷하게 느껴지겠지만 다양한 방식으로 개발되고 있다. 오늘은 개발 방식에 따라 나뉘는 세 가지 앱의 종류인 네이티브 앱, 웹 앱, 하이브리드 앱의 개념과 장단점을 알아보자. ✅ 네이티브 앱(Native APP): 모바일 기기에 최적화 네이티브 앱(Native APP)이란 모바일 기기에 최적화된 네이티브 언어로 개발된 앱을 뜻한다. 국가별로 언어가 다르듯, 모바일 운영체제도 개발을 위해 각기 다른 언어를 사용해야 한다. 안드로이드 운영체제의 대표적인 네이티브 언어는 코틀린(Kotlin) 또는 자바(Java)이며 IOS는 스위프트(Swift) 또는 오브젝티브 C(Objective-C)이다. 해당 언어를 기반으로 각 모바일의 운영체제에 딱 맞..

Computer Science 2023.01.19

프로세스(Process)와 스레드(Thread)

✅ 프로세스란? 프로세스는 운영체제로부터 자원을 할당받는 작업의 단위이다. 코드의 집합으로 이루어진 프로그램이 실행되는 것이 프로세스이다. 즉 프로그램이 메모리에 올라와 운영체제로부터 CPU를 할당받고 프로그램이 실행되고 있는 상태. 일을 처리하는 일련의 과정을 뜻한다. 예를 들어 컴퓨터를 켰을 때 카카오톡과 크롬, 유튜브를 실행시키는 것은 각각의 프로세스를 실행시키는 것이다. ✅ 프로세스의 구조 위의 그림처럼 프로세스는 Code, Stack, Heap, Data 영역의 네가지 구조로 되어있다. 각각의 구조의 특징은 다음과 같다. 코드 영역(Code area): 프로그래머가 작성한 프로그램이 코드 영역에 작성된다. 데이터 영역(Data area): 코드가 실행되면서 사용한 변수나 파일들의 각종 데이터들이..

Computer Science 2023.01.18

[DATABASE] ORM이란?

✅ ORM이란 ORM은 Object Relational Mapping 즉, 객체-관계 매핑의 줄임말이다. 우리가 OOP(object Oriented Programming)에서 쓰이는 객체라는 개념을 구현한 클래스와 RDB(Relational DataBase)에서 쓰이는 데이터인 테이블을 자동으로 매핑하는 것을 의미한다. 그러나 클래스와 테이블은 기존부터 호환가능성을 두고 만들어진 것이 아니기 때문에 불일치가 발생하는데, 이를 ORM을 통해 객체 간의 관계를 바탕으로 SQL문을 자동으로 생성하여 불일치를 해결한다고 한다. 따라서 ORM을 이용하면 따로 SQL문을 짤 필요없이 객체를 통해 간접적으로 데이터베이스를 조작할 수 있게 된다. 🔎 ORM 요약 ORM은 Object Relational Mapping(..

Computer Science 2023.01.18

추상클래스(Abstract)와 인터페이스(Interface)의 공통점과 차이점

✅ 추상 클래스 - 객체들의 공통 특성들을 모아놓은 클래스 추상 클래스는 여러 자식들이 가지고 있는 공통된 속성들을 뽑아서 하나의 클래스를 만들어 놓은 것을 뜻한다. 그래서 하위 클래스에서도 extends(상속)이라는 키워드를 사용하여 이 추상 클래스를 상속받아 객체를 구체화시켜간다. 이때 상속의 의미는 ~의 한 종류 라는 의미를 가지게 된다. 추상 클래스는 클래스라는 이름에서 알 수 있듯 엄연한 객체이다. 단독으로 생성하지는 못하지만 객체이기에 생성자도 사용할 수 있다. abstract class 클래스이름 { public abstract void 메서드이름(); } 🔎 추상 클래스 정리 추상클래스는 하위 클래스들의 공통점들을 모아 추상화하여 만든 클래스 추상클래스는 다중 상속이 불가능하여 단일 상속만..

Computer Science 2023.01.15

깃(Git)과 깃허브(Github)

✅ 버전 관리(Version Control System) 깃과 깃허브의 차이점에 대해 알아보기 전에 버전 관리에 대해서 간단하게 살펴볼 필요성이 있다. 버전 관리란 시간에 따라 파일의 변경사항을 추적하고 기록하는 것이다. 버전 관리 시스템은 이전 버전으로 복구하거나 조회할 수 있는 기능을 제공한다. 버전 관리는 프로젝트의 수정이 있을 때마다 snapshot을 찍는다. 따라서 필요한 것을 복구하거나 비교할 때 다양한 버전들을 확인할 수 있다. 만약에 프로젝트를 하다가 코드가 망가졌다고 하더라도 버전 관리 시스템을 통해 이전 버전을 불러오고 잘못된 부분을 바로잡으면 된다. ✅ Git Git은 '본인'의 코드와 이력을 기록하고 관리하도록 돕는 버전 관리 시스템(VCS)이다. Git은 클라우드가 아닌 본인의 로..

Computer Science 2023.01.13

[DATABASE] Transaction과 ACID

✅ 트랜잭션(Transaction) 트랜잭션이란 여러 개의 작업을 하나로 묶은 실행 유닛을 말한다. 각 트랜잭션은 하나의 특정 작업으로 시작을 해 묶여 있는 모든 작업들을 다 완료해야 정상적으로 종료된다. 만약 하나의 트랜잭션에 속해있는 여러 작업 중에서 단 하나의 작업이라도 실패하면, 이 트랜잭션에 속한 모든 작업을 실패한 것으로 판단한다. 다시 말해 작업이 하나라도 실패를 하게 되면 트랜잭션도 실패이고, 모든 작업이 성공적이면 트랜잭션 또한 성공이다. 즉 트랜잭션은 성공 또는 실패라는 두 개의 결과만 존재한다. 계좌이체를 예를 들면, A에게 10만원을 보내면 나의 계좌에서 10만원을 뺴고, A의 계좌에 10만원을 추가하는 종합적인 과정이 트랜잭션이다. 만약 내 계좌에서 10만원이 빠졌는데, A의 계좌..

Computer Science 2023.01.12

SOLID란? 객체지향 설계 5원칙(Python)

✅ SOLID란? SOLID란 로버트 마틴이 2000년대 초에 명명한 객체 지향 프로그래밍의 다섯 가지 기본 원칙을 마이클 페더스가 원칙의 앞 글자를 따서 다시 SOLID라는 이름으로 소개했다. SOLID의 5대 원칙은 다음과 같다. 단일 책임 원칙(Single responsibility principle) : SRP 개방 폐쇄 원칙(Open/closed principle) : OCP 리스코프 치환 원칙(Liskov substitution principle) : LSP 인터페이스 분리 원칙(Interface segregation principle) : ISP 의존관계 역전 원칙(Dependency inversion principle) : DIP ✅ 1.SRP (Single Responsibility) 단..

Computer Science 2023.01.11

[네트워크 전송계층] UDP/TCP 특징 차이

OSI 7계층 중 Layer 4에 해당하는 전송계층에서 사용되는 프로토콜에 대해서 알아보고자 한다. 전송계층은 프로토콜 내에서 송신자와 수신자를 연결하는 통신 서비스를 제공하는 계층인데 IP에 의해 전달되는 패킷의 오류를 검사하고 재전송 요구 등의 제어를 담당한다. 이러한 전송계층에서 사용되는 프로토콜이 바로 TCP와 UDP이다. ✅ TCP (Transmission Control Protocol) TCP는 신뢰성 있는 데이터 전송을 지원하는 연결 지향형 프로토콜이다. 일반적으로 TCP와 IP가 함께 사용되는데, IP가 데이터의 전송을 처리한다면, TCP는 패킷 추적 및 관리를 하게 된다. 연결 지향적인 TCP는 3-way handshaking이라는 과정을 통해 연결 후 통신을 시작하는데, 흐름 제어와 혼..

Computer Science 2023.01.11

TCP 프로토콜 연결 / 종료 과정

✅ TCP란? TCP는 네트워크 계층 중 전송 계층에서 사용하는 프로토콜로서, 장치들 사이에 논리적인 접속을 성립하기 위하여 연결을 설정하여 신뢰성을 보장하는 연결형 서비스이다. ✅ TCP 3-Way HandShake란? TCP 통신을 이용하여 데이터를 전송하기 위해 네트워크 연결을 설정하는 과정. 데이터를 주고받기 전에 서버와 클라이언트가 확인 패킷을 3단계로 교환하여 연결을 맺는다. Flag 설명 SYN(연결 요청 플래그) - TCP에서 세션을 성립할 때 가장먼저 보내는 패킷, 시퀀스 번호를 임의적으로 설정하여 세션을 연결하는 데에 사용되며 시퀀스 번호를 보내게 된다. ACK(응답플래그) - 상대방으로부터 패킷을 받았다는 걸 알려주는 패킷 - 다른 플래그와 같이 출력되는 경우도 있음 - 받는 사람이 ..

Computer Science 2023.01.10
728x90