목록분류 전체보기 (16)
The Office Lover

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..