🚀 성능을 극대화하는 noexcept 활용법 noexcept는 "이 함수는 절대로 예외를 던지지 않는다"고 컴파일러에게 확신을 주는 키워드입니다. 컴파일러는 이 신호를 바탕으로 예외 처리용 보험 코드를 제거하고 최적화의 풀악셀을 밟습니다. 💡 핵심 원리: 예외 처리 로직(Stack Unwinding)이 생략되므로 실행 파일 크기가 줄어들고, 런타임 성능이 향상됩니다. 예제 1. STL 컨테이너 이동 최적화 std::vector 재할당 시, 이동 생성자가 noexcept여야만 복사 대신 이동(Move)을 수행하여 성능이 수십 배 향상됩니다. class SmartBuffer {public: // noexcept가 있어야 vector가 안심하고 데이터를..
상속 설계의 정석: "상속이 필요 없으면 final을, 한다면 override를" C++ 개발 시 가장 빈번하게 발생하는 실수는 '의도하지 않은 상속'과 '잘못된 재정의'입니다. 컴파일러가 내 실수를 대신 찾아내게 만드는 똑똑한 키워드 활용법을 예제와 함께 알아봅니다. 1. override: 컴파일러에게 감시 요청하기 단순히 부모 함수와 이름을 맞추는 것만으로는 부족합니다. override는 실수를 에러로 바꿔주는 안전장치입니다. ❌ override가 없는 위험한 코드 class Base {public: virtual void process(float speed) { ... }};class Derived : public Base {public: ..
클래스 설계의 마침표, final 왜 우리는 "더 이상 상속이 필요 없는 클래스"에 명시적으로 final을 붙여야 할까? 본질(Essence): 상속은 객체지향의 강력한 무기이지만, 의도치 않은 상속은 시스템을 복잡하게 만들고 성능을 저하시킵니다. 더 이상의 확장이 필요 없는 클래스라면 final을 붙여 설계의 의도를 명확히 하고 성능 이득을 챙겨야 합니다. 1. 설계의 명확성: "여기서 끝내겠습니다" 코드는 읽는 사람에게 의도를 전달해야 합니다. 클래스에 final이 붙어 있다면, 다른 개발자는 이 클래스의 내부 로직을 분석할 때 '어디선가 이 로직이 오버라이딩되어 다르게 동작할 수 있다'는 걱정을 할 필요가 없습니다. C++ 예시: 상속을..
1. 파일 역할 및 이름 매칭 (정리)mydomain.com 환경에 맞춰 아래와 같은 이름으로 생성하고 관리하게 됩니다. 파일명역할ca.pem인증 기관(CA) 증명서. 클라이언트 PC에 설치하여 신뢰를 구축합니다 mydomain.key서버의 비밀키. 유출되지 않도록 서버 내부에만 보관합니다 mydomain.crtmydomain.com 도메인을 증명하는 최종 인증서입니다 mydomain.jks자바 환경용 파일. mydomain.key와 mydomain.crt를 합친 금고입니다 2. OpenSSL을 이용한 재발행 명령어 (순서대로 실행)1단계: Root CA 만들기 (도장 준비)먼저 본인이 직접 인증 기관이 되기 위한 파일을 만듭니다.Bash # 1. CA용 비밀키 생성openssl genrsa ..
🚀 CMake를 이용한 C++ 크로스 플랫폼 개발 이 문서는 리눅스, 윈도우, macOS를 지원하는 C++ 프로젝트를 CMake로 구축하는 방법을 다룹니다. I. CMake 기초: Hello World! CMake의 핵심 3단계(Configure, Build, Run)를 보여주는 가장 기본적인 예제입니다. 1. 프로젝트 구조 HelloWorld/├── CMakeLists.txt└── main.cpp 2. CMakeLists.txt cmake_minimum_required(VERSION 3.10)project(HelloWorld CXX)# C++ 표준 설정set(CMAKE_CXX_STANDARD 17)set(CMAKE_CXX_STANDARD_REQUIRED T..
🚀 GetProcAddress를 활용한 유연하고 견고한 소프트웨어 개발 Windows 환경에서 GetProcAddress 함수는 단순한 API 호출 이상의 의미를 지닙니다. 이는 개발자가 시스템의 유연성과 견고성을 극대화하여 더 나은 소프트웨어를 만들 수 있도록 돕는 핵심적인 동적 로딩 메커니즘입니다. 우리는 이 메커니즘을 효과적으로 활용하여 다음과 같은 목표를 달성할 수 있습니다.1. 💡 호환성 확보와 시스템 의존성 최소화가장 중요한 활용 목표는 하위 및 상위 호환성을 확보하는 것입니다. OS 버전에 따라 함수가 존재하지 않을 수 있기 때문입니다. GetProcAddress를 사용하면 런타임에 함수의 존재 여부를 확인할 수 있으며, 함수가 없으면 대체 로직을 실행하여 프로그램의 실행 안정성을 보장합..
- Total
- Today
- Yesterday
- 양파다이브
- Windows
- C++
- RSA
- 윈도우
- Linux
- OpenSource
- DLL
- 제주도
- 스쿠버다이빙
- Thread
- 서귀포
- 패턴
- 성산블루버블
- 현포다이브
- 서귀포블루버블
- ReFS
- PowerShell
- 블루버블다이브팀
- 블루버블다이빙팀
- ip
- C#
- 다이빙
- 블루버블
- C
- 디자인패턴
- 리눅스
- Build
- 암호화
- 울릉도
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 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 |
