본문 바로가기

Etc

(6)
자료구조 [Queue, Stack, Heap] ✅ 2. 큐 / 스택 / 셋 / 맵의 본질적 차이이제 이 네 가지 자료구조의 핵심 철학, 자료 보관 방식, 접근 패턴을 비교해볼게요.항목큐 (Queue)스택 (Stack)셋 (Set)맵 (Map / Dictionary)추상 개념줄 (대기열)쌓기 (접시 더미)집합 (중복 없음)키-값 대응 표저장 순서 유지예: FIFO예: LIFO보통 없음 (순서 중요 X)보통 없음 (Key 중심 접근)중복 허용✅ 가능✅ 가능❌ 허용 안 됨❌ Key 중복 안 됨접근 방식앞에서 제거위에서 제거값의 존재 여부만 확인Key로 접근대표 연산enqueue, dequeuepush, popadd, remove, input, get, in시간 복잡도O(1) 삽입/삭제O(1) 삽입/삭제O(1) 존재 확인 (해시기반)O(1) 조회/삽입 (해..
RAG (Retrieval-Augmented Generation) 🔍 RAG (Retrieval-Augmented Generation)란?**RAG (Retrieval-Augmented Generation)**은 검색 기반 생성 기법으로, **대규모 언어 모델(LLM)**이 외부 데이터베이스에서 정보를 검색한 후, 해당 정보를 바탕으로 응답을 생성하는 방식입니다.즉, 단순한 **문장 생성(Text Generation)**이 아니라, **검색(Retrieval)**을 통해 실시간 정보를 활용하여 더욱 정확하고 신뢰할 수 있는 응답을 제공합니다.🔹 왜 RAG가 중요한가?일반적인 LLM (예: GPT-4, Claude, Gemini)은 사전에 학습된 데이터를 기반으로 응답을 생성하지만, 최신 정보나 학습 데이터에 없는 내용은 잘못된 정보를 제공할 가능성이 있습니다.📌 ..
Thread & Task ✅ CS 관점에서 스레드(Thread)와 태스크(Task)의 차이➡ 스레드(Thread): 운영체제(OS)에서 직접 관리하는 실행 단위➡ 태스크(Task): 일반적으로 "작업 단위"를 의미하며, 특정 환경에 따라 다르게 정의됨🔥 1️⃣ 스레드(Thread)란? (CS 관점)➡ 스레드는 운영체제가 관리하는 실행 단위로, 하나의 프로세스 내에서 실행되는 흐름입니다.➡ 각 스레드는 자신만의 레지스터, 스택을 가지며, 동시에 실행될 수 있음.➡ 멀티스레드 환경에서는 여러 개의 스레드가 동시에 실행되며, CPU에서 병렬적으로 처리될 수도 있음.📌 운영체제에서의 스레드 특징운영체제가 관리✅ OS가 직접 생성, 스케줄링, 컨텍스트 스위칭멀티코어 활용 가능✅ 여러 개의 CPU에서 병렬 실행 가능각 스레드는 독립적인..
Semaphore ✅ Semaphore의 정의 (CS 관점)➡ **Semaphore(세마포어)**는 멀티스레딩 및 병렬 프로그래밍에서 공유 리소스의 접근을 제한하는 동기화 기법입니다.➡ 공유 리소스(예: 네트워크 연결, 데이터베이스, 파일 등)에 대한 동시 접근을 제어하기 위해 사용됩니다.🔥 1️⃣ Semaphore란? (CS 기본 개념)➡ Semaphore는 "허가증"을 관리하는 카운터입니다.➡ N개의 허가증(Tickets)을 가지며, 각 스레드(Task)가 실행되기 위해서는 하나의 허가증을 획득해야 합니다.➡ 허가증이 남아 있으면 스레드(Task)가 실행될 수 있으며, 허가증이 없으면 대기(Blocking) 상태가 됩니다.✅ Semaphore 동작 개념상황Semaphore 동작허가증 있음 (count > 0)✅ 스레..
thread & event loop & task 1event loop 내 n task하나의 스레드에는 하나의 event loop 만 실행가능 cannot schedule new futures after interpreter shutdownRuntimeError: Cannot close a running event loop task.cancel()await task > 무한 대기 없으면 RuntimeError: Cannot close a running event loop 그리고 실행하면 cannot schedule new futures after interpreter shutdown    ✔ 질문 요약:loop1 = create_safe_loop() 실행 후loop2 = create_safe_loop() 실행하면두 번째 create_safe_loop()..
00. 기획 초안 및 개발환경 도입, 개발하고자 한 계기2024년 초, 단체를 통해 월 1회 유기견/유기묘 보호소에 봉사를 다니기 시작했고, 05 월 즈음부터 보호소의 관리 서비스를 만들고 싶다는 생각이 들었다.우선 내가 할 수 있는 일 중 보호소에 뭐라도 더 실질적인 도움이 되고 싶었고, 보호소의 관리자들도 모두 현생을 살아가는 일반 직장인이었기에 이분들이 조금 더 편하게 보호소의 작은 부분들을 관리할 수 있는 서비스를 목표로 했다. 기획보호소 내 견사/묘사 관리, 스케쥴 관리, 기부금 관련 엑셀 파일 관리를 우선적으로 고려했다.기부금 관리의 경우 은행 API에 연동하는게 가장 좋은 방안이었으나, 그러기 위해서는 기업명의의 계좌와 API 접근 권한이 필요했다.이러한 이유로 기능을 제외할까 생각도 했지만, 그러기에는 수작업의 번거로움..