전체 글 125

10) 상속

1. 상속 개념 1) C++에서의 상속(Inheritance) 클래스 사이에서의 상속 관계 정의 객체 사이에는 상속 관계 없음 기존의 클래스가 가진 기능을 이어받아서 새로운 클래스를 정의하는 것 기본 클래스: 상속을 해주는 클래스, 일반적인 특징을 제공 파생 클래스: 상속을 받는 클래스, 일반적인 특징 + 구체적인 특징 기본 클래스의 속성과 기능을 물려받고 자신만의 속성과 기능을 추가하여 작성 기본 클래스에서 파생 클래스로 갈수록 클래스의 개념이 구체화 다중 상속을 통한 클래스의 재활용성 높임 다른 클래스를 상속 받아서 새로운 클래스를 정의할 때, 기존의 클래스에 구현되어 있는 기능은 새롭게 정의할 필요 X 2) 상속의 목적 및 장점 간결한 클래스 작성 기본 클래스의 기능을 물려받아 파생 클래스를 간결하..

9) friend와 연산자 중복

1. C++에서의 friend 1) friend 함수 클래스의 멤버 함수가 아닌 외부 함수 전역함수, 다른 클래스의 멤버함수 friend 키워드로 클래스 내에 선언된 함수 : friend 함수라고 부름 클래스 정의 안쪽에 friend 키워드를 쓰고 함수의 선언을 적어줌 클래스의 모든 멤버를 접근할 수 있는 권한 부여 friend 선언의 필요성 클래스의 멤버로 선언하기에는 무리가 있고, 클래스의 모든 멤버를 자유롭게 접근할 수 있는 일부 외부 함수 필요 // 1. 외부함수 equals()를 Rect 클래스에 friend로 선언 class Rect { // Rect 클래스 선언 ... friend bool equals(Rect r, Rect s); }; // 2. RectManager 클래스의 equals(..

8) 함수와 참조, 복사생성자

1. 객체 전달과 참조 1) '값에 의한 호출'로 객체 전달 함수를 호출하는 쪽에서 객체 전달 객체 이름만 사용 함수의 매개 변수 객체 생성 매개 변수 객체의 공간이 스택에 할당 호출하는 쪽의 객체가 매개 변수 객체에 그대로 복사됨 매개 변수 객체의 생성자는 호출되지 않음 함수 종료 매개 변수 객체의 소멸자 호출 ▶값에 의한 호출 기 매개 변수 객체의 생성자가 실행되지 않는 이유? -호출되는 순간의 실인자 객체 상태를 매개 변수 객체에 그대로 전달하기 위해 2) '주소에 의한 호출'로 객체 전달 함수 호출 시 객체의 주소만 전달 함수의 매개 변수는 객체에 대한 포인터 변수로 선언 함수 호출 시 생성자, 소멸자가 실행되지 않는 구조 3) 객체 치환 및 객체 리턴 객체 치환 동일한 클래스 타입의 객체끼리 치..

멀티스레드 : 리눅스 2

2023.11.19 - [Network/소켓통신(Linux)] - 멀티스레드: 리눅스 1 멀티스레드: 리눅스 1 2023.11.19 - [Network/소켓통신(Linux)] - 멀티스레드 개념 멀티스레드 개념 1. 스레드 기초 1) 소켓 응용 프로그램과 멀티스레드 멀티스레드를 사용하지 않는 경우 문제 두 개 이상의 클라이언트가 서버 kmg0157.tistory.com 2. 멀티스레드 TCP 서버 1) 멀티스레드 TCP 서버 동작 클라이언트가 접속하면 accept() 함수는 클라이언트와 통신할 수 있는 소켓 리턴 클라이언트와 통신을 담당할 스레드를 생성 이때, 스레드 함수에 소켓을 넘겨줌 스레드 함수는 인수로 전달된 소켓을 소켓 타입(정수형)으로 변환하여 저장 getpeername() 함수를 호출하여 클..

멀티스레드: 리눅스 1

2023.11.19 - [Network/소켓통신(Linux)] - 멀티스레드 개념 멀티스레드 개념 1. 스레드 기초 1) 소켓 응용 프로그램과 멀티스레드 멀티스레드를 사용하지 않는 경우 문제 두 개 이상의 클라이언트가 서버에 접속할 수 있으나, 서버가 동시에 두 개 이상의 클라이언트를 서 kmg0157.tistory.com 이전 게시글을 통해 개념 참고 1. 스레드 API 1) 스레드 생성과 종료 리눅스에서 스레드를 생성할 때는 pthread_create() 함수 사용 #include int pthread_create( pthread_t *thread, const pthread_attr_t *attr, void *(*start_routine) (void *), void *arg ) // 성공 시 0, 실..

멀티스레드 개념

