나의 개발일지



· Database
ACID ACID는 데이터베이스 트랜잭션이 안전하게 수행된다는 것을 보장하기 위한 성질을 가리키는 약어입니다. 데이터베이스에서 데이터에 대한 하나의 논리적 실행단계를 트랜잭션이라고 합니다. 예를 들어, 은행에서의 계좌이체를 트랜잭션이라고 할 수 있는데 계좌이체 자체의 구현은 내부적으로 여러 단계로 이루어질 수 있지만 전체적으로는 '송신자 계좌의 금액 감소', '수신자 계좌의 금액 증가'가 한 동작으로 이루어져야 하는 것을 의미합니다. "읽기와 쓰기를 하나의 논리적 단위로 묶는 방법" 이라고 정의할 수 있습니다. 또한, 묶여진 단위는 commit 되거나 rollback 이라는 기능이 보장되어야 합니다. 1️⃣ Atomicity ACID에서 원자성이라고 하면, client가 쓰기 몇 개의 작업을 수행하고자 ..
· Database
혹시 보기만 해도 답답해지는 고스트의 락다운을 생각하셨나요..? 락(Lock)이란? Database에서 사용하는 개념으로 트랜잭션의 순차성을 보장하기 위한 방법 중 하나입니다. 트랜잭션이란 데이터베이스의 상태를 변화시키는 하나의 논리적 기능을 수행하기 위한 작업의 단위 또는 한꺼번에 모두 수행되어야 할 일련의 연산들을 의미합니다. 이러한 Database의 특징을 Atomic하다고 말합니다. 락을 획득한다는 것은 자원을 사용해도 된다는 의미이며, 다른 프로세스는 현재 락을 획득한 프로세스가 잠금을 건 자원에 대해서 사용할 수 없음을 의미합니다. 추가적으로, 락을 획득한다는 것은 "락이 존재하는지 확인한다", "존재하지 않는다면 락을 획득한다" 라는 두 연산이 atomic하게 이루어져야 합니다. ✔️ Ato..
· Java
스프링으로 개발을 할 때, 우리는 기본적으로 Service과 Repository 라는 컴포넌트를 만들고 Service에 @Autowired 라는 어노테이션을 통해 Repository를 주입시킵니다. 이러한 과정을 DI(Dependency Injection) 즉, 의존성 주입이라고 합니다. 다음과 같은 테스트 클래스를 작성해 확인해봅시다. package com.example.demo; import org.junit.Assert; import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.c..
· Java
abstract class abstract class. 즉 추상 클래스는 클래스들 간에 비슷한 필드와 메서드를 공통적으로 추출해 만든 클래스를 말한다. concrete class 는 실체가 드러나는 클래스, 추상 클래스는 실체 클래스의 공통적인 부분을 추출해 어느정도 규격을 잡아놓은 추상적인 클래스이다. 그래서 concrete class가 실제 객체를 생성할 정도의 구체성을 가지는 반면 추상 클래스는 아직 메서드와 내용이 추상적이기 때문에 객체를 생성할 수 없게 만들었다. 추상 클래스와 실체 클래스는 상속적인 관계를 가지고 있다. 사용하는 이유 1. 공통된 필드와 메서드를 통일할 목적 추상 클래스에서 미리 정의한 필드와 메서드가 있으면 실체 클래스는 추상 클래스의 필드와 메서드명을 변경할 수 없고 무조건..
· Java
1. 운영체제에 독립적이다. 기존의 언어는 한 운영체제에 맞게 개발된 프로그램을 다른 종류의 운영체제에 적용하기 위해서 많은 노력을 기울였지만, Java에서는 더 이상 그런 노력을 하지 않아도 된다. 이것은 일종의 에뮬레이터인 자바 가상 머신(JVM)을 통해서 가능한 것인데, 자바 응용프로그램은 운영체제나 하드웨어가 아닌 JVM하고만 통신하고 JVM이 자바 응용프로그램으로부터 전달받은 명령을 해당 운영체제가 이해할 수 있도록 변환하여 전달한다. 자바로 작성된 프로그램은 운영체제에 독립적이지만 JVM은 운영체제에 종속적이어서 썬에서는 여러 운영체제에 설치할 수 있는 서로 다른 버전의 JVM을 제공하고 있다. 그래서 자바로 작성된 프로그램은 운영체제와 하드웨어에 관계없이 실행 가능하며 이것을 'Write O..
· Java
JVM, Java Virtual Machine에 대한 정리 글 Java의 중요한 특징 Java의 첫번째 큰 특징은 플랫폼(OS) 독립적인 개발이 가능하다는 것이다. 플랫폼 독립적이라는 것은 구동되는 환경에 구애받지 않고 실행될 수 있도록 하고 다양한 환경 간 호환성을 유지한다는 뜻이다. 예를 들어 C 계열 언어로 작성된 프로그램들은 Windows 환경에서 빌드됐다면 그 프로그램을 그대로 macOS나 linux로 가져가서 실행할 수 없다. 그러나 Java로 작성된 프로그램은 플랫폼에 맞는 JVM만 설치되어 있다면 문제 없이 동작한다. 두 번째 큰 특징으로는, 자동으로 메모리를 관리해준다는 것이다. Java 이전의 엔지니어들이 프로그램 메모리를 스스로 관리했다면, Java 이후의 엔지니어들은 자동으로 메모리..
keep it real
'분류 전체보기' 카테고리의 글 목록 (2 Page)