CS 45

[자료구조] 해시(Hash)

해시 테이블 (Hash Table) 데이터를 효율적으로 관리하기 위해, 임의의 길이 데이터를 고정된 길이의 데이터로 매핑하는 것. 해시 함수를 구현하여 데이터 값을 해시 값으로 매핑한다. 해시 테이블의 특징 해시 테이블이란, (key, value)의 형태로 데이터를 저장하는 자료구조이다. 빠른 데이터 검색이 필요할 때 유용하다. 해시 함수에 key를 적용해 고유한 index를 생성하여, 그 index에 저장된 값을 꺼내오는 구조이다. 해시 충돌이 일어나지 않는 경우, 해시 테이블의 시간 복잡도는 O(1) Hash map, map, dictionary, 연관배열 등의 이름으로 알려져 있다. 해시 함수 key를 해시로 바꿔는 역할을 한다. 다양한 길이를 가지고 있는 key를, 일정한 길이의 hash로 바꾸어..

CS/자료구조 2023.01.24

[자료구조] 트리(Tree)와 힙(Heap)

비선형 자료 구조란? 일렬로 나열하지 않고 자료 순서나 관계가 복잡한 구조를 말한다. 일반적으로 트리나 그래프를 말한다. 트리(Tree) 트리는 계층적 관계(Hierarchical Relationship)을 표현하는 자료구조이다. Node(노드)와 Edge(간선)로 이루어진 자료구조이다. 용어 - 노드 (Node) : 트리를 구성하고 있는 각각의 요소를 의미한다. - 간선 (edge) : 노드와 노드를 연결하는 선 - 루트 노드 (Root Node) : A 트리 구조에서 최상위에 있는 노드를 의미한다. - 단말 노트 (leaf node) : F, G, H, I, J 차수가 0인 노드, 즉 자식 노드가 없는 노드. - 형제 노드 (sibling node) : H와 I는 형제 노드이다. 같은 부모 노드의 자..

CS/자료구조 2023.01.24

[Database] 레디스(Redis)

들어가기 전... 30년이 넘는 시간동안 RDBMS(Relational DataBase Management System)가 사랑받고 있지만, 대용량 데이터 저장, 비정형 데이터 저장, 빠른 응답시간 등의 새로운 요구사항에 기존 RDBMS만으론 대응하기 어려울 때가 있다. 그럴 때 기존 RDBMS와 차별적인 강점을 갖춘 데이터베이스 관리 프로그램들, NoSql을 찾게 된다. ※ NoSql? NoSql은 기존 RDBMS 방식을 탈피한 데이터베이스를 의미한다. ※ NoSql의 종류 (NoSql은 RDBMS가 아님) - 서로 연관된 그래프 형식의 데이터를 저장할 수 있는 Graph Store - Row가 아닌 Column 위주로 데이터를 저장하는 Column Store - 비정형 대량 데이터를 저장하기 위한 D..

CS/Database 2023.01.23

[Database] 저장 프로시저(Stored PROCEDURE)

저장 프로시저 (Stroed Procedure)란? 실무에서는 프로그램에서 만들어 놓은 SQL문을 저장해 놓고, 필요할 때마다 호출해서 사용하는 방식으로 프로그램을 만든다. 저장 프로시저는 이러한 방식이 가능하도록하는 각 DBMS에서 제공하는 프로그래밍이다. 간단히 말하자면, 여러 쿼리를 하나의 함수로 묶은 것이다. 데이터베이스에서 SQL을 통해 작업을 하다보면, 하나의 쿼리문으로 원하는 결과를 얻을 수 없을 때가 생긴다. 원하는 결과물을 얻기 위해 사용할 여러 줄의 쿼리문을 한 번의 요청으로 실행하면 좋지 않을까? 저장 프로시저는 쿼리문들의 집합으로, 어떤 동작을 여러 쿼리를 거쳐서 일괄적으로 처리할 때 사용한다. → 프로시저를 만들어두면, 애플리케이션에서 여러 상황에 따라 해당 쿼리문이 필요할 때 인..

CS/Database 2023.01.23

[Database] 트랜잭션 격리 수준 (Transaction Isolation Level)

트랜잭션의 격리수준이란? 동시에 여러 트랜잭션이 처리될 때, 트랜잭션끼리 얼마나 서로 고립되어 있는지를 나타내는 것이다. 즉, 간단하게 말해 특정 트랜잭션이 다른 트랜잭션에 변경한 데이터를 볼 수 있도록 허용할지 말지 결정하는 것이다. 격리 수준 (4가지) READ UNCOMMITTED (커밋되지 않은 읽기) (레벨 0) READ COMMITTED (커밋된 읽기) (레벨 1) REPEATABLE READ (반복 가능한 읽기) (레벨 2) SERIALIZABLE (직렬화 기능) (레벨 3) 순서대로 READ UNCOMMITTED의 격리 수준이 가장 낮고, SERIALIZABLE의 격리 수준이 가장 높다. 즉, 아래로 내려갈수록 트랜잭션 간 격리(고립) 정도가 높아지며, 동시 처리 성능이 떨어지는 것이 일반..

CS/Database 2023.01.20

[Java] 자바 개념 정리

