일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- HTTP
- git
- Heap
- Java
- 데이터통신
- mongodb
- nodejs
- github
- network
- Lombok
- redis
- javascript
- mybatis
- html
- Elk
- ajax
- effective
- VCS
- reactive
- Linux
- r
- AWS
- 네트워크
- spring
- cache
- NoSQL
- reactor
- Static
- socket
- libuv
- Today
- Total
목록C (2)
빨간색코딩
TCP소켓에 이어서 쓴다1. UDP소켓이란?UDP소켓은 비연결지향형 소켓이다. TCP에 있는 흐름제어가 없다. 특징으로는 전송순서에 상관없이 가장 빠른 전송,경로를 지향한다. 데이터 손실의 우려가 있고 한번에 전송할 수 있는 데이터의 크기가 제한된다. 데이터의 경계가 존재한다. TCP소켓과 반대라고 생각하면 쉽다. 데이터의 경계가 존재한다는 건, 3번 write()했으면 3번 read()를 해서 수신해야한다는 것이다. 이러한 특징때문에 UDP는 주로 고속의 데이터 전송이나 데이터가 조금 손실되도 상관없는 곳에 쓰인다. 대표적인 예가 동영상 스트리밍을 들 수 있겠다.중학교 때 스타좀 (많이)해봤는데.. 스타크1을 한사람이면 특히 UDP란 글자가 익숙할거다. 게임플레이어간에 고속통신을 위하여 UDP로 주고받..
구조체의 메모리 저장방식을 알면 멤버변수들을 선언할때 좀 더 메모리를 효율적, 최적화되게 쓸 수 있다.1. 구조체의 바이트 패딩바이트패딩이란 멤버 변수를 메모리에서 CPU로 읽을 때 한번에 읽을 수 있도록, 컴파일러가 레지스터의 블록에 맞춰 바이트를 패딩해주는 최적화 작업이다. 만약 컴파일러가 패딩을 하지 않는다면(=최적화를 해주지 않는다면) CPU가 메모리에 다시 접근하면서 성능이 떨어질 것이다.struct x { char a; int b; char c; }; struct x data; 위 구조체를 sizeof(data) 로 찍어보면 6이 나올 것같지만 12가 나온다. 컴파일러는 구조체를 구성하는 멤버들을 가장 크기가 큰 멤버 자료형의 배수가 되도록 정렬한다. 이 정렬을 위해 의미없는 바이트(패딩)들을..