1-1. 오늘 학습내용
① 프로젝트 발표 내용 정리 & 궁금증 정리
(1) 스트리밍 기반 로그데이터 분석 시스템
- 스트리밍 기반 = 데이터를 한 번에 모아서 처리하는 게 아니라
→ 실시간으로 들어오는 데이터를 즉시 분석하는 방식 - 예: 서버 접속 로그, 채팅 로그, 사용자 행동 기록
✔ 만드는 이유??
- 실시간 이상 탐지
- 트래픽 분석
- 시스템 모니터링
(2) B-Tree가 빠른 이유
- 다진 트리 (자식이 여러 개)
- 디스크 접근 횟수 감소
- 높이가 낮아서 탐색 깊이가 얕음
- 대량 데이터 검색에 최적화
✔ 핵심
“한 번에 많이 비교해서 깊이를 줄인다”
(3) 시간 가변형 네트워크 재고관리
- 시간에 따라 재고 수요/공급이 변함
- 예: 특정 시간대 판매량 증가
- 정적 모델이 아닌 동적 모델
✔ “시간 가변형”이 붙는 이유
→ 재고량이 시간 흐름에 따라 변화하기 때문
(4) SDL2란?
- Simple DirectMedia Layer 2
- C/C++ 기반 멀티미디어 라이브러리
- 게임 제작용
- 그래픽, 입력, 사운드 처리 가능
(5) 트리 + 리스트 혼합이 어려운 이유
- 서로 구조가 다름
- 트리: 계층 구조
- 리스트: 선형 구조
- 연결 관계 설계가 복잡
✔ 구현 시 장점
- 빠른 검색(트리)
- 순차 처리(리스트)
- 기능 분리 가능
(6) AVL 트리를 쓰는 이유
- 항상 균형 유지
- 탐색 O(log n)
- 회원 수 많아도 속도 일정
✔ 회원 검색이 빠름
✔ 삽입/삭제 후에도 성능 유지
(7) 힙 기반 패킷 스케줄링 시뮬레이터
- 힙(Heap) → 우선순위 큐 구현
- 패킷을 우선순위 순서대로 처리
✔ 패킷 역전 현상
→ 먼저 보낸 데이터가 나중에 도착하는 현상
✔ 네트워크 지연
→ 응답이 늦어짐
✔ 게임에서 치명적인 이유
→ 입력과 화면 반응이 어긋남
1-2. C언어 프로젝트 개발 1일차 정리
① GitHub 실습
- hello.c push
- 수정 후 재업로드
- 버전관리 흐름 이해
② 구조체 상품 선언 실습
- struct Product 정의
- 값 입력 후 출력
③ 연결리스트로 상품 추가
궁금점 1
free(newNode);
free(head);
꼭 역순이어야 하나?
✔ 정답
→ “연결 관계를 끊고 난 뒤” 해제해야 함
→ 보통 리스트는 앞에서부터 하나씩 해제
예:
Node* temp;
while(head != NULL){
temp = head;
head = head->next;
free(temp);
}
👉 무조건 역순이 중요한 게 아니라
“참조가 남아있지 않게 해제”가 핵심
④ 헤더파일 #ifndef INVENTORY_H
#ifndef INVENTORY_H
#define INVENTORY_H
...
#endif
✔ 이유
→ 중복 포함 방지
→ 헤더가 여러 번 include 되어도 한 번만 컴파일되도록 함
⑤ return이 왜 다 다름?
형태의미
| return 0 | 정상 종료 |
| return 1 | 오류 발생 |
| return; | void 함수 종료 |
| return head; | 리스트의 시작 주소 반환 |
✔ head는?
→ 함수의 매개변수로 전달된 포인터
→ 연결리스트의 시작점
예:
Node* addNode(Node* head)
→ head는 기존 리스트 시작 주소
⑥ 데이터 복사를 왜 하나?
strcpy(newNode->name, name);
newNode->price = price;
newNode->quantity = quantity;
✔ 이유
→ 매개변수로 받은 데이터를
→ 새로 만든 노드 안에 저장해야 하기 때문
✔ 만약 복사 안 하면?
→ 함수 종료 후 값 사라질 수 있음
2. 오늘 헷갈렸던 것
- free 순서
- return 형태 차이
- head의 개념
- 헤더 가드(#ifndef)
- 왜 데이터 복사가 필요한지
3. 나중에 다시 볼 키워드
- B-Tree
- AVL Tree
- Heap
- SDL2
- 헤더 가드
- 연결리스트 메모리 해제
- 포인터 반환 함수
'포트폴리오 > [IoT 기반 피지컬 AI 교육일지]' 카테고리의 다른 글
| [ 11일차 기록 ] 조립 PC 재고 관리 프로그램 개발기 #2 (정렬 로직 개선 & 출고 기능 안정화) (1) | 2026.02.20 |
|---|---|
| [ 10일차 기록 ] 조립 PC 재고 관리 프로그램 개발기 #1 (기초 설계 및 CRUD 구현) (0) | 2026.02.19 |
| [ 8일차 복습 ] 트리(Tree) 개념 정리 & 개인 프로젝트 개발계획서 작성 (0) | 2026.02.13 |
| [ 7일차 복습 ] Doubly Linked List & Queue & Deque (0) | 2026.02.11 |
| [ 6일차 복습 ] 노드 구조체와 메모리 관리 (0) | 2026.02.10 |