정보처리기사 2021년 3회

이주원·2025년 6월 30일

컴퓨터언어

목록 보기
45/50

싱글톤 패턴 관련 문장

항목설명
패턴 종류싱글톤(Singleton) 패턴
핵심 목적하나의 인스턴스만 생성하여, 전체 애플리케이션에서 공유하도록 함
객체 생성 방식클래스 내부에 정적(static) 객체 변수로 선언하고, 이미 선언되어 있으므로 클래스명을 생략하고 new를 사용하여 초기화
예시 코드_inst = new Connection();
Connection._inst = new Connection();에서 클래스명 생략 가능 (같은 클래스 내부이므로)

✅ 구조체 struct jsu 메모리 구성

구성 요소타입크기(Byte)설명
nae[12]char[12]12문자열 저장용 배열 (1문자 = 1Byte)
osint44Byte 정수형
dbint44Byte 정수형
habint44Byte 정수형
hhabint44Byte 정수형
합계28 Byte연속된 메모리 공간에 저장됨 (패딩 없을 경우)
항목설명
널 문자(\0) 포함문자열 끝에는 자동으로 **1Byte 크기의 널 문자 \0**가 추가됨
널 문자의 역할문자열 출력 시 끝을 나타내는 용도로 사용되며, 화면에 출력되지는 않음
문자별 메모리 사용량영문자: 1Byte, 한글(UTF-8 기준): 2Byte

✅ == 비교 연산 시 결과 표현 비교

언어== 결과값의 타입출력 형태 (표현)대소문자 구분비고
Cint (0 or 1)정수값 출력
0 = false
1 = true
❌ 없음C에는 true/false 키워드가 없으며, <stdbool.h>를 쓰면 true/false로도 표현 가능
Javaboolean**true** / **false**소문자 고정대소문자 바꾸면 문법 오류
Pythonbool (내부적으로 int)**True** / **False**앞글자 대문자파이썬은 True == 1, False == 0도 성립함

SQL문을 구성 요소별로 가독성 좋게 정리한 표

구문 요소역할 및 설명
SELECT COUNT(*) CNT전체 결과에서 행 개수를 세어 CNT라는 별칭으로 반환
FROM A CROSS JOIN B테이블 A와 B를 조건 없이 모든 조합으로 결합 → 카티션 곱 생성 (dba.stackexchange.com, geeksforgeeks.org)
WHERE A.NAME LIKE B.RULEA의 NAME이 B의 RULE 패턴과 일치하는 경우 행만 필터링

✅ 포인터와 배열 요소 메모리 관계 정리

표현식값 또는 주소설명
*array1000array[0]이 가리키는 주소
**array12주소 1000에 저장된 실제 값
array[1]2000배열의 두 번째 요소가 저장한 주소
*array[1]24주소 2000에 저장된 실제 값

✅ 연산자별 의미 정리

기호 / 연산자의미비고
==같다관계(비교) 연산
!=같지 않다관계 연산
>크다관계 연산
OR (비트 OR)`w == 2w == y` → 피연산자를 비트 단위로 OR
&AND (비트 AND)전체 조건들을 비트 단위로 AND
!NOT (부정)!(y > z)y > z가 false일 때 true
^XOR (배타적 논리합)x ^ y → 서로 다르면 1 (같으면 0)

스푸핑

공격 기법설명대상 및 범위결과 / 목적특징 및 대응
ARP 스푸핑 (ARP Spoofing)공격자가 가짜 ARP 응답을 보내 자신의 MAC 주소를 다른 IP(예: 게이트웨이)에 매핑**로컬 네트워크(LAN)**의 장비들네트워크 트래픽 가로채기, 수정, 중간자 공격 수행비교적 손쉬움, 상태 검사 부재가 취약점(en.wikipedia.org, vaadata.com, en.wikipedia.org)
DNS 스푸핑 (DNS Spoofing / Poisoning)DNS 캐시나 권위 서버를 조작하여 정상 도메인을 가짜 IP로 연결인터넷상의 클라이언트와 DNS 서버정상 서비스로 위장한 악성 사이트로 리디렉션, 피싱 등 수행DNSSEC 도입으로 방어 가능
워터링홀 공격 (Watering Hole)특정 조직이 주로 방문하는 웹사이트를 사전 감염시켜 사용자 감염 유도특정 그룹·산업스텔스 감염으로 네트워크 내부 진입장기 타깃, 매우 은밀
MITM 공격 (Man-in-the-Middle)공격자가 통신 경로에 끼어들어 데이터 가로채기 및 변조웹, Wi-Fi, SMTP, HTTP(S) 등 다양민감 정보 탈취, 메시지 변조, 세션 탈취 등ARP·DNS·TLS/TCP Hijacking 포함한 상위 개념

✅ DCL 주요 명령 비교

