RAID 형태
- RAID1
- 두 개 이상의디스크를 미러링을 통해 하나의 디스크 처럼 사용
- RAID2
- 오류 정정을 위한 해밍코드를 사용하는 방식
- RAID3
- 하나의 디스크를 패리티(Parity) 정보를 위해 사용하고 나머지 디스크에 데이터를 균등하게 분산 저장
- RAID4
- RAID3과 같은 방식이나, 블록단위로 분산 저장
- RAID5
- 3개 이상의 디스크를 붙여서 하나의 디스크처럼 사용하고 각각의 디스크에 패리티 정보를 가지고 있는 방식
- RAID6
- 하나의 패리티를 두 개의 디스크에 분산 저장하는 방식
로그 기반 회복 기법
- 장애 발생 시 회복 하는 기법
- 트랜잭션 로그를 이용하여 오류가 발생한 트랜잭션을 재 실행하여 복구를 수행한다. - REDO
- 트랜잭션 로그를 이용하여 오류와 관련된 내용을 취소하여 복구를 수행한다 - UNDO
지연갱신 - 트랜잭션이 다 처리가 발생한다음에 데이터베이스에 반영. REDO만 사용한다. UNDO를 사용하지 않는다.(필요 없음)
즉시갱신 - 이벤트가 발생하면 그때그때 집어넣는다. REDO는 당연히 필요, UNDO도 그때그때 데이터베이스에 넣기때문에 UNDO도 필요
트랜잭션의 특성
- 원자성 (Atomicity) -> 트랜잭션이 모두 반영되거나, 모두 반영되지 않아야 한다. 커밋, 롤백이란 연산과 연관이 있다.
- 일관성 (Consistency) -> 트랜잭션이 실행되면 데이터들이 일관성있게 반영되어야 한다.
- 독립성, 격리성 (Isolation) -> 하나의 트랜잭션이 수행중 다른 트랜잭션에 영향을 끼치면 안된다.
- 영속성 (Durabillity) -> 트랜잭션 연산의 결과는 영구히 보존되어야 한다.
데이터베이스의 이상현상 중, 삭제 이상에 대해 간략히 서술하시오.
- 한 튜플을 삭제할때 연쇄 삭제 현상으로 인해 정보 손실되는 것이다.
이상현상
- 삽입 이상이란 릴레이션에서 데이터를 삽입할때 의도와는 상관없이 원하지 않는 값들로 함께 삽입되는 현상이다.
- 삭제 이상이란 릴레이션에서 데이터를 삽입할때 의도와는 상관없는 값들로 함께 삭제되는 연쇄 삭제 현상이다.
- 갱신 이상이란 릴레이션에서 튜플에 있는 속성값을 갱신할 때 일부 튜플의 정보만 갱신되어 정보에 모순이 생기는 현상이다.
이상현상을 없애기 위해 정규화를 진행
개념적 설계 - ERD(ER다이어그램을 만든다), 데이터베이스를 설계
동그라미 - 속성 / 마름모 - 관계 / 객체 - 네모
ERD를 이용해 만들다보면 이상현상이 발생하여 논리적설계에서 정규화를 한다
논리적 설계 - 정규화, 트랜잭션/인터페이스 설계
물리적 설계 - 저장장치 구조에 맞춰 (DDL을이용해 구조를 만든다), 무조건 성능고려, 물리적 설계, 파티션,인덱스,뷰,클러스터링도 만든다. 여러가지를 하다가 안되면, 반정규화를 한다.
비정규 릴레이션
제1정규형 - 도메인이 원자값
제2정규형 - 부분 함수적 종속 제거
제3정규형 - 이행적 함수 종속 제거
BCNF - 결정자이면서 후보키가 아닌것 제거
제4정규형 - 다치 종속 제거
제5정규형 - 조인 종속성 이용/제거
TKIP (Temproral Key Integrity Protocol)
임시 키 무결성 프로토콜은 IEEE 802.11의 무선 네트워킹 표준으로 사용되는 보안 프로토콜이다.
임시 키 무결성 프로토콜은 IEEE802.11i의 작업 그룹과 와이파이 얼라이언스엥서 WEP를 하드웨어의 교체없이 대체하기 위해 고안되었다.
특별한 하드웨어 없이 인간의 자연스러운 움직임을 인식하여 정보를 제공한다.
답: NUI
GUI, CUIm AUI, CLI
UI 설계 원칙
- 직관성
- 화면의 버튼, 항목, 입력란 등 누구나 쉽게 이해하고 사용할 수 있도록 한다.
- 유효성
- 사용자의 목적을 정확히 달성할 수 있도록 유용하고 효과적이어야 한다.
- 학습성
- 사용자가 쉽게 배우고 익힐 수 있어야 한다.
- 유연성
- 사용자의 요구를 최대한 수용하면서 오류를 최소화해야 한다.
SOLID 원칙
코드 분석도구
1. 소스코드의 실행 없이, 코드의 의미를 분석하여 결함을 찾아내는 코드 분석 기법
답: static (정적)
2. 소스코드를 실행하여 프로그램의 동작이나 결과를 확인하고, 메모리 누수, 스레드 결함등을 분석하는 기법
답: dynamic (동적)
애플리케이션 테스트 유형 분류
- 프로그램 실행 여부
- 정적 테스트
- 동적 테스트
- 테스트 기법
- 화이트박스 테스트 - 루프검사,
- 블랙박스 테스트 - 동등분활, 원인효과, 경계값분석, 비교검사
- 테스트에 대한 시각
- 검증 테스트
- 확인 테스트
- 테스트 목적
- 회복테스트
- 안전테스트
- 성능테스트
- 구조테스트
- 회귀테스트
- 병행테스트
- 테스트 기반
- 명세기반 테스트
- 구조기반 테스트
- 경험기반 테스트
- 테스트 오라클: 테스트가 참인지 거짓인지 확인하기위해 미리정의된 참값으로 테스트하는것
- 참오라클
- 샘플링오라클
- 휴이스트오라클
- 일관성 검사 오라클
- 테스트커버리지
테스트 도구
자바 프로그래밍 언어용 유닛 테스트 프레임워크
테스트 결과는 Test클래스로 개발자에게 테스트 방법 및 클래스의 History를 공유 가능
어노테이션으로 간결하게 지원
답: JUnit
블랙박스 테스트 기법
- 경계값 분석 (Boundary Value Analysis)
- 동등분할 기법 (Equivalence Partitioning)
- 원인효과 기법 (Cause-effect Graph)
화이트박스 테스트 기법
- 기초경로검사 (Base Path Test)
- 루프 검사 (Loop Test)
- 결정 커버리지 (Decision Coverage)
기업이 주요 정보자산을 보호하기 위해 수립,관리,운영하는 정보 보호 관리체계가 인증 기준에 적합한지를 심사하여 인증을 부여하는 제도
답: ISMS
슈퍼키는 (유일성)의 속성을 갖는다.
후보키는 (유일성)과 (최소성)의 속성을 갖는다.
이 공격은 APT 공격에서 주로 쓰이는 공격이며, 타겟이 자주 들어가는 홈페이지를 파악했다가, 그 홈페이지의 취약점을 통해 악성코드를 심어 사용자가 모르게 해당 악성코드를 다운로드 받게 하고, 다운로드 된 악성코드를 통해 공격을 하는 방식을 취한다.
답: Watering Hole
V모델에서의 테스트 단계
요구사항 분석 ---------------- 인수 테스트
기능명세 분석 ------------ 시스템 테스트
설계 -------- 통합 테스트
개발 ---- 단위테스트
개발 - 단위 테스트, 정적/동적 테스트
설계 - 통합 테스트, 상향식/하향식 테스트 (드라이버, 스텁), 빅뱅방식(한꺼번에 테스트하는거), 백본테스트(샌드위치 테스트, 상하향식 다하는거)
기능명세 분석 - 시스템 테스트, 기능/비기능 테스트 (기능은 만든거 정상동작 테스트 / 비기능은 기능들 보안,성능,품질을 보는 테스트)
요구사항 분석 - 인수테스트, 알파/베타 테스트(알파는 개발자랑 사용자가 진행 / 베타테스트는 사용자만 진행)
와일드카드( %, _ )
이씨로 시작하는거 이%
이씨로 시작하고 한글자이다. 이_
SELECT 필드1,필드2,... FROM TABLE WHERE 성적 >= '90' AND NAME LIKE '이%'/'이_'
GROUP BY 반 HAVING SUM(점수) >= 100 ORDER BY 반 DESC/ASC
SUM 합계
AVG 평균
MAX 최대값
MIN 최소값
COUNT 갯수
1. 요소를 확장해주는 역활을 하며, 모든 항목을 하나의 요소로 추가
- extend
2. 리스트 내부 요소를 꺼내주는 함수, 해당 함수를 호출하는 리스트에서 해당 값을 삭제하면서 리턴시켜준다.
- pop
3. 리스트 내부의 요소의 순서를 뒤접주는 역활을 한다.
- reverse
def func1(num1, num2=2):
print('a=', num1, 'b=', num2)
func1(20)
// a=20 b=2
class Car implements Runnable {
int a;
public void fun() {
System.out.println("func call");
}
}
public class Main{
public static void main(String[] args) {
Thread t1 = new Thread(new Car());
t1.start();
}
}
class A {
int a;
int b;
}
public class Main{
static void func1(A a) {
a.a *= 10; // a.a. = a.a * 10;
}
static void func2(A a) {
a.a += a.b; // a.a = a.a + a.b;
}
}
A a = new A();
a.a = 100;
func1(a);
a.b = a.a;
func2(a);
System.out.println(a.a); // 2000
접근지정자
private(클래스 내부에서만 사용)
protected(상속관계이거나, 같은패키지 내에서 사용)
public(아무데서나 사용)
default(같은 패키지/폴더내에서 사용)
#include<stdio.h>
int func(int i) {
if(i <= 1) return 1;
return i * func(i-1);
}
int main() {
int in;
scanf("%d", &in);
printf("%d", func(in));
}
입력값이 5가 들어왔다고 가정한다.
i = 5, 4, 3, 2, 1
5 * func(4) -> 5 * 24
4 * func(3) -> 4 * 6
3 * func(2) -> 3 * 2
2 * func(1) -> 2 * 1
1
출력값은 120
#include<stdio.h>
int main() {
int num = 1234;
int div = 10;
int res = 0;
while(num (1) 0) {
res = res * div;
res = res + num (2) div;
num = num (3) div;
}
printf("%d", res);
}
답
(1) >
(2) % (연산자 우선순위에따라 num % div를 먼저한다)
(3) / (정수 나누기 정수는 정수)
int isPrime(int number) {
int i;
for(i=2; i<number; i++) {
if(number % i == 0) return 0;
}
return 1;
}
int main(void) {
int number = 13195, max_div = 0, i;
for(i=2; i<number; i++) {
if(isPrime(i) ==1 && number % i == 0)
max_div = i;
printf("%d", max_div);
return 0;
}
답: 29
소수 구하는 문제
number % i == 0의 조건식에 접근해서 13195 % i를 했을경우 5부터 나머지가 0이다.
5,7,11,13,29... 소수를 쭉쭉쭉 나가다보면 29에서 답이 나온다.
'정보처리기사 실기 (2023)' 카테고리의 다른 글
| 22년 2회 실기 정리 (0) | 2023.08.07 |
|---|---|
| UML && 디자인패턴 정리 (0) | 2023.08.04 |
| 개념정리 #1 (0) | 2023.08.01 |