내가 보려고 정리 중 출처 맨 밑에 적어놨지만 혹시 몰라 위에도 적어 놓음. 주로 참고한 블로그 1, 블로그 2 [Java] Java의 특징을 설명해라 - Java는 객체지향 프로그래밍 언어이다. - 기본 자료형을 제외한 모든 요소들이 객체로 표현되고, 객체지향 개념의 특징인 캡슐화, 상속, 다형성이 잘 적용된 언어이다. - 장점 - JVM(자바가상머신) 위에서 동작하기 때문에 운영체제에 독립적이다. - GarbageCollector를 통한 자동적인 메모리 관리가 가능하다. - 단점 - JVM 위에서 동작하기 때문에 실행 속도가 상대적으로 느리다. - 다중 상속이나 타입에 엄격하며, 제약이 많다. 객체지향이란? - 데이터를 추상화 시켜 상태와 행위를 가진 객체를 만들고, 그 객체들 간의 유기적인 상호작용..

CS/Java (CS) 2023.01.19

[Network] HTTP의 GET과 POST 비교

둘 다 HTTP 프로토콜을 이용해서 서버에 무엇인가를 요청할 때 사용하는 방식이다. 사용자가 어떤 홈페이지로 이동하기 위해 URL을 브라우저 주소창에 작성하고, 엔터를 누르면 페이지로 이동한다. 사용자는 단순히 URL(Uniform Resource Locator)를 입력하였을 뿐이지만, 서버 내부에서는 클라이언트의 요청에 응답하기 위해서 처리를 해주어야 한다. 여기서 클라이언트가 서버로 요청을 보내는 방법인 HTTP Method에는 크게 2가지 방식이 있는데, 그것이 GET 방식과 POST 방식이다. HTTP Method와 각각이 사용되는 경우 종류 기능 GET 데이터 조회 POST 요청 데이터 처리(보통 데이터 등록 사용) PUT 데이터 변경 (해당 데이터가 없으면 생성) PATCH 일부 데이터만 변경..

CS/Network 2023.01.18

[Network] HTTP & HTTPS

※ 스트림 (stream) : 시간이 지남에 따라 사용할 수 있게 되는 일련의 데이터 요소를 가리키는 데이터 흐름 ※ 개인키 : 비밀키라고도 하며, 개인이 소유하고 있는 키이자 반드시 자신만이 소유해야 하는 키 ※ 공개키 : 공개되어 있는 키 ※ 해시 : 다양한 길이를 가진 데이터를 고정된 길이를 가진 데이터로 매핑(mapping)한 값 ※ 해싱 : 임의의 데이터를 해시로 바꿔주는 일이며, 해시 함수가 이를 담당 ※ 해시 함수 : 임의의 데이터를 입력으로 받아 일정한 길의의 데이터로 바꿔주는 함수 HTTP 프로토콜이란? HTTP(Hyper Text Transfer Protocol)이란, 데이터를 주고받기 위한 프로토콜이며 서버/클라이언트 모델을 따른다. HTTP는 상태 정보를 저장하지 않는 Statele..

CS/Network 2023.01.17

[Network] 네트워크 기기 & IP 주소

네트워크는 여러 개의 네트워크 기기를 기반으로 구축된다. 네트워크 기기의 처리 범위 네트워크 기기는 계층별로 처리 범위를 나눌 수 있다. 물리 계층을 처리할 수 있는 기기와 데이터 링크 계층을 처리할 수 있는 기기 등이 있다. 그리고 상위 계층을 처리하는 기기는 하위 계층을 처리할 수 있지만, 그 반대는 불가하다. 예를 들어, L7 스위치는 애플리케이션 계층을 처리하는 기기로 그 밑의 모든 계층의 프로토콜을 처리할 수 있다. 하지만 AP는 물리 계층 밖에 처리하지 못한다. 애플리케이션 계층 : L7 스위치 인터넷 계층 : 라우터, L3 스위치 데이터 링크 계층 : L2 스위치, 브리지 물리 계층 : NIC, 리피터, AP 애플리케이션 계층을 처리하는 기기 애플리케이션 계층을 처리하는 기기로는 L7 스위치..

CS/Network 2023.01.16

[Network] 네트워크의 기초 & TCP/IP 4계층 모델

네트워크란? 노드(node)와 링크(link)가 서로 연결되어 있거나 연결되어 있으며 리소스를 공유하는 집합을 의미 ※ 참고 노드 : 서버, 라우터, 스위치 증 네트워크 장치를 의미 링크 : 유선 또는 무선을 의미 좋은 네트워크란? 많은 처리량을 처리할 수 있으며, 지연 시간이 짧고 장애 빈도가 적으며 좋은 보안을 갖춘 네트워크 - 처리량 (throughput) : 링크 내에서 성공적으로 전달된 데이터의 양을 의미. 보통 얼만큼의 트래픽을 처리했는지를 나타낸다. '많은 트래핑을 처리한다 = 많은 처리량을 가진다' (단위 : bps(bits per second, 초당 전송 또는 수신되는 비트 수) - 트래픽 : 특정 시점에 링크 내에 '흐르는' 데이터의 양을 의미. 예를 들어, 서버에 저장된 파일을 클라이..

CS/Network 2023.01.16