반응형 [C++ 성능 최적화 및 고급 테크닉] Day 16: std::thread와 동기화 기법 std::thread 클래스std::thread 클래스는 C++11 표준 라이브러리에서 제공하는 멀티스레딩을 위한 클래스입니다. 이를 통해 쉽게 스레드를 생성하고 관리할 수 있습니다. std::thread의 주요 함수생성자: 새로운 스레드를 생성합니다.join(): 스레드가 종료될 때까지 대기합니다.detach(): 스레드를 분리하여 백그라운드에서 실행되도록 합니다.joinable(): 스레드가 join 또는 detach 가능한 상태인지 확인합니다.예제 코드#include #include void threadFunction() { std::cout 동기화 기법여러 스레드가 공유 자원에 접근할 때, 동기화가 필요합니다. C++ 표준 라이브러리는 동기화를 위한 여러 도구를 제공합니다. std::mut.. 2024. 8. 1. [C++ 네트워크 프로그래밍] Day 16: 비동기 I/O와 이벤트 드리븐 프로그래밍 비동기 I/O와 이벤트 드리븐 프로그래밍비동기 I/O(Asynchronous I/O)는 프로그램이 I/O 작업을 요청한 후, 그 작업이 완료될 때까지 기다리지 않고 다른 작업을 계속 수행할 수 있도록 하는 방식입니다. 이벤트 드리븐 프로그래밍(Event-driven programming)은 특정 이벤트가 발생할 때 미리 정의된 작업(콜백 함수)을 수행하는 프로그래밍 방식입니다. 이 두 가지 개념을 결합하면 효율적이고 응답성이 좋은 네트워크 애플리케이션을 개발할 수 있습니다.비동기 I/O의 장점높은 응답성: I/O 작업이 완료될 때까지 기다리지 않으므로, 다른 작업을 계속 수행할 수 있습니다.효율적인 자원 사용: 비동기 I/O를 사용하면 스레드가 블록되지 않으므로, 시스템 자원을 효율적으로 사용할 수 있습.. 2024. 8. 1. [C++ 마스터] Day 17: 템플릿 기초 템플릿 (Templates)템플릿은 함수나 클래스를 작성할 때, 데이터 타입을 일반화하여 다양한 데이터 타입에 대해 동작할 수 있도록 하는 기능입니다. 템플릿을 사용하면 코드의 재사용성을 높일 수 있습니다. 1. 함수 템플릿함수 템플릿은 데이터 타입에 관계없이 동일한 기능을 수행하는 함수를 작성할 수 있게 합니다.#include using namespace std;template T add(T a, T b) { return a + b;}int main() { cout 2. 클래스 템플릿클래스 템플릿은 데이터 타입에 관계없이 동일한 기능을 수행하는 클래스를 작성할 수 있게 합니다.#include using namespace std;template class Calculator {private:.. 2024. 8. 1. [C++ 고급 프로그래밍과 응용 프로젝트 시리즈] Day 17: 프로젝트 1 - 요청 처리 및 라우팅 구현 요청 처리 및 라우팅요청 처리는 클라이언트의 요청을 적절한 핸들러에 전달하고, 라우팅은 요청 경로에 따라 다른 처리를 할 수 있도록 합니다. 오늘은 요청 처리 및 라우팅을 구현하여 웹 서버의 기능을 확장하겠습니다. 라우팅의 필요성라우팅은 다양한 URL 경로에 대해 다른 응답을 제공할 수 있도록 합니다. 예를 들어, / 경로는 홈 페이지를, /about 경로는 소개 페이지를 제공할 수 있습니다.라우팅 구현라우팅을 구현하기 위해, 요청 경로에 따라 다른 핸들러를 호출하는 기능을 추가합니다. 1. 라우터 클래스 정의라우터는 요청 경로에 따라 적절한 핸들러를 호출하는 역할을 합니다. router.h#ifndef ROUTER_H#define ROUTER_H#include #include #include class.. 2024. 8. 1. [C++ 성능 최적화 및 고급 테크닉] Day 17: 병렬 알고리즘과 std::async 병렬 알고리즘의 중요성병렬 알고리즘은 여러 작업을 동시에 수행하여 프로그램의 성능을 극대화하는 데 도움을 줍니다. C++17에서는 표준 라이브러리에 병렬 알고리즘을 도입하여, 쉽게 병렬 처리를 구현할 수 있습니다. 병렬 알고리즘C++17 표준 라이브러리에서는 병렬 알고리즘을 지원하기 위해 std::execution 네임스페이스를 도입했습니다. 이를 통해 기존 알고리즘을 병렬로 실행할 수 있습니다. std::execution 정책seq: 순차적으로 실행par: 병렬로 실행par_unseq: 병렬로 실행하고, 실행 순서는 정의되지 않음 예제 코드병렬 정렬#include #include #include #include int main() { std::vector vec = {5, 2, 9, 1, 5, 6.. 2024. 8. 1. [C++ 네트크 프로그래밍] Day 17: 네트워크 보안 기초 (SSL/TLS) 네트워크 보안 기초 (SSL/TLS)SSL(Secure Sockets Layer)과 TLS(Transport Layer Security)는 네트워크 통신을 보호하기 위한 프로토콜입니다. SSL은 초기 버전이고, TLS는 SSL의 업그레이드 버전입니다. 이들은 데이터를 암호화하여 중간에서 도청하거나 변조하지 못하도록 보호합니다.SSL/TLS의 주요 기능암호화: 전송되는 데이터를 암호화하여 보호합니다.무결성: 데이터가 전송 중에 변조되지 않도록 합니다.인증: 서버와 클라이언트의 신원을 확인하여 신뢰할 수 있는 통신을 보장합니다.SSL/TLS의 주요 구성 요소공개 키 암호화: 데이터 암호화에 사용되는 두 개의 키(공개 키와 비밀 키)를 이용한 암호화 방식입니다.대칭 키 암호화: 동일한 키로 데이터를 암호화하고.. 2024. 8. 1. [C++ 고급 프로그래밍과 응용 프로젝트 시리즈] Day 14: 디자인 패턴 심화 - 템플릿 메소드 패턴 (Template Method Pattern) 템플릿 메소드 패턴 (Template Method Pattern)템플릿 메소드 패턴은 상위 클래스에서 알고리즘의 골격을 정의하고, 하위 클래스에서 그 알고리즘의 일부 단계를 구체적으로 구현하도록 하는 패턴입니다. 이를 통해 알고리즘의 구조는 변경하지 않고, 세부 단계를 변경할 수 있습니다. 템플릿 메소드 패턴의 특징알고리즘의 골격 정의: 알고리즘의 기본 구조를 상위 클래스에서 정의합니다.단계의 구체적 구현: 알고리즘의 세부 단계를 하위 클래스에서 구현합니다.코드 재사용: 중복 코드를 상위 클래스에 모아서 코드 재사용성을 높입니다.템플릿 메소드 패턴의 구조AbstractClass (추상 클래스): 알고리즘의 골격을 정의하고, 구체적 단계를 하위 클래스에서 구현하도록 합니다.ConcreteClass (구체적.. 2024. 8. 1. [C++ 성능 최적화 및 고급 테크닉] Day 14: CRTP (Curiously Recurring Template Pattern) 사용법 CRTP란?CRTP(Curiously Recurring Template Pattern)는 C++ 템플릿 메타프로그래밍 기법 중 하나로, 기본 클래스가 자신을 상속하는 파생 클래스를 템플릿 매개변수로 받는 패턴입니다. 이를 통해 코드 재사용성과 컴파일 시간 다형성을 구현할 수 있습니다.CRTP의 기본 구조CRTP의 기본 구조는 다음과 같습니다:template class Base {public: void interface() { static_cast(this)->implementation(); } void implementation() { std::cout {public: void implementation() { std::cout 위 코드에서 .. 2024. 8. 1. [C++ 네트워크 프로그래밍] Day 14: 웹 소켓 서버 개발 웹 소켓(WebSocket) 서버 개발웹 소켓 서버는 클라이언트와의 양방향 실시간 통신을 위해 웹 소켓 연결을 설정하고, 데이터를 송수신하는 프로그램입니다. 웹 소켓 서버는 주로 실시간 데이터 스트리밍, 채팅 애플리케이션 등에서 사용됩니다.웹 소켓 서버의 주요 기능연결 수락: 클라이언트의 웹 소켓 연결을 수락합니다.데이터 송신: 클라이언트로 데이터를 전송합니다.데이터 수신: 클라이언트로부터 데이터를 수신합니다.연결 종료: 클라이언트와의 웹 소켓 연결을 종료합니다.Boost.Beast를 이용한 웹 소켓 서버 구현Boost.Beast는 HTTP 및 웹 소켓 프로토콜을 지원하는 라이브러리로, Boost.Asio를 기반으로 합니다. Boost.Beast를 사용하여 간단한 웹 소켓 서버를 구현할 수 있습니다.웹 .. 2024. 8. 1. [C++ 마스터] Day 15: 상속과 다형성 상속 (Inheritance)상속은 기존 클래스(기본 클래스 또는 부모 클래스)를 기반으로 새로운 클래스(파생 클래스 또는 자식 클래스)를 정의하는 기능입니다. 상속을 사용하면 코드의 재사용성을 높이고, 클래스 간의 계층 구조를 만들 수 있습니다. 1. 기본 클래스와 파생 클래스기본 클래스를 상속하여 파생 클래스를 정의할 수 있습니다.class Base {public: void show() { cout 2. 접근 지정자와 상속파생 클래스는 기본 클래스의 접근 지정자에 따라 멤버에 접근할 수 있습니다. public, protected, private 상속이 있습니다.class Base {protected: int protectedVar;public: int publicVar;.. 2024. 8. 1. 이전 1 ··· 7 8 9 10 11 12 13 ··· 18 다음 반응형