정보처리기사 Study Log
🔵 전공자의 [정보처리기사 실기] 2025-3회차 1달 준비 독학 과정
🔵 Intro
정보처리기사 실기 시험을 3주 앞두고 독학으로 공부한 과정을 기록하려고 한다.
간단하게 특이사항을 쓰면
- 전공자
- C/C++와 파이썬 가능, JAVA 아예 모름
- 필기 시험 3일 공부해서 베이스가 남아 있지 않음(..)
- 25-1회차(극악) 25-2(난이도 조절) 25-3(과연..?)
⚪ 정보처리기사 실기 12과목 핵심 요약
각 과목은 소프트웨어 개발 생명주기(SDLC)의 각 단계를 반영하고 있음. ‘요구사항’에서 시작하여 ‘개발’, ‘테스트’를 거쳐 ‘배포’에 이르는 과정을 이해하면 개념을 구조화하는 데 수월할 것임.
1. 요구사항 확인 (Requirements Engineering)
- 한 줄 요약: 무엇을 만들어야 하는지 명확히 정의하는 단계임.
- 상세 설명: 소프트웨어 개발 프로젝트의 가장 첫 단추임. 사용자의 요구가 무엇인지 듣고(도출), 분석하여(분석), 문서로 정리하고(명세), 제대로 이해했는지 확인하는(확인) 모든 과정을 포함함. 이 단계의 결과물인 ‘요구사항 명세서’는 이후 모든 개발 과정의 기준이 됨.
- 주요 키워드:
#현행시스템분석,#요구사항분석,#UML,#Agile
2. 데이터 입출력 구현 (Data I/O Implementation)
- 한 줄 요약: 데이터를 어떻게 저장하고 불러올지 설계하고 구현하는 기술임.
- 상세 설명: 애플리케이션이 사용할 데이터를 데이터베이스에 효과적으로 저장하고 관리하는 방법을 다룸. 논리/물리 데이터 모델링을 통해 테이블 구조를 설계하고, SQL(DDL, DML, DCL)을 사용하여 데이터를 직접 생성하고 조작하는 실무적인 내용이 주를 이룸.
- 주요 키워드:
#데이터모델링,#ERD,#정규화,#SQL
3. 통합 구현 (Integration Implementation)
- 한 줄 요약: 독립된 시스템이나 모듈들을 하나로 묶어 동작하게 만드는 기술임.
- 상세 설명: 개발된 여러 모듈 혹은 외부 시스템을 서로 연동하여 데이터와 기능이 원활하게 교환되도록 구현하는 과정임. 연동 방식(EAI, ESB), 인터페이스 명세를 정의하는 API, 그리고 데이터를 교환하는 형식(JSON, XML) 등에 대한 이해가 필요함.
- 주요 키워드:
#API,#연계메커니즘,#JSON,#ESB
4. 서버프로그램 구현 (Server-side Programming)
- 한 줄 요약: 사용자 눈에 보이지 않는 서버(Back-end)의 로직을 개발하는 과정임.
- 상세 설명: 사용자의 요청을 처리하고, 비즈니스 로직을 수행하며, 데이터베이스와 상호작용하는 서버 측 코드를 작성하는 것임. Spring(Java), Django(Python) 같은 서버 개발 프레임워크의 구조와 동작 원리를 이해하고, 공통적으로 사용되는 모듈을 구현하는 능력을 평가함.
- 주요 키워드:
#백엔드,#서버개발프레임워크,#공통모듈,#API개발
5. 인터페이스 구현 (Interface Implementation)
- 한 줄 요약: 사용자가 직접 보고 상호작용하는 화면(Front-end)을 만드는 과정임.
- 상세 설명: UI/UX 설계서를 바탕으로 사용자가 직접 조작하는 화면을 시각적으로 구현하는 단계임. HTML, CSS, JavaScript를 기반으로 정적 및 동적 화면을 구현하고, 사용자와 시스템 간의 상호작용을 처리하는 기술을 다룸.
- 주요 키워드:
#UI구현,#프론트엔드,#JavaScript,#HTML/CSS
6. 화면 설계 (UI/UX Design)
- 한 줄 요약: 사용자가 시스템을 쉽고 편리하게 쓸 수 있도록 화면을 구상하는 작업임.
- 상세 설명: ‘인터페이스 구현’의 선행 단계로, 기능적인 측면을 넘어 사용자 경험(UX)까지 고려하여 화면의 구조, 배치, 흐름을 설계하는 것임. 사용자의 편의성과 직관성을 극대화하기 위한 UI 설계 원칙과 프로토타입 제작 기법 등을 학습함.
- 주요 키워드:
#UI/UX,#프로토타이핑,#와이어프레임,#사용성테스트
7. 애플리케이션 테스트 관리 (Application Test Management)
- 한 줄 요약: 개발된 소프트웨어의 결함을 찾아 품질을 보증하는 활동임.
- 상세 설명: 소프트웨어에 잠재된 오류를 찾아내고 요구사항에 맞게 동작하는지 검증하는 모든 과정을 의미함. 테스트 종류(단위, 통합, 시스템, 인수)를 이해하고, 테스트 케이스를 작성하며, 결함을 추적하고 관리하는 방법을 다룸.
- 주요 키워드:
#테스트케이스,#단위/통합테스트,#결함관리,#V-모델
8. SQL 응용 (Advanced SQL)
- 한 줄 요약: 복잡한 데이터를 처리하고 성능을 최적화하는 고급 SQL 활용법임.
- 상세 설명: 단순한 데이터 조회(SELECT)를 넘어, 대량의 데이터를 효율적으로 가공하고 분석하기 위한 고급 SQL 기법을 다룸. 프로시저, 사용자 정의 함수, 트리거를 작성하여 서버 단에서 로직을 수행하거나, 쿼리 튜닝을 통해 데이터베이스 성능을 개선하는 방법을 학습함.
- 주요 키워드:
#프로시저,#트리거,#쿼리튜닝,#옵티마이저
9. 소프트웨어 개발 보안 구축 (Secure Coding)
- 한 줄 요약: 개발 단계부터 보안 취약점을 고려하여 안전한 코드를 작성하는 것임.
- 상세 설명: 해킹 등의 공격으로부터 시스템을 보호하기 위해 개발 과정에서부터 보안 약점을 제거하는 코딩 기법을 적용하는 것임. SQL 인젝션, 크로스 사이트 스크립팅(XSS) 등 주요 공격 유형과 그에 대한 방어 기법(시큐어 코딩 가이드)을 숙지해야 함.
- 주요 키워드:
#시큐어코딩,#SQLInjection,#암호화,#보안취약점
10. 프로그래밍 언어 활용 (Programming Language Usage)
- 한 줄 요약: C, Java, Python 등 주요 언어의 문법과 라이브러리 활용 능력을 평가함.
- 상세 설명: 특정 언어에 깊이 파고들기보다는, 주어진 문제 상황을 기본적인 프로그래밍 문법(변수, 제어문, 함수 등)과 자료구조를 활용하여 논리적으로 해결할 수 있는지를 평가하는 과목임. 코드의 실행 결과를 예측하거나 빈칸을 채우는 문제가 주로 출제됨.
- 주요 키워드:
#C언어,#Java,#Python,#자료구조,#알고리즘
11. 응용 SW 기초 기술 활용 (Foundational CS Knowledge)
- 한 줄 요약: 소프트웨어가 동작하는 기반 환경인 OS와 네트워크에 대한 이해를 다룸.
- 상세 설명: 컴퓨터 공학의 근간이 되는 운영체제(OS)와 네트워크에 대한 핵심 개념을 다룸. 프로세스, 스케줄링, 메모리 관리 기법과 같은 OS의 역할과 TCP/IP 프로토콜 스택으로 대표되는 네트워크의 동작 원리를 이해해야 함.
- 주요 키워드:
#운영체제(OS),#프로세스,#스케줄링,#TCP/IP
12. 제품 소프트웨어 패키징 (Software Packaging)
- 한 줄 요약: 개발이 끝난 소프트웨어를 사용자에게 전달하기 위해 포장하고 배포하는 과정임.
- 상세 설명: 개발이 완료된 소스 코드를 사용자가 설치하고 사용할 수 있는 형태로 만드는 최종 단계임. 버전 관리 시스템(Git)을 통해 소스 코드를 관리하고, 빌드 도구를 사용하여 실행 파일을 생성하며, 릴리즈 노트를 작성하여 사용자에게 변경 사항을 알리는 등의 활동을 포함함.
- 주요 키워드:
#버전관리,#Git,#빌드자동화,#릴리즈노트
🔵 Study log
⚪ 2025.10.15 (수)
Part 2-(2)
- 뷰
- 파티션
- 분산 데이터베이스 목표 4가지
- RTO, RPO
- DAC, MAC, RBAC
- 스토리지 DAS, NAS, SAN
- 데이터구조 파트는 skip
- 데이터 모델(Data model): 데이터를 구조화하고, 연산하며, 제약하는 방법을 정의한 설명서
- 연산, 구조, 제약조건
🟡 Part 3 통합 구현
- XML
⚪ 2025.10.17 (금)
🟡 Part 4-(1) 서버 프로그램 구현(백엔드)
- 모듈화(modularity): 결합도(coupling) 최소화, 응집도(cohesion) 최대화
- 추상화(abstraction): 과정, 자료, 제어
⚪ 2025.10.20 (월)
- 정처기 감자 3주 스터디 플랜! https://jeongcheogi.edugamja.com/theory/3week-study-plan
⚪ 2025.10.21 (화)
- 럼바우 기법 3가지⭐
- 객체
- 동적
- 기능
- SOLID 원칙: 객체 지향 설계 원칙⭐
- 단일 책임 원칙(SRP)⭐: 한 클래스는 하나의 책임(기능)만 가져야 한다.
- 개방-폐쇄 원칙(OCP): 확장에는 열려(Open) 있어야 하고, 수정에는 닫혀(Closed) 있어야 한다
- 리스코프 치환 원칙(LSP): 자식 클래스는 언제나 부모 클래스를 대체할 수 있어야 한다.
- 인터페이스 분리 원칙(ISP)⭐: 자신이 사용하지 않는 메소드와 의존 관계를 맺으면 안 된다
- 의존 역전 원칙(DIP): 구체적인 것(구현체)에 의존하지 말고, 추상적인 것(인터페이스)에 의존해라.
🟡 Part 4-(2) 서버 프로그램 구현(백엔드)
- 결합도(Coupling, 내공외제스자): 각 모듈끼리 얼마나 결합되어 있는가
- 내부 결합도: 한 모듈이 다른 모듈의~
- 공통 결합도: 전역 변수를 갱신하는
- 외부 결합도:
- 제어 결합도⭐: 제어 신호(flag 등)
- 스탬프 결합도: 자료 구조를 통째로
- 자료 결합도⭐: 최소. content로만 구성, 가장 바람직한 결합도
- 응집도(Cohesion, 기순교절시논우): 모듈 내부에서 얼마나 응집되어 있는가
- 기능적 응집도⭐: 최대. 가장 바람직
- 순차적 응집도⭐: 모듈의 출력이 그 다음 모듈의 입력 데이터로
- 교환적 응집도: 동일한 입력 출력을 사용할때
- 절차적 응집도: 연관성은 없으나 순차적❗으로 실행될때
- 시간적 응집도
- 논리적 응집도
- 우연적 응집도
- 공통 모듈 명세 기법의 종류
- 정확성
- 명확성
- 완전성
- 일관성
- 추적성
- 디자인 패턴 GoF⭐⭐⭐(생성, 구조, 행위) 정처기 감자 요약
- 생성 패턴(싱글톤, 팩토리, 빌더, 프로토타입, 앱스트랙트) 싱팩빌프앱
- 싱글톤⭐: 클래스 내에서 인스턴스가 하나뿐임을 보장
- 팩토리⭐: 객체 생성을 서브 클래스에서 처리하도록 캡슐화~ 가상 생성자(Virtual constructor)패턴이라고도 함
- 빌더: 작게 분리된 인스턴스를 건축하듯이 조립
- 프로토타입:
- 앱스트랙 팩토리⭐: 구체적인 클래스에 의존하지 않고 인터페이스를 통해 서로 연관, 의존하는 객체들의 그룹으로 생성하여 추상적으로 표현하는 패턴
- 구조 패턴(어댑터, 데코레이터, 퍼싸드, 프록시, 브리지, 플라이웨이트, 컴포지트) 어데퍼프브플컴
- 어댑터⭐: 호환성 없는 클래스들을 변환~ 기존 클래스를 이용하고 싶지만 인터페이스가 일치하지 않을 때
- 데코레이터⭐: 객체 간의 결합을 통해 능동적~
- 퍼싸드:
- 프록시⭐: 대리자
- 브리지: 구현부에서 추상층을 분리하여~ 기능과 구현을 두 개의 별도 클래스로 구현~
- 플라이웨이트: 효율적 메모리 자원의 운용
- 컴포지트⭐:
- 행위 패턴(전략, 옵저버, 중재자, 방문자, 이터레이터, 상태, 인터프리터, 메멘토, 커맨드, 책임, 템플릿 ) 전옵중방이상인 메커책템
- 전략⭐: 동일한 계열의 알고리즘들을 개별적으로 캡슐화
- 옵저버⭐: 연락, 일대다 의존성, 상호 작용, 발행/수신
- 중재자
- 방문자⭐: 호스트 객체, 처리 기능을분리하여 별도의 클래스로 구성
- 이터레이터⭐: 내부 구조에 순차적 접근, Cursor, 접근이 잦은 객체에 대해 동일한 인터페이스를 사용하도록
- 상태
- 인터프리터: 해석기
- 메멘토: 특정 시점 상태를 저장. 게임 save 및 되돌리기
- 커맨드: 요청을 객체로 캡슐화
- 책임
- 템플릿
- 생성 패턴(싱글톤, 팩토리, 빌더, 프로토타입, 앱스트랙트) 싱팩빌프앱
🟡 Part 5 인터페이스 구현(프론트-엔드)
- 미들 웨어 : 서버와 클라이언트, OS와 응용프로그램 사이에서 다양한 서비스를 제공하는 소프트웨어
- DB
- RPC
- MOM
- TP-Monitor: 온라인 트랜잭션 처리 및 감시
- ORB
- WAS
- 모듈 연계 방법
- EAI(Enterprise Application Integration)⭐: 기업 내 각종 애플리케이션 및 플래폼 간의 정보 전달, 연계, 통합 등 상호연동이 가능하게 해주는 솔루션.
- ESB(Enterprise Service Bus)
- 웹 서비스
- 인터페이스 구현: 송수신 시스템 간의 데이터 교환 및 처리를 실현해주는 작업
- JSON이나 XML 형식으로 전송하면 파싱하여 해석
- 인터페이스 보안 기능 적용
- 네트워크 영역: IPsec, SSL, S-HTTP
- 애플리케이션 영역
- 데이터베이스 영역
- 데이터 무결성 검사 도구
- Tripwire
- AIDE
- Samhain
- Claymore
- Slipwire
- Fcheck
- 인터페이스 구현 검증 도구
- xUnit
- STAF
- FitNesse
- NTAF
- Selenium
- watir
⚪ 2025.10.22 (수)
🟡 Part 6 화면 설계
UI vs UX
- UI 종류
- CLI
- GUI
- NUI
- UI 기본 원칙
- 직관성
- 유효성: 사용자의 목적을 정확하고 완벽하게 달성해야 함.
- 학습성
- 유연성
- UI 설계 도구
- 와이어프레임: 뼈대 설계
- 목업: 정적인 형태의 모형
- 스토리보드: 와이어프레임에 설명이나 흐름을 추가한 문서
- 프로토타입
- 유스케이스
🟡 Part 7 화면 설계
- 애플리케이션 테스트
- 파레토 법칙
- 살충제 패러독스
- 오류-부재의 궤변
정적테스트(워크스루, 인스펙션), 동적테스트(블랙박스 테스트, 화이트박스 테스트)
화이트박스 테스트⭐: 원시 코드를 오픈시킨 상태에서 논리적인 모든 경로를 테스트- 종류
- 기초 경로 검사
- 제어 구조 검사
- 테스트의 검증 기준
- 문장 검증 기준(Statement Coverage): 모든 구문이 한번 이상 수행되도록
- 분기 검증 기준⭐(Branch Coverage): 소스 코드의 모든 조건문이 한 번 이상 수행되도록
- 조건 검증 기준(Condition Coverage): 조건문에 포함된 개별 조건식의 결과가 ~
- 분기/조건 기준(Branch/Condition Coverage)
- 종류
블랙박스 테스트⭐: 각 기능이 완전히 작동되는 것을 입증하는 테스트- 종류
- 동치 분할 검사(Equivalence Partitioning Testing)⭐
- 경계값 분석(Boundary value Analysis)⭐
- 원인-효과 그래프 검사(Cause-Effect Graph)
- 오류 예측 검사
- 비교 검사
- 종류
- 개발 단계에 따른 애플리케이션 테스트
- 요구사항 분석 -> 분석 -> 설계 -> 구현
- 단위 테스트: 코딩 직후 모듈이나 컴포넌트에 초점을 맞춰 테스트
- 통합 테스트: 모듈을 결합하여 시스템으로 완성시키는 과정에서 테스트
- 시스템 테스트: 개발된 소프트웽어가 해당 컴퓨터에서 완벽하게 수행되는가
- 인수(Acceptance) 테스트: 개발한 소프트웨어가 사용자의 요구사항을 충족하는가
- 알파 테스트: 개발자의 장소, 통제된 환경
- 베타 테스트: 제어되지 않은 상태
- 하향식 통합 테스트(스텁)
상향식 통합 테스트(클러스터, 드라이버)
- 테스트 오라클: 테스트 결과가 올바른지 판단하기 위해 사전에 정의된 참값을 비교하는 기법
- 참(True) 오라클
- 샘플링 오라클⭐
- 추정(Heuristic) 오라클
- 일관성 검사 오라클
- 테스트 자동화 도구
- 정적 분석 도구
- 테스트 실행 도구: 스크립트 언어를 활용
- 성능 테스트 도구: 가상의 사용자를 만들어
- 테스트 통제 도구
- 테스트 하네스 도구: 테스트가 실행될 환경
- 애플리케이션 측정 지표
- 처리량(Throughput): 일정 시간 내에 애플리케이션이 처리하는 일의 양
- 응답 시간(Response Time): 요청을 전달한 시간부터 응답이 도착
- 경과 시간(Turn Around Time): 애플리케이션에 작업을 의뢰한 시간부터 처리가 완료될때까지 걸린 시간
- 자원 사용률(Resource Usage):
- 소스코드 최적화
- 클린 코드
- 가독성
- 단순성: 한 번에 한 가지만 처리하도록 코드를 작성하고 클래스와 메서드 등은 최소 단위로 분리
- 의존성 배제
- 중복성 최소화
- 추상화
- 나쁜 코드(스파게티 코드, 외계인 코드)
- 클린 코드
🟡 Part 8 SQL
- DDL
- ‘CREATE’
CREATE INDEX [인덱스] ON [테이블명(속성명 ASC DESC)]
- ‘ALTER’
- ALTER TABLE [테이블] ADD [속성명] [데이터 타입] ⭐
- ‘DROP’
- ‘CREATE’
⚪ 2025.10.23 (목)
- DCL
- ‘COMMIT’
- ‘GRANT⭐’
- GRANT
[권한리스트]ON[개체]TO[사용자] - 권한리스트 →
ALL,SELECT,INSERT,DELETE,UPDATE
- GRANT
- ‘REVOKE⭐’
- REVOKE
[권한리스트]ON[개체]FROM[사용자]
- REVOKE
- ‘ROLLBACK⭐’: 변경은 되었으나 아직 COMMIT되지 않은 모든 내용을 취소하고 이전 상태로
- DML
- ‘SELECT⭐’
- ‘INSERT’ INTO ~
- ‘DELETE’ FROM ~
- ‘UPDATE’ ~ SET
- ‘JOIN’
- 트리거
- 커서
- 데이터 베이스 회복 기법
즉각 갱신 vs 지연 갱신 | 구분 | 즉각 갱신 (Immediate Update) | 지연 갱신 (Deferred Update) | | — | — | — | | 디스크 갱신 시점 | 트랜잭션 수행 중 (즉시) | 트랜잭션 완료 (Commit) 시점 | | 필요한 로그 |
UNDO(롤백용) /REDO(복구용) |REDO(복구용) | | 회복 작업 |UNDO와REDO모두 사용 |REDO만 사용 | | ROLLBACK |UNDO로그를 이용해 원상 복구 (복잡) | 로그를 그냥 버림 (간단) | | 별명 | UNDO/REDO 기법 | NO-UNDO/REDO 기법 |UNDO vs. REDO COMMIT 후에 트랜잭션 실패시 -> REDO
🟡 Part 9 소프트웨어 보안 구축
용어를 잘 외우자. 약어 위주로 외우자
- 소프트웨어 개발 보안의 3요소⭐ (C-I-A)
- 기밀성(Confidentiality): 허가된 사용자만 접근 허용
- 무결성(Integrity): 시스템의 정보는 허가된 사용자만 수정 가능
- 가용성(Availability): 인가받은 사용자는 언제든 접근 가능
Secure SDLC
- 주요 공격 기법
- SQL 삽입(injection)⭐: 웹 응용 프로그램에 SQL을 삽입하여 내부 데이터베이스(DB) 서버에 데이터를 유출 및 변조
- XSS(크로스사이트 스크립팅)⭐
- 메모리 버퍼 오버플로
- 널 포인터 역참조 -> 스택 가드
- 접근제어자(JAVA 관점에서)
- Public
- Protected
- Default
- Private
- 암호화 기법
- 개인키 암호화 기법(단일키, 대칭키): 빠르다, 관리 불편, DES⭐, SEED, AES⭐, ARIA, Skipjack, IDEA
- 공개키 암호화 기법(비대칭): 느리다, 관리 용이, RSA⭐, ECC
- 해시: 일방향 암호화, 무결성 검증, SHA-256
- TKIP: WEP의 취약성을 보완한 데이터 보안 프로토콜
| 알고리즘 | 구분 | 키 길이 | 국가/기관 | 비고 |
|---|---|---|---|---|
| DES | 블록 | 56bit | 미국(NIST) | 오래된 표준, 현재는 취약 |
| 3DES (Triple DES) | 블록 | 168bit | 미국 | DES를 3번 반복하여 보안 강화 |
| AES (Advanced Encryption Standard) | 블록 | 128/192/256bit | 미국 | 현재 표준. Rijndael 알고리즘 기반 |
| IDEA (International Data Encryption Algorithm) | 블록 | 128bit | 스위스 | PGP(Pretty Good Privacy)에 사용됨 |
| Skipjack | 블록 | 80bit | NSA(미국 국가안보국) | Clipper Chip용 암호 (지금은 거의 안 씀) |
| ARIA | 블록 | 128/192/256bit | 한국 | KISA 주도로 개발된 국가표준 |
| SEED | 블록 | 128bit | 한국 | 국내 금융권에서 널리 사용 |
| RC4 | 스트림 | 가변 | RSA Security | 스트림 암호, WEP/WPA에 사용되었으나 취약점 존재 |
| 알고리즘 | 키 길이 | 기반 수학 | 주요 용도 |
|---|---|---|---|
| RSA | 1024~4096bit | 소인수분해 | 디지털 서명, 공개키 암호 |
| DSA (Digital Signature Algorithm) | 1024bit 이상 | 이산로그 | 전자서명 전용 |
| ECC (Elliptic Curve Cryptography) | 256bit 이상 | 타원곡선 | RSA보다 짧은 키로 높은 보안성 |
| ElGamal | 1024bit 이상 | 이산로그 | 암호화 및 서명 가능 |
보안 프레임워크 ISO27001: 정보보안 관리를 위한 국제 표준
- 침입 탐지:
- 오용 탐지(Misuse Detection)
- 이상 탐지(Anomaly Detection)
VPN: 마치 사용자가 자신의 전용 회선을 사용하는것처럼 해주는 보안 솔루션
NAC(Network Access Control), NAC(Network Access Control), ESM(Enterprise Security Management)
- AAA: 다음 3가지 기능을 기반으로 사용자의 컴퓨터 자원 접근에 대한 처리와 서비스를 제공하는 기반 구조(Infrastructure) 또는 규격을 의미
- 인증(Authentication)
- 인가(Authorization)
- 과금(Accounting)
정보 보호 관리 체계(ISMS: Information Security Management System)
- 서비스 거부 공격(DoS: Denial of Service)
- Ping of Death
- Smurfing⭐
- SYN Flooding⭐: 3-way-handshaking
- TearDrop
- LAND Attack⭐: IP를 동일하게 설정해서
- DDoS 공격⭐
- 세션 하이재킹(Session Hijacking)⭐: 상호 인증 과정을 거친 후 접속해 있는 서버와 서로 접속되어 클라이언트 사이의 세션 정보를 가로채는 공격 기법
- ARP 스푸핑⭐: 자신의 물리적 주소(MAC)를 공격대상의 것으로 변조하여 공격 대상에게 도달해야 하는 데이터 패킷을 가로채거나 방해하는 기법이다.
- 스니핑(Sniffing): 네트워크 중간에서 남의 패킷 정보를 도청
- 워터링 홀(Waterign Hole)⭐: 웹사이트를 사전에 감염시켜
- 키로거 공격: 키보드 움직임을 탐지해 정보를 몰래 빼가는 공격
- 랜섬웨어(Ransomware)
- 백도어: 시스템 보안을 제거하여 만들어놓은 비밀 통로
- 접근 제어(Access Control)
- DAC: 신원에 따라 접근 권한을 부여~
- MAC: 시스템이
- RBAC: 역할에 따라~
🟡 Part 11 응용소프트웨어 기초 기술 활용(1)
⚪ 2025.10.24 (금)
- 운영체제
- UNIX: AT&T 벨(Bell) 연구소와 MIT GE가 공동 개발. 대화식 운영체제, C언어. 트리구조
- 리눅스
- 커널: 프로그램과 하드웨어 간 인터페이스 담당. 프로세스, 기억장치, 파일, 입출력 관리 등을 수행
- 쉘(shell): 시스템과 사용자 간의 인터페이스
- 안드로이드: Google, 리눅스 커널 기반, 개방형, 자바와 코틀린
- 기억장치 관리
- 반입(Fetch) 전략
- 요구 반입
- 예상 반입
- 배치(Placement) 전략
- 최초
- 최적
- 최악
- 반입(Fetch) 전략
- 가상 기억 장치
- 페이징 기법(OPT, FIFO, LRU, LFU, NUR, SCR)
- 세그멘테이션 기법
- Locality(구역성, 국부성, 지역성): 프로세스가 실행되는 동안 주기억장치를 참조할 때 일부 페이지만 집중적으로 참조하는 성질이 있다.
- 시간 구역성(Temporal Locality)
- 공간 구역성(Spatial Locality)
워킹셋(Working set): 프로세스가 일정 시간 동안 자주 참조하는 페이지들의 집합
스래싱(Thrashing): 프로세스 처리 시간 < 페이지 교체시간
- 프로세스
- PCB: 운영체제가 프로세스에 대한 중요한 정보를 저장해놓은 곳
- 포인터
- 프로세스 상태
- 프로세스 고유 식별자
- 입출력 상태, CPU 레지스터 등
- PCB: 운영체제가 프로세스에 대한 중요한 정보를 저장해놓은 곳
- 프로세스 상태 전이
- 디스패치, wake up, 스풀링
스레드(Thread): 시스템의 여러 자원을 할당 받아 실행하는 프로그램의 단위. 프로세스 내에서 작업 단위
- 프로세스 vs 스레드
- 프로세스: 실행 중인 프로그램 (자원 할당의 단위)
- 스레드: 프로세스 내의 실행 흐름 (CPU 이용의 단위)
- 스케줄링 기법⭐
- 비선점 스케줄링: FCFS, SJF, HRN
- FCFS(First Come First Service)
- SJF(Shotest Job First)
- HRN(Highest Response-ratio Next): 우선순위 계산식
- 선점 스케줄링: Round Robin, SRT, 선점 우선순위
- SRT(Shortest Remaining Time)
- 평가 방법
- 평균대기시간 = 종료시간 - 총 실행시간 - 도착 시간
- 평균반환시간 = 종료시간
- 비선점 스케줄링: FCFS, SJF, HRN
- 리눅스 명령어
- fork
- chown
- chmod
🟡 Part 11 응용소프트웨어 기초 기술 활용(2)
- ip 주소
- IPv4: 8비트x4, 5단계 클래스
- IPv6: 16비트x8, 유니캐스트, 멀티캐스트, 애니캐스트
- 서브네팅
- 도메인 네임
- OSI 참조 모델 (물데네 전세표응)
- 물리계층⭐: 기능적, 전기적, 기계적, 절차적
- 데이터 링크 계층⭐: 두 개의 인접한 개방 시스템들 간에 ~ 연결 설정을 유지 및 종료
- 네트워크 계층⭐: 개방 시스템 간의 네트워크 연결을 관리~, IP, ICMP. ARP, RARP
- 전송 계층: 종단 시스템(end-to-end), TCP, UDP
- 세션 계층
- 표현 계층
- 응용 계층
| 계층 | 이름 (영문) | 주요 기능 | 대표 장비 | 대표 프로토콜 / 데이터 단위 | 암기 포인트 |
|---|---|---|---|---|---|
| 7 | 응용계층 (Application) | 사용자와 직접 상호작용, 응용 서비스 제공 | — | HTTP, FTP, SMTP, POP3, DNS | “사용자 눈에 보이는 서비스” |
| 6 | 표현계층 (Presentation) | 데이터 형식 변환, 암호화, 압축 | — | JPEG, MPEG, ASCII, SSL, TLS | “표현 형태 변환·보안” |
| 5 | 세션계층 (Session) | 통신 세션의 생성, 유지, 종료 | — | NetBIOS, RPC, SSH | “대화 관리자 (Session Control)” |
| 4 | 전송계층 (Transport) | 신뢰성 있는 데이터 전송, 흐름 제어, 오류 제어 | 게이트웨이 | TCP, UDP | “포트 번호 / 종단 간 통신” |
| 3 | 네트워크계층 (Network) | 경로 설정, 라우팅 | 라우터 | IP, ICMP, ARP, RARP, OSPF, RIP | “주소 지정 + 경로 설정” |
| 2 | 데이터링크계층 (Data Link) | 프레임 단위 전송, 오류 검출(CRC) | 스위치, 브리지 | Ethernet, PPP, L2TP, HDLC | “MAC주소 기반 / 프레임 단위” |
| 1 | 물리계층 (Physical) | 비트 전송, 전기적·기계적 신호 정의 | 허브, 리피터 | RS-232, DSL, 광케이블 | “0과 1, 신호 자체” |
- 네트워크 장비
- 라우터: LAN과 LAN을 연결. 최적 경로
- 허브: 컴퓨터끼리 연결
- 프로토콜: 서로 다른 기기들 간의 데이터 교환을 원활하게 수행할 수 있도록 표준화시켜 놓은 통신 규약
- 구문
- 의미
- 시간
- 패킷 교환 방식
- 가상 회선 방식: 연결형, 경로를 미리 고정
- 데이터그램 방식: 비연결형, 사전에 접속절차 x
- TCP/IP: 서로 다른 기종의 컴퓨터들이 데이터를 주고 받을 수 있도록 하는 표준 프로토콜
- TCP: 전송계층, 가상회선 방식, 양방향, 연결지향형
- IP: 네트워크계층, 데이터그램 방식, 비연결형
- UDP: 데이터 전송 전에 연결을 설정하지 않는 비연결형 서비스를 제공하는 프로토콜, 신뢰성 보다 속도
- ICMP(Internet Control Message Protocol): 통신 중에 발생하는 오류의 처리와 전송 경로 변경 등을 위한 제어 메시지를 관리하는 역할
- ARP(Address Resolution Protocol): 호스트의 IP주소를 접속 장치의 MAC 주소로 변환
- RARP(Reverse Address Resolution Protocol): MAC->IP
⚪ 2025.10.28 (화)
- NAT⭐(Network Address Translation): 한 개의 정식 IP 주소에 대량의 가상 사설 IP 주소를 할당 및 연결하는 역할
- IGP⭐(Interior Gateway Protocol): 하나의 자율 시스템 내의 라우팅에 사용되는 프로토콜
- RIP(Routing information protocol): 가장 널리 사용. 거리 벡터 라우팅 프로토콜
- OSPF(Open Shrotest Path First protocol): RIP의 단점을 해결하여 새로운 기능을 지원하는 인터넷 프로토콜. Dijkstra 알고리즘. ‘링크 상태(속도, 대역폭)’라는 복잡한 정보를 기반으로 최적 경로를 계산. (대규모 망에 사용)
- EGP
- BGP: 현재 인터넷에서 유일하게 사용하는 ‘EGP’ 표준
- 블록체인(Blockchain): P2P 네트워크를 이용하여 온라인 금융 거래 정보를 온라인 네트워크 참여자의 디지털 장비에 분산 저장하는 기술
- 매시업(Mashup): 다수의 정보원이 제공하는 콘텐츠를 조합하여 하나의 서비스로 제공하는 웹사이트 또는 애플리케이션
- 디지털 트윈
그레이웨어(Grayware)
- RAID(Redundant Array of Independent Disk)
- RAID 0: 디스크의 개수가 증가할수록 입출력 속도와 저장이 증가하지만 1개의 디스크만 손상되어도 전체 데이터 유실
- “속도만 빠름, 1개 깨지면 다 날아감” → RAID 0
- “완전 복사, 안정성 최고, 용량 절반” → RAID 1
- “속도/안정성 균형, 1개 고장 복구 가능” → RAID 5
- RAID 0: 디스크의 개수가 증가할수록 입출력 속도와 저장이 증가하지만 1개의 디스크만 손상되어도 전체 데이터 유실
- Secure OS
- DB 관련 신기술
- 하둡(Hadoop): 클라우드 분산 컴퓨팅 플래폼, 더그 커팅과 캐퍼렐라가 개발, 구글의 맵리듀스 엔진, 자바 소프트웨어 프레임워크
- 맵리듀스(MapReduce)
- 데이터 마이닝
- REDO/UNDO: commit 기록이 있을때(REDO), 없을때(UNDO)
- 연기 갱신 기법/즉각 갱신 기법
- 병행제어
- 로킹(locking): 트랜잭션들이 어떤 로킹 단위를 액세스하기 전에 lock을 요청해서 lock이 허락되어야만 그 로킹 단위를 핵세스할 수 있도록 하는 기법
- 로킹 단위(Locking Granularity): 병행제어에서 한꺼번에 로킹할 수 있는 객체의 크기
- 교착상태(Dead Lock): 서로 다른 프로세스가 점유하고 있는 자원을 요구하며 무한정 기다리는 현상
- 상호 배제(Mutual exclusion)
- 점유와 대기(Hold and wait)
- 비신점(Non_preemption)
- 환형 대기(Circular wait)
- 해결 방법
- 예방 기법
- 회피 기법: 은행원 알고리즘
- 발견 기법
- 회복 기법
🟡 Part 12 제품 소프트웨어 패키징
- 릴리즈노트
- Header(머릿말)⭐
- 개요:
- 목적
- 문제요약
- 재현 항목
- 수정/개선 내용
- 사용자 영향도
- SW 자원 영향도
- 노트
- 면책 조항
- 연락처
- 디지털 저작권 관리(DRM: Digital Right Management)
- 저작권자가 배포한 디지털 콘텐츠가 저작권자가 의도한 용도로만 사용되도록 디지털 콘텐츠의 생성, 유통, 이용까지의 전 과정에 걸쳐 사용되는 디지털 콘텐츠 관리 및 보호 기술
- 구성 요소
- 클리어링 하우스
- 콘텐츠 제공자
- 패키저
- 콘텐츠 분배자
- 콘텐츠 소비자
- DRM 컨트롤러
- 보안 컨테이너
- 기술 요소
- 암호화(Encryption)
- 키 관리
- 암호화 파일 생성
- 식별 기술
- 저작권 표현
- 정책 관리
- 크랙 방지
- 인증
- 소프트웨어 패키징의 형상 관리(SCM)
- 기능
- 형상 식별, 제어, 통제(Baseline이 반영되도록), 감사, 기록
- 기능
- 소프트웨어 버전 관리 도구
- 공유폴더 방식
- 클라이언트/서버 방식(CVS)
- 분산 저장소 방식(Git)
⚪ 2025.10.29 (수)
🟡 Part 10 프로그래밍 언어활용
⚪ 2025.10.30 (목)
C언어 더블포인터를 활용한 2D 동적 배열
- 파이썬 set 자료형
- 중복 허용 x
- 순서가 없음
- 집합 연산을 쓸때 매우 유용
- Java의 Singleton 패턴(Singleton Pattern) 개념
⚪ 2025.10.31 (금)
🟡 Part 1 요구사항 확인
- 소프트웨어 개발 방법론
- 나선형 모형: 점진적, 보헴, 계획수립-위험분석-개발및검증-고객평가
- 폭포수 모형: 고전적,
- 프로토 타입 모형
- 애자일 모형
- 스크럼
- XP
- Lean
- 요구사항
- 기능 요구사항(Functional)
- 비기능 요구사항(Non-functional)
- 개발 프로세스
- 도출(Eliciation)-분석(Analysis)-명세(Specification)-확인(Validation)
- 요구사항 분석 도구 및 기법
- 자료 흐름도(DFD)
- 자료 사전(DD)
- UML(Unified Modeling Language): 대표적인 객체지향 모델링 언어
- 사물(Things)-관계(Relationships)-다이어그램(Diagram)
- 관계
- 집합(Aggregation): 포함되어있지만 독립적
- 포함(Composition): 포함하는 사물의 변화가 사물에게 영향을 미치는 관계
- 일반화(Generalization): 일반적이고 더 구체적인 관계
- 의존(Dependency): 영향을 주는 짧은 시간
- 실체화(Realization): 서로를 그룹화
- CASE(Computer Aided Software Engineering): 소프트웨어 개발 과정을 자동화
- 비용산정 기법
- 상향식(LOC)-하향식
- 수학적 산정 기법
- COCOMO 모형: 보헴, LOC에 의한 산정기법
- Putnam 모형: 노력의 분포, Rayleigh-Norden 곡선
🟣 2025-2회(27.8%)
- 파일 구조(순차, 인덱스, 해싱)
- SSH
- Attribute
- 스케줄링 기법: SJF, SRT
- SQL project
- AJAX
- 디자인패턴(Proxy: 대리자)
- SYN Flooding: 3-way-handshake
- 화이트박스 테스트(분기 커버리지)
- 프로세스 스케줄링(RR)
🟣 2025-1회(15.1%)
- 세션 하이재킹
- 무결성 제약 조건(도메인, 개체, 참조)
- 오류검출(CRC: 다항식 코드): 데이터링크 계층
- 결합도(내용,스탬프, 공통)
- 스케어웨어❌
- 서브네팅
- ARP, RARP
- 디자인패턴(Adapter)
- 테스트 커버리지(문장: Statment)
- 데이터베이스 용어(도메인, 디그리, 외래키, 속성)
⚪ 2025.11.01 (토)
🟡 Part 2 요구사항 확인
- 스키마
- 외부 스키마
- 개념 스키마
- 내부 스키마
- 데이터베이스 설계 순서
- 개념적 설계: 트랜잭션 모델링, E-R 모델
- 논리적 설계: 특정 DBMS가 지원하는 논리적 자료 구조로 변환하는 과정
- 물리적 설계
- 후보키, 기본키, 대체키, 슈퍼키, 외래키
- 무결성
- 개체무결성: 기본키는 Null이거나 중복값으 가질 수 없다
- 참조무결성: 외래키 값은 Null이거나 기본키 값과 동일해야함
- 이상(Anomaly)
- 삽입 이상, 삭제 이상, 갱신 이상
- 정규화 과정(두부이결다조)
- 반정규화
- 트랜잭션 특성
- 원자성(Atomicity)
- 일관성(Consistency)
- 독립성(Isolation)
- 영속성(Durability)
- CRUD 분석
- 생성, 읽기, 갱신, 삭제
🟡 기출문제 1회독
🟣 2024-3회(20.7%)
- LRU 페이지 교체 알고리즘
- Smurf
- VPN
- 디자인패턴: 행위
- 화이트박스 테스트 검증기준(문장, 분기, 조건)
- URL 구조
- UML 모델 관계(연관, 일반화, 의존)
- 키
- 개체 무결성
- 네트워크 신기술(Ad-hoc 네트워크, Mesh 네트워크)
🟣 2024-2회(27.7%)
- 반정규화
- SQL SELECT
- 카디널리티, 디그리
- IPsec
- 개인키 암호화 알고리즘 AES
- TCP/IP(데이터그램, 가상회선VC)
- 응집도(순차)
- SRT
- 결합도(제어)
- IGP(RIP)
- 디자인패턴(Iterator)
- 스케줄링 기법(SRT)
⚪ 2025.11.03 (월)
🟣 2024-1회(36.8.7%)
- IGP(OSPF)
- 정규화(제3정규형)
- 응집도(기순교절시논우)
- 디자인패턴(추상팩토리)
- 페이징 기법(LRU, LFU)
- 커버리지(MC/DC)
- 보안 위협(Rootkit)
- 보안 위협(APT)
🟣 2023-3회(17.7%)
- 네트워크 용어(OAuth❌): 사용자가 비밀번호를 제공하지 않고 다른 웹사이트나 애플리케이션의 접근 권한을 부여할 수 있게 하는 개방형 표준기술.
- chmod
- UML 다이어그램(패키지)
- 블랙박스 테스트 기법(Equivalence Partition: 동치 분할 기법)
- NAT(Network Address Translation)
- 자료전송 방식(ATM: 비동기식 전송방식)
- 접근 통제(MAC, DAC, RBAC)
- 클라우드(IaaS, PaaS, SaaS)
- 거리벡터 라우팅 프로토콜(RIP)
- 관계 연산자(Join, Project, Select, Division)
- 참조무결성
🟣 2023-2회(17.9%)
- INSERT INTO 학생 VALUES( ~ )
- 화이트박스 테스트 검증 기준(조건): 개별 조건식의 결과가~
- Tamper Proofing
- 데이터베이스 구축(요개논물)
- 디자인패턴(싱글톤, 방문자)
- 해밍코드
- HDLC
- 대칭키/비대칭키
- 암호화 기법 (Hash): 일방향 함수, 무결성 검증, SHA
- DROP VIEW 학생 CASCADE
- 하향식(스텁), 상향식(드라이버)
🟣 2023-1회(27.5%)
- AJAX
- 패킷교환방식(VC(IP),데이터그램(TCP))
- L2TP 프로토콜
- SSH
- 멀웨어(웜, 바이러스, 트로이목마)
- ICMP: IP 주요구성원, 네트워크 계층, 제어메시지
- 디자인패턴(프록시)
- 튜플, 릴레이션 인스턴스, 카디널리티
- 스키마(개념, 외부, 내부)
- 화이트박스 테스트. 분기 커버리지
🟣 2022-3회(20.4%)
- 관계대수
- 디자인 패턴(브리지, 옵저버)
- 서브네팅
- Boundary Value Analysis
- 사회공학(social Engineering), Dark data❌
- python: map 함수
- SIEM, ESM❌
- 형상 관리 도구(Git, CVS, SVN)
- 보안 위협(Trustzone, Typosquatting)❌
- SSO: 커버로스, 한번의 인증
- 스케줄링 기법(SJF, RR, SRT)
- UML(관계, 클래스, 인터페이스)
- E-R 다이어그램
🟣 2022-2회(16.1%)
- 관계해석
- 암호화 알고리즘(IDEA, skipjack)❌
- VPN
- 객체지향 설계원리(SOLID 중 ISP)
- 인수 테스트(알파,베타)
- regression 테스트: 수정/변경 후 기존 기능이 깨지지 않았는지 확인❌
- SQL project
- python 슬라이싱
- 경로제어(IGP, EGP)
- 함수적 종속
- 인터넷 프로토콜(HTTP, Hypertext, HTML)
- fan in, out
🟣 2022-1회(25.6%)
- RAID Level 0❌
- REDO/UNDO
- ORDER BY score DESC
- 삭제 이상(Deletion anomaly)
- 파이썬 list 객체 메서드(extend, pop, reverse)
- 보안 프로토콜(TKIP)
- 소스코드 품질 분석도구(static, dynamic)
- jUnit❌
- NUI
- 블랙박스 테스트 기법(Equivalence partitioning, Boundary value analysis, Cause-effect graph)
- ISMS: 정보자산을 안전하게 보호하기 위한 보호 절차와 대책. KISA
- 슈퍼키(유일성), 후보키(유일성, 최소성)
- Watering hole❌
- 애플리케이션 테스트 V-모델
⚪ 2025.11.04 (화)
🟣 2021-3회(23.6%)
- ARP 스푸핑: MAC 주소를 변조하여~
- GRANT의 기능
- AAA(Authentication, Authorization, Accounting)
- 디자인 패턴(Factory)
- 결합도(제어)
- 상향식 통합 테스트(드라이버)
- CROSS JOIN
- 파일 구조(순차, 인덱스, 해싱)
- 테스트케이스(테스트 조건, 테스트 데이터, 예상결과)
- UML(클래스 다이어그램)
- OSI 7계층(데이터링크, 네트워크, 표현)
- DES
- 테스트 기법(Cause-Effect graph)
- GUI
- UML 관계(집합Aggregation, 일반화Generalization)
🟣2021-2회(27.7%)
- Ad-hoc 네트워크
- UX(사용자 경험), UI(사용자 인터페이스)
- 트랜잭션의 원자성(Atmoicity)란?
- 제 2정규형
- UPDATE [테이블] SET [속성]
- LEFT JOIN ~ ON
- 암호화 알고리즘(AES)
- 화이트박스 테스트커버리지(문장, 분기, 조건)
- 응집도(절차❗, 교환, 기능)
- 가상회선 방식, 데이터그램 방식
- 디자인 패턴(행위)
- 병행제어(locking)
- 럼바우 데이터 모델링(객체, 동적, 기능) + 정보(E-R다이어그램)
- 하향식 테스트(스텁)
🟣 2021-1회(39.5%)
- RARP
- 데이터베이스 설계(개논물)
- 웹서비스 구축 3요소(SOAP, WSDL, UDDI)
- 요구사항(기능, 비기능)
- 반정규화
- 블랙박스 테스트(경계값 분석, 동치 분할 검사)
- 애플리케이션 테스트(단위, 통합)
- IPv6, IPv4
- 모듈 간 통신 방식(IPC): 파이프, 메시지큐, 세마포어, 공유메모리, 소켓, 메모리맵드 파일, RPC
- EAI: 기업 내 각종 애플리케이션을 통합 및 연동해주는 솔루션
- 데이터 모델(연산 구조, 제약조건)
- 접근 제어(DAC)
- 결합도(내용, 스탬프, 공통)
- 세션 하이재킹
🟣 2020-4,5회(13.9%)
- IPv6
- UML 다이어그램(패키지)
- 디자인패턴(행위)
- 데이터베이스 회복기법(Immediate update)
- 스니핑: 네트워크 중간에서 남의 패킷 정보를 도청
- NAT: 네트워크 주소 변환, 마스커레이드
- 분산컴퓨팅 플래폼: 하둡
- 샘플링 오라클
- DB 이상 3가지(삽입, 삭제, 갱신)
- 동치 분할 테스트(Equivalence Partitioning test)
- 유닉스
- 블록체인
- 프로세스 상태 전이도: 준비, 실행, 대기
- 데이터 베이스 가용성: 인가 받은 사용자는 언제든 접근 가능
🟣 2020-3회(18.3%)
- 리팩토링 목적을 서술하시오
- DELETE FROM
- ICMP
- 스키마에 대해 서술하시오
- 프로토콜: 심리학자 톰 마릴
- DIVISION
- 화이트박스 테스트: 분기 커버리지
- 형상통제에 대해 서술하시오
- 블랙박스 테스트
- 헝가리안 표기법
- 라우팅 프로토콜(OSPF)
- EAI(point to point, hub&spoke)
- UI의 직관성이란?
- C++에서 생성자에 대해서 서술하시오
- ALTER 테이블 ADD
⚪ 2025.11.05 (수)
🟣 2020-2회(21.0%)
- RTO❌: 목표 복구 시간
- AJAX⭐
- 애자일
- ROLLBACK에 대해서 서술하시오
- IPsec⭐
- static test
- 디자인패턴(옵저버)
- 운영체제(안드로이드)
- SOAP⭐
- SQL injection에 대해 서술하시오
- 인터페이스(직관성, 유효성, 학습성, 유연성)
- chmod
- LOD❌
- 데이터베이스 구축 과정(요개논물)
- 형상관리(Git, SVN)
🟣 2020-1회(5.3%)
- XML: 특수한 목적을 갖는 마크업 언어~
- JSON: 속성-값 쌍, XML을 대체하여 사용되고 있다~
- 릴리즈 노트
- 결합도, 응집도
- LOC 기법
- 트랜잭션 특징(원자성, 일관성, 독립성, 지속성)
- 애플리케이션 성능(처리량, 응답시간, 경과시간)
- 비정규화
- MD5❌
- 프로토콜 기본요소(구문syntax, 의미semantics, 시간timing)
- Land attack
- 살충제 패러독스
- OSI 7계층(물리): 기계적, 전기적, 기능적, 절차적
- fan in,out
- 데이터 마이닝이란
- 비선점 스케줄링(HRN) 우선순위 공식
🟡 기출문제 2회독
🟣 2025-2회(27.8%)
JAVA 상속: static 메서드는 오버라이딩이 안된다! ```java // 1. 부모 클래스 class Parent { // 부모의 ‘공용’ 메서드 public static String classMethod() { return “A. 부모 (static)”; }
// 부모의 ‘객체’ 메서드 public String instanceMethod() { return “B. 부모 (instance)”; } }
// 2. 자식 클래스 class Child extends Parent { // 자식의 ‘공용’ 메서드 (부모의 static을 ‘숨김(Hiding)’) public static String classMethod() { return “C. 자식 (static)”; }
1
2
3
4
5
// 자식의 '객체' 메서드 (부모의 instance를 '오버라이딩(Overriding)')
@Override
public String instanceMethod() {
return "D. 자식 (instance)";
} }
// 3. 실행 public class Test { public static void main(String[] args) {
1
2
3
4
5
6
7
8
9
10
11
12
13
// --- 헷갈리는 부분 ---
// 변수 타입은 Parent지만, 실제 객체는 Child
Parent p = new Child();
// 1. '객체' 메서드 호출 (오버라이딩 O)
// p가 가리키는 '실제 객체'는 Child이므로, Child의 메서드가 호출됨
System.out.println(p.instanceMethod()); // 결과: D. 자식 (instance)
// 2. '공용(static)' 메서드 호출 (오버라이딩 X) 💥
// static은 '실제 객체'를 안 봐!
// '변수 타입(p)'이 Parent이므로, Parent의 메서드가 호출됨
System.out.println(p.classMethod()); // 결과: A. 부모 (static)
} } ```
🟣 2024-3회(20.7%)
- JAVA
print(): 줄바꿈 ❌printIn(): 줄바꿈 ⭕
- python 슬라이싱 lst[::2]와 lst[1::2]
- C: static 변수는 처음 한번만 초기화 됨!
- JAVA 메소드 오버라이딩…. 헷갈림
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
class B {
int x = 3;
int getX() {
return x * 2;
}
}
class D extends B {
int x = 7;
int getX() {
return x * 3;
}
}
public class Main {
public static void main(String[] args) {
B a = new D();
D b = new D();
System.out.print(a.getX() + a.x + b.getX() + b.x);
} // a.getX()가 오버라이딩 될때 변수도 D를 쓰게 됨
}
- JAVA: 제네릭 자료형 T
- C언어 더블포인터!!!!!
1 2
*(*pp + i) // 굳이 더블 포인터를 사용했을때 조심해야한다. *(pp + i) // 비교
⚪ 2025.11.06 (목)
🟣 2024-3회(20.7%)
- Java 문법은 “static 메서드 안에서는 static 변수/메서드만 쓸 수 있다”
🟣 2024-2회(27.7%)
🟣 2024-1회(36.8%)
🟣 2023-3회(17.7%)
🟣 2023-2회(17.9%)
🟣 2023-1회(27.5%)
- abstract class (추상 클래스)
- JAVA abstract method: 메서드의 구체적인 구현이 없어도 됨. 오버라이딩이 강제되는 역할을 하기도 함
- JAVA 업캐스팅에서는 변수타입이 먼저임(Parent). 그러나 Parent에 없는 메서드는 호출조차 안됨.
- static 메서드는 ‘객체’의 기능이 아니라 클래스(설계도)의 기능(classMethod())임.
- this() vs super()
- this( … ): 나의 클래스의 다른 생성자 호출
- super(…): 부모 클래스의 생성자 호출
- 파이썬 map(): map(function, iterable)
- 완전수:6, 28, 496
- C에서는 arr 자체가 길이를 모르는 게 맞지만, Java에서는 arr이 가리키는 객체가 자기 길이를 arr.length로 완벽하게 알고 있다.. 즉, Java 배열 참조 (int[] arr)의 문법
⚪ 2025.11.06 (목)
🟣 2020-4,5회(13.9%)
⚪ 2025.11.05 (수)
🟣 2020-2회(21.0%)
🟣 2020-1회(5.3%)
⚪ 2025.11.07 (금)
- 서브네팅
- 네트워크 주소: 서브넷의 첫번째 주소
- 호스트 주소: 네트워크와 브로드캐스팅 주소를 뺀 나머지
- 브로드캐스팅 주소: 서브넷의 마지막 주소
- REDO → 커밋 O 트랜잭션 재실행 UNDO → 커밋 X 트랜잭션 취소