명령기능효과 방식우선순위예시 (SQL Server 기준)
GRANT권한 부여특정 사용자/역할에 권한 추가낮음GRANT SELECT ON table TO user; (geeksforgeeks.org, beginner-sql-tutorial.com)
DENY권한 거부명시적으로 접근 차단
GRANT보다 우선 적용
가장 높음DENY SELECT ON table TO user;
REVOKE권한 회수 / 철회GRANT 또는 DENY의 결과를 해제(Permission 제거)중간REVOKE SELECT ON table FROM user;

Application, Authentication, Authorization, Accounting, Avalanche, ASCII

용어분류설명참고
ApplicationOSI/TCP 계층사용자 애플리케이션이 네트워크와 직접 상호작용하는 최상위 OSI 계층(Layer 7). 예: 웹 브라우저, 이메일, FTP 등 (turn1search1, turn1search3)응용 계층
AuthenticationAAA 보안 프레임워크사용자 또는 장치의 신원을 확인하는 단계. 예: 비밀번호, 바이오미트릭스, 토큰 (turn0search0, turn0search8)AAA
AuthorizationAAA 보안 프레임워크인증 후, 자원에 대한 접근 권한 부여 또는 제한AAA
AccountingAAA 보안 프레임워크사용자의 활동 내역 로그 기록 및 분석AAA
Avalanche암호학(Cryptography)입력 데이터가 약간만 바뀌어도 출력이 극적으로 변경되는 성질. 보안 알고리즘의 강도 지표 (turn0search1, turn0search3)암호 보안
ASCII문자 인코딩7/8비트 기반 텍스트 인코딩 표준으로, 영숫자 및 특수문자를 **고유 코드(0–127)**로 표현 (turn1search0, turn1search2)문자 표현

대표 디자인 패턴 8종

패턴분류핵심 역할주요 특징
SingletonCreational단일 인스턴스 보장클래스 하나만 생성, 전역 접근 제공, 설정·로그 객체 등에 활용(refactoring.guru, en.wikipedia.org, cs.unc.edu)
Factory MethodCreational객체 생성 위임상위 클래스에 팩토리 메서드 정의, 하위 클래스가 구체 구현 결정
Abstract FactoryCreational관련 객체군 생성여러 팩토리 묶음 제공, 상호 연관 객체 생성 쉽게
BuilderCreational복합 객체 단계별 구성복잡한 객체를 단계적으로 생성, 가독성 있는 생성 방식
PrototypeCreational객체 복제 기반 생성기존 인스턴스를 clone하여 새로운 객체 생성, 성능 유리
FacadeStructural단순 인터페이스 제공복잡한 하위 시스템을 단순화하여 외부에 노출
CompositeStructural트리 구조 객체 구성개별 객체와 그룹을 동일하게 처리
Template MethodBehavioral알고리즘 골격 구성상위 클래스가 알고리즘 흐름 제공, 하위 클래스가 구현 맡음
구분‘무엇을’ 중심?‘왜/어떻게’ 중심?장점
생성(Creational)객체 생성 기법객체 언제/어디서/어떤 방식으로 생성할지에 집중유연성↑, 구현 세부 매핑 제거
구조(Structural)클래스/객체 배치 및 관계상속 대신 컴포지션을 통한 기능 조합 및 구조 수정 용이구조 변화에 대한 적응력↑
행위(Behavioral)객체 상호작용과 책임 배분메시지 흐름, 알고리즘 흐름의 통제와 위임 책임 분리역할 분리와 코드 응집도↑

상향식 (Bottom-Up) 및 하향식 (Top-Down) 통합 테스트 기법

항목상향식 통합 테스트 (Bottom-Up)하향식 통합 테스트 (Top-Down)
시작 지점하위 모듈(서브시스템)부터 통합 시작 (lambdatest.com)상위 모듈(메인 구조)부터 통합 시작
보조 도구아직 개발되지 않은 상위 모듈 대신 Driver 사용아직 개발되지 않은 하위 모듈 대신 Stub 사용
장점- 하위 기능 오류를 조기에 발견 가능
- 하위 모듈이 안정적일 때 효율적 (softwaretestingmaterial.com)
- 테스트 결과 관찰이 용이 (softwaretestingmaterial.com)
- 상위 구조 및 흐름을 먼저 확인 가능
- 설계 상의 큰 결함을 조기에 발견 (lambdatest.com)
- 인터페이스 문제 식별이 쉬움 (geeksforgeeks.org)
단점- 상위 모듈의 결함을 마지막에 발견
- 상위 흐름 확인 지연
- 스텁 작성이 많아야 함
- 하위 기능에 대한 테스트가 늦어질 수 있음
복잡도초기에는 단순하지만, 상위로 갈수록 복잡 증가초기에는 비교적 단순하지만, 스텁 작성량 많음
적용 시점하위 기능이 우선 개발 완료될 때 적합시스템 흐름이나 UI 중심 기능이 먼저 필요할 때 적합
비교 요약- Stable 하위 기반에 적합
- 오류 위치 추적 쉬움
- Driver 사용으로 유연성 있음
- 전체 구조 우선 검증 가능
- Stub으로 하위 모듈 회피 가능
- 상위 구조 문제 조기 발견 ✅

