>백엔드 개발 >PHP 튜토리얼 >Nginx 데이터 구조 - 정수 및 문자열

Nginx 데이터 구조 - 정수 및 문자열

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB원래의
2016-07-29 09:08:351001검색

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>
그래서 Ngx_str_t 구조를 사용하여 이 값을 저장한다면 이제 요청 유형(GET, POST 또는 PUT)을 얻으려고 합니다. 메모리를 복사할 필요는 없습니다. 새로운 ngx_str_t를 만들기만 하면 됩니다. 내부의 데이터 포인터가 원래 ngx_str_t와 동일한 주소를 가리키고 len을 3으로 변경합니다.

물론 이것은 가장 단순한 애플리케이션일 뿐입니다. 문자열 유형은 거의 모든 비즈니스 시스템과 네트워크 프레임워크에서 널리 사용되는 기본 유형입니다. 좋은 디자인 구조는 Nginx의 낮은 메모리 소비를 보장하는 중요한 요소입니다.

ngx_str_t의 연산

문자열과 같은 단순한 구조를 갖는 것은 실제로 특별히 편리하지 않습니다. Java 및 Python과 같은 최신 고급 언어는 풍부한 문자열 함수인 Nginx를 제공합니다. 또한 문자열 연산을 위한 많은 공개 함수를 제공하지만 그 중 일부는 사용하기 쉽지 않은 것 같으므로 이러한 함수를 하나씩 살펴보겠습니다.

자고 내일 글 써보세요

').addClass('pre-numbering').hide(); $(this).addClass('has-numbering').parent().append($numbering); for (i = 1; i ').text(i)); }; $numbering.fadeIn(1700); }); }); 위 내용은 내용의 측면을 포함하여 Nginx의 데이터 구조(정수 및 문자열)를 소개합니다. PHP 튜토리얼에 관심이 있는 친구들에게 도움이 되기를 바랍니다.

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.