protobuf の簡単な紹介と Ubuntu 16.04 環境でのインストールチュートリアル

protobuf の簡単な紹介と Ubuntu 16.04 環境でのインストールチュートリアル

protobufの簡単な紹介

Protobuf は、Google のオープンソースのシリアル化プロトコル フレームワークで、XML や JSON に似た構造を持っています。バイナリと高効率が特長です。主に通信プロトコルやデータ ストレージで使用され、構造化データを表現する方法の 1 つと考えられています。

protobufの利点

  • 誰もが使っている、少なくとも「気取った」人たちは使っている[時代の流れに遅れないようにしないといけない]
  • パフォーマンスが良いという人もいますが、バイナリ形式です [大きなプロジェクトではこれを使用しないのは恥ずかしいです]
  • さまざまな言語のクロスプラットフォームサポート、後方互換性と前方互換性は非常に強力です(結局のところ、Googleが使用しています)

protobufの欠点

  • バイナリ形式なので一般の人には読めない
  • 自己紹介の欠如

XML は自己記述的ですが、protobuf 形式はそうではありません。バイナリ ファイルが渡された場合、それが何を行うのかはわかりません。

Protobufの使用手順

  • 独自のデータ構造形式(.pro)ソースファイルを定義する
  • protobufが提供するコンパイラを使用してソースファイルをコンパイルします。
  • protobuf goのAPIを使用して情報を読み書きする

たとえば、名前やメールの属性を含む構造化データ人物を定義します

XMLで定義

<人>
 <name>張さん</name>
 <メール>[email protected]</メール>
<人>

protobufはこれを定義します

人{
 名前:"zhangsan"
 メールアドレス:"[email protected]"
}

これはjsonで定義されています

{
 "人":{
  "名前":"張さん",
  "メールアドレス":"[email protected]"
 }
}

protobufの構文

メッセージの定義

メッセージ タイプは要求または応答メッセージの形式を定義し、複数のタイプを含めることができます。

サービス

RPC でメッセージ タイプを使用する必要がある場合は、.proto ファイルで RPC サービス インターフェイスを定義する必要があります。プロトコル バッファー コンパイラは、選択した言語に基づいてサービス インターフェイス コードを生成します。

ProtobufはUbuntu [バージョン16.04]にインストールされています

公式アドレス: https://github.com/google/protobuf/blob/master/src/README.md

インストールのコマンドラインは次のとおりです。

$ sudo apt-get install autoconf automake libtool curl make g++ unzip
$ git クローン https://github.com/google/protobuf.git
$ cd プロトコルバッファ
$ git サブモジュールの更新 --init --recursive
$ ./autogen.sh
$ ./configure
$ 作る
$ チェックする
$ sudo インストール
$ sudo ldconfig # 共有ライブラリのキャッシュを更新します。

作成後のスクリーンショット

宛十八微服務

コンパイルは問題なくスムーズに完了しました。以下のバージョンを確認してみましょう。

$ protoc --version12

宛十八微服務

要約する

上記は、protobuf の簡単な紹介と Ubuntu 16.04 環境でのインストール チュートリアルです。皆様のお役に立てれば幸いです。ご質問がございましたら、メッセージを残していただければ、すぐに返信いたします。また、123WORDPRESS.COM ウェブサイトをサポートしてくださっている皆様にも感謝申し上げます。
この記事が役に立ったと思われた方は、ぜひ転載していただき、出典を明記してください。ありがとうございます!

以下もご興味があるかもしれません:
  • UbuntuにProtobuf 3をインストールするための詳細なチュートリアル

<<:  JavaScript関数におけるこのポイントの問題の詳細な説明

>>:  MySQL マスタースレーブレプリケーション 読み書き分離の設定方法の詳細説明

推薦する

Windows CVE-2019-0708 リモート デスクトップ コード実行脆弱性の再現問題

1. 脆弱性の説明マイクロソフトは2019年5月15日、CVE番号CVE-2019-0708のWin...

完璧なアロエベラジェルを選ぶには?完璧なアロエベラジェルの本物と偽物の見分け方

最新のパーフェクト アロエ ベラ ジェルのパッケージ ボックスには、赤いフォントで完璧な英語の文字が...

Vueのsync修飾子の詳細な説明

目次1. 手順2. 修飾語3. .sync 修飾子4. まとめ1. 手順指示とは命令です。文字通りの...

Nginx アップロードファイルのサイズを変更する簡単な方法

オリジナルリンク: https://vien.tech/article/138序文私は、マークダウン...

MySQL データベースにおける高同時実行性の問題を解決する方法

序文スタートアップ企業が最初はモノリシック アプリケーションを主要なアーキテクチャとして使用し、通常...

MySQL ストアド プロシージャの概念、原則、一般的な使用法の詳細な説明

この記事では、例を使用して、MySQL ストアド プロシージャの概念、原則、および一般的な使用法につ...

MySQL での varchar 型の日付の比較、並べ替え、その他の操作の実装

MySQL を使用する場合、日付は通常、datetime や timestamp などの形式で保存さ...

Vueにおける混合継承の詳細な説明

目次混合継承の影響: 1. 継承Vue.extend メソッド​プロパティを拡張する2. ミックスイ...

WindowsとLinux間でファイルを転送する方法

WindowsとLinux間のファイル転送(1)WinSCPを使用して、WindowsファイルをLi...

Mysqlはブール型の演算を設定します

Mysqlはブール型を設定します1. Tinyintタイプテストテーブルを作成し、blフィールドをブ...

InnoDBのインデックスページ構造、挿入バッファ、適応ハッシュインデックスについての簡単な説明

InnoDB インデックスの物理構造すべての InnoDB インデックスは Btree インデックス...

さまざまな種類のMySQLインデックス

インデックスとは何ですか?インデックスは、データベース ストレージ エンジンが指定されたデータをすば...

インタビュアーはCSSで固定アスペクト比を実現する方法を尋ねました

この質問に関連するニーズはまだないかもしれませんし、面接でこの質問をされたことがないかもしれませんが...

MySQLのSQLモードの特徴のまとめ

序文SQL モードは、MySQL がサポートする SQL 構文と、実行されるデータ検証チェックに影響...

Docker Alibaba Cloud RocketMQ 4.5.1 のデプロイプロセスの詳細な説明

検索ミラー docker 検索 rocketmq画像バージョンを表示他の画像を表示したい場合は、画像...