버퍼 (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 |