블로그 이사합니다아래에서 확인 가능합니다.https://code-lab1.com/%EB%B8%94%EB%A1%9C%ED%82%B9/ [운영체제] 동기(Sync)와 비동기(Async), 블로킹(Blocking)과 논블로킹(Non-blocking) - 코드 연구소운영체제를 공부하다 보면 동기(Syncronous)와 비동기(Asynchronous), 블로킹(Blocking), 논-블로킹(Non-blocking)에 대해 들어볼 수 있다. 이 개념들은 언뜻 보면 매우 헷갈리기 때문에 한 번 정리가 필요하다code-lab1.com 동기와 비동기, 블로킹과 논-블로킹 너무 헷갈려운영체제를 공부하다 보면 동기(Syncronous)와 비동기(Asynchronous), 블로킹(Blocking), 논-블로킹(Non-blo..
KMP 알고리즘이란? KMP 알고리즘은 Knuth, Morris, Pratt 세 사람이 만든 알고리즘으로, 문자열 중에 특정 패턴을 찾아내는 문자열 검색 알고리즘 중 하나이다. 그렇다면 문자열 검색 알고리즘이란 뭘까? 위 사진은 웹 사이트에서 Ctrl+F 를 눌러 특정 문자열을 검색한 결과이다. 문자열 검색 알고리즘이란 말 그대로 문자열에서 특정 패턴을 찾아내는 알고리즘이다. KMP 알고리즘은 문자열에서 특정 패턴을 효율적으로 찾을 수 있다. 살펴볼 문자열의 길이가 N, 찾고 싶은 패턴의 길이가 M이라면 O(N+M)의 시간 복잡도를 가지는 매우 효율적인 알고리즘이다. KMP 알고리즘이 얼마나 효율적인지 알기 전에, 모든 문자열을 일일이 비교하는 경우를 살펴보자. 모든 문자열을 일일이 비교하는 경우(브루트..
스위치란? 네트워크에서 스위치란 소규모 비즈니스 네트워크 안에서 컴퓨터, 프린터 등 모든 디바이스를 서로 연결해주어 자원을 쉽게 공유할 수 있도록 하는 장치이다. 스위치는 L2(데이터 링크 계층)에 속하는 장치이다. 즉, MAC 주소를 기반으로 디바이스 위치를 파악하고 통신한다. 스위치는 브로드캐스트 도메인을 구분할 수 없다. 스위치는 ARP 등을 통해 불명확한 목적지를 가진 데이터를 처리할 때 모든 포트로 데이터를 퍼뜨리는 브로드캐스트를 한다. 참고) [네트워크] MAC주소와 ARP(Address Resolution Protocol)란? | MAC 주소의 필요성 MAC 주소란? IP 주소는 네트워크 계층(Network Layer)에서 사용되는 주소다. 반면 MAC 주소는 데이터 링크 계층(Data Li..
블로그 이사합니다아래에서 확인 가능합니다.https://code-lab1.com/clustered-index/ [DB] Clustered Index 와 Non-Clustered Index 차이, 테이블 스캔(Table Scan)이란? 인덱스 스캔(Index Scan)이란? -clustered Index는 row의 물리적 정렬 순서를 설정하는 index 유형이다code-lab1.com Index란?Index는 테이블에서 데이터의 위치를 가리키는 자료구조이다. Index가 없다면 원하는 데이터를 찾기 위해서 테이블 전체를 뒤져야 할 것이다. 이러한 Index는 크게 Clustered Index와 Non-Clustered Index 두 가지로 나눌 수 있다. 참고) [DB] 인덱스(index)란? 인덱스 ..
오버로딩(Overloading)이란? 오버로딩은 같은 클래스 내에 여러 개의 같은 이름의 메서드를 정의하는 것이다. 이때 메서드의 이름은 같지만 매개변수(parameter)의 개수나 타입이 달라야 한다. return 값만 다른 것은 오버로딩이라고 볼 수 없다. 예를 들어 아래와 같이 Food 클래스 내에 여러 가지의 eat 메서드를 정의할 수 있다. public class Food{ void eat(Noodle noodle){ System.out.println("후루룩"); } void eat(Pizza pizza){ System.out.prinln("냠냠"); } void eat(Noodle noodle, Ramen ramen){ System.out.prinln("호로록~"); } } 같은 메서드 명이..
투 포인터 알고리즘(Two-Pointers Algorithm)이란? 투 포인터 알고리즘은 말 그대로 두 개의 포인터를 이용해 문제를 해결하는 알고리즘을 뜻한다. 보통 l(left), r(right)나 s(start), e(end) 같은 식으로 포인터의 이름을 붙인다. 투 포인터 알고리즘을 설명하기 위해 하나의 알고리즘 문제를 소개하겠다. https://www.acmicpc.net/problem/2003 2003번: 수들의 합 2 첫째 줄에 N(1 ≤ N ≤ 10,000), M(1 ≤ M ≤ 300,000,000)이 주어진다. 다음 줄에는 A[1], A[2], …, A[N]이 공백으로 분리되어 주어진다. 각각의 A[x]는 30,000을 넘지 않는 자연수이다. www.acmicpc.net 백준에서 풀어볼 수..
블로그 이사합니다아래에서 확인 가능합니다.https://code-lab1.com/4%EC%A0%95%EA%B7%9C%ED%98%95/ [DB] 제 4정규형과 제 5정규형, 4NF와 5NF - 코드 연구소4정규형은 BCNF를 만족하며 다치 종속성이 없는 상태를 말한다code-lab1.com 정규화란?정규화는 이상현상(Anomaly)이 있는 릴레이션을 분해하여 이상현상을 없애는 과정이다. 이상현상이 존재하는 릴레이션을 분해하여 여러 개의 릴레이션을 생성하게 된다. 이를 단계별로 구분하여 정규형이 높아질수록 이상현상은 줄어들게 된다. 이전 포스팅에서 1NF, 2NF, 3NF, BCNF까지 다뤄보았다. [DB] 정규화(Normalization)란? 정규화 예시, 1NF, 2NF, 3NF, BCNF정규화(N..
블로그 이사합니다아래에서 확인 가능합니다.https://code-lab1.com/oltp/ [DB] OLTP란? OLAP란? DSS란? OLTP와 OLAP의 차이 - 코드 연구소OLTP란 트랜잭션 지향 애플리케이션을 손쉽게 관리할 수 있도록 도와주는 정보 시스템의 한 계열로서, 일반적으로 데이터 기입 및 트랜잭션 처리를 위해 존재한다. -위키백과-code-lab1.com OLTP(Online Transaction Processing)란? OLTP란 트랜잭션 지향 애플리케이션을 손쉽게 관리할 수 있도록 도와주는 정보 시스템의 한 계열로서, 일반적으로 데이터 기입 및 트랜잭션 처리를 위해 존재한다. -위키백과- OLTP는 동시에 발생하는 다수의 트랜잭션을 실행하는 데이터 처리 유형이다. OLTP는 쿼리를 ..
블로그 이사합니다아래에서 확인 가능합니다.https://code-lab1.com/%ED%8A%B8%EB%A6%AC%EA%B1%B0/ [DB] 데이터베이스 트리거(Trigger)란? - 코드 연구소데이터베이스 트리거는 테이블에 대한 이벤트에 반응해 자동으로 실행되는 작업을 의미한다. 트리거는 INSERT, DELETE, UPDATE 같은 DML(데이터 조작 언어)의 데이터 상태 관리를 자동화하는데 사용된code-lab1.com 데이터베이스 트리거(Trigger)란? 데이터베이스 트리거는 테이블에 대한 이벤트에 반응해 자동으로 실행되는 작업을 의미한다. 트리거는 INSERT, DELETE, UPDATE 같은 DML(데이터 조작 언어)의 데이터 상태 관리를 자동화하는데 사용된다. 트리거(Trigger)는 말..
블로그 이사합니다아래에서 확인 가능합니다.https://code-lab1.com/cdn/ [네트워크] CDN(Contents Delivery Network)이란? - 코드 연구소CDN(Contents Delivery Network)이란 데이터 사용량이 많은 애플리케이션의 웹 페이지 로드 속도를 높이는 상호 연결된 서버 네트워크이다.code-lab1.com CDN(Contents Delivery Network)란? CDN(Contents Delivery Network)이란 데이터 사용량이 많은 애플리케이션의 웹 페이지 로드 속도를 높이는 상호 연결된 서버 네트워크이다. 사용자는 웹 사이트를 방문할 때 해당 웹 사이트 서버의 데이터가 인터넷을 통해 사용자의 컴퓨터에 도달하게 된다. 이때 사용자가 해당..