팩토리 패턴은 객체 생성을 위한 인터페이스를 정의하고, 하위 클래스가 어떤 클래스의 인스턴스를 생성할지 결정하게 하는 디자인 패턴입니다. 이를 통해 객체 생성을 서브클래스에 위임함으로써, 클라이언트 코드와 인스턴스를 만들어야 하는 구체적인 클래스 간의 결합도를 낮출 수 있습니다. 팩토리 패턴은 크게 두 가지로 나뉩니다: 팩토리 메서드 패턴과 추상 팩토리 패턴입니다. 여기서는 더 간단한 팩토리 메서드 패턴의 예제를 소개하겠습니다. 팩토리 메서드 패턴 예제 이 예제에서는 단순한 차량 공장을 모델링합니다. Vehicle 인터페이스와 이를 구현하는 두 개의 구체 클래스 Car와 Bike를 정의합니다. 그리고 VehicleFactory 클래스에서는 Vehicle 객체를 생성하는 팩토리 메서드 createVehic..
싱글턴(Singleton) 패턴은 객체의 인스턴스가 애플리케이션 내에서 단 하나만 생성되도록 보장하는 디자인 패턴입니다. 이 패턴은 전역 변수를 사용하지 않고 객체에 대한 전역 접근을 제공하며, 동시에 여러 인스턴스의 생성을 방지하여 리소스 사용을 최적화할 수 있습니다. 생성자를 비공개로 만들어 클래스 외부에서 인스턴스를 직접 생성할 수 없게 합니다. 클래스 내에 정적(private static) 멤버 변수로 자기 자신의 유일한 인스턴스를 저장합니다. 공개적인 정적 메서드(getInstance) 를 제공하여 유일한 인스턴스에 접근할 수 있게 합니다. 이 메서드는 내부적으로 인스턴스가 존재하지 않을 경우에만 생성하고, 이미 존재하는 경우에는 기존 인스턴스를 반환합니다. #include class Singl..
C++20 이상: std::format 사용 예시C++20에서는 std::format이라는 새로운 함수를 도입하여 문자열 포맷팅을 더욱 쉽게 할 수 있게 되었습니다. 이 함수는 Python의 str.format과 유사한 방식으로 작동합니다. 다만, std::format은 컴파일 시간에 포맷 문자열을 검사하여 타입 안전성을 보장합니다.#include #include #include templatestd::string stringformat(const std::string& format, Args ... args) { size_t size = snprintf(nullptr, 0, format.c_str(), args ...) + 1; if (size buf(new char[size]); ..
아스트릭 처리된 경로 비교를 해봅시다절대 경로를 비교 할 때 * 처리된 경로까지 넣어서 비교해 봅시다.\ 구현/******************************************************************************* _ _ _ _ __ _____ _ _*| | | | | | | |/ / | __ \ | | | |*| |__| | __ _ ___ | |_ _| ' / | | | | _____ __ | | __ _| |__*| __ |/ _` |/ _ \_ | | | | | ..
프로세스(Process)와 쓰레드(Thread)는 둘 다 동시에 여러 작업을 수행하는데 사용되는 개념이지만, 몇 가지 중요한 차이점이 있습니다. 독립성: 프로세스: 각 프로세스는 독립된 메모리 공간을 가지며, 한 프로세스의 오류가 다른 프로세스에 영향을 미치지 않습니다. 각 프로세스는 운영체제에 의해 별도로 관리됩니다. 쓰레드: 쓰레드는 프로세스 내에서 실행되는 여러 실행 흐름으로, 같은 프로세스 내의 쓰레드들은 같은 메모리 공간을 공유합니다. 따라서 쓰레드 간에는 데이터를 쉽게 공유할 수 있습니다. 자원 사용: 프로세스: 각 프로세스는 운영체제로부터 독립적인 자원을 할당받습니다. 이로 인해 프로세스 간 통신이나 데이터 공유에는 별도의 메커니즘이 필요합니다. 쓰레드: 쓰레드는 같은 프로세스 내의 다른 쓰..
IV 초기화 벡터(Initialization Vector, IV)는 블록 암호화에서 사용되는 중요한 개념 중 하나입니다. 초기화 벡터는 각 블록의 암호화에 사용되는 고유한 값으로, 암호화 알고리즘이 동일한 평문 블록에 대해 항상 동일한 암호문 블록을 생성하는 것을 방지합니다. CBC 모드에서 초기화 벡터는 첫 번째 블록에 대한 암호화에 사용되며, 이후에는 이전 블록의 암호문이 현재 블록의 평문과 XOR 연산되어 사용됩니다. 초기화 벡터의 역할은 패턴을 방지하고 블록 간 상관관계를 증가시켜 전반적인 보안을 강화하는 것입니다. 중요한 점은 초기화 벡터는 매번 고유한 값을 가져야 하며, 랜덤하고 예측 불가능해야 합니다. 만약 동일한 초기화 벡터가 계속해서 사용된다면, 같은 평문 블록에 대해 항상 동일한 암호문..
- Total
- Today
- Yesterday
- 패턴
- 스쿠버다이빙
- C#
- 네트워크 정보
- DLL
- 블루버블
- 암호화
- 서귀포
- Build
- 서귀포블루버블
- 오블완
- 성산블루버블
- C++
- 외돌개
- 스쿠버 다이빙
- 현포다이브
- 울릉도
- 블루버블다이빙팀
- CMake
- OpenSource
- C#.NET
- 블루버블다이브팀
- Linux
- C
- PowerShell
- 제주도
- Windows
- C# 고급 기술
- 티스토리챌린지
- script
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |