no image
[C++] 상속
상속코드를 재사용하는 방법규모 확장관계의 한가지 유형기본 문법//class 파생클래스이름 : 접근제어지시자 부모클래스이름class CMyData{};class CMyDataEx : public CMyData{};※ 자식 클래스 선언 시 자식 클래스의 생성자보다 부모 클래스의 생성자가 먼저 실행됨참조 형식과 실 형식class CMyData{public: CMyData() { cout 일반 함수 - 참조 형식가상 함수 - 실 형식생성자부모 클래스의 생성자가 자식 클래스의 생성자보다 먼저 실행되나 호출은 자식 클래스가 먼저 호출됨※ 자식 클래스의 생성자에서 부모 클래스의 멤버 변수를 초기화 하게 되면 중복 발생자식 클래스에서 부모 클래스의 어떤 생성자를 호출할 지 선택 가능class C..
2024.06.02
[Coding Test] 코딩 테스트 기초
자료구조배열(메모리의 연속 공간에 데이터 저장), 리스트(불연속 공간에 데이터 저장), 벡터(동적 배열)구간 합(합 배열) - i, j까지의 합을 구하는 문제에서 O(N)의 시간 복잡도를 가짐투 포인터 - 주어진 입력 값에서 특정 값을 만들어낼 때 유용슬라이딩 윈도우 - 정해진 범위 내에서 옆으로 이동하며 검사할 때 유용스택(후입선출), 큐(선입선출), 우선순위 큐(사용자 정의 비교 함수로 정렬하는 큐) - ConferenceDo it! 알고리즘 코딩 테스트 C++편 - 김종관
2024.04.22
[Coding Test] 기본
알고리즘 선택의 기준입력값 개수를 확인해 사용할 알고리즘을 선정C++에서는 1억 번의 연산을 1초의 수행 시간으로 예측 가능시간 복잡도빅-오메가 : 최선일 때의 연산 횟수를 나타낸 표기법빅-세타 : 보통일 때의 연산 횟수를 나타낸 표기법빅-오 : 최악일 때의 연산 횟수를 나타낸 표기법※ 코딩 테스트에서는 최악의 경우를 고려한 빅오 표기법을 기준으로 계산활용법주어진 실행 제한 시간을 1초로 가정C++ 기준 100,000,000 번 이하의 연산을 수행해야 함입력값 개수의 최대가 1,000이라면,  O(n^2)의 시간 복잡도를 가진 알고리즘을 사용 가능입력값 개수의 최대가 10,000,000이라면, O(nlogn)의 시간 복잡도를 가진 알고리즘 사용 가능입력값 개수의 최대가 100,000,000이라면, O(n..
2024.04.22
no image
[C++] 연산자 다중 정의
c++에서는 class에 한해서 연산자 재정의 또는 다중 정의가 가능 고려해야 할 요소가 많아질 수 있음 class CMyData { public: void setData(int nParam) { MyData = nParam; } int getData() { return MyData; } private: int MyData; }; int main(int argc, char* argv[]) { CMyData a; CMyData b; a + b; // Error return 0; } class CMyData { public: void setData(int nParam) { m_nData = nParam; } int getData() { return m_nData; } /////////////////// //..
2024.04.15
no image
[OS] Kernel
커널의 기능 프로세스 관리 메모리 관리 파일 시스템 관리 입출력 관리 프로세스 간 통신 관리 커널의 구성 응용 프로그램 시스템 호출 인터페이스 커널 하드웨어 커널의 종류 모노리틱 커널(단일형 커널) 마이크로 커널 하이브리드 커널 모노리틱 커널 초창기 구조 커널에서 제공할 수 있는 다양한 기능을 단일한 커널 공간에 구현 모듈 간의 통신 비용이 줄어들어 성능이 좋음 모듈이 상호 의존 유지보수가 어려움 오류 발생 시 시스템 전체가 위험해질 수 있음 복잡하고 구현이 어려움 유닉스, 리눅스, BSD, 솔라리스, 윈도 NT 등 마이크로 커널 프로세스 관리, 메모리 관리, 프로세스 간 통신 관리 등의 기본적인 기능만 제공 나머지는 사용자 영역에서 구현 모듈 크기가 작아서 안정성이 높음 오류가 나도 전체 시스템에 영향..
2024.02.27
no image
[Network] 네트워크 보안
NAC(△) + Probe TCP/IP 스택의 Network Access와 IP 수준에서 동작 -> MAC주소와 IP주소를 확인 어플리케이션 수준에서 관리 Probe는 Out of path 방식 L2 Port Down, HTTP Redirect, DHCP 통제, ARP Spoofing(허가받지 않은 PC가 ARP를 수행할 때, 라우터 대신 Reply를 보내서 네트워크를 방어, 혼선을 야기하기 때문에 네트워크 장애의 주 원인) 등을 수행 NAC(○) 어플리케이션 수준에서 인증서버와 기간계가 상호인증하는 구조 ex) RADIUS Network Access 수준에서 동작 -> MAC주소 확인 이와 유사하지만 무선은 WIPS Hybrid F/W Firewall Packet filter L3 수준에서 동작 -> ..
2024.02.23
no image
[Network] Unicast, Broadcast, Multicast
Unicast 1대1 통신 Broadcast 같은 대역의 모든 컴퓨터와 통신 보통 같은 대역 중 호스트 ID가 2진수로 모두 1인 IP ex)192.168.0.255 하나의 IP로 모든 호스트에 데이터 전달이 가능 비용이 크기 때문에 효율이 떨어짐 -> 최소화 Multicast 1대다수 통신 그룹에 등록된 모든 호스트에게 데이터를 전달 -> IGMP를 활용 ex) IPTV
2024.02.23
no image
[Network] Inline & Out of path & Proxy 구조
Inline 패킷이 어떤 장치를 통과해서 내부망으로 들어오는 구조 ex) 라우터, 방화벽 Network 계층 수준 데이터 단위 : Packet Out of path port mirroring을 통해 복사한 패킷을 읽기만 하는 구조 ex) NIDS, 장애대응센서 Network 계층 수준 데이터 단위 : Packet Proxy 다른 컴퓨터의 통신을 받아서 대신 목적지로 전달하는 구조 Application 계층 데이터 단위 : Socket Stream 활용 우회 : 서버 입장에서는 Proxy를 클라이언트로 인식 cf) VPN과 유사하지만 계층이 다름, VPN은 네트워크 계층 분석 : 프록시 서버 주소를 루프백으로 하면, HTTPS 통신의 암호화를 프록시에서 수행하게 됨, 이를 통해 데이터를 평문으로 받아서 분..
2024.02.21
no image
[Network] TCP & UDP
TCP & UDP Transport Layer에 속한 프로토콜로, 데이터를 알맞은 목적지에 전송하는 역할 TCP 신뢰성 있는 데이터 통신을 가능하게 해주는 프로토콜 연결을 통해 양방향 통신이 가능 연결을 할 때는 3 way-handshake를 사용(연결을 끊을 때는 4 way-handshake) 데이터의 순차 전송을 보장(sequence number) 송수신자간의 데이터 처리 속도를 해결(흐름 제어) 네트워크 혼잡을 제어(혼잡 제어) 오류 감지(checksum) 데이터를 일정 크기만큼 잘라서 전송(세그먼트화) 3-way handshake client가 syn 비트가 1인 패킷을 server로 송신(syn_sent) server는 패킷을 받았다는 의미로 ack 비트를 1로 설정 이때, TCP는 양방향 통신..
2024.02.18