728x90
반응형

CS 20

[데이터베이스] JOIN 이란?

JOIN이란? 두 개 이상의 테이블이나 데이터베이스를 연결하여 데이터를 검색하는 방법 테이블을 연결하려면, 적어도 하나의 칼럼을 서로 공유하고 있어야 하므로 이를 이용하여 데이터 검색에 활용한다. JOIN 종류 INNER JOIN LEFT OUTER JOIN RIGHT OUTER JOIN FULL OUTER JOIN CROSS JOIN SELF JOIN INNER JOIN 교집합으로, 기준 테이블과 join 테이블의 중복된 값을 보여준다. SELECT A.NAME, B.AGE FROM EX_TABLE A INNER JOIN JOIN_TABLE B ON A.NO_EMP = B.NO_EMP LEFT OUTER JOIN 기준테이블값과 조인테이블과 중복된 값을 보여준다. 왼쪽테이블 기준으로 JOIN을 한다고 생..

CS/DataBase 2023.09.15

[데이터베이스] 키(Key)의 개념 및 종류

키(Key) 란? 데이터베이스에서 조건에 만족하는 튜플을 찾거나 순서대로 정렬할 때, 다른 튜플들과 구별할 수 있는 유일한 기준이 되는 Attribute(속성) 튜플을 유일하게 구별하기 위해 모든 속성을 이용하는 것보다 일부 속성만 이용하는 것이 효율성을 높일 수 있다. 릴레이션에 포함된 튜플들을 유일하게 구별해주는 역할은 속성 또는 속성들의 집합인 키가 담당한다. 키(Key)의 특징 Key의 특징으로는 3가지 종류가 있다. 이 특징들은 Key의 종류에 따라 만족하는 경우도 있고, 그렇지 않은 경우도 있다. 유일성 : 유일한 값을 가져야 한다. 최소성 : 최소한의 값으로 식별할 수 있어야 한다. 불변성 : 변하는 값이어선 안 된다. 키(Key)의 종류 키의 종류에는 슈퍼키, 후보키, 기본키, 대체키, 외..

CS/DataBase 2023.09.08

[개발상식] API란 무엇인가?

API와 UI UI, API는 둘다 Interface이다. UI = User Interface API = Application programming Interface 인터페이스 (Interface) 인터페이스(interface)는 컴퓨터 시스템끼리 정보를 교한하는 공유 경계를 의미한다, 터치 스크린과 같은 일부 컴퓨터 하드웨어 장치들은 인터페이스를 통해 데이터를 송수신 할 수 있으며, 마우스나 마이크론 폰가 같은 장치들은 오직 시스템에 데이터를 전송만 하는 인터페이스를 제공한다. UI (사용자 인터페이스, User Interface) 사용자와 기계나 시스템 같은 사물이 소통하는 데 도움을 주는 매개체이다. UI는 기본적으로 애플리케이션(이하 앱)을 사용하는 사용자(user) 가 시스템을 제어할 수 있게 ..

CS/개발상식 2023.08.16

[자료구조] 스택(Stack)과 큐(Queue)

스택 (Stack) 이란? 스택(Stack)은 쌓아 올린다는 것을 의미한다. 따라서, 스택(Stack)은 책을 쌓는 것처럼 차곡차곡 쌓아 올린 형태의 자료구조를 의미한다. 즉, 후입선출(LIFO, Last In First Out) 방식의 자료구조이다. 스택의 특징 스택은 시간 순서에 따라 데이터가 쌓이게 되므로, 가장 마지막에 삽입된 데이터가 가장 먼저 삭제된다. 위의 그림과 같이 아래에서 위로 쌓이는 형식이다. 가장 최근(마지막)에 들어온 자료를 top이라고 부른다. 스택 내부의 데이터는, top 을 통해서만 접근할 수 있다. 삽입과 삭제는 한 곳(top)에서만 이루어지게 된다. 가장 위쪽(최신)의 데이터부터 꺼낼 수 있다. 후입선출(LIFO, Last In First Out)의 구조 데이터를 삽입할 ..

CS/Data Structure 2023.08.04

[운영체제] 운영 체제란?

운영 체제(OS, Operating System) 사용자가 컴퓨터를 편리하고 효과적으로 사용할 수 있도록 환경을 제공하는 시스템 소프트웨어 운영체제는 하드웨어를 관리하고, 컴퓨터 시스템의 자원들을 효율적으로 관리하며, 응용 프로그램과 하드웨어 간의 인터페이스로써 다른 응용 프로그램이 유용한 작업을 할 수 있도록 환경을 제공해준다. 컴퓨터 하드웨어 바로 위에 설치되어 사용자 및 다른 소프트웨어와 하드웨어를 연결하는 소프트웨어 계층 즉, 중개자 역할을 다. 운영체제의 목적 1. 컴퓨터의 하드웨어 관리 컴퓨터에는 수 많은 하드웨어가 존재한다. CPU, 메모리, 디스크, 키보드, 마우스, 모니터, 네트워크 등이 있으며 이를 잘 관리해주어야 컴퓨터를 효율적으로 사용할 수 있다. 운영체제의 성능이 좋을수록 컴퓨터의..

[네트워크] Blocking I/O & Non-Blocking I/O

