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 マスタースレーブレプリケーション 読み書き分離の設定方法の詳細説明

推薦する

コードをセマンティックにする HTML のヒント

HTML のセマンティクスはありふれた問題のようです。Google で検索すると、セマンティクスに関...

DockerでSpringbootプロジェクトを実行する方法

1. IDEAの下にあるターミナルをクリックし、mvn clean installと入力します。 次...

Linux を使用して時間指定ファイルが占有するディスク容量を計算する方法

スケジュールされたタスク エディターを開きます。Cent は、デフォルトで vim を使用して直接開...

IE における条件付きコメントの利点と欠点

IE の条件付きコメントは、通常の (X)HTML コメントに対する Microsoft 独自の (...

VirtualBox は CentOS7 仮想マシンと拡張ツールをインストールします (画像とテキスト)

コンピュータシステム: win7この記事は主に写真に基づいており、多くの写真が含まれていますCent...

HTML ウェブページのメタビューポート属性の説明

HTML メタビューポート属性の説明ビューポートとはモバイル ブラウザは、Web ページを仮想の「ウ...

webpackの遅延読み込みとプリロードの詳細な説明

目次通常の読み込み遅延読み込みプリロードプリロードを使用しないプリロードの使用要約する通常の読み込み...

Vue elementUI フォームのネストされたテーブルと各行の検証の詳細な説明

目次エフェクト表示コードリンクキーコード表形式データコンポーネントのネスト検証方法リセット方法完全な...

CSS 擬似要素::マーカーの詳細な説明

この記事では、CSS ::markerの興味深い疑似要素を紹介します。これを使用すると、テキスト番号...

ActiveMQ メッセージ サービスを構築するための Docker 学習方法の手順

序文ActiveMQ は、Apache が開発した最も人気があり強力なオープン ソース メッセージ ...

シンプルなカレンダー効果を実現する JavaScript コード

この記事では、シンプルなカレンダー効果を実現するためのJavaScriptの具体的なコードを参考まで...

HTML ハイパーリンクの詳細な説明

ハイパーリンクハイパーリンクは、Web サイト上のすべてのページがハイパーリンクで接続され、ページ間...

MySQL Order By 複数フィールドのソートルールのコード例

事前に言っておく気まぐれですが、MySQL の order by sorting にどのようなルール...

JavaScript 型検出方法の例のチュートリアル

序文JavaScriptはWebフロントエンドで広く使われている言語の一つであり、Webアプリケーシ...

Vueルータールーティングの詳細な説明

目次1. 基本的な使い方2. 注意すべき点3. マルチレベルルーティング(マルチレベルルーティング)...