Computer Science

Computer Science/데이터베이스

데이터베이스 - 인덱스

🌱 오늘의 주제 : 데이터베이스 - 인덱스 🌱 인덱스 인덱스는 데이터를 빠르게 찾을 수 있는 하나의 장치이다. 🌱 B-트리 인덱스는 보통 B-트리 자료 구조로 이루어져 있다. 루트 노드, 브랜치 노드, 리프 노드로 구성되어 있다. 🌱 인덱스가 효율적인 이유와 대수확장성 인덱스가 효율적인 이유는 효율적인 단계를 거쳐 모든 요소에 접근 할 수 있는 균형 잡힌 트리 구조와 트리 깊이의 대수확장성 때문이다. 대수확장성이란 트리 깊이가 리프 노드 수에 비해 매우 느리게 성장하는 것을 말한다. 기본적으로 인덱스가 한 깊이씩 증가 할때마다 최대 인덱스 항목의 수는 4배씩 증가한다. 🌱 인덱스 만드는 방법 - MySQL 클러스터형 (Cluster) 인덱스 클러스터형 인덱스는 데이블당 하나를 설정할 수 있다. Prim..

Computer Science/자료 구조

자료 구조 - 선형 자료 구조와 비선형 자료 구조

🌱 오늘의 주제 : 선형 자료 구조와 비선형 자료 구조 🌱 선형 자료 구조 - Array vs Linked List Array 가장 기본적인 자료구조인 Array 자료구조는, 논리적 저장 순서와 물리적 저장 순서가 일치한다. 따라서 인덱스(index)로 해당 원소(element)에 접근할 수 있다. 그렇기 때문에 찾고자 하는 원소의 인덱스 값을 알고 있으면 Big-O(1)에 해당 원소로 접근할 수 있다. 즉 random access 가 가능하다는 장점이 있는 것이다. 하지만 삭제 또는 삽입의 과정에서는 해당 원소에 접근하여 작업을 완료한 뒤(O(1)), 또 한 가지의 작업을 추가적으로 해줘야 하기 때문에, 시간이 더 걸린다. 만약 배열의 원소 중 어느 원소를 삭제했다고 했을 때, 배열의 연속적인 특징이 ..

Computer Science/데이터베이스

데이터베이스 - 트랜잭션이란?

🌱 오늘의 주제 : 트랜잭션이란? 🌱 트랜잭션 트랜잭션은 작업의 완전성 을 보장해주는 것이다. 즉, 논리적인 작업 셋을 모두 완벽하게 처리하거나 또는 처리하지 못할 경우에는 원 상태로 복구해서 작업의 일부만 적용되는 현상이 발생하지 않게 만들어주는 기능이다. 사용자의 입장에서는 작업의 논리적 단위로 이해를 할 수 있고 시스템의 입장에서는 데이터들을 접근 또는 변경하는 프로그램의 단위가 된다. 트랜잭션과 Lock 잠금(Lock)과 트랜잭션은 서로 비슷한 개념 같지만 사실 잠금은 동시성을 제어하기 위한 기능이고 트랜잭션은 데이터의 정합성을 보장하기 위한 기능이다. 잠금은 여러 커넥션에서 동시에 동일한 자원을 요청할 경우 순서대로 한 시점에는 하나의 커넥션만 변경할 수 있게 해주는 역할을 한다. 여기서 자원은..

Computer Science/데이터베이스

데이터베이스 - 데이터베이스란?

🌱 오늘의 주제 : 데이터베이스란? 🌱 데이터베이스란? 데이터베이스 (DB, DataBase)는 일정한 규칙, 혹은 규약을 통해 구조화되어 저장되는 데이터 모음이다. 해당 데이터베이스를 제어, 관리하는 통합 시스템을 DBMS(DataBase Management System)라고 한다. 특정 DBMS마다 정의된 쿼리 언어(query language)를 통해 삽입, 삭제, 수정, 조회 등을 수행 할 수 있다. 🌱 데이터베이스의 특징 데이터의 독립성 물리적 독립성 : 데이터베이스 사이즈를 늘리거나 성능 향상을 위해 데이터 파일을 늘리거나 새롭게 추가하더라도 관련된 응용 프로그램을 수정할 필요가 없다. 논리적 독립성 : 데이터베이스는 논리적인 구조로 다양한 응용 프로그램의 논리적 요구를 만족시켜줄 수 있다. ..

Computer Science/네트워크

CS - HTTP

🌱 오늘의 주제 : HTTP 🌱 HTTP 기본적으로 HTTP는 애플리케이션 계층으로서 웹 서비스 통신에 사용된다. HTTP/1.0 -> HTTP/1.1 -> HTTP/2 -> HTTP/3 🌱 HTTP/1.0 HTTP/1.0은 기본적으로 한 연결당 하나의 요청을 처리하도록 설계되어있다. 이는 RTT 증가를 불러오게 되었다. RTT란, 패킷이 목적지에 도달하고 나서 다시 출발지로 돌아오기까지 걸리는 시간이며 패킷 왕복 시간이다. RTT의 증가를 해결하기 위한 방법 : 이미지 스플리팅, 코드 압축, 이미지 Base64 인코딩을 사용. 🌱 HTTP/1.1 매번 TCP 연결을 하는 것이 아니라, 한번 TCP 초기화를 한 이후에 keep-alive라는 옵션으로 여리 개의 파일을 송수신 할 수 있게 바뀌었다. HTT..

