분류 전체보기 (112) 썸네일형 리스트형 cpu bound, io bound의 의미 ✅ 핵심 개념 요약🔧 CPU-bound 프로세스란?CPU 작업이 대부분인 프로세스예: 동영상 인코딩, 머신러닝, 딥러닝연산량이 많아 CPU 리소스를 집중적으로 사용함일반적으로 I/O 작업은 거의 없음🔌 IO-bound 프로세스란?I/O 작업(파일 읽기/쓰기, DB 접근, 네트워크 등)이 많은 프로세스예: 일반적인 웹 API 서버, 파일 서버CPU보다는 외부 리소스를 기다리는 시간이 더 많음⚙️ CPU-bound에서의 스레드 개수 팁스레드 개수가 많다고 항상 좋은 건 아님스레드 수가 코어 수보다 많으면, 컨텍스트 스위칭 오버헤드 발생즉, CPU가 작업 전환 때문에 리소스를 낭비함📌 **Gul Agha의 연구(2002, 2006)**에 따르면:적절한 스레드 수 = 코어 수 + 1예: 듀얼코어 CPU ➝.. 코루틴이란? 🧠 코루틴(Coroutine) 이란?협력적(concurrent)이고, 중단 가능한 함수일반 함수처럼 실행되지만, 중간에 멈췄다가 다시 이어서 실행할 수 있는 특성을 가짐.🔁 코루틴 vs 일반 함수일반 함수 코루틴실행 흐름호출되면 끝날 때까지 실행중간에 멈췄다가(suspend) 다시 이어서(resume) 실행 가능상태 유지호출할 때마다 새로 시작상태(변수 등) 유지사용 목적순차 처리비동기 처리, 이벤트 루프, IO 효율적 처리🚦 코루틴 vs 스레드구분 스레드(Thread) 코루틴(Coroutine)실행 단위OS가 스케줄링하는 실행 단위사용자 레벨의 경량 실행 단위생성 비용비교적 무거움 (스택, 컨텍스트 등)가볍고 수천 개도 생성 가능전환 비용커널 개입 (컨텍스트 스위칭)유저 레벨 전환 → 빠름병렬성멀.. 스레드의 종류 💡 스레드 전체 구조 개요컴퓨터 시스템은 아래 세 가지 레벨로 구성됩니다:하드웨어 (CPU/코어)운영체제 (OS)사용자 프로그램 (User Program)각 레벨에서 **‘스레드’**가 어떻게 다르게 동작하고 정의되는지 구분해서 설명합니다.🔧 1. 하드웨어 스레드 (Hardware Thread)물리적인 CPU 코어 내에서 동작.메모리 접근 대기 시간 동안 다른 스레드를 실행시켜 자원 낭비를 줄이는 기술.인텔에서는 이를 하이퍼 스레딩 (Hyper-Threading) 이라고 부름.하나의 물리 코어 → 2개의 하드웨어 스레드를 실행 가능.OS 입장에서는 하드웨어 스레드 각각을 하나의 코어처럼 인식함.예: 듀얼 코어 CPU에 하이퍼스레딩 적용 시 → 하드웨어 스레드 4개🧠 2. OS 스레드 / 네이티브 스.. B tree 구조가 RDB에서 많이 사용되는 이유 ✅ B트리 인덱스가 DB에서 사용되는 이유 요약🔷 B트리 계열의 시간 복잡도데이터 조회, 삽입, 삭제 모두 최악의 경우에도 O(log n).AVL 트리, Red-Black 트리도 마찬가지로 O(log n)이지만, B트리는 다른 차원의 강점이 있음.🔷 세컨더리 스토리지와 인덱싱의 관계세컨더리 스토리지(HDD, SSD):영구 저장 장치로, DB 데이터는 기본적으로 여기에 저장됨.처리 속도가 RAM에 비해 매우 느림 (RAM: 4050 GB/s, SSD: 35 GB/s, HDD: 0.2~0.3 GB/s).블록 단위로 데이터를 읽고 씀 (보통 4KB, 8KB 등).데이터 읽기 시 문제점:특정 데이터 하나를 위해서도 전체 블록을 읽어야 함.불필요한 데이터까지 로딩될 수 있음 → I/O 비용 증가.🔷 AVL .. B tree 개념과 데이터 삽입 📌 1. B트리란?균형 잡힌 다진 탐색 트리(Balanced Multi-way Search Tree)한 노드에 여러 개의 키와 자식 노드를 가질 수 있음모든 리프 노드는 같은 레벨에 존재 → 균형 잡힌 트리데이터 삽입, 삭제, 검색 시간 복잡도: O(log N)📌 2. BST(이진 탐색 트리)와의 비교BST B트리자식 노드 최대 2개자식 노드 최대 M개 (M차 B트리)노드에 1개 키만 저장노드에 최대 M-1개의 키 저장깊이 편향 발생 가능 → 불균형항상 균형 유지📌 3. B트리의 구조M차 B트리 (예: 3차 B트리):자식 노드 최대 M개노드당 키 최대 M-1개노드당 최소 자식 수: ⌈M/2⌉최소 키 수: ⌈M/2⌉ - 1리프/루트 노드는 예외적으로 조건 미적용 가능📌 4. 삽입 동작 (Insert.. 대표적 자료구조 탐색기법들 정리 ✅ 1. 일반 트리 (Tree)📌 개요계층적인 구조를 표현하는 자료구조루트(Root) 노드에서 시작해서 자식으로 내려감부모-자식 관계로 연결됨💡 특징n-ary Tree (자식 개수 제한 없음)그래프의 일종 (순환 없음)조직도, 폴더 구조, DOM 구조 등✅ 2. 이진 트리 (Binary Tree)📌 개요노드당 자식이 최대 2개까지 (left, right)종류포화 이진 트리: 모든 레벨이 꽉 참완전 이진 트리: 마지막 레벨만 채워지지 않음✅ 3. 이진 탐색 트리 (BST: Binary Search Tree)📌 개요왼쪽 서브트리는 "작은 값"오른쪽 서브트리는 "큰 값"💡 시간 복잡도연산 평균 최악 (한쪽으로 치우친 경우)탐색 / 삽입 / 삭제O(log n)O(n)언제 쓰면 좋을까?정렬된 데이터를 빠.. 불변 객체(immutable object)의 개념과 사용 🔒 불변 객체(Immutable Object)란?정의: 객체가 생성된 이후 내부 상태가 변경되지 않는 객체예: Person(name="홍길동")을 생성하면, 이후 이름을 변경할 수 없음✅ 불변 객체의 장점1. 💡 코드의 안정성과 예측 가능성 증가여러 코드에서 객체를 공유하더라도 상태가 바뀌지 않음 → 신뢰성 향상예) DB에서 읽은 Employee 객체를 다른 서비스에서 사용하더라도 상태가 변하지 않음2. 🧵 스레드 세이프(Thread-safe)여러 스레드가 동시에 접근해도 상태가 바뀌지 않음 → 동기화 불필요3. 🔄 해시 기반 컬렉션(Map, Set 등)에서 안정적인 동작가변 객체는 해시 값이 바뀔 수 있어 문제가 발생하지만, 불변 객체는 그런 문제가 없음4. 🛡 방어적 복사(defensive .. set과 hash set 🧩 Set vs HashSet 완전 정리! 리스트와의 차이까지 한눈에프로그래밍을 하다 보면 중복 없는 데이터를 다뤄야 할 일이 많습니다. 이럴 때 가장 적절한 자료구조가 바로 **Set(셋)**입니다. 이번 글에서는 Set의 개념부터 구현체인 HashSet, 그리고 리스트(List)와의 차이점까지 빠짐없이 정리해보겠습니다.✅ Set이란?Set은 순서가 없고 중복을 허용하지 않는 데이터 집합입니다.순서를 보장하지 않음중복을 저장하지 않음존재 여부 확인이 빠름 → 리스트보다 조회 속도 우수✍️ Set을 사용하는 대표적인 상황1. 중복 제거응답 = ["도전", "성장", "도전", "미래", "성장"]고유_값 = set(응답)# 결과: {"도전", "성장", "미래"}2. 존재 여부 확인 (빠른 필터링)예:.. 이전 1 2 3 4 5 6 7 8 ··· 14 다음