구글protobuf 대상 바이트 코드

3083 단어
자세히 보기
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 );


 
 

좋은 웹페이지 즐겨찾기