구글protobuf 대상 바이트 코드
1. 소스 오픈 주소:
https://github.com/google/protobuf/
2. 릴리즈 버전 다운로드:
https://github.com/google/protobuf/releases
3. Protobuf 소개
공식 문서는 다음과 같습니다.
a language-neutral, platform-neutral, extensible way of serializing structured data for use in communications protocols, data storage, and more.
3. 데이터 유형
.proto Type
Notes
C++ Type
Java Type
double
double
double
float
float
float
int32
Uses variable-length encoding. Inefficient for encoding negative numbers – if your field is likely to have negative values, use sint32 instead.
int32
int
int64
Uses variable-length encoding. Inefficient for encoding negative numbers – if your field is likely to have negative values, use sint64 instead.
int64
long
uint32
Uses variable-length encoding.
uint32
int
uint64
Uses variable-length encoding.
uint64
long
sint32
Uses variable-length encoding. Signed int value. These more efficiently encode negative numbers than regular int32s.
int32
int
sint64
Uses variable-length encoding. Signed int value. These more efficiently encode negative numbers than regular int64s.
int64
long
fixed32
Always four bytes. More efficient than uint32 if values are often greater than 228.
uint32
int
fixed64
Always eight bytes. More efficient than uint64 if values are often greater than 256.
uint64
long
sfixed32
Always four bytes.
int32
int
sfixed64
Always eight bytes.
int64
long
bool
bool
boolean
string
A string must always contain UTF-8 encoded or 7-bit ASCII text.
string
String
bytes
May contain any arbitrary sequence of bytes.
string
ByteString
5. Protobuf의 장점
1. 성능이 좋고 효율이 높다
2. 코드 생성 메커니즘, 데이터 분석 클래스 자동 생성
3. 후방 호환 및 전방향 호환 지원
4, 다양한 프로그래밍 언어 지원(java,c++,python)
6、Protobuf의 단점
1. 응용이 넓지 않다
2. 바이너리 형식은 가독성이 떨어진다(바이너리 형식)
3. 자기 묘사가 부족하다
7. Protobuf 환경의 구축
운영 체제에 따라 릴리즈 버전 다운로드
https://github.com/google/protobuf/releases,
8, 첫 번째 프로토 파일 새로 만들기
파일 이름: ResponseMsg.proto
option java_package = "io.hpgary.netty.pb"; // java
option java_outer_classname = "ResponseMsgProbuf"; // java
message ResponseMsg {
required bytes response = 1;
}
9. 자바 클래스로 변환하기:
명령을 사용하려면 다음과 같이 하십시오.
# ../java
protoc.exe --java_out ../java ResponseMsg.proto
10、사용:
ByteString byteString = ByteString.copyFrom("aaa".getBytes());
RequestMsg.Builder requstMsg = RequestMsg.newBuilder();
requstMsg.setCmd("hp_call");
requstMsg.setRequestParam( byteString );
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.