본문 바로가기

전체 글

(174)
파이썬 개발환경설정 Poetry는 Python에서 Gradle 같은 존재pip + venv + requirements.txt + setup.py = 전부 흩어져있던 걸Gradle처럼 하나의 선언적 구성(pyproject.toml)으로 통합 관리합니다. PoetrypoetryLockpipvenvtomlprismafastapi등등
데이터베이스 쿼리 동작 분석 Estimated Scan Times (Assuming No Index)Number of RowsEstimated Time (Disk-Based Query)1,000 rows~1 ms - 10 ms10,000 rows (efficient enough)~10 ms - 100 ms100,000 rows (warning zone)~100 ms - 500 ms1,000,000 rows (critical bad performance)~1 sec - 5 sec10,000,000+ rows5 sec - 20 sec+ (severe slowdown) SQL 해석순서SQL logical query processing orderFROM – The tables are determined.JOIN (if any) – The..
POSIX multiplexing Non-blocking I/Ofcntl(fd, F_SETFL, O_NONBLOCK);이걸 설정하면 read() / write() 가 → 데이터가 없을 때 blocking 하지 않고 즉시 -1(EAGAIN) 을 리턴.해당 방식의 문제점은 사용자가 직접 polling 해야함while (1) {read(fd, ...);sleep(1); // or 그냥 busy loop} Multiplexing (select, poll, epoll)epoll_fd = epoll_create1(0);epoll_ctl(epoll_fd, EPOLL_CTL_ADD, socket_fd, &event);epoll_wait(epoll_fd, events, max_events, timeout);여러 fd 를 커널에게 한번에 맡기고 ready..
이벤트 드리븐 event driven이란?Event Driven = "외부에서 무언가 발생했을 때 (event), 그에 반응해서 (callback or handler) "비즈니스 로직이 실행되는 구조." 즉, 설계관점에서 Event driven 이라는 건외부에서 어떤 event(데이터, 신호, 메시지) 가 들어오면그것을 event loop (혹은 dispatcher) 가등록된 handler (callback) 에게 넘겨서필요한 로직을 실행하는 구조.대표적인 Event Driven 시스템 예시🖥 서버 / 네트워크 예시 설명Node.js단일 event loop 기반, HTTP/socket, callback 구조Netty (Java)NIO 기반 event loop, channelPipeline handler 로 이벤트 ..
RabbitMQ : Java Client 통신구조 RabbitMQ 와 client 의 통신 구조 전반RabbitMQ와 Connection 1개당 메인 쓰레드를 생성하고 read()를 동해서 메인 쓰레드는 Socket에 데이터가 들어올때까지 Block 상태로 대기한다. Socket에 데이터가 들어오면 메인쓰레드는 Woker Thread에게 callback 함수를 전달하여 후속 로직을 실행한다.이벤트 드리븐 아키텍쳐지만 non blocking event loop구조는 아니다 왜냐면 MQ client 는 보통 많은 connection 을 열 필요가 없음 Kafka, RabbitMQ, NATS, Redis Streams 등 MQ client 들은 한 application 이 broker 와 보통 1~5개 connection 만 유지합니다. epoll, kqu..
ERD 작성 https://www.erdcloud.com/ ERDCloudDraw ERD with your team members. All states are shared in real time. And it's FREE. Database modeling tool.www.erdcloud.com
트리 구조 API (메뉴트리, 댓글트리) 트리 구조 API란트리 구조 API는 계층형 데이터(부모-자식 관계)를 클라이언트에 구조적으로 전달하는 API입니다.프론트엔드는 이 API를 통해 트리 형태의 UI를 구성합니다. 이 구조가 널리 쓰이는 이유✅ 프론트에서 바로 사용 가능React, Vue, Angular에서 children 기반으로 메뉴 컴포넌트를 재귀 렌더링✅ UI 연동이 쉬움아이콘, 경로, title 등 필요한 정보를 함께 포함시켜 UX까지 포함된 메뉴 구성 제공✅ null 또는 []로 리프 노드 명확화자식이 없는 경우를 명확하게 처리할 수 있어 로직 구현에 유리 대표적인 트리 구조 데이터 예시 메뉴 : 상위-하위 메뉴 구조{ "code": 200, "message": "메뉴 조회 성공", "data": [ { ..
embedded key 와 joincolumn에 대하 정확히 보셨어요! 지금 이 AuthMenu 엔티티에서 auth나 menu 필드에 실제 값이 들어가지 않는다면, 그 이유는 대부분 아래 두 가지 중 하나 때문입니다:✅ 원인 1. insertable = false, updatable = false 때문java복사편집@ManyToOne(fetch = LAZY) @JoinColumn(name = "auth_id", insertable = false, updatable = false) private Auth auth; 이 설정은 JPA에게 다음과 같이 지시합니다:🔒 이 auth_id는 DB에 insert/update할 때 사용하지 마라.👉 즉, 읽기 전용 필드로만 사용하겠다는 뜻입니다.결과적으로:auth나 menu 필드는 persist() 시 아무 역할도 하..