1. 스레드 기초 1) 소켓 응용 프로그램과 멀티스레드 멀티스레드를 사용하지 않는 경우 문제 두 개 이상의 클라이언트가 서버에 접속할 수 있으나, 서버가 동시에 두 개 이상의 클라이언트를 서비스 할 수 없음 서버와 클라이언트의 send()와 recv() 호출 순서가 서로 맞아야함 데이터를 보내지 않은 상태에서 양쪽에서 동시에 recv()를 호출하면 교착상태(Deadlock)가 발생 교착상태란 영원히 일어나지 않을 사건을 기다리는 상황 recv()에서 빠져나가지 못하고 send() 를 호출할 수 없어 교착상태가 발생 다중 처리 문제 해결책 서버가 각 클라이언트와 연결하여 통신하는 시간을 짧게 줄임 클라이언트가 데이터를 전송하기 전에 매번 서버에 접속하고, 전송 후에는 곧바로 접속을 끊는 방식 특별한 기법을..

TCP 동작 과정 및 함수 정리

1. TCP 서버 함수 1) 서버 함수 동작 socket() 함수로 소켓을 생성함으로써 사용할 프로토콜을 결정 bind() 함수로 소켓을 지역 IP 주소와 지역 포트 번호를 결정 listen() 함수로 소켓의 TCP 함수를 LISTENING으로 변경 accept() 함수로 클라이언트 접속을 수용하고, 접속한 클라이언트와 통신할 수 있는 새로운 소켓을 생성 이때, 원격 IP 주소와 원격 포트 번호가 결정 send() 함수와 recv() 함수 등의 데이터 전송 함수로 클라이언트와 통신을 수행한 후 close() 함수로 소켓을 종료 새로운 클라이언트 접속이 들어올 때마다 4~5 동작을 반복 2) bind() 함수 소켓의 지역 IP 주소와 지역 포트 번호를 결정 #include #include int bind(..

2) AWS 컴퓨팅 서비스

1. AWS 컴퓨팅 서비스 1) 컴퓨팅 정의 컴퓨팅(computing) 어떤 것에 대해 계산하여 답을 구하고 추정하는 행위 서버(server) 특수성과 전문성을 위해 일반적인 컴퓨터에 비해 높은 사양이 요구되는 고성능 컴퓨팅 자원 온프레미스로 구축이 가능하지만, 퍼블릭 클라우드 환경에서 컴퓨팅 환경을 제공받아 가상 서버를 구성하여 쉽게 워크로드(workload)를 수행 2) AWS 컴퓨팅 서비스 AWS 컴퓨팅 서비스 퍼블릭 클라우드에서 컴퓨팅 자원을 활용하여 다양한 워크로드를 수행할 수 있는 서비스 컴퓨팅 자원을 사용할 수 있는 비용을 지불하면 수분 내로 가상의 서버 자원을 생성하고 관리 가능 비즈니스 환경과 워크로드 형태에 따라 적절한 컴퓨팅 서비스를 선택 주요 서비스 EC2(Elastic Comput..

Cloud, Docker/AWS 2023.11.18

1) 클라우드 개념

1. 클라우드 컴퓨팅 1) 클라우드 컴퓨팅이란 인터넷을 통해 요구가 있을 때 즉시 IT 자원을 제공하며, 사용한 만큼 비용을 지불하는 서비스 인터넷 구간 어딘가에 구름 형태로 쌓여 실제 물리적인 자원은 보이지 않지만 IT 자원을 원하는 대로 가져다 사용할 수 있는 컴퓨팅 서비스 AWS와 같은 클라우드 공급자에게 필요에 따라 다양한 IT 자원을 공급 받음 온프레미스(On-premises) 자체적인 공간과 자원을 이용하여 사용자가 직접 구축 및 운영하는 방식 사용자가 모든 것을 수행해야하기 때문에 부담이 크고 비용도 상당 2) 클라우드 컴퓨팅 이점 민첩성 클라우드를 통해 광범위한 기술에 쉽게 접근할 수 있어 거의 모든 것을 빠르고 혁신적으로 구축 가능 컴퓨팅, 스토리지, 데이터베이스 등 인프라 서비스부터 사..

Cloud, Docker/AWS 2023.11.16

7) 여러가지 객체의 생성 방법

1. 객체 배열과 객체 포인터 1) 객체 배열 및 포인터의 생성 및 사용 기본 타입 배열 선언과 형식 동일 객체 배열 정의 시 따로 지정하지 않으면 항상 디폴트 생성자로 초기화 Circle circleArray[3];//디폴트 생성자로 초기화 배열의 각 원소 객체 당 생성자를 지정하는 방법 { } 안에 생성자 나열 Circle circleArray[3]={Circle(10), Circle(20), Circle()} // 0번 객체 생성될 때, 생성자 Circle(10) 호출 // 1번 객체 생성될 때, 생성자 Circle(20) 호출 // 2번 객체 생성될 때, 생성자 Circle() 호출 Ex) Circle 클래스의 배열 선언 및 활 #include using namespace std; class Ci..