Computer Science/네트워크

CS - 네트워크 기기

🌱 오늘의 주제 : 네트워크 기기 🌱 네트워크 기기 네트워크는 여러 개의 네트워크 기기를 기반으로 구축된다. 🌱 네트워크 기기의 처리 범위 물리 계층을 처리할 수 있는 기기와 데이트 링크 계층을 처리할 수 있는 기기가 있다. 상위 계층을 처리하는 기기는 하위 계층을 처리할 수 있지만 그 반대는 불가하다. 애플리케이션 계층 : L7 스위치 인터넷 계층 : 라우터, L3 스위치 데이터 링크 계층 : L2 스위치, 브리지 물리 계층 : NIC, 리피터, AP 🌱 애플리케이션 계층을 처리하는 기기 - L7 스위치 스위치는 여러 장비를 연결하고 데이터 통신을 중재하며 목적지가 연결된 포트로만 전기 신호를 보내 데이터를 전송하는 통신 네트워크 장비이다. L7 스위치는 로드밸런서라고도 하며, 서버의 부하를 분산하는 ..

Computer Science/네트워크

CS - TCP/IP 4계층 모델

🌱 오늘의 주제 : TCP/IP 4계층 모델 🌱 TCP/IP 4계층 모델 인터넷 프로토콜 스위트 (internet protocol suite)는 인터넷에서 컴퓨터들이 서로 정보를 주고 받는 데 쓰이는 포로토콜의 집합이며, 이를 TCP/IP 4계층 모델로 설명하거나 OSI 7계층 모델로 설명하기도 한다. 🌱 애플리케이션 계층 애플리케이션 계층은 FTP, HTTP, SSH, SMTP, DNS 등 응용 프로그램이 사용되는 프로토콜 계층이다. 웹 서비스, 이메일 등 서비스를 실질적으로 사람들에게 제공하는 층이다. 🌱 전송 계층 전송(transport) 계층은 송신자와 수신자를 연결하는 통신 서비스를 제공하며 연결 지향 데이터 스트림 지원, 신뢰성, 흐름 제어를 제공할 수 있으며 애플리케이션과 인터넷 계층사이의..

Computer Science/네트워크

CS - 네트워크 분류

🌱 오늘의 주제 : 네트워크 분류 🌱 네트워크 분류 LAN은 근거리 통신망을 의미하며 같은 건물이나 캠퍼스 같은 좁은 공간에서 운영된다. 전송 속도가 빠르고 혼잡하지 않다. MAN은 대도시 지역 네트워크를 나타내며 도시 같은 넓은 지역에서 운영된다. 전송 속도는 평균이며 LAN보다는 더 많이 혼잡하다. WAN은 광역 네트워크를 의미하며 국가 또는 대륙 같은 더 넓은 지역에서 운영된다. 전송 속도는 낮으며 MAN보다 더 혼잡하다. 🌱 네트워크 성능 분석 명령어 네트워크 병목 현상의 주된 원인 4가지 1. 네트워크 대역폭 2. 네트워크 토폴로지 3. 서버 CPU, 메모리 사용량 4. 비효율적인 네트워크 구성 ping ping(Packet INternet Groper)은 네트워크 상태를 확인하려는 대상 노드를..

Computer Science/네트워크

CS - 네트워크 토폴로지와 병목 현상

🌱 오늘의 주제 : 네트워크 토폴로지와 병목 현상 🌱 네트워크 네트워크란 노드(node)와 링크(link)가 서로 연결되어 있으며 리소스를 공유하는 집합을 의미한다. 노느란 서버, 라우터, 스위치 등 네트워크 장치를 의미하고 링크는 유선 또는 무선을 의미한다. 🌱 처리량과 지연 시간 좋은 네트워크란 많은 처리량을 처리할 수 있으며 지연 시간이 짧고 장애 빈도가 적으며 좋은 보완을 갖춘 네트워크를 말한다. 처리량(throughput)은 링크 내에서 성공적으로 전달된 데이터의 양을 말하며 보통 얼만큼의 트래픽을 처리했는지를 나타낸다. 단위로는 bps(bits per second)를 쓴다. 트래픽은 특정 시점에 링크 내에 '흐르는' 데이터의 양을 말한다. 트래픽이 많아졌다 = 흐르는 데이터가 많아졌다. 처리..

Computer Science/디자인 패턴

CS - 프로그래밍 패러다임

🌱 오늘의 주제 : 프로그래밍 패러다임 🌱 프로그래밍 패러다임 프로그래밍 패러타임(programming paradigm)은 프로그래머에게 프로그래밍의 관점을 갖게 해주는 역할을 하는 개발 방법론이다. 예를 들어, 객체지향 프로그래밍은 프로그래머들이 프로그램 상호 작용하는 객체들의 집합으로 볼 수 있게 하는 반면에, 함수형 프로그램은 상태 값을 지니지 않는 함수 값들의 연속으로 생각 할 수 있게 해준다. 자바의 경우 jdk 1.8 부터 함수형 프로그래밍 패러타임을 지원하기 위해 람다식, 생성자 레퍼런스, 메서드 레퍼런스를 도입했고 선언형 프로그래밍을 위해 스트림(stream)같은 표준 API 등도 추가했다. 🌱 선언형과 함수형 프로그래밍 선언형 프로그래밍(declarative programming)이란 '..

요가하는 개발자
'Computer Science' 카테고리의 글 목록 (2 Page)