본문 바로가기

전체 글

(174)
Sliding window와 Redis ZSET Redis ZSet(Sorted Set)이란? 기본 개념ZADD Sorted Set(ZSET)은 key, score, member로 구성됩니다.key: 하나의 ZSET 컬렉션을 대표하는 이름score: 정렬 기준이 되는 숫자 (double,) , 우리는 timestamp로 사용member: 실제 저장되는 값 (String)값은 중복 불가하지만, score는 중복 가능. member는 유일해야 함 (덮어쓰기 방지 위해 유일 값 필요)score를 기준으로 자동 정렬됩니다. 아래 예시는 "user1"과 "user2"는 각각 시간 score 기준으로 정렬ehlaZADD online-users 1717067600000 "user1"ZADD online-users 1717067610000 "user2" 주..
JPA 데이터 조회 구현 ; EntityFetch JPA Method, JPQL, QueryDSL, 네이티브SQL JPA에서 제공하는 주요 조회 쿼리 생성 방법JPA는 객체를 기반으로 검색할 수 있도록 여러 가지 방법을 제공합니다.조회 방법설명JPQL (Java Persistence Query Language)엔티티 객체를 대상으로 SQL과 유사한 문법으로 조회네이티브 SQLJPA에서 직접 SQL을 사용할 수 있도록 지원QueryDSLJPQL을 타입 안전하게 편리하게 작성할 수 있도록 도와주는 빌더 클래스 JPA Method 생성시 Method Naming 룰 in Spring Data JPAfindbyId : Id를 기준으로 해당하는 엔티티를 반환save() : PK에 해당하는 엔티티가 존재하지 않으면 create, 존해자면 update 함.업데이트 : jpa에서는 업데이트문이 존재하지 않고 find()로 엔티티..
C언어 정리 C언어 학습의 필요성리눅스 커널은 C로 작성되어 있습니다. 따라서 커널의 구조와 동작 방식을 이해하려면 C 언어에 대한 지식이 필요합니다.추상화 언어의 최적화 가능I/O 성능과 버퍼링 이해 가능: C를 통해 버퍼, 블로킹/논블로킹 I/O, 파일 디스크립터, select/poll 등 성능과 밀접한 개념 이해메모리, 포인터, 시스템 콜, 버퍼링, 프로세스/스레드 같은 개념을 C로 직접 경험하면,JVM·GC 내부 동작네트워크 I/O 병목대용량 데이터 처리 최적화성능 튜닝이런 영역에서 문제를 더 깊이 이해하고 해결할 수 있는 기반이 생깁니다. 포인터란?포인터(pointer)는 메모리 주소를 저장하는 변수입니다. 포인터기호& : 주소 연산자, ~의 주소를 구해라.* : 역참조 연산자, 그 주소에 있는 값을 가..
POSIX I/O와 스트림 UNIX의 철학 : 모든 것은 파일이다의 의미진짜 전부 파일이라는 뜻이 아니라,운영체제가 그것들을 '파일처럼 다룰 수 있게 만든다'는 의미입니다.즉, 운영체제가 다양한 자원을 파일 인터페이스로 추상화했다는 뜻 자원 종류설명실제 파일인가?파일처럼 다뤄지는가? (read, write, FD 사용 등)file.txt디스크 상의 실제 파일✅ 예✅ 예/dev/null쓰면 버리고, 읽으면 EOF 반환하는 특수 장치❌ 아니오✅ 예/dev/sda, /dev/tty0하드디스크, 터미널 등 물리 장치❌ 아니오✅ 예소켓 (AF_INET)TCP, UDP 같은 네트워크 통신❌ 아니오✅ 예stdin, stdout, stderr표준 입출력 스트림 (fd = 0, 1, 2)❌ 아니오✅ 예 파일인터페이스란진짜 물리적 파일이 아니더라..
운영체제의 표준화 : POSIX와 시스템 콜 WINDOW, MAC, LINUX 등 다양한 운영체제들이 공통 기능을 가지는 이유 POSIX, C 표준 라이브러리, OS 인터페이스의 역사적 통일성 때문이며, Windows조차도 일부 유닉스 스타일의 호환 계층을 갖거나, 유사하게 구현합니다. 즉, UNIX → POSIX → 공통 API의 역사적 발전 덕분에 가능한 겁니다. UNIX의 탄생과 분열AT&T Bell Labs (Ken Thompson, Dennis Ritchie) 에서 작고 단순하며 이식성 있는 운영체제 개발UNIX 철학모든 것은 파일이다 : 파일, 디바이스, 소켓 등 동일한 방식으로 접근프로그램은 하나의 일을 잘하라 : 프로그램은 하나의 일을 잘하라텍스트 기반 인터페이스 선호 : 로그, 설정, 파이프 연결의 표준화표준 입출력 기반 통신 :..
로그 로그 레벨 기준레벨운영 로그에 포함의미 및 사용 기준ERROR✅ 필수예외 및 치명적인 오류 상황 (사용자 영향 有)WARN✅ 권장예상하지 못한 상태이지만 무시하고 넘어갈 수 있는 경우INFO✅ 제한적 사용주요 비즈니스 흐름 (ex: 유저 로그인, 주문 완료 등)DEBUG❌ 기본 제외디버깅용 상세 정보, 개발 환경 전용TRACE❌ 제외매우 상세한 흐름 추적, 거의 사용 안 함 운영환경 로그 전략ERROR, WARN은 무조건 포함INFO는 중요한 비즈니스 흐름만 찍음DEBUG는 절대 포함하지 않음 (오류 재현 시 임시로만 허용)Profile(prod, dev)에 따라 구분해서 관리 운영 로그에 INFO가 포함될 수 있는 경우사용자 액션이 중요한 흐름을 만들 때 (예: 결제, 로그인, 배치 완료)시스템 상태 ..
전송계층 : TCP와 UDP 네트워크 I/O = 커널 네트워크 스택을 통해 커널 버퍼를 채우는 것 [Network Interface (NIC)] ↓[커널 네트워크 스택 (TCP/IP)] ↓[socket buffer (recv buffer)] ↓read() ↓[User Space buffer] NIC (Network Interface Card)LAN 카드, 무선 칩셋 등이곳에서 패킷이 수신됨.NIC 드라이버가 인터럽트를 발생시켜 커널에게 알림.커널 네트워크 스택 (TCP/IP)커널 내부에서Ethernet → IP → TCP (또는 UDP)로 패킷을 차례대로 처리.올바른 socket 에 연결되었는지 포트/시퀀스/ACK 번호 검사. socket buffersocket 구조체가 가진 recv ..
임시적인 rtsp생성과 서버 띄우기 ( ffmpeg , mediamtx) FFmpeg는 retry기능이 없으며 rtsp로 output하는 기능은 서버가 응답하지 않으면 fail 하니 MediaMTX부터 설정하는것이 좋다. ffmpeg -re -stream_loop -1 -i input.mp4 -c:v copy -f rtsp rtsp://localhost:8554/mystream[FFmpeg] → rtsp://localhost:8554/mystream (Push) ↓ [MediaMTX RTSP 서버] ↓VLC / OpenCV / 외부에서 rtsp://서버IP:8554/mystream 접속