🔍 인덱싱 구조 비교

조직 방식구성 방식인덱스 구조장점단점주요 사용 사례
순차적 파일 (Sequential)레코드를 키 순서대로 나열(기본 정렬 파일 자체가 인덱스)순차 엑세스 효율 좋음, 정렬 필요 없고 구현 단순 (git)단일 검색 느림 (O(n)), 삽입·삭제 시 정렬 작업 필요로그 저장, 백업, 순차 처리 작업 (studyglance.in, cs.uct.ac.za)
인덱스드 파일 (Indexed)데이터 + 별도 인덱스 파일 유지Dense/Sparse 인덱스, 다단계 인덱스 (B+Tree 기반)랜덤 엑세스 빠르고 범위 검색 가능, 다중 인덱스 구성 가능인덱스 유지 비용 존재, 업데이트 시 오버헤드일반 DBMS 기본 인덱스, 절차적 검색, 키별 접근
해시 파일 (Hashed)키에 해시 함수 적용 → 고정 해시 버킷에 저장해시 인덱스 사용 (static/dynamic)정확 일치 검색이 매우 빠름 (O(1))범위 검색 불가, 해시 충돌·오버플로우 처리 복잡캐시, 세션 데이터, 키-값 저장소

테스트 케이스의 구성 요소

구성 요소설명영향 및 예시
요구 절차테스트 대상 기능을 정의한 요구사항로그인: “사용자는 아이디/비밀번호로 로그인 가능해야 함”
의존성 여부테스트 수행에 앞서 필요한 전제 조건이나 순서DB 연결, 회원 가입 선행, 네트워크 연결 상태 등
테스트 데이터테스트 입력 값 또는 상태 정의유효/무효 아이디 및 패스워드, 경계값, 예외 케이스 등
테스트 조건테스트 실행 시 환경 또는 조건OS 버전, 브라우저, 디바이스, 화면 크기, 서버 설정 등
하드웨어 환경실제 테스트를 진행할 장비나 구성CPU, 메모리, 네트워크 속도, 센서 유무 등
소프트웨어 환경테스트 대상 시스템을 실행하기 위한 소프트웨어 설정OS, DBMS, 웹 서버, 라이브러리, 미들웨어 버전
예상 결과테스트 성공/실패를 판정할 기준이 되는 결과로그인 성공 시 리다이렉트, 에러 메시지 “잘못된 비밀번호” 등
성공/실패 기준실제 결과가 예상과 일치하는지 판단하는 기준HTTP 200, "OK" 응답 포함, 화면 요소 정상 표시 등
식별자 ID테스트 조건 (①)테스트 데이터 (②)예상 결과 (③)
LS_W10_35사용자 초기 화면 진입ID: test_a01
PW: 203a!d5%ffa1
로그인 성공
LS_W10_36사용자 초기 화면 진입ID: test_a01
PW: 1234
로그인 실패(1)
– 비밀번호 불일치
LS_W10_37사용자 초기 화면 진입ID: "(공백)"
PW: "(공백)"
로그인 실패(2)
– 미입력 오류

대표적인 UML 다이어그램

다이어그램유형대표 목적사용 시점 / 특징
클래스 다이어그램구조형시스템의 정적 구조 모델링 (클래스, 속성, 메서드, 관계 등) (archimetric.com)설계 초기 및 시스템 구조 정의 시 필수
시퀀스 다이어그램행동형객체 간 시간 순 상호작용 (메시지 송수신 흐름)Use Case 흐름 구체화, 동작 분석 시 활용
액티비티 다이어그램행동형프로세스나 비즈니스 흐름 및 조건 분기 표현업무 흐름, 알고리즘, 분기 로직 설계 시 유용
컴포넌트 다이어그램구조형시스템의 모듈 단위 구성 및 의존성 시각화아키텍처 설계, 배포 및 모듈 재사용 계획 시 사용

OSI 7계층

