대학졸업하고 꼭 알아야 할것.... 잊으면 안돼....
데이터 베이스는 많은 데이터들 사이에서 특정 데이터를 가져오고 데이터를 추가, 삭제 해야한다. 그런데 데이터 중복 등이 생기면 데이터의 무결성이 깨지게 된다. 이것이 데이터 아노말리다. primary키는 not null unique. 또한 인덱스가 걸려 있다. 키로 검색하면빠르다. 문자열 검색을 하는 like는 속도가 매우 느리다.<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

foreign키는 외래키로 다른 테이블과 join하기 위해서 사용하며 다른 테이블에서 primary키이다.

상속에는 인터페이스 상속과 구현 상속이 있다. 보통 상속은 구현 상속이다. 인터페이스 상속은 자바의 interface등이다. 다형성은 인터페이스는 동일하게 두고 각각의 구현물은 다르다. 부모 클래스 A로 자식 B,C,D등을 자리키고 있을 수 있다. 다형성 사용에는 메소드 앞에 virtual키워드를 사용한다. 그럼 vtable 을 사용하여 A class_a= (B *)new B(); 이런식으로 사용가능하고 a->print 를 하면 클래스 B print가 수행된다.

C++에서는 다중상속이 되는데 java 에서는 안된다. 대신 자바에서는 인터페이스를 이용한 인터페이스 상속을 많이 이용한다. 객체화 하면 데이터 인켑슐레이션 하는 것이고 데이터 은닉성을 띈다. 자바에서 getter,setter를 만드는 것은 위의 이유와 변수에 대해서 indirect access(간접접근)을 하게 하기 위해서다.

소켓은 일반적으로 옵션없이 생성하면 blocking mode로 생성되어서 우리가 read를 할때마다 데이터 소켓에서 순차적으로 읽는다. 하지만 non-blocking모드로 생성하면 우리가 패킷을 빨리 읽지 않으면 못읽는다. 또한 select poll을 이용한 비동기 방식이 있다. 또한 promiscuous로 열면 이더리얼처럼 자기 아이피가 아닌 모든 패킷을 다 받아 본다.

32비트 컴퓨터 C에서 구조체에 int a;char c,int d; 를 넣으면 구조체 크기는 9바이트가 아니라 32비트 정렬에 의해서 12바이트가 된다. 포인터는 메모리 주소를 가리키고 있는 것이다. C에서도 객체지향 개념은 사용할 수있다.

대칭 암호화알고리즘:DES,blowfish,AES 비대칭:DH,RSA 해쉬:MD5,SHA1