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

推薦する

Kali Linux Vmware 仮想マシンのインストール (図とテキスト)

準備: 1. VMwareワークステーションソフトウェアをインストールする2. Kali Linux...

nohup /dev/null 2>&1 の使い方の詳しい説明

nohup コマンド: プロセスを実行しており、アカウントからログアウトしてもプロセスが終了しないと...

Javascript フロントエンド最適化コード

目次if判定の最適化1. 最も簡単な方法:判断2. より良い方法: スイッチ3. より良いアプローチ...

Windows Server 2016 リモート デスクトップ サービスの構成とライセンスのアクティブ化 (2 ユーザー)

Server 2016 のリモート デスクトップ接続のデフォルト数は 2 ユーザーです。2 人以上...

シンプルな虫眼鏡効果を実現するJavaScript

大きな箱の中に写真があります。マウスをその上に置くと、半透明のマスク レイヤーが表示されます。マウス...

JavaScript を使用してハイパーリンクのリダイレクトを防ぐ方法 (複数の書き方)

JavaScript を使用すると、ハイパーリンクがジャンプするのを防ぐことができます。方法は次の...

MYSQL接続ポートが占有され、ファイルパスエラーが発生する問題を解決します

今朝、私は Wampserver を使用してローカルの win7 マシン上に PHP 環境を構築し、...

要素の幅(高さ)の適応を実現するCSSおよびCSS3の柔軟なボックスモデル

1. CSSは左の固定幅と右の適応幅を実現します1. ポジショニング <!DOCTYPE ht...

MySQL パーティションテーブルの制限と制約の詳細な説明

ビルドを無効にするパーティション式では、次の構成はサポートされません。ストアドプロシージャ、ストアド...

MySQL 上級学習ノート (パート 3): MySQL 論理アーキテクチャの紹介、MySQL ストレージ エンジンの詳細な説明

MySQL 論理アーキテクチャの概要他のデータベースと比較すると、MySQL は、そのアーキテクチャ...

Linuxの貼り付けコマンドの使い方

01. コマンドの概要貼り付けコマンドは各ファイルを列ごとに結合します。これは、2 つの異なるファイ...

ウェブページの右下隅に「いいね!」カード効果を実現するための CSS (サンプルコード)

効果 HTML を実装するには、まずクリーンな HTML ページを準備し、ノードを記述します。 &l...

Docker - コンテナマウントディレクトリを変更する3つの方法のまとめ

方法 1: 設定ファイルを変更する (docker サービスを停止する必要があります) 1. doc...

HTMLドキュメントタイプの詳細な説明

私のは: <!DOCTYPE html>ブログガーデン: <!DOCTYPE HT...

CSS で放射状グラデーションを使用してカード効果を実現する

数日前、同僚がポイントモールプロジェクトを受け取りました。このプロジェクトには、カードやクーポンをギ...