0. 목표 Mission 01, 스프링 부트 프로젝트를 만든다. · Issue #1 · ssoyeong/spring-boot-study 목표 Spring Initializr로 스프링 부트 프로젝트를 세팅한다. (IntelliJ에 내장되어 있는 기능을 사용해도 괜찮음) 세부 내용(아래 조건은 모두 만족해야 함) 빌드 툴은 Gradle을 이용하고 빌드 스크립트 github.com - Spring Initializr로 스프링 부트 프로젝트 세팅하기 - 이때 무엇을 설정하는 것인지 알기 1. Spring과 Spring Boot 1.1. Spring - 풀네임은 Spring Framework - Java 기반의 오픈소스 프레임워크로, 복잡하고 규모가 큰 엔터프라이즈 애플리케이션을 개발하기 위한 여러 기능을 제공함..
1. 인덱스란? 1.1. 인덱스의 정의 - 데이터베이스에서 검색 속도를 향상시키기 위해 사용되는 자료구조 - 지정한 컬럼들을 기준으로 메모리 영역에 일종의 목차를 생성하는 것 - 주로 두 가지 구성 요소로 구성됨 (1) key 키는 실제 검색을 위한 기준이 되는 데이터의 일부 또는 전체를 포함함 인덱스를 만들 때 이 키에 해당하는 데이터의 값이 정렬되어 저장됨 키의 형태는 해당 인덱스의 종류와 데이터베이스 시스템에 따라 달라질 수 있음 예를 들어, B-tree 인덱스의 경우 키는 트리의 노드에 저장됨 (2) value 값은 인덱스의 키에 대응하는 실제 데이터의 위치나 데이터의 일부를 가리킴 주로 clustered 인덱스가 아닌 non-clustered 인덱스에서 사용됨 키가 데이터베이스 레코드의 위치를 ..
1. 트랜잭션의 격리성 지난 시간에 트랜잭션의 특징 ACID에 대해 알아보았다. 그중 Isolation, 격리성을 보장하기 위한 두 가지 개념(격리 수준, 락)이 등장했다. [Database] 4. 트랜잭션과 무결성 1. 트랜잭션이란? 1.1. 트랜잭션의 정의 - 데이터베이스에서 하나의 논리적 기능을 수행하기 위한 작업의 단위 - 데이터베이스의 상태를 변화시킬 때, 이를 완전하게 수행하거나 하나도 수행하지 ssoyeong.tistory.com 1.1. 동시성 제어 - 여러 트랜잭션이 동시에 데이터베이스에 접근하여 작업을 수행할 때 발생할 수 있는 문제를 관리하고 해결하는 것 - 즉, 트랜잭션의 실행 순서를 제어하는 기법 - 데이터 일관성과 무결성을 보장하고, 여러 트랜잭션이 동시에 실행될 수 있도록 도와..
1. 문제 링크 https://www.acmicpc.net/problem/1194 1194번: 달이 차오른다, 가자. 첫째 줄에 미로의 세로 크기 N과 가로 크기 M이 주어진다. (1 ≤ N, M ≤ 50) 둘째 줄부터 N개의 줄에 미로의 모양이 주어진다. 같은 타입의 열쇠가 여러 개 있을 수 있고, 문도 마찬가지이다. 그리고, www.acmicpc.net 2. 접근법 탈출하는데 걸리는 이동 횟수의 최솟값을 구하는 문제이므로 BFS 탐색을 하자 획득한 열쇠의 경우의 수에 따라서 방문 처리를 다르게 해줘야 함 그렇다면 어떻게 획득한 열쇠를 저장할 것인지, 방문 처리를 어떻게 할 것인지 가 포인트 비트마스킹을 활용하자! 1. 변수 선언 열쇠는 A부터 F까지 총 6 종류이므로 2^6의 경우의 수가 생김 Poi..
1. 트랜잭션이란? 1.1. 트랜잭션의 정의 - 데이터베이스에서 하나의 논리적 기능을 수행하기 위한 작업의 단위 - 데이터베이스의 상태를 변화시킬 때, 이를 완전하게 수행하거나 하나도 수행하지 않아야 함 1.2. 트랜잭션의 목적 - 데이터베이스의 무결성을 보장하고, 데이터베이스 조작(삽입, 수정, 삭제)을 안전하게 하기 위함 - 트랜잭션의 특징으로는 원자성, 일관성, 고립성, 지속성이 있음 (합쳐서 ACID라고 함) 2. 무결성 (Integrity) - 데이터의 정확성, 일관성, 유효성을 유지하는 것 - 즉, 데이터가 정확하고 신뢰할 수 있어야 함을 의미함 - DBMS는 데이터베이스가 무결성을 위반하지 않도록 다음과 같은 제약 조건을 설정할 수 있음 개체 무결성 - 기본 키로 선택된 필드는 빈 값을 허용..
1. JVM이란? 1.1. JDK, JRE 그리고 JVM JDK - Java Development Kit - 자바 언어를 사용하여 소프트웨어를 개발하기 위한 개발 키트 - 자바 프로그래밍을 하기 위해 Oracle 사이트에서 다운받는 그! 파일 - 컴파일러인 javac, JRE, 개발 도구 및 라이브러리 등이 포함되어 있음 JRE - Java Runtime Environment - 자바 애플리케이션을 실행하는 환경을 제공함 - 컴파일러와 개발 도구를 포함하지 않으며, 순수하게 자바 어플리케이션을 실행하는 데 필요한 라이브러리와 실행 환경만 포함함 JVM - Java Virtual Machine - 자바 바이트 코드를 실제로 실행하는 가상 머신 1.2. JVM의 특징 플랫폼 독립성 - 자바 코드는 컴파일된 ..
1. 정규화란? 1.1. 정규화의 배경 - 관계형 데이터베이스가 등장하면서 데이터 모델링에 새로운 접근 방식이 도입됨 - 이 접근 방식은 데이터를 테이블로 구성하고, 각 테이블의 구조를 정의하여 데이터 중복을 최소화하고 데이터 무결성을 보장하는 것 - 하나의 테이블에 여러 엔티티의 속성들을 혼합하게 되면 정보가 중복 저장되고, 저장 공간을 낭비하게 됨 - 또한 중복된 정보로 인해 이상 현상이 발생하게 됨 - 이러한 문제를 해결하기 위해 데이터베이스 설계 과정에서 정규화 과정을 거침 이상 현상이란? - 데이터를 삽입, 삭제, 수정할 때 발생하는 논리적 오류 - 삽입 이상: 새로운 학생이 추가되면 수강 정보가 NULL 값으로 채워짐 - 삭제 이상: 수강 정보를 삭제하면 학생 정보도 함께 삭제됨 - 갱신 이상..
1. 관계형 데이터베이스란? 1.1. 관계형 데이터베이스의 정의 - Relational Database (RDB) - 데이터를 테이블 형태로 관리하는 데이터베이스 시스템 - 테이블에는 행(row)과 열(column)의 형태로 저장되며, 각 행은 고유한 식별자(primary key)를 가지고 있음 - 데이터 구조를 사전에 정의하고, SQL(Structured Query Language)를 사용하여 데이터를 조작하고 검색함 - 중복 데이터 저장을 방지하기 위해 테이블을 분리시키고 테이블 간 관계를 형성함 (1:1, 1:N. N:M) - 위와 같이 테이블 간의 관계는 기본 키(primary key)와 외래 키(foreign key)라는 개념을 사용해 맺어질 수 있음 - 외래 키는 기본 키를 참조하는 필드로, ..
1. 데이터베이스란? 데이터베이스(DB) - 여러 사람들이 공유하고 사용할 목적으로 통합 관리되는 데이터들의 모임 데이터베이스 관리 시스템(DBMS) - 다수의 사용자들이 데이터베이스 내의 데이터를 접근할 수 있도록 해주는 소프트웨어 2. 데이터베이스의 목적 - 서로 다른 응용 프로그램에서 데이터를 공용해서 사용하기 위함 2.1. 데이터베이스의 배경 - 데이터베이스가 존재하기 이전에 파일 시스템을 이용하여 데이터를 관리함 - 데이터를 각각의 파일 단위로 저장하고, 이를 각각의 애플리케이션에서 사용하게 됨 - 파일 시스템에서는 파일에 접근하는 방식이 응용 프로그램 내에 표현되어 응용 프로그램과 데이터 간의 의존관계가 생김 - 데이터의 구조, 접근 방법이 변경되면 기존의 프로그램과 데이터를 함께 변경해야 하..