CS/CS

버퍼 (Buffer)

annovation 2025. 1. 4. 10:02

버퍼 (Buffer)

버퍼(Buffer)는 데이터를 임시로 저장하는 공간입니다.

  • 주된 목적 입출력 속도의 차이를 조정하거나 데이터를 효율적으로 처리하기 위함입니다.
  • 주로 메모리(RAM)에 저장되며, 입력/출력 장치 간의 데이터 전송 효율성을 높이는 데 사용됩니다.

필요성

1. 속도 차이 조정

  • 컴퓨터의 CPU는 매우 빠르지만, 입출력 장치(디스크, 네트워크, 파일 등)는 상대적으로 느림
  • 버퍼는 데이터를 CPU와 입출력 장치 간에 중간에 임시로 저장하여 속도 차이를 줄임

2. 데이터 처리 효율성

  • 데이터를 한 번에 처리하기 위해 일정량을 모아 두는 역할
  • ex. 네트워크 데이터 전송에서 작은 데이터 여러 개를 모아 큰 덩어리로 전송하면 성능이 더 좋아짐

원리

  • 데이터를 버퍼에 저장
  • 버퍼가 가득 차거나 특정 조건이 만족되면 데이터를 한꺼번에 처리하거나 전송
  • 데이터를 처리한 후 버퍼를 비우고, 새로운 데이터를 저장

예시

1. StringBuffer

public class Main {
    public static void main(String[] args) {
        // StringBuffer 객체 생성
        StringBuffer sb = new StringBuffer("Hello");

        // 문자열 추가
        sb.append(" World"); 
        System.out.println("After append: " + sb); // 출력: Hello World

        // 특정 위치에 문자열 삽입
        sb.insert(6, "Java ");
        System.out.println("After insert: " + sb); // 출력: Hello Java World

        // 특정 범위의 문자열 삭제
        sb.delete(6, 11);
        System.out.println("After delete: " + sb); // 출력: Hello World

        // 문자열 뒤집기
        sb.reverse();
        System.out.println("After reverse: " + sb); // 출력: dlroW olleH
    }
}

 

2. StringBuilder

public class Main {
    public static void main(String[] args) {
        StringBuilder sb = new StringBuilder("Hello");
        sb.append(" World"); // 내부 버퍼에서 문자열 조작
        System.out.println(sb); // 출력: Hello World
    }
}

Buffer VS Cache

특징 버퍼(Buffer) 캐시(Cache)
목적 데이터 전송 효율성 증대 자주 사용되는 데이터 접근 속도 향상
위치 주로 메모리(RAM)에 존재 CPU, 메모리 등 다양한 위치
동작 방식 데이터를 모아 처리하거나 전송 자주 사용되는 데이터를 미리 저장
사용 예 BufferedReader, BufferedWriter CPU 캐시, 메모리 캐시

출처

OpenAI ChatGPT (https://openai.com)

반응형

'CS > CS' 카테고리의 다른 글

API, Library, Framework  (0) 2025.01.08
CRUD  (0) 2025.01.07
메서드 체이닝(Method Chaining)  (0) 2024.12.05
명령형(imperative) VS 선언형(declarative) 프로그래밍  (1) 2024.12.05
레이어드 아키텍처 응용 (Layered Architecture)  (0) 2024.12.03