전체 글459 인덱싱 인덱스 개념 및 필요성인덱싱 (Indexing)데이터베이스에서 인덱스를 생성하고 구성하는 작업인덱스 (Index)데이터 검색의 효율성을 높이기 위한 부가적인 자료구조대량 데이터에서 원하는 레코드를 빠르게 찾기 위해 사용인덱스가 없을 경우 → 순차 검색 (Sequential Search)파일 내의 모든 레코드를 처음부터 끝까지 탐색데이터 양이 많아질수록 성능 심각하게 저하인덱스의 종류1. 순서 인덱스 (Ordered Index)레코드들이 탐색키 기준으로 정렬된 순차 파일인덱스 엔트리 구조: 탐색키 값 + 레코드 포인터실무에서 가장 널리 사용되는 형태 → B+-트리 인덱스2. 해시 인덱스 (Hashed Index)탐색키에 해시 함수를 적용하여 인덱스 엔트리 생성정확한 키 검색은 빠르지만 범위 검색 비효율적O.. 2025. 5. 13. TypeScript에서 타입을 정의하는 주요 방식 1. enum (TypeScript 전용 문법)정해진 상수 집합을 정의할 때 사용.// 문자열 enumexport enum Category { WORD = 'WORD', NOTE = 'NOTE', TODO = 'TODO',}// 사용const value: Category = Category.NOTE;타입: Category값: Category.NOTE 같은 형태장점: 자바스러운 문법, key → value가 있음단점: 유연성 떨어짐, JS에서 직접 쓰기엔 불편함2. 유니언 타입 ('A' | 'B' | 'C')가장 유연하고, 문자열 리터럴 제한에 적합export type Category = 'WORD' | 'NOTE' | 'TODO';const cat: Category = 'NOTE'; // ✅프론트에.. 2025. 5. 2. 데이터 저장과 파일 저장장치 추상화 계층(1) 주요 개념DBMS는 사용자에게 물리적 저장 방식을 숨기고, 논리적 관점에서 데이터를 정의하고 조작할 수 있게 한다.사용자나 개발자는 파일 시스템, 디스크 구조를 직접 알 필요 없이 데이터 모델과 질의 언어(SQL 등)만 사용한다.(2) 물리적 저장 구조가 중요한 이유실제 저장방식은 DB 성능에 직접적인 영향을 미친다.DBA(데이터베이스 관리자)는 물리적 저장 방식, 파일구조, 접근 방법까지 잘 이해해야 한다.저장장치의 계층 구조(1) 저장장치 접근 속도별 계층레지스터 → 캐시 → 메인 메모리 → 자기 테이프, 플래시 메모리 → 광학 디스크, 자기 테이프(←←용량이 적고, 가격이 비싸짐←←)상위 계층접근 빠름, 고가, 주로 휘발성캐시(CPU내부에 위치 자주 사용 할 데이터를 저장.. 2025. 4. 29. 모두를 위한 컴퓨터 과학(하버드CS50 2019)(4) 문제 코드 분석 #include int main(void){ int *x; int *y; x = malloc(sizeof(int)); *x = 42; *y = 13; // ❗ 버그 발생} 1. 무엇이 문제인가?int *x; int *y;는 포인터 변수만 선언했을 뿐 아무 메모리도 가리키지 않습니다.x = malloc(sizeof(int));를 해서(*x에 값을 넣는 건 이제 가능) x는 새로운 메모리 공간을 가리킵니다.하지만 y는 여전히 어디를 가리키는지 모르는 “쓰레기 주소” 를 가지고 있습니다.x → [메모리 공간: OK]y → [쓰레기 값: 위험]그런데 *y = 13;로Segmentation Fault (메모리 접근 오류) 가 터질 수 있습니다.y가 가리키는(아무거나) .. 2025. 4. 29. 모두를 위한 컴퓨터 과학(하버드CS50 2019)(3) 16진수 (Hexadecimal, Hex)16진수는총 16개 기호를 사용해서 수를 표현합니다.0 ~ 9 그리고 A(10), B(11), C(12), D(13), E(14), F(15)까지10진수로 255는 16진수로 FF입니다.16진수를 구분하기 위해 숫자 앞에 "0x"를 붙여 사용합니다. 1 Byte와 16진수1 byte = 8 bit8 bit로 나타낼 수 있는 최대 수:2^8 = 256 (0부터 255까지)이 256개의 값을 16진수 2자리로 표현할 수 있습니다.예: 0x00 ~ 0xFF읽을 때는 “one zero” (16진수 10)처럼 읽어야 하고,10진수의 “ten”과 헷갈리면 안 됩니다.RGB 색상에서 16진수웹 색상(RGB)은 16진수로 표현합니다.#FFFFFF → 흰색 (255, 255, 2.. 2025. 4. 29. 모두를 위한 컴퓨터 과학(하버드CS50 2019)(2) 자료형과 메모리 크기C 프로그래밍에서는 모든 데이터는 메모리에 저장되고, 자료형(Data Type) 에 따라 필요한 메모리 크기가 결정된다.bool1 byte참/거짓 값char1 byte하나의 문자 (예: ‘A’)int4 bytes정수float4 bytes소수점 수 (정밀도 낮음)long8 bytes아주 큰 정수double8 bytes더 높은 정밀도의 소수string? bytes문자들의 집합 (문자 배열)string은 문자(char)의 배열이기 때문에, 크기는 문자열 길이에 따라 달라진다. (문자 수 + 1(널 문자 ‘\0’) 만큼 바이트를 사용)컴퓨터 메모리와 바이트 개념RAM은 컴퓨터에서 프로그램을 실행할 때 데이터를 저장하는 임시 기억장치이다.RAM은 수십억 개의 비트(bit) 들로 구성되어 있다... 2025. 4. 28. 모두를 위한 컴퓨터 과학(하버드CS50 2019)(1) 문제를 해결한다는 것컴퓨터 과학(Computer Science)에서는 문제를 해결하는 과정을입력(Input) → 처리(Processing) → 출력(Output) 이라는 흐름으로 다룬다.주어진 문제를 컴퓨터가 이해할 수 있는 방식으로 정의하고,입력을 받아 연산/처리하여 원하는 결과를 출력하는 것이 기본 구조다.정보의 표현 방법컴퓨터는 정보를 표현할 때 2진법(Binary) 을 사용한다.우리가 일상적으로 쓰는 10진법(Decimal) 과 컴퓨터가 사용하는 2진법(Binary) 은 표현 방식이 다르다.예시:10진법 123은1 × 10² + 2 × 10¹ + 3 × 10⁰ = 1232진법 101은1 × 2² + 0 × 2¹ + 1 × 2⁰ = 4 + 0 + 1 = 5 (10진법)비트(Bit)와 바이트(Byte.. 2025. 4. 27. Blender 1. Blender 설치 및 기본 환경 설정Blender 공식 홈페이지에서 최신 버전 다운로드 (권장: LTS 버전)설치 후 첫 실행 시:키보드 단축키: Windows / Mac / Industry Compatible 중 선택 (보통 Default 사용)선택 클릭 방식: 왼쪽 클릭 추천 (우클릭은 메뉴)Navigation 설정: Maya나 Industry 설정도 선택 가능하지만 기본 추천2. 단축키 세팅, 뷰포트 설정, 언어 변경언어 설정: Edit > Preferences > Interface > Translation > 한국어뷰포트 1(정면), 3(우측), 7(윗면)Shift + 중클릭: 뷰포트 이동Ctrl + 중클릭: 줌N: 사이드 툴패널 토글 오른쪽 사이드 바 열기 T: 툴박스 토글3. Blend.. 2025. 4. 25. 저장 객체 저장 객체SQL은 비절차적(선언형) 언어로, 원하는 결과는 명시하지만 어떻게 처리할지는 직접 제어하지 못함.이 한계를 보완하기 위해 절차형 구조(조건문, 반복문 등)를 포함한 저장 객체가 도입됨.저장 객체는 데이터베이스 내부에 저장되어, 자주 사용하는 로직을 모듈화하고, 실행 효율성과 보안성을 높여주는 요소.주요 저장 객체 유형저장 프로시저 (Stored Procedure)복잡하거나 반복적인 SQL 명령문을 하나의 객체로 정의하여 호출 가능CALL로 실행, 결과 반환 없이 작업 수행함수 (Function)연산 결과를 RETURN 문으로 반환하는 저장 객체SELECT 문에 포함되어야 호출 가능, 하나의 반환값트리거 (Trigger)특정 테이블에 대해 INSERT, UPDATE, DELETE 이벤트 발생 시.. 2025. 4. 16. 정규화 1. 정규화란?정규화(Normalization)는 데이터베이스 설계 과정에서 데이터의 중복을 줄이고, 데이터 삽입/삭제/수정 시 발생할 수 있는 이상(anomaly)을 방지하기 위해 릴레이션(테이블)을 구조적으로 재구성하는 과정입니다.동일한 정보를 담는 릴레이션 스키마라도 속성 구성 방식에 따라 성능과 정확성에 큰 차이가 발생할 수 있습니다.정규화는 데이터베이스의 효율성, 일관성, 유지보수성을 확보하는 핵심 설계 기법입니다.2. 정규화의 필요성정규화는 다음과 같은 갱신 이상(Update Anomaly) 문제를 해결:삽입 이상데이터를 삽입하려 해도 불필요한 다른 정보도 함께 입력해야 하는 문제삭제 이상일부 데이터를 삭제하면 원하지 않는 다른 정보까지 함께 삭제되는 문제수정 이상하나의 데이터 변경을 위해 여.. 2025. 4. 16. C 1. C언어 소개 및 개발 환경 설정C언어의 역사와 특징C언어의 역사:개발자: C언어는 데니스 리치(Dennis Ritchie)가 1972년에 벨 연구소(Bell Labs)에서 개발하였습니다. C언어는 B 언어를 기반으로 발전하였으며, UNIX 운영 체제의 개발에도 사용되었습니다.목적: C언어는 시스템 프로그래밍과 임베디드 시스템 개발에 적합한 고급 언어로 설계되었습니다. 특히 운영체제나 하드웨어에 밀접하게 연관된 작업을 효율적으로 처리할 수 있도록 설계되었습니다.유산: C언어는 많은 현대 프로그래밍 언어(예: C++, Java, Python 등)의 기초가 되었으며, 오늘날에도 여전히 시스템 및 응용 프로그램 개발에 널리 사용되고 있습니다.C언어의 특징:저수준 언어와 고수준 언어의 중간: C언어는 하드웨.. 2025. 4. 13. FastAPI 기초 1. FastAPI 기본 구조와 핵심 개념1-1. FastAPI는 어떤 구조인가요?FastAPI 애플리케이션은 기본적으로 다음과 같은 형태로 구성됩니다:from fastapi import FastAPIapp = FastAPI()@app.get("/")def read_root(): return {"message": "Hello, FastAPI"}여기서 FastAPI()는 애플리케이션 인스턴스를 생성하고, @app.get("/")는 HTTP GET 요청을 처리할 라우트를 정의하는 부분입니다.1-2. FastAPI의 핵심 기반 기술ASGI: Asynchronous Server Gateway Interface의 약자로, 비동기 처리를 지원하는 Python 서버 표준입니다. FastAPI는 이 구조를 기반으.. 2025. 4. 11. 이전 1 ··· 21 22 23 24 25 26 27 ··· 39 다음