본문 바로가기
728x90

분류 전체보기525

리눅스마스터 2급 CBT 정리 (1) CBT 기출문제 기준 1. 23년 12월 9일 2. 23년 9월 9일 개인적으로 공부할 요약본.CBT를 풀면서 틀리거나 헷갈리는 문제의 풀이를 정리.문제의 유형이 중복되어 겹치는 내용이 있을 수 있음.- LVM 구성할때 가장 먼저 생성되는것   PV(Physical Volume) -> VG(Volume Group) -> LV(Logical volume)- ALSA(Advanced Linux Sound Architecture) : 사운드 카드를 자동으로 구성하게 하고 다수의 사운드 장치 관리를 목적으로 사용 - CUPS(Common UNIX Printing System) : 애플이 개발한 오픈 소스 프린팅 시스템- SANE (Scanner Access Now Easy) : 스캐너 관련 API- OSS (O.. 2025. 4. 6.
RabbitMQ로 구현하는 비동기 메시지 큐(입문) 메시지 큐 : 시스템 간 데이터를 비동기적으로 전달하기 위한 중간 저장소. - 생산자(Producer)가 메시지를 보내고, 소비자(Consumer)가 받아 처리한다.- 비유: 우체국에서 편지를 보내는 것처럼, 발신자가 수신자를 기다리지 않고 우체통(큐)에 넣으면 배달원(소비자)가 가져가 처리하는 것. 동작원리- 생산자 : 데이터를 메시지로 만들어 큐에 전송- 큐 : 메시지를 순서대로 저장, 소비자가 준비될 때까지 보관- 소비자 : 큐에서 메시지를 꺼내 처리- 비동기성 : 생산자와 소비자가 서로를 기다리지 않음- 메시지보장 : 설정에 따라 메시지가 손실되지 않도록 보장 가능   장점- 비동기 : 생산자와 소비자가 독립적으로 동작- 부하분산 : 처리 속도 차이 완충- 확장성 : 다중 소비자로 작업 분산예로는.. 2025. 4. 5.
java.lang.IllegalArgumentException: SimpleMessageConverter only supports String, byte[] and Serializable payloads, received: com.backend.curriculum.rabbitMq.TransferRequest 에러내용java.lang.IllegalArgumentException: SimpleMessageConverter only supports String, byte[] and Serializable payloads, received: com.backend.curriculum.rabbitMq.TransferRequest 에러원인- RabbitMQ에서 메시지를 전송할 때 사용하는 기본 MessageConverter가 TransferRequest 객체를 처리할 수 없어서 발생- TransferRequest를 RabbitMQ가 이해할 수 있는 형식으로 변환하거나, 적절한 MessageConverter를 설정  해결방법RabbitMqConfig.class (AS-IS)@Configurationpublic class .. 2025. 4. 4.
Spring Boot로 구현하는 이벤트 기반 비동기 처리 (입문) 이벤트 기반 개발 : 시스템이 이벤트를 발생시키고, 이를 구독(Listener) 하는 컴포넌트가 반응하는 방식비유하자면 카페에서 주문(이벤트)을 하면 바리스타가 커피를 만드는 것처럼, 작업이 분리되어 처리하는 방식이다. 장점- 느슨한 결합 : 이벤트 발행자와 소비자가 독립적- 확정성 : 비동기 처리로 부하 분산- 반응성 : 실시간 처리 가능- 예시 : 계좌 이체 후 이메일 알림, 결제 완료 후 재고 감소 등 Spring에서의 이벤트 처리도구 - ApplicationEvent : 이벤트 정의- AppliactionEventPublisher : 이벤트 발행- @EventListener : 이벤트 수신- 비동기 : @Async로 이벤트 처리 비동기화  Executor- Java 에서 비동기 작업을 실행하기 위.. 2025. 4. 3.
Spring Boot와 Redis로 입문자용 구현 Redis(Remote Dictionary Server) : 인메모리 데이터 구조 저장소로, 키-값 쌍을 빠르게 저장하고 조회할 수 있는 오픈소스 NoSQL Redis 주요 특징- 메모리 기반 ㄴ디스크 기반 DB(MySQL)보다 훨씬 빠름 (수십만 QPS 처리 가능). ㄴ단점: RAM 크기에 따라 저장량 제한, 전원 끄면 데이터 손실 (설정으로 보완 가능). - 다양한 데이터 구조 지원   ㄴ문자열(String): 기본 키-값 (예: SET key value).   ㄴ리스트(List): 순서 있는 데이터 (예: LPUSH, RPOP).   ㄴ해시(Hash): 필드-값 쌍 (예: HSET user id 1 name 홍길동).   ㄴ셋(Set): 중복 없는 집합 (예: SADD).   ㄴ정렬된 셋(Sorte.. 2025. 4. 2.
Docker 기본개념 및 Docker CLI 익히기 인프런의 비전공자도 이해할 수 있는 Docker 입문/실전 강의를 참고하여 작성  docker 를 사용하는 이유는 이식성이다.이식성 : 특정 프로그램을 다른 곳으로 쉽게 옮겨서 설치 및 실행할 수 있는 특성 docker- 컨테이너를 사용해서 각각의 프로그램을 분리된 환경에서 실행 및 관리할 수 있는 툴 Container - 하나의 컴퓨터 환경 내에서 독립적인 컴퓨터 환경을 구성해서, 각 환경에 프로그램을 별도로 설치할 수 있게 만든 개념    ㄴ 디스크 (저장공간) : 각 컨테이너마다 서로 각자의 저장 공간을 갖는다. (다른 컨테이너에서 내부에 접근 불가)    ㄴ 네트워크 (IP, PORT) : 각 컨테이너마다 고유의 네트워크를 가지고 있다.- 하나의 컴퓨터 환경 내에서 여러개의 미니 컴퓨터 환경을 구.. 2025. 4. 1.
[자바 멀티스레딩] 자바 동시성 고급: ConcurrentHashMap 사용법 ConcurrentHashMap 은 멀티스레드 환경에서 데이터를 안전하고 효율적으로 관리할 때 자주 사용하는 클래스다.예로, 웹 서버에서 사용자 요청 수를 집계하거나 캐시 데이터를 저장할 때, 데이터 충돌 없이 빠르게 동작한다. ConcurrentHashMap- 동시성 환경에서 안전한 해시맵 구현체- Java8 부터는 CAS(Compare And Swap) 와 세밀한 락으로 동시성 최적화.- 읽기는 락 없이, 쓰기는 최소 범위만 락 걸림- 기본 초기 용량값은 16  사용목적- 멀티스레드 환경에서 데이터 일관성 유지 및 성능 향상 주요메서드- put(K key, V value): 키-값 쌍 추가 또는 갱신- get(Object key): 키로 값 조회- remove(Object key): 키-값 쌍 삭제-.. 2025. 4. 1.
[자바 멀티스레딩] 자바 동시성 고급: CountDownLatch 사용법 CountDownLatch 는 스레드 간 동기화를 위해 특정 조건이 완료될 때까지 대기하는 도구이다. 목적- 여러 스레드가 작업을 끝낸 후 다음 단계를 진행하도록 보장 동작원리- 초기 카운트를 설정하고, 각 작업 완료 시 countDown() 으로 카운트 감소- await() 호출 스레드는 카운트가 0이 될 때까지 블록 주요 메서드- CountDownLatch(int count): 초기 카운트 설정. 작업 수에 맞게 지정- await(): 카운트가 0이 될 때까지 대기- await(long timeout, TimeUnit unit): 타임아웃 설정 후 대기- countDown(): 카운트 1 감소. 0이 되면 대기 해제- getCount(): 현재 카운트 조회  장점- 단순성 : 락보다 직관적이며, 작업.. 2025. 3. 31.
[자바 멀티스레딩] 자바 동시성 고급: ReentrantLock 사용법 ReentrantLock 은 syncronized 보다 유연한 동기화 도구이다.세밀한 제어가 간으하며, 인터럽트 처리를 지원한다. 또한 락 상태 확인이 가능하다. ReentrantLock- 같은 스레드가 락을 여러 번 획득 가능하며, 획득 횟수만큼 해제 필요- ReentrantLock(true) 로 공정모드 설정. 대기 순서 보장(성능 저하 가능)- Condition 객체로 특정 조건 기다림- tryLock(long, TimeUnit) 으로 락 획득 시간 제한 가능  - 세밀한 제어 가능하며 인터럽트 처리를 지원- 코드 복잡도가 증가하며, unlock() 메서드 누락 시 데드락 위험 public class LockCounter { private int count = 0; private fina.. 2025. 3. 30.
728x90