목록전체 글 (16)
The Office Lover
소개 객체지향 프로그래밍은 유지보수성과 재사용성으르 높이기 위해 다양한 설계 원칙을 제공합니다. 이 중에서도 '단일 책임 원칙'은 클래스나 모듈이 하나의 책임만을 가져야 한다는 원칙으로, 객체지향 개발의 기본이 되는 중요한 원칙입니다. 단일 책임 원칙에 대해 알아보고, 어떻게 적용하는지 예시를 살펴보겠습니다. 단일 책임 원칙이란? 정의 : 한 클래스는 하나의 책임을 가져야 한다. 거대하고 포괄적인 클래스를 설계하는 대신, 작은 단위와 단일 기능을 가진 클래스를 설계해야 합니다. 즉, 클래스에 비즈니스와 관련 없는 기능이 두 개 이상 포함되어 있으면 책임이 단일하지 않으므로, 단일 기능을 가진 여러 개의 작은 클래스로 분할되어야 합니다. 단일 책임 원칙의 장점 유지보수성과 가독성이 크게 향상됩니다. 클래스..
PostgreSQL의 주요 특징 - RDMBS : Relational Database Management System 1. 오픈소스 2. 객체-관계형 데이터베이스 : PostgreSQL은 기본적으로 관계형 데이터베이스 시스템이지만, 확장 기능으로 객체-관계형 데이터베이스의 특징을 지원합니다. 이런 특징을 토대로 복잡한 데이터 구조를 모델링하고 관리하는 데 용이합니다. 3. ACID 준수 : ACID(원자성, 일관성, 고립성, 지속성) 원칙을 준수하여 데이터의 안정성과 무결성을 보장합니다. 이로 인해 데이터베이스 트랜잭션의 신뢰성이 높습니다. 4. 확정성 : 대규모 데이터베이스 시스템을 지원하도록 설계되었습니다. 복제, 파티셔닝, 로드 밸런싱과 같은 기능을 통해 성능과 가용성을 개선할 수 있습니다. 5. ..
IO (Input / Output) 자바의 IO는 Input과 Output을 처리하는 방법입니다. InputStream과 OutputStream 클래스 계열을 사용하여 데이터를 읽고 쓰는 작업을 수행합니다. IO는 스트림(stream) 개념을 기반으로 하며, 한 번에 하나의 데이터를 읽고 쓰는 방식입니다. 아래는 대표적인 IO클래스 입니다. FileInputStream FileOuputStream BufferedReader BufferedWriter IO는 단순하고 직관적인 인터페이스를 제공하지만, 대량의 데이터를 처리할 때는 비효율적일 수 있습니다. import java.io.*; public class IOExample { public static void main(String[] args) { tr..
Blocking I/O (블로킹 입출력) Blocking I/O는 입출력 작업 중에 해당 작업이 완료될 때까지 스레드가 블로킹되는 방식입니다. 즉, 입출력 작업이 완료되기 전까지 해당 스레드는 다른 작업을 수행할 수 없으며 대기 상태에 있게 됩니다. 입출력 작업은 데이터를 읽어오거나 쓰는 동안 스레드가 멈추기 때문에 해당 작업이 오래 걸리는 경우, 다른 작업들의 처리도 지연될 수 있습니다. import java.io.*; public class BlockingIOExample { public static void main(String[] args) { try { FileInputStream fileInputStream = new FileInputStream("input.txt"); byte[] data ..
개요 @Transactional은 스프링 프레임워크에서 트랜잭션 관리를 선언적으로 처리하는 데 사용되는 어노테이션입니다. 이를 사용하여 트랜잭션의 시작과 종료, 속성 설정, 롤백 처리 등을 자동화할 수 있습니다. 적용 범위 클래스 인터페이스 메서드 해당 범위에서 적용 가능하며, 어노테이션이 붙은 범위 내에서 트랜잭션이 관리됩니다. 적용 범위에 따른 우선순위 1. 메서드(Method) > 클래스(Class) > 인터페이스(Interface) > 빈(Bean) 메서드 단위에 @Transactional 어노테이션이 적용된 경우, 해당 메서드의 트랜잭션 설정이 우선적으로 적용됩니다. 클래스 단위에 적용된 경우 해당 클래스의 모든 public 메서드에 영향을 미치지만, 메서드 단위에서 재정의 된 설정이 있다면 메..
1. Dirty Read 한 트랜잭션(T1)이 아직 커밋되지 않은 다른 트랜잭션(T2)에 의해 변경된 데이터를 읽는 현상을 말한다. 만약 T2가 롤백되면, T1이 읽은 데이터는 더 이상 유효하지 않게 됩니다. 이러한 현상을 방지하기 위해, 일반적으로 트랜잭션은 자신이 커밋되지 않은 다른 트랜잭션의 변경사항을 볼 수 없도록 격리됩니다. 2. Non-Repeatable Read 한 트랜잭션(T1) 내에서 동일한 쿼리를 두 번 실행했을 때, 그 사이에 다른 트랜잭션(T2)이 값을 변경하거나 삭제함으로써 두 쿼리의 결과가 서로 다르게 나오는 현상을 말합니다. 이를 방지하기 위해, 일반적으로 트랜잭션은 동일한 데이터에 대해 동시에 두 개 이상의 트랜잭션이 변경을 수행하지 못하도록 잠금을 설정하게 됩니다. 3. P..