Nginx 소스 코드 분석 시리즈 4: Nginx 의 양 방향 링크
책 에 적 힌 코드 는 다음 과 같다.
typedef struct
{
u_char* str;
ngx_queue_t qEle;//
int num;
}TestNode;
ngx_int_t compTestNode(const ngx_queue_t* a,const ngx_queue_t* b)
{
TestNode* aNode =ngx_queue_data(a,TestNode,qEle);
TestNode* bNode = ngx_queue_data(b,TestNode,qEle);
return aNode->num > bNode->num;
/*
#define ngx_queue_data(a, TestNode, qEle) \
(TestNode*) ((u_char *)a - offsetof(TestNode, qEle))
*/
}
void ngx_queue_test()
{
int i=0;
ngx_queue_t queueContainer;
TestNode node[5];
ngx_queue_init(&queueContainer);
for(;i<5;i++)
{
node[i].num = i ;
}
// :
ngx_queue_insert_tail(&queueContainer,&node[0].qEle);
ngx_queue_insert_head(&queueContainer,&node[1].qEle);
ngx_queue_insert_tail(&queueContainer,&node[2].qEle);
ngx_queue_insert_after(&queueContainer,&node[3].qEle);
ngx_queue_insert_tail(&queueContainer,&node[4].qEle);
//
ngx_queue_t* q;
for(q=ngx_queue_head(&queueContainer);
q!=ngx_queue_sentinel(&queueContainer);
q=ngx_queue_next(q))
{
TestNode* eleNode = ngx_queue_data(q,TestNode,qEle);
printf("%d
",eleNode->num);
}
//
ngx_queue_sort(&queueContainer,compTestNode);
//
for(q=ngx_queue_head(&queueContainer);
q!=ngx_queue_sentinel(&queueContainer);
q=ngx_queue_next(q))
{
TestNode* eleNode = ngx_queue_data(q,TestNode,qEle);
printf("%d
",eleNode->num);
}
}
사실 주요 사상 을 총괄 해 보면 다음 과 같은 몇 가지 가 있다.
1. 모든 데이터 구조 체, 안에 ngx 가 있어 야 합 니 다.queue_t 변수.
2 구조 체 의 유형, 구성원 의 이름, 구조 체 의 ngx 제공queue_t 변수의 포인터
제자리 구조 체 의 첫 주 소 를 돌려 줄 수 있 습 니 다.이거 C 배 운 거 다 알 아.
3. 양 방향 링크 에 연 결 된 것 은 각 구조 체 의 ngx 입 니 다.queue_t 변수.
4. 정렬 을 위해 정렬 함 수 를 써 야 합 니 다.
뒤 에는 말 하지 않 겠 습 니 다. 비교적 간단 한 것 은 스스로 깨 달 으 세 요, 젊은이 들!
머리 가 길 어서 이발 + 저녁 먹 으 러 가 야 하 는데 주말 에 새 가 없어 요.
PS: 이 연 결 된 링크 가 어떤 것 인지 계속 생각 했 어 요.
하하, 전봇대 에 줄 지어 있 는 새 처럼 느껴 졌 다. 새 한 마리 의 주 위 는 두 개의 날개 가 벌 어 졌 다.
이 말 을 알 아 봤 다 면 NGINX 의 양 방향 링크 의 참뜻 을 알 고 있 었 다 는 뜻 이다.
BIG CON!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
간단! Certbot을 사용하여 웹 사이트를 SSL(HTTPS)화하는 방법초보자가 인프라 주위를 정돈하는 것은 매우 어렵습니다. 이번은 사이트를 간단하게 SSL화(HTTP에서 HTTPS통신)로 변경하는 방법을 소개합니다! 이번에는 소프트웨어 시스템 Nginx CentOS7 의 환경에서 S...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.