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

推薦する

Linux環境変数の設定戦略の詳細な説明

ソフトウェアのインストールをカスタマイズする場合、多くの場合、環境変数を設定する必要があります。以下...

VueはEChartsを使用して折れ線グラフと円グラフを実装します

バックエンド管理プロジェクトを開発する場合、バックエンドのユーザーデータをカウントし、折れ線グラフや...

Vue3 を使用してアップロード コンポーネントを実装するためのサンプル コード

目次一般的なアップロードコンポーネントの開発以下の機能を実装する必要がありますカスタムテンプレートサ...

最小限の展開で CentOS8 に OpenStack Ussuri をインストールする方法の詳細なチュートリアル

CentOS8 に最小限のデプロイメントで OpenStack Ussuri をインストールするため...

Linux 上の MYSQL 5.7 でルート パスワードを取得する際の問題 (テスト済み、利用可能)

目次1. --skip-grant-tables 経由で取得する1.1 my.conf を変更し、新...

MySQL の中国語文字化け問題の解決方法

1. LinuxのMySQLで中国語の文字化けが発生する。以下の操作を実行する。 vi /etc/m...

MYSQLのバックアップデータのスケジュールクリアの特定の操作

1|0 背景プロジェクトの要件により、各月の履歴在庫データをアーカイブしてバックアップする必要があり...

HTML ウェブページ作成のための 8 つの強力なテクニック

<br />作業を簡単に完了できる Web ページ作成ツールは数多くありますが、HTML...

レアタグフィールドセットと凡例の使用方法の詳細な説明

<fieldset>と<legend>については、ほとんどの人はおそらく馴染...

CSS で TikTok テキスト揺れエフェクトを実装する例

日々の開発において、フロントエンドの学生はアニメーションやデザインについてよく議論します。デザイナー...

フロートとBFCをクリアするCSSメソッド

イギリスBFC: ブロック書式設定コンテキストBFCレイアウトルール内箱は縦方向に次々に配置されます...

Dockerはブリッジを追加し、IPアドレスの範囲を設定します

バイナリ docker 19.03 バージョンがインストール後に docker0 ブリッジを自動的に...

JavaScript コンストラクタとプロトタイプの関係

目次1. コンストラクタとプロトタイプ1. コンストラクター2. コンストラクタ問題3. コンストラ...

Reactにおけるコンテキスト適用シナリオの分析

コンテキストの定義と目的コンテキストは、コンポーネント ツリーにプロパティを明示的に渡すことなく、コ...

SQL文のパフォーマンスを分析するための標準的な要約

この記事では、explain を使用して SQL ステートメントを分析する方法を紹介します。実際、イ...