| 일 | 월 | 화 | 수 | 목 | 금 | 토 | 
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | |||
| 5 | 6 | 7 | 8 | 9 | 10 | 11 | 
| 12 | 13 | 14 | 15 | 16 | 17 | 18 | 
| 19 | 20 | 21 | 22 | 23 | 24 | 25 | 
| 26 | 27 | 28 | 29 | 30 | 31 | 
- 너비우선탐색
- DynamicProgramming
- 프로그래머스
- 그리디
- Network
- 깊이우선탐색
- Backtracking
- 동적계획법
- Spring
- 부분수열의합
- Algorithm
- 알고리즘
- greedy
- 우선순위큐
- JPA
- 백트래킹
- 네트워크
- 스프링
- dynamic programming
- programmers
- ReactiveProgramming
- BFS
- 해시맵
- boj
- 브루트포스
- DFS
- 구현
- 백준
- DP
- 이분탐색
- Today
- Total
목록2025/10 (7)
옌의 로그
 FFmpeg와 RTMP 서버로 오디오 스트리밍 실험하기
			
			
				FFmpeg와 RTMP 서버로 오디오 스트리밍 실험하기
				실시간 음원 스트리밍은 어떻게 구현할 수 있을까?라는 궁금증에서 시작된 작은 실험 기록 FFmpeg와 HLS, RTMP란?FFmpeg: 멀티미디어 변환 툴FFmpeg은 오디오·비디오를 인코딩 / 디코딩 / 변환 / 스트리밍할 수 있는 오픈소스 멀티미디어 프레임워크다.거의 모든 포맷 지원 (mp3, mp4, flv, mpeg 등)실시간 변환 및 송출 가능 (-re, -f flv, -c:a aac 등)방송, CCTV, OTT 등 다양한 시스템에서 내부적으로 사용됨FFmpeg 명령어 옵션더보기FFmpeg 옵션옵션전체 표기의미비고 / 사용시점-re-re입력 속도를 실시간(real-time) 으로 제한주로 스트리밍 송출 시 사용. 파일을 한 번에 처리하지 않고 실제 재생 속도로 읽음-i-i 입력 파일 지정예: -..
문제[프로그래머스] 단어 변환 프로그래머스SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 사용 알고리즘- BFS (너비우선탐색) / 그래프 탐색- 시간복잡도 O(N² × L) (N: 단어개수, L: 단어길이) 해결방법단어 배열에 타겟이 있는지 체크 후, 없다면 바로 종료(return 0)해준다각 단어를 노드로 보고, 한 글자만 다른 단어를 간선(edge)으로 연결해 그래프를 먼저 만든다begin과 한 글자 차이나는 단어들을 시작 노드로 보고 큐에 먼저 넣은 후 BFS를 돌린다BFS는 가까운 단어부터 탐색하므로, 타겟 단어에 처음 도달한 시점의 단계 수가 곧 최단 변환 횟수가 된다소스코드사용언어 : javaimport ja..
 [Reactive Programming] 마블 다이어그램(Marble Diagram)
			
			
				[Reactive Programming] 마블 다이어그램(Marble Diagram)
				본 포스팅은 스프링으로 시작하는 리액티브 프로그래밍 책을 참고하여 작성하였습니다. ( _ _)마블 다이어그램(Marble Diagram) 이란?마블 다이어그램은 비동기적인 데이터 흐름을 시간의 흐름에 따라 시각적으로 표시한 다이어그램을 의미한다.그림에서 두 개의 타임라인이 존재하는데, 첫 번째가 Publisher가 데이터를 emit 하는 타임라인이다두 번째는 Operator 함수에서 가공 처리되어 출력으로 내보내진 데이터의 타임라인이다Marble로 표시된 데이터는 Publisher가 emit하는 데이터를 의미한다. 타임라인은 왼쪽에서 오른쪽으로 시간이 흐르는 것을 의미하기 때문에 가장 왼쪽에 있는 1번 구슬이 시간상으로 가장 먼저 emit된 데이터이다중간 박스는 Publisher로부터 전달받은 데이터를 ..
문제[프로그래머스] 숫자 게임(Summer/Winter Coding(~2018))사용 알고리즘- 투 포인터 (two pointer) / Greedy- 시간복잡도 O(N logN)해결방법A, B를 모두 오름차순 정렬A의 각 원소에 대해, B에서 A보다 큰 숫자를 찾아 이긴 횟수를 증가시킨다소스코드사용언어 : javaimport java.util.*;class Solution { public int solution(int[] A, int[] B) { int answer = 0; // A, B 오름차순 정렬 Arrays.sort(A); Arrays.sort(B); int j = 0; // B inde..
문제[프로그래머스] 야근 지수사용 알고리즘- Heap / Greedy- 우선순위 큐 (PriorityQueue)- 시간복잡도 O(n logN) (n: 남은 시간, N: 작업 수)해결방법주어진 works를 우선순위 큐에 작업량이 많은 순으로(내림차순) 넣는다남은 작업시간 n 동안 반복문을 돌면서, 가장 많은 작업량을 가진 일을 찾아서(조회) 1씩 줄이고 다시 큐에 넣는다이 동작을 효율적으로 처리하기 위해 힙 구조를 사용소스코드사용언어 : javaimport java.util.*;class Solution { public long solution(int n, int[] works) { long answer = 0; PriorityQueue pq = new PriorityQueu..
최근 실무에서(이 포스팅의 연장선이다 ㅎㅋㅋ), 아래와 같은 이벤트 리스너 코드를 작성했는데 이상한 현상을 발견했다.@Slf4j@RequiredArgsConstructor@Componentpublic class MessageEventHandler { private final MessageRepository messageRepository; @Transactional @TransactionalEventListener( phase = TransactionPhase.AFTER_COMMIT, fallbackExecution = true ) public void handleCreateTemplateMessageEvent(MessageByTemplateReques..
조회쿼리 작성시 연관관계를 갖는 경우, transform을 처음에 사용하려했었는데, 이 때 발견한 커넥션 leack 문제에 대해 포스팅하고자 한다. Querydsl transform()이란?transform()은 Querydsl에서 그룹핑된 데이터를 원하는 구조로 변환할 때 사용하는 메서드이다.일반적인 fetch()는 단순히 List 형태로 데이터를 반환하지만,transform()은 결과를 Map이나 DTO 등으로 그룹핑 및 가공해서 반환할 수 있게 해준다.groupBy().transform() 형태로 많이 사용됨 예를 들어, 아래처럼 1:N 관계의 데이터를 조회할 때하나의 작가가 여러 권의 책을 갖고 있을 때하나의 주문에 여러 주문상품이 연결되어 있을 때하나의 게시글에 여러 댓글이 달릴 때 등등 @E..