10/7 쌍 기사 시험이 끝났다
오전엔 정처가 실기, 오후엔 보안 기사 필기를 견학하러 가는 마음으로 갔다.
실은 오전에 정처기 실기를 치고 나서
너무 시간이 많이 남아서 오히려 고민이 됐다.
인강을 최대한 보며, 어차피 보안 기사는 공부를 이전 회차보다 더 못했고, 결제한 요약본 인강 마저 1회 독 못했다.
공부량으론 저번 회차보다 더 못해서, 절망적인 상황이었다.
아무리 현업으로 보안 엔지니어링 하고 있다곤 해도,
솔직히 보안 정책, 구축, 시스템 설계나 프로젝트가 진행되고 있는 게 전혀 없는 상황이라 내 실력조차 의문이었고.
그냥 가지 말까, 가봤자 의미가 없는데...
이 고민을 시험 전날까지 하다가
막상 취소하려 하니 규정상 5일 전까지 환불할 수 있었기에,
포기할 것인지에 대한 선택만 남아있었다.
결국 트렌드 분석을 위해 가보기로 했다.
그리고 왜 C 언어는 항상 틀리는 걸까. == 문제를 안 풀었기 때문이죠.
구분 | 연산자 |
---|---|
대입 연산자 | = |
산술 연산자 | +, -, *, /, &, ++, -- |
관계 연산자 | <, >, <=, >=, ==, != |
논리 연산자 | &&, |
할당 연산자 | +=, -=, *=, /=, %= |
삼항 연산자 | ? |
비트 연산자 | &, |, ~, ^, <<, >> |
# 크기 3 , 문자배열 선언, 순서대로 자리 배정,
char str[3] = {'c','a','t'. '\0'};
# best !
# 크기 3, 문자 배열 선언, 문자열 대입
# 크기가 3을 벗어나는 문자열 상수는 초기화 불가 === 컴파일 오류
char str[3] ="cat";
# 문자열 상수 초기화 , 배열 크기 X , 문자열 상수 크기에 따라 자동 str 배열 크기할당,
# 개발시 개발자가 크기 계산을 해서 알아야 하는 번거로움 있음.
char str[] = "cat" ;
%c == chart 하나의 문자로 출력
%d = 10진수
%e = 지수형
%f = 실수형
%p = 포인터 주소값
#include
int main(){
char*p = "KOREA";
printf("%s",p);
printf("%s",p+1);
printf("%c",*p);
printf("%c",*(p+3));
printf("%c",*p+4);
}
### 내 오답###
0
1
KOREA
EA
A
### 정답 ###
KOREA
OREA
K
E
O
#include <stdio.h>
int main(void) {
char *a = "HI Eunjin";
printf("%s\n", a);
printf("c\n",a[0]);
printf("c\n",a[3]);
printf("c\n",a[6]);
printf("c\n",a[8]);
}
# "HI Eunjin"
# 배열처리로 원하는 인덱스의 해당 문자따로 출력도 가능.
# H
# E
# j
# n
#include<stdio.h>
## 구조체 선언 s
struct student s = {24,"kim",4.3};
## 포인터 선언 p 구조체 안에 포인터가 들어감.
struct stduent *p ;
## 아직 올바른 주소값 초기화는 안된 상태.
## 포인터를 통한 접근,
## 구조체s의 주소를 문자 포인터 p 에 저장.
p =&s;
##*p 는 전체 구조체 . (멤버)를 붙여 사용가능.
printf("학번 =%d 이름 = %s 학점 = %f \n" , (*p).number,(*p).name,(*p).grade);
# 포인터 p 가 가르키는 구조체의 멤버 number
p ->number;
(*p).number ;
구조체라고 부르는 게 dictionary처럼 보인다
근데 왜 굳이 구조체랑 pointer를 따로 부르는 건지는 이해 불가하여 공부해 봄
다른종류의 데이터를 하나에 묶는다 ( int, double, char….) - 새로운 자료형을 만들 수 있는 자료형.
배열은 자료형이 같은 자료만 묶을 수 있음 (차이)
TS의 interface 와 유사한 문법
interface Todo {
id: number;
content: string;
completed: boolean;
}
let todo: Todo;
todo = { id: 1, content: 'typescript', completed: false };
구조체 선언, 변수 생성
참고로 c언어에선 bool 을 쓰려면 stdbool.h 를 선언해야 함
#include <stdbool.h>
#include <stdio.h>
#키워드 태그
struct todo {
#멤버
int id;
char content[10];
bool completed;
}
# 함수안 선언
int main(void){
struct todo s1, s2;
}
암호학 ( 공부한 건 안 나옴)
대칭키: DES, AES, ARIA, SEED
비대칭키 : ECC, RSA
비밀키 : 3DES, AES, IDEA, DES
공개키 : ECC, RSA
SEED 관련 문제 출제
128bit, 개인정보보호, 한국인터넷진흥원 + experts
DES, AES 유 사0
파이스텔 네트워크(Feistel Network) 알고리즘 활용
ACTIVE X의 주범
ARIA
KISA에서 발명
암호화와 복호화를 수행하는 라운드 함수와 키 확장
평문 암호화 과정에서 사용되는 라운드 키 생성 알고리즘은 Feistel 구조.
템퍼프루핑
디지털 콘텐츠 위변조 방지 기술 중 하나
MAC : 보안등급, DAC : 신분, RBAC : 역할
command( 행위)
추상 클래스+ 서브 클래스
재사용성, "캡슐화"
observer (행위)
한 객체의 상태가 바뀌면 그 객체와 의존관계의 다른 객체에 자동으로 내용이 갱신
one to many
loose coupling
singleton (생성)
한 클래스에 하나의 객체
전역변수 사용하지 않고, 하나의 객체를 어디서든지 참조.
builder (생성)
"복잡"한 인스턴스 "분리", "조립", "생성"
visitor(행위)
"기능 분리" , 객체 구조는 그대로
factory method(생성)
상위 클래스 객체생성 인터페이스 + 하위클래스에서 인스턴스 생성
상위클래스 : 인스턴스 생성 방법 결정
하위클래스 : 데이터 생성 및 조작 함수 오버 로딩, "클래스 분리"
서브 클래스 : 객체생성 처리 캡슐화 패턴.
bridge (구조)
추상화 + 구현 + 확장
proxy (구조)
다른 무언가와 이어지는 인터페이스 클래스 "대리"
중간에 가로채서 다른 행위를 수행하는 객체
객체를 정교하게 제어 / 객체 참조가 경우
분리된 객체를 위임함으로써 대리작업을 중간단계에 삽입 가능
분리된 객체를 동적 연결, 객체의 실행 시점 관리
Adapter(구조)
중간에서 맞춰주는 역할
클래스 패턴(상속) + 인스턴스 패턴(위임)
OSPF (Open Shortest path first)
내부 라우팅 프로토콜, 링크 상태 라우팅 프로토콜, 최단 경로 우선 프로토콜
RIP 단점 해결, 대규모
RIP
IGP 중 거리 벡터 알고리즘
라우팅 프로토콜
① join : ㉢ ⋈
② project : ㉡ π
③ select : ㉠ σ
④ division : ㉣ ÷
참조 무결성
제약 조건이건 진짜 전혀 예상 못하고 공부도 안 함.
클래스 다이어그램
전달하고자 하는 내용 위주 표기
정적 구조
패키지 다이어그램
정적 구조
전체 모듈의 구조 관계 파악 용이
객체 등 같은 여러 요소를 그룹화 함.
폴더를 활용해, 패키지 중첩, 패키지 간 관계 등을 만듦
select a from TableA
union
select a from TableB
order by a desc #내림차순( 내려갈수록 크게)
union 시 default가 중복값은 제거였다.
아 난 unique만 중복값이 제거되는 줄 알고
중복되는 값 넣어서 틀림.
class Person {
private String name;
public Person(String val) {
name = val;
}
public static String get() {
return name;
}
public void print() {
System.out.println(name);
}
}
public class Main {
public static void main(String[] args) {
Person obj = new Person("Kim");
obj.print();
}
}
Person obj = "Kim"
하지만 7번째 줄 오류라고 함.
error: non-static variable name cannot be referenced from a static context
class Person {
private String name;
public Person(String val) {
name = val;
}
## 변수값 자료형 선언 후 받아서 return.
public static String get(String name) {
return name;
}
public void print() {
System.out.println(name);
}
}
public class Main {
public static void main(String[] args) {
Person obj = new Person("Kim");
obj.print();
}
}
## output : Kim
프로그래밍 문제 중 SQL, C 언어 2개로 총 3문제는 확실히 틀려버렸다.
프로그래밍은 너무 구멍이 많다..
솔직히 정처기는 프로그래밍 기본을 판단하는 기준이라고 생각함.
java랑 c.. 어떻게하지?
여기서 코테를 더 추가해야 하나?
지금도 버거운데?
네트워크 문제는 나름대로 자신 있었는데
ATM 문제가 크리티컬 했다. 영어로 유추하다가 AM까진 맞췄다 ㅋㅋㅋ
이론도 uml 이나 SQL 다 틀린 거 같은데.. 잘 찍었는지.. 그게 문제다….