
T를 기준으로 나누고 T를 없애

SYN 플러딩(Flooding) : 서버의 동시 가용 사용자 수를 SYN 패킷만 보내 점유하여 다른 사용자가 서버를 사용하지 못하게 하는 공격
UDP 플러딩(Flooding) : 대량의 UDP패킷을 만들어 임의의 포트 번호로 전송하여 지속적으로 자원을 고갈시키는 공격
스머프(Smurf)/스머핑(Smurfing) : 출발지 주소를 공격 대상의 IP로 설정하여 네트워크 전체에게 ICMP Echo 패킷을 직접 브로드캐스팅하여 마비시킴
죽음의 핑(PoD; Ping of Death) : ICMP 패킷(Ping)을 정상적인 크기보다 아주 크게 만들어서 전송
랜드어택(Rand Attack) : 출발지 IP와 목적지 IP를 같은 패킷 주소로 만들어 보내서 수신자가 자기 자신에게 응답을 보내게 함
티어드롭(Tear Drop) : IP 패킷의 재조합 과정에서 잘못된 Fragment Offset 정보로 인해 수신 시스템이 문제를 발생하도록 만드는 공격
봉크(Bonk)/보잉크(Boink) : 시스템의 패킷 재전송과 재조립이 과부하를 유발하게 하는 공격기법

반복 : 이터레이터
해석 : 인터프린터
갱신 : 옵서버
방문 : 비지터
대리 : 프록시
연결 : 어댑터
트리 : 컴포지드
하위 : 팩토리 메소드
패밀리 : 추상 팩토리
체인 : 책임 연쇄
캡슐화 : 커맨드
기억 : 메멘토
ㅇ 디자인 패턴(Design Patterns) : GoF(생 구 행)
1. 생성(Creational) : 객체 생성 과정 캡슐화(싱 팩 추 빌 프)
-싱글톤(Singleton) : 1객체
-팩토리 메서드(Factory Method) : 책임 위임
-추상 팩토리(Abstract Factory) : 여러 객체그룹 생성
-빌더(Builder) : 생성 단계 캡슐화
-프로토타입(Prototype) : 원본 객체 복사
구조(Structural) : 클래스 객체 조합(어 데 퍼 프 브 컴 플)
-어댑터(Adapter) : 클래스 연결
-데코레이터(decorator) : 소스 변경X, 기능확장
-퍼사드(Facade) : 단순화된 1인터페이스 제공
-프록시(Proxy) : 원 객체작업 대신처리 / 대리
-브릿지(Bridge) : 구현부 추상층 분리, 독립적 확장, 결합도 낮춤
-컴포지트(Composite) : 개별 객체와 복합 객체를 동일 / 트리
-플라이웨이트(Flyweight) : 공유
행동(Behavioral) : 상호작용, 역할분담(옵 스 커 템 스 메 중 인 방 책 이)
-옵저버(Observer) : 다른객체 알림 및 자동갱신
-스트래티지(Strategy) : 알고리즘 캡슐화
-커맨드(Command) : 요청을 객체로 캡슐화
-템플릿 메서드(Template Method) : 구조 - 상위 / 구현 - 하위
-스테이트(State) : 객체 상태에 따라 다른 행동 / 다형성
-메멘토(Memento) : 객체상태 미리 저장 후 복구
-중재자(Mediator) : 객체간 상호작용 조정
-인터프리터(Interpreter) : 문법 정의 및 구문 해석
-방문자(Visitor) : 객체 구조 및 처리기능 분리 / 캡슐화 위배
-책임 연쇄(Chain of Responsibility) : 객체간 연결고리 / 연속적
-이터레이터(Iterator) : 순차적 접근 / 반복 캡슐 / Cursor

DB 이상 현상 : 분리되어야 할 속성들이 하나의 테이블에 전부 있을 때, 즉 DB의 정규화가 제대로 되지 않았을 때 발생할 수 있는 사이드이펙트
삽입 : 튜플의 의도치 않은 정보(or 없는 정보)가 강제로 들어가야 테이블에 삽입이 가능함.
갱신 : 튜플의 정보가 갱신(or 수정)되었을 때, 기존의 타 정보와 모순이 생길 수 있음.
삭제 : 어떤 튜플을 삭제하면, 그 튜플만이 유일하게 가지고 있는 정보도 DB에서 사라짐


static으로 conn1에서 인스턴스가 생성되었기 때문에 count메서드는 모두 conn1에다 ++가 되는 것




파라미터 없는 getName을 따라가자 Car인스턴스의 getName메서드 들이 파라미터가 있다는 것은 print의 파라미터가 없는 getName을 오버라이딩하지 않았다는 것이다.

ALTER TABLE 테이블명 ADD 컬럼명 컬럼속성
두 차이 인지

#include
typedef struct{
int accNum;
double bal;
}BankAcc;
double sim_pow(double base, int year){
int i;
double r = 1.0;
for(i=0; i < year; i++){
r = r * base;
}
return r;
}
void initAcc(BankAcc *acc, int x, double y){
acc -> accNum = x;
acc -> bal = y;
}
void xxx(BankAcc *acc, double *en){
if (*en > 0 && *en < acc - > bal) {
acc - > bal = acc - > bal-*en;
}else{
acc - > bal = acc - > bal+*en;
}
}
void yyy(BankAcc *acc){
acc -> bal = acc -> bal * sim_pow((1+0.1),3);
}
int main(){
BankAcc myAcc;
initAcc(&myAcc, 9981, 2200.0);
double amount = 100.0;
xxx(&myAcc, &amount);
yyy(&myAcc);
printf("%d and %.2f", myAcc.accNum, myAcc.bal);
return 0;
}
많이 복잡해보이지만 차근차근하면 별거아님
if (en > 0 && en < acc->bal) {
acc->bal = acc->bal - *en; // 출금
}
여기서 -> 이런식으로 되어있는것들은 acc안에 있는 세부항목 건드릴때 쓰는거 마치 acc.bal이런거랑 비슷함
그리고 "%d and %.2f" 이런식으로 되어있으면 9981 and 2795.10 이런식으로 and 넣어줘야함
마지막 %.2f는 소수점 둘째자리까지 나타내라는말임 그래서 2795.10이렇게 한거임
| 코드 | 결과 |
|---|---|
%.0f | 2795 |
%.1f | 2795.1 |
%.2f | 2795.10 ← 이거! |
%.3f | 2795.100 |