Home
Jia's Blog
Cancel

배워서 바로 쓰는 SQL 쿼리

SQL 이란? Structed Query Language: 컴퓨터에게 데이터를 가져오는 일을 할때 쓰는 구조화된 프로그래밍 언어 DML(Data Manipulation Language) - select, insert, update, delete DDL(Data Definition Language) - Create, Alter TCL(T...

Transactional isolation(격리수준)

코드를 짜게 되면 @Transactional 는 필수적으로 사용하게 되는데, 여러 쓰레드가 한꺼번에 Transaction을 물게 될 경우, 데이터가 서로 안 맞는 상황이 생길 수 있다. 이런 경우, 데이터의 정합성 이 깨지기 때문에 @Transactional 은 isolation(격리수준) 설정을 통해서 데이터들의 정합성을 맞춘다. 데이터의 정합성:...

OpenFeign으로 인한 순환참조 에러

직장동료가 테스트 코드를 작성하려 하니 OpenFeign(내가 작성한 코드)에서 순환참조가 일어나 테스트 코드가 제대로 돌아가지 않는다고 한다. 어서 해결해보자. 환경: spring boot + GraphQL OpenFeign 코드 @Service @RequiredArgsConstructor public class OpenFeignSe...

API 게이트웨이

사이드 프로젝트를 프론트 프로젝트 하나 + 백엔드 프로젝트 세 개로 구성하려고 한다. 하지만 이렇게 구성하게 되면, 프론트가 request를 보낼시 어떻게 백엔드의 알맞은 백엔드 프로젝트로 가는건지 궁금해서 찾아보게 되었다. Api Gateway, 왜 나온거야? 최근 마이크로 서비스 아키텍처 형태로 프로젝트들을 구성하면서 많은 프로젝트들의 ...

Docker 기본

도커를 쓰는 이유? 도커 없이 다운로드 받을 때는 Installer 다운로드 -> 실행 -> 에러 일 경우가 많다. Installer 자체가 외부(운영체제, 버전, 서버 등등)에 많은 영향을 받기때문에 하나하나 맞춰서 제대로 install 하는 게 어렵다. -> Docker를 통해 편하게 다운로드 가능하다. 도커는 무엇일까? 도커를 ...

Message Queue

사이드 프로젝트에 MQ를 사용해보고 싶은데, 정작 MQ가 무엇인지 제대로 이해하지 못하고 있는 거 같아서 정리해보았다. 메시지 큐를 이해하기 위해서는 먼저 IPC에 대해 알아야 한다. IPC (Inter Process Communication) 개념 프로세스 간 의사소통 하는 것을 의미하며, 서로 다른 프로세스가 데이터를 주고 받는다는 건...

파일 시스템

파일과 파일시스템 사용자 -> 운영체제 -> 운영체제가 파일들을 하드디스크에 안전하게 저장해준다. 파일관리자 운영체제는 파일관리를 위해 파일관리자를 둔다. 역할 파일 테이블을 이용해서 파일들을 관리하다. (메모리관리자가 페이지 테이블을 이용해서 메모리를...

입출력 장치

주변장치 주변장치는 메인보드의 버스와 연결된다. 하나의 버스는 Address, Data, Control 버스로 이루어져 있고 I/O(입출력) 디바이스는 이 세가지 버스를 따로 받을 수 있다. 각 하드웨어에 맞게 외부 인터페이스가 존재한다. 장치의 상태와 데이터를 보관하는 레지스터들이 존재한...

가상 메모리 2

디멘트 페이징(가져오기 정책) 바탕이 되는 지역성 이론 도널드 커누스의 90:10 - 프로그램 실행시, 90%의 시간이 10%의 코드에서 보내는 것 - 지역성 이론 (여기서 지역성이란?) - 1) 공간의 지역성 : 현재 위치에서 가까운 데이터에 접근할 확률이 높다. - 2) 시간의 지역성: 최근 접근했던 데이터가 예전에 접근했던 데...

가상 메모리 1

개요 : 컴퓨터마다 메모리용량은 다르고, 프로그램이 필요로 하는 메모리만큼 컴퓨터가 가지고 있지않다면 프로그램을 실행하지 못한다. -> 가상메모리가 해결한다. 프로세스는 물리메모리의 어느 주소에서 실행될지 고민할 필요가 없다. 메모리 관리자에게 요청을 하면 메모리 관리자가 알아서 메모리에 할당해 주기 때문에 언제나 0x0 번지에서 실행된다고 생...