Nginx 데이터 구조 – 정수 및 문자열
태그: Nginx 데이터 구조
크로스 플랫폼, 고효율, 통일된 사양을 고려하여 Nginx는 많은 것을 캡슐화합니다. 물론 우리가 다른 개발 프로젝트에서 자주 사용하는 데이터 구조도 있습니다. 각 기사마다 한두 가지 요점을 분석하고 연습할 것입니다.
정수 캡슐화
<code><span>typedef</span> intptr_t ngx_int_t; <span>typedef</span> uintptr_t ngx_uint_t'</code>
문자열 유형
Nginx에서는 Ngx_str_t를 사용하여 문자열을 표현하며 정의는 다음과 같습니다.
<code><span>typedef</span> struct { size_t len; u_char *<span><span>data</span>;</span> } ngx_str_t;</code>
2개의 멤버만 있는 간단한 구조임을 알 수 있습니다. 데이터 포인터는 문자열의 시작 주소를 가리키고 len은 문자열의 길이를 나타냅니다.
여기서 혼란스러울 수 있습니다. C 언어의 문자열에는 이를 표현하기 위한 포인터만 필요합니다. 여기서 길이가 필요한 이유는 무엇입니까? 우리가 C 언어에서 자주 이야기하는 문자열은 실제로 ''로 시작하기 때문입니다.
그러면 이렇게 하면 어떤 이점이 있나요? 네트워크 서버로서 Nginx는 확실히 개발을 촉진해야 할 필요성을 고려합니다. 네트워크 요청에서 가장 많이 노출되는 것은 URL 주소, 요청 헤더 정보, 요청 엔터티 등입니다. 예를 들어 사용자 요청과 같은 URL 주소를 선택하세요.
<code>GET /test/<span>string</span>?<span>a</span>=<span>1</span>&b=<span>2</span><span>http</span>/<span>1.1</span>\r\n</code>
물론 이것은 가장 단순한 애플리케이션일 뿐입니다. 문자열 유형은 거의 모든 비즈니스 시스템과 네트워크 프레임워크에서 널리 사용되는 기본 유형입니다. 좋은 디자인 구조는 Nginx의 낮은 메모리 소비를 보장하는 중요한 요소입니다.