MySQL InnoDB를 공부하다 보면 MVCC(Multi-Version Concurrency)와 이를 통한 잠금 없는 일관성 읽기(Non-locking Consistent Read)라는 개념을 만나게 된다. 책이나 강의에서는 이러한 동시성 제어가 완벽하게 작동하는 비결이 바로 리두 로그(Redo Log), 언두 로그(Undo Log) 덕분이라고 한다. 그렇다면 실제 이 로그 파일들은 어떤 식으로 기록되어 있는 걸까? 궁금증이 생겨서 해당 파일을 직접 열어보았다. Redo Log, Undo Log, 그리고 MVCC그 전에 개념을 간단히 정리해보자. 1. Redo Log: "변경사항"을 기록영속성을 위해 존재하며, 시스템 크래시 발생 시 미처 디스크에 기록되지 못하고 날아간 변경사항을 재실행(redo)하여..
이번에는 지난 시간에 만들었던 `아티스트 정보 검색 API`로 응답받은 데이터를 데이터베이스에 저장하는 기능을 구현해보려고 한다. 사전 설정이번 프로젝트에서는 PostgreSQL을 사용해보기로 해서 설치해 두었다. PostgreSQL에 데이터를 저장하기 위해서는 다음과 같이 설정을 추가해야 한다. build.gradledependencies { ... implementation 'org.springframework.boot:spring-boot-starter-data-jpa' implementation 'org.postgresql:postgresql:42.7.3'} application.properties# PostgreSQLspring.datasource.url=${DB_URL}spri..
오류 vs 예외오류(Error)컴퓨터 하드웨어의 오동작 또는 고장으로 인해 응용 프로그램 실행 오류 오류는 주로 JVM에서 발생하기 때문에 개발자가 따로 대응할 수 있는 방법이 없다. 따라서 외부적인 조치가 필요하다. 예외(Exception)사용자의 잘못된 조작 혹은 개발자의 잘못된 코딩으로 인해 발생하는 프로그램 오류 예외는 애플리케이션 코드에서 발생하는 오류로, 예외가 발생했을 때 프로그램이 곧바로 종료된다는 점에서는 오류와 동일하지만 적절한 예외 처리를 통해 프로그램이 정상 실행 상태를 유지하게 할 수 있다. Throwable 클래스자바에서 모든 오류와 예외의 최상위 클래스예외는 또다시 Checked Exception과 Runtime Exception으로 나뉜다. 예외(Exception)Checke..
이번 시간에는 Spotify Web API를 쉽게 사용할 수 있는 라이브러리인 `spotify-web-api-java`를 활용해서 아티스트 정보를 검색하는 API를 만들어보고자 한다. https://github.com/spotify-web-api-java/spotify-web-api-java GitHub - spotify-web-api-java/spotify-web-api-java: A Java wrapper for Spotify's Web API.A Java wrapper for Spotify's Web API. Contribute to spotify-web-api-java/spotify-web-api-java development by creating an account on GitHub.github..
올해 처음으로 페스티벌을 다녀왔는데, 페스티벌 정보와 출연하는 가수 정보를 이곳저곳에서 확인하느라 불편했었다 😖그래서 `페스티벌 정보 제공 서비스, hilarious`를 기획하게 되었고, 2인 프로젝트로 진행하게 되었다. 나는 아티스트 정보 제공 기능을 담당하게 되어서 무료로 사용할 수 있으면서 한국 가수 정보가 많은 Spotify API를 사용해보기로 했다. 오늘은 Spotify API를 사용하기 위해 세팅하고 간단한 API 테스트까지 해보려고 한다!Spotify API 사용 준비App 생성하기https://developer.spotify.com/ 접속 후 계정 생성 ➡️ `프로필` ➡️ `Dashboard` 이메일 인증 후 화면 App 정보 입력App을 생성할 때 `Spotify Products(..
스케줄링(Scheduling)여러 작업에 CPU 시간을 할당하여 자원을 효율적으로 사용할 수 있도록 하는 메커니즘리눅스는 `선점형 멀티태스킹 시스템`으로, 프로세스의 스레드와 우선순위와 정책에 따라 CPU 시간을 동적으로 할당한다.`선점형 멀티태스킹(Preemptuve Multitasking)`: 운영체제가 필요에 따라 강제로 프로세스의 실행을 중단하여 다른 프로세스에게 CPU를 할당하는 멀티태스킹 방식이를 통해 여러 프로세스가 동시에 실행되는 것처럼 보이게 한다. 스케줄링 유형비선점형(Non-Preemptive) 스케줄링어떤 프로세스가 CPU를 할당받으면 그 프로세스가 종료되거나 자발적으로 중지될 때(주로 I/O에 의해)까지 계속 실행되도록 보장한다.순서대로 처리되므로 실행 순서가 예측 가능하고, 문맥..