간단한 학습 Thrift
1.thrift 설치
https://thrift.apache.org/docs/BuildingFromSource
2thrift 설명 파일
thrift는protobuffer와 유사하여 서열화 방식을 제공합니다. 먼저 설명 파일을 정의해야 하고,thrift는 정의를 해야 합니다.thrift 파일.형식은 다음과 같습니다.
struct Info {
1:requred i32 uid,
2:optional i32 age,
}
service nameserver {
i32 getAge(1:i32 uid);
}
위 코드에서 i32는 int32비트 즉 네 바이트를 나타내고 i64 Info는 사용자 정의 형식입니다.required는 이 필드에 값을 부여해야 하고,optional은 있어도 되고 없어도 된다는 것을 표시합니다.서비스는 대외 인터페이스를 정의하는 서비스 모듈을 표시합니다.1:i32uid는 첫 번째 인자가 int 인자 이름이 uid라는 것을 나타낸다.이 함수의 반환값은 i32비트입니다.
3 구체적인 사용
thrift는 C++/python/java/erlang/perl 등 다양한 언어를 지원합니다.구체적인 언어 코드를thrift 도구를 통해 생성해야 합니다.C++를 예로 들면 (또한 blade는thrift 컴파일도 지원합니다):
thrift --gen cpp test.thrift
gen-cpp 디렉터리를 생성하고 디렉터리에 생성된 파일을 저장합니다. 각각thrift 파일은 다음과 같은 네 개의 파일을 생성합니다.
{thrift_name}_constants.h,{thrift_name}_constants.cpp,{thrift_name}_types.h,{thrift_name}_types.cpp######
서비스가 있는thrift 파일에 대해 두 개의 파일을 추가로 생성합니다. 각각
{service_name}.h, {service_name}.cpp######
서비스가 있는thrift 파일에 사용할 수 있는 서버 말뚝이 생성됩니다: {service_name}._server.skeleton.cpp** {thrift_name}_types는 사용자 정의 유형에 대한 구체적인 실현입니다.일반적으로 다른 파일은 이 형식을 사용해야 하며, 헤더 파일만 인용하면 된다.사용자 정의 유형을 사용할 때 {thrift_name}_ 보기types.h가 발견하고,
typedef struc _Info_isset {
_Info_isset():age(false) {}
bool age:1;
}_Info__isset;
_Info_isset __isset;
thrift는required와optional을 구분하기 위해 필드가optional로 설정되어 있다면.Info에는 멤버 변수 __ 가 있습니다.isset;안에 있는 age는 false로 Info를 나타냅니다.age는 값을 부여하지 않았습니다.true는 값을 표시합니다.사용자 정의 필드의 기본 구성원 속성은 모두public입니다. 대상을 통해 직접 접근할 수 있지만 옵션의 필드: 1) Info의 속성 정보에 접근해야 합니다. 통과할 수 없습니다
Info info; int b = info.age
info.__ 의 경우 이 필드가 기본값인지 먼저 체크해야 합니다.isset.age =false, 기본값 0입니다.2) 필드 값을 수정하려면 info를 직접 사용할 수 없습니다.age = 25, info.__ 필요set_age()에서 수정합니다. 이 함수에서도 info.__isset.age의 값입니다.thrift는 다른 __set_age () 를 수정하면 전송 과정에서 age의 값이 기본값으로 복원됩니다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.