🌐 엔디안 변환 – htons와 htonl 완벽 정리!네트워크 프로그래밍이나 시스템 간 데이터 전송을 다루다 보면 "엔디안(Endian)"이라는 개념을 자주 접하게 됩니다. 특히 C/C++에서 htons, htonl 같은 함수가 자주 사용되는데, 이게 무엇인지, 왜 필요한지 깔끔하게 정리해보겠습니다.🔸 엔디안(Endian)이란?엔디안은 멀티 바이트 데이터를 메모리에 저장하는 방식을 말합니다.빅 엔디안(Big Endian): 큰 바이트(상위 바이트)가 메모리의 앞 주소에 저장됩니다.리틀 엔디안(Little Endian): 작은 바이트(하위 바이트)가 메모리의 앞 주소에 저장됩니다.예시:0x12345678빅 엔디안 → 12 34 56 78리틀 엔디안 → 78 56 34 12🔸 엔디안이 왜 중요할까?대부..
SetTimer vs Thread Sleep vs CreateTimerQueueTimer 비교 윈도우 애플리케이션에서 일정 시간 간격으로 작업을 수행하는 방법으로 SetTimer, Thread + Sleep, CreateTimerQueueTimer가 자주 사용됩니다. 각각의 방식은 동작 방식과 장단점이 다르며, 상황에 따라 적합한 방식이 달라집니다. 1. SetTimer 동작 방식: 일정 시간 간격으로 WM_TIMER 메시지를 메시지 큐에 추가하여 타이머 이벤트를 발생시킵니다. 메인 스레드에서 타이머 콜백이 처리됩니다. SetTimer(hWnd, 1, 1000, NULL); // 1초마다 WM_TIMER 발생switch (message) { case WM_TIM..
라운드 로빈(Round Robin) 스케줄링 알고리즘 라운드 로빈(RR)은 운영 체제에서 가장 간단하고 널리 사용되는 스케줄링 알고리즘 중 하나입니다. 이 알고리즘은 선점형(preemptive) 방식으로, 타임 슬라이스(time quantum)라고 불리는 고정된 시간 단위에 따라 프로세스가 CPU 시간을 공정하게 나누어 사용하도록 합니다. 작동 방식 모든 프로세스가 원형 큐(circular queue)에 추가됩니다. 스케줄러는 각 프로세스에 고정된 타임 슬라이스를 순서대로 할당합니다. 프로세스가 주어진 시간 내에 완료되지 않으면, 실행이 중단되고 큐의 뒤로 이동합니다. 모든 프로세스가 완료될 때까지 이 과정을 반복합니다. 주..
중첩 블록({})를 지양하는 코딩 스타일코드에서 중첩된 블록({})이 많아지면 가독성이 떨어지고 유지보수가 어려워집니다. 이를 방지하기 위해 Guard Clause Pattern을 사용하여 중첩을 줄이는 방식을 추천합니다.특징 및 장점가독성 향상: 중첩을 줄여 코드가 직관적이고 깔끔하게 보입니다.유지보수 용이: 조건을 만족하지 않을 경우 조기에 종료하여 추가적인 처리가 필요하지 않습니다.로직 흐름 단순화: 여러 if 문이 중첩되지 않아 조건 확인이 단순해집니다.나쁜 예: 중첩된 코드int myFunc(){ if (true == foo1()) { if (true == foo2()) { if (true == foo3()) { ..
C++ 요다 스타일 (Yoda Style)C++에서 요다 스타일(Yoda Style)은 조건문을 작성할 때 값이나 상수를 먼저 쓰는 방식으로, 스타워즈의 요다의 말투에서 영감을 받아 이름 붙여졌습니다.일반적인 조건문if (x == 42) { // 무언가를 수행}요다 스타일 조건문if (42 == x) { // 무언가를 수행}요다 스타일의 장점실수로 =(대입 연산자)를 사용하는 것을 방지할 수 있음컴파일 에러를 통해 잘못된 조건을 쉽게 찾을 수 있음예시:if (42 = x) { // 요다 스타일에서는 컴파일 에러 // 무언가를 수행}요다 스타일의 단점가독성이 낮아 처음 보는 사람에게는 읽기 어려움최신 컴파일러에서는 =와 == 혼동 시 경고를 제공함결론요다 스타일은 주로 과거 컴파일러의 제..
Thread와 싱글톤 상속의 문제점싱글톤과 Thread 클래스를 동시에 상속받는 것은 초기에는 코드가 간단해 보일 수 있지만, 실제로는 런타임 오류와 메모리 관리 문제를 일으킬 수 있는 설계상 큰 위험 요소입니다. 이 두 가지 상속의 문제점과 해결책을 정리해 보았습니다.문제점수명 관리 문제싱글톤 객체는 프로그램이 종료될 때까지 유지되지만, Thread 객체는 독립적으로 실행 및 종료되어야 합니다. 두 객체를 동시에 상속받을 경우, 싱글톤 객체의 수명이 Thread의 종료 타이밍에 영향을 미칠 수 있어 DLL 언로드나 프로그램 종료 시점에서 예기치 않은 문제가 발생할 수 있습니다.컴파일 타임 검증의 부재C++에서는 기본적으로 두 클래스를 상속받는 것에 대해 명시적인 제한이 없기 때문에, 개발자는 이러한 설..
- Total
- Today
- Yesterday
- 성산블루버블
- 블루버블다이브팀
- 스쿠버 다이빙
- 윈도우
- 서귀포블루버블
- 리눅스
- Linux
- ip
- OpenSource
- PowerShell
- 서귀포
- 패턴
- Windows
- 암호화
- C#
- C
- C# 고급 기술
- 현포다이브
- CMake
- 블루버블다이빙팀
- Thread
- 외돌개
- 스쿠버다이빙
- 제주도
- DLL
- C++
- 울릉도
- 블루버블
- C#.NET
- 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 | 29 | 30 | 31 |