📌 3회차 시험 등록했으니 다시 시작하는 마음으로 집중!!!!
출처 : https://ss-o.tistory.com/125
IPv4의 확장형, 대안으로 나온 것으로 128비트 16비트씩 :(콜론)으로 구분하는 것
생성, 구조, 행위
다이어그램의 요소를 조직화하여 패키지 형태로 나타냄
(Package 안에 여러 Class가 존재하는 그림)
참고 : https://sung0woo.tistory.com/433
https://m.blog.naver.com/icbanq/221781238065
<데이터베이스 회복 기법>
- 즉시 갱신 기법 - 로그 기반 회복 기법
- Rollback시 REDO, UNDO가 모두 실행 되는 트랜잭션 처리법.
- 트랜 잭션 수행 중에 갱신 결과를 DB에 즉시 반영해아함.
- 데이터를 변경하면 로그파일로 저장되며 수정시 즉시 DB에 반영됨.
- 지연 갱신 기법 - 로그 기반 회복 기법
- 트랜잭션이 부분 완료 상태에 이르기 까지 발생한 모든 변경 내용을 로그파일에만 저장함.
- DB에는 커밋이 발생하기 전까지 저장을 지연시키는 기법.
- 회복 과정에서 UNDO가 필요하지 않고 이를 통해 트랜잭션의 원자성을 보장할 수 있음.
- 체크포인트 회복 기법 - 검사점 회복 기법
- 시스템 장애시 REDO, UNDO를 해야할 트랜잭션을 결정하기 위해서 로그 전체를 확인 해야하는데, 이 경우 시간 소요가 크고 REDO 할 필요가 없는 트랜잭션을 다시 REDO해야하는 문제가 발생함. 이를 해결하는 기법.
- UNDO를 수행하여 회복하는 것을 후진 회복, REDO를 수행해 회복하는 것을 전진 회복.
- 그림자 페이징 기법
- 로그를 사용하지 않고, 트랜잭션을 실행하는 동안 현재 페이지 테이블과 그림자 페이지 테이블 2개를 관리하는 기법.
- 데이터 변경시 현재 페이지 테입름나 변경, 회복시 현재 페이지 테이블을 그림자 테이블로 대체함.
- UNDO연산이 간단하고, REDO 연산이 필요 없기 때문에 신속한 회복이 가능.
- 미디어 회복 기법
- 비휘발성 저장 장치가 손상될 경우 사용되는 회복 기법.
- 주기적으로 데이터를 덤프하여 장애 시, 최근 덤프를 DB에 적재함.
- 덤프를 다른 저장소에 옮길 때 대용량 데이터 전송이 필요하고 이 때, 트랜잭션 처리를 중단해야하기 때문에 CPU 낭비가 되어 비용이 많이 소요됨.
<REDO와 UNDO>
- REDO : 트랜잭션 로그를 이용해 오류가 발생한 트랜잭션을 재실행하여 복구를 수행 - 영속성 보장
- UNDO : 트랜잭션 로그를 이용하여 오류와 관련된 모든 변경을 취소하여 복구 수행 - 원자성 보장
// 10을 2진수로 변환하는 문제
public class Test{
public static void main(String[] args){
int a[] = new int[8];
int i = 0, n = 10;
while(①){
a[i++] = ②;
n /= 2;
}
for(i=7; i>=0; i--){
System.out.printf("%d", a[i]);
}
}
}
① : n > 0
② : n % 2
// 배열 크기 정하기
public class Test{
public static void main(String[] args){
int[][] array = new int[①][②];
int n = 1;
for(int i=0; i<3; i++){
for(int j=0; j<5; j++){
array[i][j] = j*3 + (i+1);
System.out.print(array[i][j] + "");
}
System.out.println();
}
}
}
① : 3
② : 5
- 공격대상에게 직접 공격하지 않고 데이텀나 몰래 들여다보는 수동적 공격 기법.
- 네트워크 중간에서 남의 패킷 정보를 도청하는 해킹 유형.
컴퓨터 네트워킹에서 쓰이는 용어로, IP패킷의 TCP/UDP 포트 숫자와 소스 및 목적지의 IP주소 등을 재기록하면서 라우터를 통해 네트워크 트래픽을 주고 받는 기술로 네트워크 주소 변환이라고 함
a = [[1,2,3], [4,5], [6,7,8,9]]
print(a[0])
print(a[2][1])
for sub in a:
for item in sub:
print(item, end="")
print()
[1,2,3]
7
1 2 3
4 5
6 7 8 9
온라인 금융 거래 정보를 블록으로 연결하여 P2P 네트워크 분산 환경에서 중앙 관리 서버가 아닌 참여자(peer)들의 개인 디지털 장비에 분산 저장시켜 공동으로 관리하는 방식
분산 환경에서 빅 데이터를 저장하고 처리할 수 있는 자바 기반의 오픈 소스 프레임 워크로, 더그 커팅과 마이크 캐퍼펠라가 개발했으며 구글 맵 리듀스를 대체함
삽입 이상, 갱신 이상, 삭제 이상
특정 몇몇 입력 값들에 대해서만 원하는 결과를 제공해주는 오라클로, 전 범위 테스트가 불가한 경우 사용함. 경계값, 구간별 예상 값 결과 작성 시 사용함
- 블랙박스 테스트의 한 종류로, 입력 자료에 초점을 맞춰 테스트케이스를 만들고 검사하는 방법.
- 입력 조건에 타당한 입력 자료와 그렇지 않은 자료의 개수를 균등하게 분할해 테스트케이스를 정함
- 각 영역에 해당하는 입력 값을 넣고 예상되는 출력 값이 나오는지 실제 값과 비교하는 기법
평가 점수 | 테스트 데이터 |
---|---|
90 ~ 100 | 95 |
80 ~ 90 | 85 |
70 ~ 80 | 78 |
60 ~ 70 | 65 |
~ 60 | 55 |
[결과]
학과 | 학과별튜플수 |
---|---|
전기 | 1 |
컴퓨터 | 2 |
전자 | 2 |
SELECT 학과, COUNT(학과) AS '학과별튜플수' FROM 학생 GROUP BY 학과;
1960년대 말 미국 AT&T 벨(Bell) 연구소에서 개발한 운영체제로 거의 C언어로 구현. 구조적 파일 시스템, 시스템의 파일이 하나의 트리구조를 가짐.
char *p = "KOREA";
printf("%s\n" , p);
printf("%s\n" , p+3);
printf("%c\n" , *p);
printf("%c\n" , *(p+3));
printf("%c\n" , *p+2);
KOREA
EA
K (*p는 곧 p[0])
E
M (*p = K 이고 포인터 값이 +2이므로 K, N, M
참고 : C언어 포인터 이해하기
class Parent{
int compute(int num){
if(num <= 1) return num;
return compute(num - 1) + compute(num - 2);
}
}
class Child extends Parent{
int compute(int num){
if(num <= 1) return num;
return compute(num - 1) + compute(num - 3);
}
}
class Test{
public static void main(String[] args){
Parent obj = new Child();
System.out.print(obj.compute(4));
}
}
자료형은 상위 클래스인 Parent, 객체 생성은 하위 클래스인 Child -> 오버라이딩
- 오버라이딩 : 상위 클래스의 메소드를 하위 클래스가 재정의하는 것
오버라이딩 메소드는 상위클래스의 메소드 보다 우선순위가 높기 때문에 하위 클래스의 메소드를 우선 실행함.
obj.compute(4) => Child의 int compute(int num) 메소드를 실행함.
num = 4, compute(3) +compute(1) = return 1
compute(3) => compute(2) +compute(0) = return 0
compute(2) =>compute(1) = return 1
+compute(-1) return -1
∴ 1 + -1 + 0 + 1 = 1
답 : 1
- 인가 받은 사용자는 언제라도 사용이 가능한 것을 의미함
- 권한을 가진 사용자나 애플리케이션이 원하는 서비스를 지속 사용할 수 있도록 보장하는 특성