본문 바로가기

Database Study7

fsync() 와 O_SYNC() fsync()와 O_SYNC는 파일 시스템에서 데이터를 안전하게 디스크에 기록하기 위한 동기화 메커니즘입니다. 두 가지 모두 데이터를 안정적으로 저장하기 위한 중요한 역할을 하지만, 사용하는 방식과 동작 방식에 차이가 있습니다.  1. fsync()fsync()는 파일 시스템에서 파일의 데이터를 디스크에 강제로 기록(플러시)하는 시스템 호출입니다. 이는 데이터를 디스크에 안전하게 저장하기 위한 함수로, 운영 체제의 캐시 또는 버퍼에 저장된 데이터를 디스크로 내보내고, 해당 데이터가 실제 디스크에 완전히 기록될 때까지 기다립니다.사용 이유:일반적인 파일 쓰기 작업에서는 데이터가 먼저 메모리나 캐시에 저장되며, 디스크에 기록되는 작업은 운영체제에 의해 지연될 수 있습니다.시스템이 갑자기 종료되거나 충돌할 경.. 2024. 9. 11.
뮤텍스(Mutex)와 세마포어(Semaphore) **뮤텍스(Mutex)**와 **세마포어(Semaphore)**는 모두 동시성 프로그래밍에서 **상호 배제(Mutual Exclusion)**를 구현하기 위해 사용되는 동기화 기법입니다. 이들은 멀티스레드 환경에서 공유 자원에 대한 접근을 제어하는 데 사용되며, 서로 다른 스레드가 자원을 동시에 수정하지 못하게 방지합니다. 이 두 개념은 비슷하지만, 동작 방식과 사용 목적에서 차이가 있습니다.1. 뮤텍스(Mutex, Mutual Exclusion)뮤텍스는 "Mutual Exclusion"의 줄임말로, 하나의 스레드만 자원에 접근할 수 있도록 보장하는 락입니다.주요 특징:단일 접근: 한 번에 오직 하나의 스레드만 락을 획득하고, 자원에 접근할 수 있습니다. 다른 스레드들은 락이 해제될 때까지 대기해야 합니.. 2024. 8. 16.
데이터베이스 트랜잭션에서 ACID 데이터베이스 트랜잭션에서 ACID는 네 가지 중요한 속성을 나타내며, 이 속성들은 데이터베이스의 무결성과 안정성을 보장하는 데 핵심적인 역할을 합니다. 각각의 속성에 대한 설명과 함께 예시를 통해 설명하겠습니다.1. Atomicity (원자성)정의: 트랜잭션 내의 모든 작업이 전부 실행되거나, 전혀 실행되지 않은 것처럼 보장되어야 한다는 속성입니다. 트랜잭션이 수행되는 도중에 일부 작업만 실행되고 나머지가 실패하면, 트랜잭션 전체가 취소(롤백)되어야 합니다.예시: 은행에서 고객이 A 계좌에서 B 계좌로 100달러를 이체하는 경우를 생각해봅시다. 이 트랜잭션은 두 가지 작업으로 구성됩니다:A 계좌에서 100달러 인출.B 계좌에 100달러 입금.만약 첫 번째 작업(A 계좌에서 100달러 인출)은 성공했지만 .. 2024. 8. 14.
FileReader와 BufferedReader Java에서 FileReader와 BufferedReader는 파일로부터 텍스트 데이터를 읽어들이는 데 사용됩니다. FileReader는 파일을 읽기 위한 기본적인 클래스이고, BufferedReader는 파일을 효율적으로 읽기 위해 FileReader에 버퍼링 기능을 추가한 클래스입니다. 이 두 클래스는 파일 입출력 작업에서 자주 사용됩니다. 1. FileReader                 FileReader는 파일로부터 문자 데이터를 읽기 위한 기본 클래스입니다. 파일을 문자 단위로 읽으며, 바이트 스트림을 문자 스트림으로 변환하는 역할을 합니다.예시import java.io.FileReader;import java.io.IOException;public class FileReaderExampl.. 2024. 8. 12.
UML(Unified Modeling Language) [참고] UML은 다이어그램을 사용하여 시스템이나 데이티베이스를 시각화하는 방법입니다.소프트웨어 개발에서 소프트웨어 시스템을 계획하기 위해 자주 사용됩니다. UML Diagram Type   UML Class DiagramUML (Unified Modeling Language) 클래스 다이어그램은 소프트웨어 시스템의 클래스들과 그들 간의 관계를 시각적으로 표현하는 도구입니다. UML 클래스 다이어그램은 주로 객체 지향 소프트웨어 개발 과정에서 사용되며, 시스템의 구조를 분석하고 설계하는 데 중요한 역할을 합니다.클래스 다이어그램은 시스템의 초기 설계 단계에서 매우 유용하며, 개발자들이 시스템의 구조를 명확하게 이해하고, 객체 간의 상호작용을 쉽게 파악할 수 있게 도와줍니다. 또한, 클래스 다이어그램은 시.. 2024. 8. 5.
Artifact 소프트웨어 개발에서 "아티팩트(Artifact)"는 개발 과정에서 생성된 모든 산출물을 의미합니다. 이는 문서, 소스 코드, 실행 파일, 테스트 스크립트 등 다양한 형태로 존재할 수 있습니다. 아티팩트는 소프트웨어 개발 생명주기(SDLC)의 각 단계에서 생성되며, 프로젝트 관리, 유지보수, 협업에 중요한 역할을 합니다. 주요 아티팩트 종류요구사항 문서: 시스템의 요구사항을 명세한 문서입니다. 예를 들어, 소프트웨어 요구사항 명세서(SRS)가 포함될 수 있습니다.설계 문서: 시스템 설계와 관련된 문서입니다. 예를 들어, 아키텍처 다이어그램, 데이터베이스 설계 문서 등이 있습니다.소스 코드: 실제 구현된 프로그램 코드입니다.컴파일된 바이너리: 소스 코드를 컴파일한 후 생성된 실행 파일이나 라이브러리 파일입니.. 2024. 8. 5.