레이어 번호계층 이름핵심 역할주요 기능 / PDU예시 및 프로토콜
1Physical (물리 계층)비트(bit) 수준의 전기적/광학적 신호 송수신Bit케이블, 스위치 물리부, 모뎀 ([turn0search1])
2Data Link (데이터 링크)프레임 단위 전송 / 오류 + 흐름 제어FrameEthernet, Wi‑Fi, MAC, LLC, 스위치 ([turn0search23])
3Network (네트워크)패킷 라우팅 및 논리 주소(IP) 관리PacketIP, ICMP, 라우터, 라우팅 ([turn0search1])
4Transport (전송)종단 간 신뢰성 있는 전송, 흐름 + 오류 제어Segment (TCP) / Datagram (UDP)TCP, UDP, 포트, 연결 제어 ([turn0search25])
5Session (세션)세션 연결 관리: 연결 설정, 유지, 종료, 동기화DataNetBIOS, PPTP, 세션 체크포인트 ([turn0search1])
6Presentation (표현)데이터 포맷 변환, 암호/압축, 인코딩/디코딩 지원DataSSL/TLS, JSON/XML, ASCII ↔ EBCDIC ([turn0search22])
7Application (응용)최종 사용자 애플리케이션 인터페이스, 네트워크 서비스 제공Data (Message)HTTP, FTP, SMTP, DNS ([turn0search0])
묶은 그룹포함 계층설명
응용 계층7. 응용
6. 표현
5. 세션
사용자가 접하는 부분, 데이터 표현/연결 포함
전송 계층4. 전송TCP/UDP 통한 신뢰성 보장
네트워크 계층3. 네트워크
2. 데이터링크
1. 물리
실제 데이터 전송 경로 결정 + 전기적 전송

🔐 대칭 블록 암호 비교표

알고리즘키 크기블록 크기구조 유형보안 수준 & 특징사용 현황
DES56비트64비트Feistel 구조, 16 라운드오래된 표준, 현재는 브루트포스 공격에 취약(rroij.com, en.wikipedia.org)사용 중단
3DES112 / 168비트64비트DES 3회 적용DES의 확장판, 보안 강화되었지만 속도 느리고 AES보다 비효율점진적 폐기 중
Skipjack80비트64비트비대칭 Feistel, 32 라운드NSA 개발, 과거 Clipper 칩에 사용됨, 2010년 이후 공식 퇴출역사적 용도
Blowfish32–448비트 가변64비트Feistel, 16 라운드특허 프리, 강력했으나 64비트 블록의 Sweet32 취약성, 소규모 파일에 적합일부 레거시 사용
Twofish128/192/256비트128비트Feistel, 16 라운드 + 복잡 키 스케줄AES 결선 진출, 빠르고 보안성 높으나 하드웨어 가속은 AES보다 느림제한적 사용
AES128/192/256비트128비트Substitution–Permutation Network현재 표준, 강한 보안성 및 하드웨어 가속 지원, NSA 기밀 대응 가능널리 채택

테스트 기법들을 비교 정리한 표

기법유형설명주요 특징
Equivalence Partition블랙박스입력 도메인을 "동등 클래스"로 나눠, 대표 값만 테스트테스트 케이스 수 감소 (testomat.io)
Boundary Value Analysis블랙박스클래스 경계(최소±1, 최대±1)를 중심으로 테스트오류 발견 효과 ↑
Cause–Effect Graph블랙박스입력(원인)과 출력(결과) 관계를 그래프로 모델링복잡한 로직 테스트에 유리
Condition Test화이트박스조건문 내부 모든 Boolean 조합을 테스트if/else 커버리지 중요 시 활용
Comparison Test블랙박스/화이트박스변수 비교 연산식 중심 테스트일반 비교 로직 테스트
Base Path Test화이트박스제어흐름 그래프에서 "기본 경로"별 테스트구조적 경로 테스트
Data Flow Test화이트박스변수의 정의(use) 간 연결 커버리지 중심 테스트변수 사용 흐름 분석
Error Guess블랙박스경험 기반으로 시스템 오류 예상 후 테스트 작성빠른 결함 발견 효과
Loop Test화이트박스반복문(루프)의 다양한 입력 길이에 대한 테스트경계, 최대/최소 반복 수 중심

🔍 UML 클래스 관계 비교표

관계기호 & 방향의미 요약특징 & 설명
Association──>, ──
(실선, 단방향 또는 양방향)
클래스 간 일반적 연결객체 간 링크를 나타내며, 1:n, n:m 등 다중성 포함 가능 (visual-paradigm.com)
Aggregation◇──
(빈 다이아몬드)
"has-a" 관계, 전체-부분 느슨한 연결부분 객체는 독립적으로 존재 가능
Composition◆──
(채워진 다이아몬드)
"owns-a" 관계, 전체-부분 강한 연결전체 삭제 시 부분도 삭제됨
Generalization──▷
(속이 빈 삼각형, 자식 → 부모)
상속 관계 ("is-a")자식은 부모 속성/메서드 상속
Realization-- -▷
(점선 + 속이 빈 삼각형, 구현 클래스 → 인터페이스)
인터페이스 구현계약(인터페이스)을 클래스가 구현
Dependency- - -▷
(점선 + 열린 화살표)
사용 또는 참조 관계약한 종속, 변경 영향 고려

profile
뭐가될지 모름

0개의 댓글