I/O (Input / Output) I/O 작업은 Kernel level에서만 수행할 수 있다. 따라서, Process, Thread는 커널에게 I/O를 요청해야 한다. 어떠한 기기(디바이스)를 통해 입출력이 이루어지는 작업을 모두 I/O라고 한다. 즉, 네트워크를 통한 데이터 전송, 컨솔 출력 등과 같은 것도 포함된다. 이러한 I/O는 어플리케이션 성능에 가장 많은 영향을 끼친다. I/O에서 발생하는 시간은 CPU를 사용한 시간과 대기 시간 중에 대기 시간에 속하기 때문에 I/O가 많아진다느 것은 어플리케이션이 연산을 할 때까지 CPU가 아무것도 못하고 대기하는 시간이 길어진다는 의미이고, 이는 어플리케이션의 처리 속도 저하로 이어진다. 따라서 높은 성능을 보장해야하는 어플리케이션에서는 I/O가 큰 ..

CS/Network 2023.07.06

[네트워크] Blocking/Non-blocking & Synchronous/Asynchronous

동기/비동기는 우리가 일상 생활에서 많이 들을 수 있는 말이다. Blocking과 Synchronous, 그리고 Non-blocking과 Asysnchronous를 서로 같은 개념이라고 착각하기 쉽다. 각자 어떤 의미를 가지는지 간단하게 살펴보자. 2대2 매트릭스로 정리된 그림이다. 그림을 보면 Blocking 이면 반드시 Sync 가 아니고, Non-blocking 이면 반드시 async 도 아니다. 즉, Blocking / Non-blocking 과 Sync / Async 는 다른 개념이라는 것이다. Blocking / Non-blocking 과 Sync / Async 는 '관점'을 어떻게 두느냐에 따라 다르다. 블로킹 Blocking A 함수가 B 함수를 호출 할 때, B 함수가 자신의 작업이 종료..

CS/Network 2023.07.05

[네트워크] 로드 밸런싱 (Load Balancing)

로드 밸런싱 (Load Balancing) 이란? 네트워크 또는 서버에 가해지는 부하(Load)를 분산(Balancing) 해주는 기술이다. 중앙처리장치 혹은 저장장치와 같은 컴퓨터 자원들에게 작업을 나누는 것을 의미한다. 로드 밸런싱의 필요성? 로드밸런싱은 여러 대의 서버를 두고 서비스를 제공하는 분산 처리 시스템에서 필요한 기술이다. 서비스의 제공 초기 단계라면 적은 수의 클라이언트로 인해 서버 한 대로 요청에 응답하는 것이 가능하다. 하지만 사업의 규모가 확장되고, 클라이언트의 수가 늘어나게 되면 기존 서버만으로는 정상적인 서비스가 불가능하게 된다. 트래픽이 많은 최신 웹 사이트는 클라이언트의 수많은 동시 요청을 처리하고 텍스트, 이미지, 비디오 또는 애플리케이션 데이터 등을 빠르고 안정적인 방식으..

CS/Network 2023.07.04

[개발상식] 디자인 패턴

소프트웨어 디자인 패턴이란? 소프트웨어 개발 방법으로 사용되는 디자인패턴(Desigin Pattern)은 과거의 소프트웨어 개발 과정에서 발견된 설계의 노하우를 축적하여 그 방법에 이름을 붙여서 이후에 재사용하기 좋은 형태로 특정 규약을 만들어서 정리한 것이다. 디자인 패턴은 소프트웨어 설계에 있어 공통적인 문제들에 대한 표준적인 해법과 작명법을 제안하며, 알고리즘과 같이 프로그램 코드로 바로 변환될 수 있는 형태는 아니지만, 특정한 상황에서 구조적인 문제를 해결하는 방식입니다. 즉 "효율적인 코드를 만들기 위한 방법론"이라고 생각하시면 된다. 디자인 패턴은 외우기보다는 어떠한 패턴이 있는지 알고 수많은 디자인 패턴에서 다양한 코딩 노하우를 습득하는것이 중요하다고 생각한다. "이 코드에는 무조건 이 패턴..

CS/개발상식 2023.07.01

[개발상식] 객체 지향 프로그래밍 (OOP)

객체 지향 프로그래밍은 컴퓨터 프로그래밍의 패러다임 중 하나이다. 객체 지향 프로그래밍은 컴퓨터 프로그램을 명령어의 목록으로 보는 시각에서 벗어나 여러 개의 독립된 단위, 즉 "객체"들의 모임으로 파악하고자 하는 것이다. 각각의 객체는 메시지를 주고받고, 데이터를 처리할 수 있다. - 위키피디아 - 객체지향 프로그램밍(Object-Oriented Programming)은 프로그래밍 패러다임 중 하나로, 상태(state)와 행위(behave)로 이루어진 객체들간의 상호작용을 통해 프로그램을 설계, 개발 하는 것이다. 즉, 쉽게 말해 객체지향 프로그래밍은 객체를 만드는 것이다. '객체' 라는 말은 Object를 직역한 말인데, 쉽게 말해 변수와 메소드를 그룹핑 한 개념이다. 즉, 프로그래밍에서 필요한 데이터..

CS/개발상식 2023.06.29
728x90
반응형