<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Techniques &#8211; 编码无悔 /  Intent &amp; Focused</title>
	<atom:link href="https://www.codelast.com/tag/techniques/feed/" rel="self" type="application/rss+xml" />
	<link>https://www.codelast.com</link>
	<description>最优化之路</description>
	<lastBuildDate>Sun, 03 May 2020 13:05:05 +0000</lastBuildDate>
	<language>zh-Hans</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.9.4</generator>
	<item>
		<title>[原创] Techniques 中文翻译（Google Protocol Buffers中文教程）</title>
		<link>https://www.codelast.com/%e5%8e%9f%e5%88%9b-techniques-%e4%b8%ad%e6%96%87%e7%bf%bb%e8%af%91%ef%bc%88google-protocol-buffers%e4%b8%ad%e6%96%87%e6%95%99%e7%a8%8b%ef%bc%89/</link>
					<comments>https://www.codelast.com/%e5%8e%9f%e5%88%9b-techniques-%e4%b8%ad%e6%96%87%e7%bf%bb%e8%af%91%ef%bc%88google-protocol-buffers%e4%b8%ad%e6%96%87%e6%95%99%e7%a8%8b%ef%bc%89/#comments</comments>
		
		<dc:creator><![CDATA[learnhard]]></dc:creator>
		<pubDate>Tue, 14 Sep 2010 05:37:00 +0000</pubDate>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[原创]]></category>
		<category><![CDATA[Buffer]]></category>
		<category><![CDATA[Google Protocol Buffers]]></category>
		<category><![CDATA[Protocol]]></category>
		<category><![CDATA[Protocol Buffer]]></category>
		<category><![CDATA[Protocol Buffers]]></category>
		<category><![CDATA[Techniques]]></category>
		<category><![CDATA[中文]]></category>
		<category><![CDATA[教程]]></category>
		<category><![CDATA[翻译]]></category>
		<guid isPermaLink="false">http://www.codelast.com/?p=316</guid>

					<description><![CDATA[<h1>
	<b><span lang="EN-US" style="font-size:20.5pt;font-family:&#34;Helvetica&#34;,&#34;sans-serif&#34;;
color:black;mso-font-kerning:18.0pt">Techniques </span></b><b><span style="font-size:20.5pt;font-family:宋体;mso-ascii-font-family:Helvetica;
mso-hansi-font-family:Helvetica;mso-bidi-font-family:Helvetica;color:blue;
mso-font-kerning:18.0pt">技巧</span></b></h1>
<p align="left" class="MsoNormal" style="margin-left:-7.5pt;text-align:left;
line-height:26.25pt;mso-pagination:widow-orphan;mso-outline-level:1"><br />
	<b><span lang="EN-US" style="font-size:
20.5pt;font-family:&#34;Helvetica&#34;,&#34;sans-serif&#34;;color:black;mso-font-kerning:18.0pt"><o:p></o:p></span></b></p>
<h1>
	<span style="font-family:微软雅黑;"><span style="font-size:14px;">注：这是本人的翻译，可能不准确，可能有错误，但是基本上可以理解，希望能对大家有所帮助！（<span style="color:#ff0000;">转载须注明出处</span>：本文来自learnhard的博客：<a href="http://www.codelast.com/" style="border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; font-size: 13px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; outline-width: 0px; outline-style: initial; outline-color: initial; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; text-decoration: none; color: rgb(0, 77, 153); " target="_blank" rel="noopener noreferrer"><span style="border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; outline-width: 0px; outline-style: initial; outline-color: initial; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; color: rgb(0, 0, 255); ">http://www.codelast.com/</span></a>&#38;&#160;<a href="http://blog.csdn.net/learnhard/" style="border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; font-size: 13px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; outline-width: 0px; outline-style: initial; outline-color: initial; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; text-decoration: none; color: rgb(0, 77, 153); "><span style="border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; outline-width: 0px; outline-style: initial; outline-color: initial; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; color: rgb(0, 0, 255); ">http://blog.csdn.net/learnhard/</span></a>）</span></span></h1>
<p>
<span id="more-316"></span></p>
<p align="left" class="MsoNormal" style="margin-top:3.6pt;margin-right:0cm;
margin-bottom:0cm;margin-left:29.25pt;margin-bottom:.0001pt;text-align:left;
text-indent:-18.0pt;line-height:15.0pt;mso-pagination:widow-orphan;mso-list:
l1 level1 lfo1;tab-stops:list 36.0pt"><br />
	<span lang="EN-US" style="font-size:10.0pt;mso-bidi-font-size:12.0pt;font-family:Symbol;
mso-fareast-font-family:Symbol;mso-bidi-font-family:Symbol;color:black;
mso-font-kerning:0pt"><span style="mso-list:Ignore">&#183;<span style="font:7.0pt &#34;Times New Roman&#34;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </span></span></span><span lang="EN-US" style="font-size:12.0pt;
font-family:&#34;Helvetica&#34;,&#34;sans-serif&#34;;color:black;mso-font-kerning:0pt"><a href="http://code.google.com/intl/zh-CN/apis/protocolbuffers/docs/techniques.html#streaming"><span style="color:#0000CC">Streaming Multiple Messages</span></a><o:p></o:p></span></p>
<p align="left" class="MsoNormal" style="margin-top:3.6pt;margin-right:0cm;
margin-bottom:0cm;margin-left:29.25pt;margin-bottom:.0001pt;text-align:left;
text-indent:-18.0pt;line-height:15.0pt;mso-pagination:widow-orphan;mso-list:
l1 level1 lfo1;tab-stops:list 36.0pt"><br />
	<span lang="EN-US" style="font-size:10.0pt;mso-bidi-font-size:12.0pt;font-family:Symbol;
mso-fareast-font-family:Symbol;mso-bidi-font-family:Symbol;color:black;
mso-font-kerning:0pt"><span style="mso-list:Ignore">&#183;<span style="font:7.0pt &#34;Times New Roman&#34;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </span></span></span><span lang="EN-US" style="font-size:12.0pt;
font-family:&#34;Helvetica&#34;,&#34;sans-serif&#34;;color:black;mso-font-kerning:0pt"><a href="http://code.google.com/intl/zh-CN/apis/protocolbuffers/docs/techniques.html#large-data"><span style="color:#0000CC">Large Data Sets</span></a><o:p></o:p></span></p>
<p align="left" class="MsoNormal" style="margin-top:3.6pt;margin-right:0cm;
margin-bottom:0cm;margin-left:29.25pt;margin-bottom:.0001pt;text-align:left;
text-indent:-18.0pt;line-height:15.0pt;mso-pagination:widow-orphan;mso-list:
l1 level1 lfo1;tab-stops:list 36.0pt"><br />
	<span lang="EN-US" style="font-size:10.0pt;mso-bidi-font-size:12.0pt;font-family:Symbol;
mso-fareast-font-family:Symbol;mso-bidi-font-family:Symbol;color:black;
mso-font-kerning:0pt"><span style="mso-list:Ignore">&#183;<span style="font:7.0pt &#34;Times New Roman&#34;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </span></span></span><span lang="EN-US" style="font-size:12.0pt;
font-family:&#34;Helvetica&#34;,&#34;sans-serif&#34;;color:black;mso-font-kerning:0pt"><a href="http://code.google.com/intl/zh-CN/apis/protocolbuffers/docs/techniques.html#union"><span style="color:#0000CC">Union Types</span></a><o:p></o:p></span></p>
<p align="left" class="MsoNormal" style="margin-top:3.6pt;margin-right:0cm;
margin-bottom:0cm;margin-left:29.25pt;margin-bottom:.0001pt;text-align:left;
text-indent:-18.0pt;line-height:15.0pt;mso-pagination:widow-orphan;mso-list:
l1 level1 lfo1;tab-stops:list 36.0pt"><br />
	<span lang="EN-US" style="font-size:10.0pt;mso-bidi-font-size:12.0pt;font-family:Symbol;
mso-fareast-font-family:Symbol;mso-bidi-font-family:Symbol;color:black;
mso-font-kerning:0pt"><span style="mso-list:Ignore">&#183;<span style="font:7.0pt &#34;Times New Roman&#34;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </span></span></span><span lang="EN-US" style="font-size:12.0pt;
font-family:&#34;Helvetica&#34;,&#34;sans-serif&#34;;color:black;mso-font-kerning:0pt"><a href="http://code.google.com/intl/zh-CN/apis/protocolbuffers/docs/techniques.html#self-description"><span style="color:#0000CC">Self-describing Messages</span></a><o:p></o:p></span></p>
<p align="left" class="MsoNormal" style="text-align:left;line-height:15.0pt;
mso-pagination:widow-orphan"><br />
	<span lang="EN-US" style="font-size:12.0pt;
font-family:&#34;Helvetica&#34;,&#34;sans-serif&#34;;color:black;mso-font-kerning:0pt">This page describes some commonly-used design patterns for dealing with Protocol Buffers. You can also send design and usage questions to the&#160;<a href="http://groups.google.com/group/protobuf"><span style="color:#0000CC">Protocol Buffers discussion group</span></a>.</span>&#8230; <a href="https://www.codelast.com/%e5%8e%9f%e5%88%9b-techniques-%e4%b8%ad%e6%96%87%e7%bf%bb%e8%af%91%ef%bc%88google-protocol-buffers%e4%b8%ad%e6%96%87%e6%95%99%e7%a8%8b%ef%bc%89/" class="read-more">Read More </a></p>]]></description>
										<content:encoded><![CDATA[<h1>
	<b><span lang="EN-US" style="font-size:20.5pt;font-family:&quot;Helvetica&quot;,&quot;sans-serif&quot;;
color:black;mso-font-kerning:18.0pt">Techniques </span></b><b><span style="font-size:20.5pt;font-family:宋体;mso-ascii-font-family:Helvetica;
mso-hansi-font-family:Helvetica;mso-bidi-font-family:Helvetica;color:blue;
mso-font-kerning:18.0pt">技巧</span></b></h1>
<p align="left" class="MsoNormal" style="margin-left:-7.5pt;text-align:left;
line-height:26.25pt;mso-pagination:widow-orphan;mso-outline-level:1"><br />
	<b><span lang="EN-US" style="font-size:
20.5pt;font-family:&quot;Helvetica&quot;,&quot;sans-serif&quot;;color:black;mso-font-kerning:18.0pt"><o:p></o:p></span></b></p>
<h1>
	<span style="font-family:微软雅黑;"><span style="font-size:14px;">注：这是本人的翻译，可能不准确，可能有错误，但是基本上可以理解，希望能对大家有所帮助！（<span style="color:#ff0000;">转载须注明出处</span>：本文来自learnhard的博客：<a href="http://www.codelast.com/" style="border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; font-size: 13px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; outline-width: 0px; outline-style: initial; outline-color: initial; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; text-decoration: none; color: rgb(0, 77, 153); " target="_blank" rel="noopener noreferrer"><span style="border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; outline-width: 0px; outline-style: initial; outline-color: initial; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; color: rgb(0, 0, 255); ">http://www.codelast.com/</span></a>&amp;&nbsp;<a href="http://blog.csdn.net/learnhard/" style="border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; font-size: 13px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; outline-width: 0px; outline-style: initial; outline-color: initial; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; text-decoration: none; color: rgb(0, 77, 153); "><span style="border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; outline-width: 0px; outline-style: initial; outline-color: initial; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; color: rgb(0, 0, 255); ">http://blog.csdn.net/learnhard/</span></a>）</span></span></h1>
<p>
<span id="more-316"></span></p>
<p align="left" class="MsoNormal" style="margin-top:3.6pt;margin-right:0cm;
margin-bottom:0cm;margin-left:29.25pt;margin-bottom:.0001pt;text-align:left;
text-indent:-18.0pt;line-height:15.0pt;mso-pagination:widow-orphan;mso-list:
l1 level1 lfo1;tab-stops:list 36.0pt"><br />
	<span lang="EN-US" style="font-size:10.0pt;mso-bidi-font-size:12.0pt;font-family:Symbol;
mso-fareast-font-family:Symbol;mso-bidi-font-family:Symbol;color:black;
mso-font-kerning:0pt"><span style="mso-list:Ignore">&middot;<span style="font:7.0pt &quot;Times New Roman&quot;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span><span lang="EN-US" style="font-size:12.0pt;
font-family:&quot;Helvetica&quot;,&quot;sans-serif&quot;;color:black;mso-font-kerning:0pt"><a href="http://code.google.com/intl/zh-CN/apis/protocolbuffers/docs/techniques.html#streaming"><span style="color:#0000CC">Streaming Multiple Messages</span></a><o:p></o:p></span></p>
<p align="left" class="MsoNormal" style="margin-top:3.6pt;margin-right:0cm;
margin-bottom:0cm;margin-left:29.25pt;margin-bottom:.0001pt;text-align:left;
text-indent:-18.0pt;line-height:15.0pt;mso-pagination:widow-orphan;mso-list:
l1 level1 lfo1;tab-stops:list 36.0pt"><br />
	<span lang="EN-US" style="font-size:10.0pt;mso-bidi-font-size:12.0pt;font-family:Symbol;
mso-fareast-font-family:Symbol;mso-bidi-font-family:Symbol;color:black;
mso-font-kerning:0pt"><span style="mso-list:Ignore">&middot;<span style="font:7.0pt &quot;Times New Roman&quot;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span><span lang="EN-US" style="font-size:12.0pt;
font-family:&quot;Helvetica&quot;,&quot;sans-serif&quot;;color:black;mso-font-kerning:0pt"><a href="http://code.google.com/intl/zh-CN/apis/protocolbuffers/docs/techniques.html#large-data"><span style="color:#0000CC">Large Data Sets</span></a><o:p></o:p></span></p>
<p align="left" class="MsoNormal" style="margin-top:3.6pt;margin-right:0cm;
margin-bottom:0cm;margin-left:29.25pt;margin-bottom:.0001pt;text-align:left;
text-indent:-18.0pt;line-height:15.0pt;mso-pagination:widow-orphan;mso-list:
l1 level1 lfo1;tab-stops:list 36.0pt"><br />
	<span lang="EN-US" style="font-size:10.0pt;mso-bidi-font-size:12.0pt;font-family:Symbol;
mso-fareast-font-family:Symbol;mso-bidi-font-family:Symbol;color:black;
mso-font-kerning:0pt"><span style="mso-list:Ignore">&middot;<span style="font:7.0pt &quot;Times New Roman&quot;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span><span lang="EN-US" style="font-size:12.0pt;
font-family:&quot;Helvetica&quot;,&quot;sans-serif&quot;;color:black;mso-font-kerning:0pt"><a href="http://code.google.com/intl/zh-CN/apis/protocolbuffers/docs/techniques.html#union"><span style="color:#0000CC">Union Types</span></a><o:p></o:p></span></p>
<p align="left" class="MsoNormal" style="margin-top:3.6pt;margin-right:0cm;
margin-bottom:0cm;margin-left:29.25pt;margin-bottom:.0001pt;text-align:left;
text-indent:-18.0pt;line-height:15.0pt;mso-pagination:widow-orphan;mso-list:
l1 level1 lfo1;tab-stops:list 36.0pt"><br />
	<span lang="EN-US" style="font-size:10.0pt;mso-bidi-font-size:12.0pt;font-family:Symbol;
mso-fareast-font-family:Symbol;mso-bidi-font-family:Symbol;color:black;
mso-font-kerning:0pt"><span style="mso-list:Ignore">&middot;<span style="font:7.0pt &quot;Times New Roman&quot;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span><span lang="EN-US" style="font-size:12.0pt;
font-family:&quot;Helvetica&quot;,&quot;sans-serif&quot;;color:black;mso-font-kerning:0pt"><a href="http://code.google.com/intl/zh-CN/apis/protocolbuffers/docs/techniques.html#self-description"><span style="color:#0000CC">Self-describing Messages</span></a><o:p></o:p></span></p>
<p align="left" class="MsoNormal" style="text-align:left;line-height:15.0pt;
mso-pagination:widow-orphan"><br />
	<span lang="EN-US" style="font-size:12.0pt;
font-family:&quot;Helvetica&quot;,&quot;sans-serif&quot;;color:black;mso-font-kerning:0pt">This page describes some commonly-used design patterns for dealing with Protocol Buffers. You can also send design and usage questions to the&nbsp;<a href="http://groups.google.com/group/protobuf"><span style="color:#0000CC">Protocol Buffers discussion group</span></a>.<br />
	<span style="color: rgb(255, 255, 255); font-family: arial, helvetica, sans-serif; font-size: 14px; background-color: rgb(255, 255, 255); ">文章来源：</span><a href="http://www.codelast.com/" target="_blank" rel="noopener noreferrer"><span style="color: rgb(255, 255, 255); ">http://www.codelast.com/</span></a><o:p></o:p></span></p>
<p align="left" class="MsoNormal" style="text-align:left;line-height:15.0pt;
mso-pagination:widow-orphan"><br />
	<span lang="EN-US" style="font-size:12.0pt;
font-family:&quot;Helvetica&quot;,&quot;sans-serif&quot;;color:black;mso-font-kerning:0pt"><o:p> </o:p></span></p>
<h1>
	<span lang="EN-US" style="line-height: 15pt; text-align: left; text-indent: -21pt; font-size: 12pt; font-family: Wingdings; color: blue; ">l<span style="font:7.0pt &quot;Times New Roman&quot;">&nbsp; </span></span><b style="line-height: 15pt; text-align: left; text-indent: -21pt; "><span style="font-size:12.0pt;font-family:
宋体;mso-ascii-font-family:Helvetica;mso-hansi-font-family:Helvetica;mso-bidi-font-family:
Helvetica;color:blue;mso-font-kerning:0pt">将多个消息转化为流</span></b></h1>
<p align="left" class="MsoNormal" style="margin-left:21.0pt;text-align:left;
text-indent:-21.0pt;line-height:15.0pt;mso-pagination:widow-orphan;mso-list:
l0 level1 lfo2"><br />
	<span lang="EN-US" style="font-size:12.0pt;
font-family:Wingdings;mso-fareast-font-family:Wingdings;mso-bidi-font-family:
Wingdings;color:blue;mso-font-kerning:0pt"><span style="mso-list:Ignore">l<span style="font:7.0pt &quot;Times New Roman&quot;">&nbsp; </span></span></span><b style="mso-bidi-font-weight:normal"><span style="font-size:12.0pt;font-family:
宋体;mso-ascii-font-family:Helvetica;mso-hansi-font-family:Helvetica;mso-bidi-font-family:
Helvetica;color:blue;mso-font-kerning:0pt">大数据集</span></b><b style="mso-bidi-font-weight:
normal"><span lang="EN-US" style="font-size:12.0pt;font-family:&quot;Helvetica&quot;,&quot;sans-serif&quot;;
color:blue;mso-font-kerning:0pt"><o:p></o:p></span></b></p>
<p align="left" class="MsoNormal" style="margin-left:21.0pt;text-align:left;
text-indent:-21.0pt;line-height:15.0pt;mso-pagination:widow-orphan;mso-list:
l0 level1 lfo2"><br />
	<span lang="EN-US" style="font-size:12.0pt;
font-family:Wingdings;mso-fareast-font-family:Wingdings;mso-bidi-font-family:
Wingdings;color:blue;mso-font-kerning:0pt"><span style="mso-list:Ignore">l<span style="font:7.0pt &quot;Times New Roman&quot;">&nbsp; </span></span></span><b style="mso-bidi-font-weight:normal"><span style="font-size:12.0pt;font-family:
宋体;mso-ascii-font-family:Helvetica;mso-hansi-font-family:Helvetica;mso-bidi-font-family:
Helvetica;color:blue;mso-font-kerning:0pt">联合类型</span></b><b style="mso-bidi-font-weight:
normal"><span lang="EN-US" style="font-size:12.0pt;font-family:&quot;Helvetica&quot;,&quot;sans-serif&quot;;
color:blue;mso-font-kerning:0pt"><o:p></o:p></span></b></p>
<p align="left" class="MsoNormal" style="margin-left:21.0pt;text-align:left;
text-indent:-21.0pt;line-height:15.0pt;mso-pagination:widow-orphan;mso-list:
l0 level1 lfo2"><br />
	<span lang="EN-US" style="font-size:12.0pt;
font-family:Wingdings;mso-fareast-font-family:Wingdings;mso-bidi-font-family:
Wingdings;color:blue;mso-font-kerning:0pt"><span style="mso-list:Ignore">l<span style="font:7.0pt &quot;Times New Roman&quot;">&nbsp; </span></span></span><b style="mso-bidi-font-weight:normal"><span style="font-size:12.0pt;font-family:
宋体;mso-ascii-font-family:Helvetica;mso-hansi-font-family:Helvetica;mso-bidi-font-family:
Helvetica;color:blue;mso-font-kerning:0pt">自描述的消息</span></b><b style="mso-bidi-font-weight:normal"><span lang="EN-US" style="font-size:12.0pt;
font-family:&quot;Helvetica&quot;,&quot;sans-serif&quot;;color:blue;mso-font-kerning:0pt"><o:p></o:p></span></b></p>
<p align="left" class="MsoNormal" style="text-align:left;line-height:15.0pt;
mso-pagination:widow-orphan"><br />
	<b style="mso-bidi-font-weight:normal"><span style="font-size:12.0pt;font-family:宋体;mso-ascii-font-family:Helvetica;
mso-hansi-font-family:Helvetica;mso-bidi-font-family:Helvetica;color:blue;
mso-font-kerning:0pt">本文描述了处理</span></b><b style="mso-bidi-font-weight:normal"><span lang="EN-US" style="font-size:12.0pt;font-family:&quot;Helvetica&quot;,&quot;sans-serif&quot;;
color:blue;mso-font-kerning:0pt">Protocol Buffers</span></b><b style="mso-bidi-font-weight:normal"><span style="font-size:12.0pt;font-family:
宋体;mso-ascii-font-family:Helvetica;mso-hansi-font-family:Helvetica;mso-bidi-font-family:
Helvetica;color:blue;mso-font-kerning:0pt">的时候一些常用的设计模式。你也可以向</span></b><b style="mso-bidi-font-weight:normal"><span lang="EN-US" style="font-size:12.0pt;
font-family:&quot;Helvetica&quot;,&quot;sans-serif&quot;;color:blue;mso-font-kerning:0pt">Protocol Buffers</span></b><b style="mso-bidi-font-weight:normal"><span style="font-size:12.0pt;font-family:宋体;mso-ascii-font-family:Helvetica;
mso-hansi-font-family:Helvetica;mso-bidi-font-family:Helvetica;color:blue;
mso-font-kerning:0pt">讨论组（</span></b><span lang="EN-US" style="font-size:12.0pt;
font-family:&quot;Helvetica&quot;,&quot;sans-serif&quot;;color:black;mso-font-kerning:0pt"><a href="http://groups.google.com/group/protobuf"><span style="color:#0000CC">Protocol Buffers discussion group</span></a></span><b style="mso-bidi-font-weight:normal"><span style="font-size:12.0pt;font-family:宋体;mso-ascii-font-family:Helvetica;
mso-hansi-font-family:Helvetica;mso-bidi-font-family:Helvetica;color:blue;
mso-font-kerning:0pt">）发送设计和使用方面的问题寻求解答。</span></b><b style="mso-bidi-font-weight:
normal"><span lang="EN-US" style="font-size:12.0pt;font-family:&quot;Helvetica&quot;,&quot;sans-serif&quot;;
color:blue;mso-font-kerning:0pt"><o:p></o:p></span></b></p>
<p align="left" class="MsoNormal" style="text-align:left;line-height:15.0pt;
mso-pagination:widow-orphan"><br />
	<b style="mso-bidi-font-weight:normal"><span lang="EN-US" style="font-size:12.0pt;font-family:&quot;Helvetica&quot;,&quot;sans-serif&quot;;
color:blue;mso-font-kerning:0pt"><o:p>&nbsp;</o:p></span></b></p>
<div style="mso-element:para-border-div;border:none;border-top:solid #3366CC 1.0pt;
mso-border-top-alt:solid #3366CC .75pt;padding:1.0pt 0cm 0cm 0cm;background:
#E5ECF9;margin-left:-7.5pt;margin-right:0cm"></p>
<p align="left" class="MsoNormal" style="margin-top:24.0pt;text-align:left;
mso-pagination:widow-orphan;mso-outline-level:2;background:#E5ECF9;border:none;
mso-border-top-alt:solid #3366CC .75pt;padding:0cm;mso-padding-alt:1.0pt 0cm 0cm 0cm"><br />
		<b><span lang="EN-US" style="font-size:15.0pt;font-family:&quot;Helvetica&quot;,&quot;sans-serif&quot;;
color:black;mso-font-kerning:0pt">Streaming Multiple Messages </span></b><b><span style="font-size:15.0pt;font-family:宋体;mso-ascii-font-family:Helvetica;
mso-hansi-font-family:Helvetica;mso-bidi-font-family:Helvetica;color:blue;
mso-font-kerning:0pt">将多个消息转化为流</span></b><b><span lang="EN-US" style="font-size:
15.0pt;font-family:&quot;Helvetica&quot;,&quot;sans-serif&quot;;color:black;mso-font-kerning:0pt"><o:p></o:p></span></b></p>
</div>
<p align="left" class="MsoNormal" style="text-align:left;line-height:15.0pt;
mso-pagination:widow-orphan"><br />
	<span lang="EN-US" style="font-size:12.0pt;
font-family:&quot;Helvetica&quot;,&quot;sans-serif&quot;;color:black;mso-font-kerning:0pt">If you want to write multiple messages to a single file or stream, it is up to you to keep track of where one message ends and the next begins. The Protocol Buffer wire format is not self-delimiting, so protocol buffer parsers cannot determine where a message ends on their own. The easiest way to solve this problem is to write the size of each message before you write the message itself. When you read the messages back in, you read the size, then read the bytes into a separate buffer, then parse from that buffer. (If you want to avoid copying bytes to a separate buffer, check out the&nbsp;</span><span lang="EN-US" style="font-size:10.0pt;mso-bidi-font-size:11.0pt;font-family:&quot;Courier New&quot;;
color:#007000;mso-font-kerning:0pt">CodedInputStream</span><span lang="EN-US" style="font-size:12.0pt;font-family:&quot;Helvetica&quot;,&quot;sans-serif&quot;;color:black;
mso-font-kerning:0pt">&nbsp;class (in both C++ and Java) which can be told to limit reads to a certain number of bytes.)<o:p></o:p></span></p>
<p align="left" class="MsoNormal" style="text-align:left;line-height:15.0pt;
mso-pagination:widow-orphan"><br />
	<b style="mso-bidi-font-weight:normal"><span style="font-size:12.0pt;font-family:宋体;mso-ascii-font-family:Helvetica;
mso-hansi-font-family:Helvetica;mso-bidi-font-family:Helvetica;color:blue;
mso-font-kerning:0pt">如果你想将多个消息写入一个文件或流（</span></b><span lang="EN-US" style="font-size:12.0pt;font-family:&quot;Helvetica&quot;,&quot;sans-serif&quot;;color:black;
mso-font-kerning:0pt">stream</span><b style="mso-bidi-font-weight:normal"><span style="font-size:12.0pt;font-family:宋体;mso-ascii-font-family:Helvetica;
mso-hansi-font-family:Helvetica;mso-bidi-font-family:Helvetica;color:blue;
mso-font-kerning:0pt">）中，那么是由你来记录一个消息的终点以及另一个消息的起点的。</span></b><b style="mso-bidi-font-weight:normal"><span lang="EN-US" style="font-size:12.0pt;
font-family:&quot;Helvetica&quot;,&quot;sans-serif&quot;;color:blue;mso-font-kerning:0pt">Protocol Buffer</span></b><b style="mso-bidi-font-weight:normal"><span style="font-size:
12.0pt;font-family:宋体;mso-ascii-font-family:Helvetica;mso-hansi-font-family:
Helvetica;mso-bidi-font-family:Helvetica;color:blue;mso-font-kerning:0pt">数据传输格式不是自我限定的（</span></b><span lang="EN-US" style="font-size:12.0pt;font-family:&quot;Helvetica&quot;,&quot;sans-serif&quot;;
color:black;mso-font-kerning:0pt">self-delimiting</span><b style="mso-bidi-font-weight:
normal"><span style="font-size:12.0pt;font-family:宋体;mso-ascii-font-family:
Helvetica;mso-hansi-font-family:Helvetica;mso-bidi-font-family:Helvetica;
color:blue;mso-font-kerning:0pt">），所以</span></b><b style="mso-bidi-font-weight:
normal"><span lang="EN-US" style="font-size:12.0pt;font-family:&quot;Helvetica&quot;,&quot;sans-serif&quot;;
color:blue;mso-font-kerning:0pt">protocol buffer</span></b><b style="mso-bidi-font-weight:
normal"><span style="font-size:12.0pt;font-family:宋体;mso-ascii-font-family:
Helvetica;mso-hansi-font-family:Helvetica;mso-bidi-font-family:Helvetica;
color:blue;mso-font-kerning:0pt">解析器无法自己决定一个消息结束于何处。解决这个问题的最简单的方法就是：在写入每一个消息之前，先写入消息的大小。当你读取消息的时候，先读取消息大小，然后将指定的字节数读入一个独立的缓冲区中，然后再解析缓冲区里的东西。如果你不想将数据拷贝到一个独立的缓冲区中，请查看</span></b><span lang="EN-US" style="font-size:10.0pt;mso-bidi-font-size:11.0pt;font-family:&quot;Courier New&quot;;
color:#007000;mso-font-kerning:0pt">CodedInputStream</span><b style="mso-bidi-font-weight:
normal"><span style="font-size:12.0pt;font-family:宋体;mso-ascii-font-family:
Helvetica;mso-hansi-font-family:Helvetica;mso-bidi-font-family:Helvetica;
color:blue;mso-font-kerning:0pt">类（</span></b><b style="mso-bidi-font-weight:
normal"><span lang="EN-US" style="font-size:12.0pt;font-family:&quot;Helvetica&quot;,&quot;sans-serif&quot;;
color:blue;mso-font-kerning:0pt">C++</span></b><b style="mso-bidi-font-weight:
normal"><span style="font-size:12.0pt;font-family:宋体;mso-ascii-font-family:
Helvetica;mso-hansi-font-family:Helvetica;mso-bidi-font-family:Helvetica;
color:blue;mso-font-kerning:0pt">和</span></b><b style="mso-bidi-font-weight:
normal"><span lang="EN-US" style="font-size:12.0pt;font-family:&quot;Helvetica&quot;,&quot;sans-serif&quot;;
color:blue;mso-font-kerning:0pt">Java</span></b><b style="mso-bidi-font-weight:
normal"><span style="font-size:12.0pt;font-family:宋体;mso-ascii-font-family:
Helvetica;mso-hansi-font-family:Helvetica;mso-bidi-font-family:Helvetica;
color:blue;mso-font-kerning:0pt">都可用）的使用方法&mdash;&mdash;你可以用它来限制只读取指定字节的数据。</span></b><b style="mso-bidi-font-weight:normal"><span lang="EN-US" style="font-size:12.0pt;
font-family:&quot;Helvetica&quot;,&quot;sans-serif&quot;;color:blue;mso-font-kerning:0pt"><o:p></o:p></span></b></p>
<p align="left" class="MsoNormal" style="text-align:left;line-height:15.0pt;
mso-pagination:widow-orphan"><br />
	<span style="color: rgb(255, 255, 255); font-family: arial, helvetica, sans-serif; font-size: 14px; background-color: rgb(255, 255, 255); ">文章来源：</span><a href="http://www.codelast.com/" target="_blank" rel="noopener noreferrer"><span style="color: rgb(255, 255, 255); ">http://www.codelast.com/</span></a></p>
<div style="mso-element:para-border-div;border:none;border-top:solid #3366CC 1.0pt;
mso-border-top-alt:solid #3366CC .75pt;padding:1.0pt 0cm 0cm 0cm;background:
#E5ECF9;margin-left:-7.5pt;margin-right:0cm"></p>
<p align="left" class="MsoNormal" style="margin-top:24.0pt;text-align:left;
mso-pagination:widow-orphan;mso-outline-level:2;background:#E5ECF9;border:none;
mso-border-top-alt:solid #3366CC .75pt;padding:0cm;mso-padding-alt:1.0pt 0cm 0cm 0cm"><br />
		<b><span lang="EN-US" style="font-size:15.0pt;font-family:&quot;Helvetica&quot;,&quot;sans-serif&quot;;
color:black;mso-font-kerning:0pt">Large Data Sets </span></b><b><span style="font-size:15.0pt;font-family:宋体;mso-ascii-font-family:Helvetica;
mso-hansi-font-family:Helvetica;mso-bidi-font-family:Helvetica;color:blue;
mso-font-kerning:0pt">大数据集</span></b><b><span lang="EN-US" style="font-size:15.0pt;
font-family:&quot;Helvetica&quot;,&quot;sans-serif&quot;;color:black;mso-font-kerning:0pt"><o:p></o:p></span></b></p>
</div>
<p align="left" class="MsoNormal" style="text-align:left;line-height:15.0pt;
mso-pagination:widow-orphan"><br />
	<span lang="EN-US" style="font-size:12.0pt;
font-family:&quot;Helvetica&quot;,&quot;sans-serif&quot;;color:black;mso-font-kerning:0pt">Protocol Buffers are not designed to handle large messages. As a general rule of thumb, if you are dealing in messages larger than a megabyte each, it may be time to consider an alternate strategy.<o:p></o:p></span></p>
<p align="left" class="MsoNormal" style="text-align:left;line-height:15.0pt;
mso-pagination:widow-orphan"><br />
	<b style="mso-bidi-font-weight:normal"><span lang="EN-US" style="font-size:12.0pt;font-family:&quot;Helvetica&quot;,&quot;sans-serif&quot;;
color:blue;mso-font-kerning:0pt">Protocol Buffers</span></b><b style="mso-bidi-font-weight:normal"><span style="font-size:12.0pt;font-family:
宋体;mso-ascii-font-family:Helvetica;mso-hansi-font-family:Helvetica;mso-bidi-font-family:
Helvetica;color:blue;mso-font-kerning:0pt">不是设计来处理大消息的。根据一般经验，如果你要处理的单条消息大于</span></b><b style="mso-bidi-font-weight:normal"><span lang="EN-US" style="font-size:12.0pt;
font-family:&quot;Helvetica&quot;,&quot;sans-serif&quot;;color:blue;mso-font-kerning:0pt">1M</span></b><b style="mso-bidi-font-weight:normal"><span style="font-size:12.0pt;font-family:
宋体;mso-ascii-font-family:Helvetica;mso-hansi-font-family:Helvetica;mso-bidi-font-family:
Helvetica;color:blue;mso-font-kerning:0pt">，那就是采取其他策略的时候了。</span></b><span lang="EN-US" style="font-size:12.0pt;font-family:&quot;Helvetica&quot;,&quot;sans-serif&quot;;
color:black;mso-font-kerning:0pt"><o:p></o:p></span></p>
<p align="left" class="MsoNormal" style="text-align:left;line-height:15.0pt;
mso-pagination:widow-orphan"><br />
	<span lang="EN-US" style="font-size:12.0pt;
font-family:&quot;Helvetica&quot;,&quot;sans-serif&quot;;color:black;mso-font-kerning:0pt"><o:p>&nbsp;</o:p></span></p>
<p align="left" class="MsoNormal" style="text-align:left;line-height:15.0pt;
mso-pagination:widow-orphan"><br />
	<span lang="EN-US" style="font-size:12.0pt;
font-family:&quot;Helvetica&quot;,&quot;sans-serif&quot;;color:black;mso-font-kerning:0pt">That said, Protocol Buffers are great for handling individual messages&nbsp;<i>within</i>&nbsp;a large data set. Usually, large data sets are really just a collection of small pieces, where each small piece may be a structured piece of data. Even though Protocol Buffers cannot handle the entire set at once, using Protocol Buffers to encode each piece greatly simplifies your problem: now all you need is to handle a set of byte strings rather than a set of structures.<o:p></o:p></span></p>
<p align="left" class="MsoNormal" style="text-align:left;line-height:15.0pt;
mso-pagination:widow-orphan"><br />
	<b style="mso-bidi-font-weight:normal"><span style="font-size:12.0pt;font-family:宋体;mso-ascii-font-family:Helvetica;
mso-hansi-font-family:Helvetica;mso-bidi-font-family:Helvetica;color:blue;
mso-font-kerning:0pt">也就是说，</span></b><b style="mso-bidi-font-weight:normal"><span lang="EN-US" style="font-size:12.0pt;font-family:&quot;Helvetica&quot;,&quot;sans-serif&quot;;
color:blue;mso-font-kerning:0pt">Protocol Buffers</span></b><b style="mso-bidi-font-weight:normal"><span style="font-size:12.0pt;font-family:
宋体;mso-ascii-font-family:Helvetica;mso-hansi-font-family:Helvetica;mso-bidi-font-family:
Helvetica;color:blue;mso-font-kerning:0pt">非常适合于处理一个大数据集内有多个单独的消息。通常，大数据集只是许多小块数据的集合，每一小块都是一块结构化的数据。即使是这样，</span></b><b style="mso-bidi-font-weight:normal"><span lang="EN-US" style="font-size:12.0pt;
font-family:&quot;Helvetica&quot;,&quot;sans-serif&quot;;color:blue;mso-font-kerning:0pt">Protocol Buffers</span></b><b style="mso-bidi-font-weight:normal"><span style="font-size:12.0pt;font-family:宋体;mso-ascii-font-family:Helvetica;
mso-hansi-font-family:Helvetica;mso-bidi-font-family:Helvetica;color:blue;
mso-font-kerning:0pt">也不能马上处理整个数据集，使用</span></b><b style="mso-bidi-font-weight:
normal"><span lang="EN-US" style="font-size:12.0pt;font-family:&quot;Helvetica&quot;,&quot;sans-serif&quot;;
color:blue;mso-font-kerning:0pt">Protocol Buffers</span></b><b style="mso-bidi-font-weight:normal"><span style="font-size:12.0pt;font-family:
宋体;mso-ascii-font-family:Helvetica;mso-hansi-font-family:Helvetica;mso-bidi-font-family:
Helvetica;color:blue;mso-font-kerning:0pt">来编码每一块数据可以极大地简化你的问题：现在你所需要的只是处理一组字符串，而不是一组结构体了。</span></b><b style="mso-bidi-font-weight:normal"><span lang="EN-US" style="font-size:12.0pt;
font-family:&quot;Helvetica&quot;,&quot;sans-serif&quot;;color:blue;mso-font-kerning:0pt"><o:p></o:p></span></b></p>
<p align="left" class="MsoNormal" style="text-align:left;line-height:15.0pt;
mso-pagination:widow-orphan"><br />
	<span lang="EN-US" style="font-size:12.0pt;
font-family:&quot;Helvetica&quot;,&quot;sans-serif&quot;;color:black;mso-font-kerning:0pt"><o:p>&nbsp;</o:p></span></p>
<p align="left" class="MsoNormal" style="text-align:left;line-height:15.0pt;
mso-pagination:widow-orphan"><br />
	<span lang="EN-US" style="font-size:12.0pt;
font-family:&quot;Helvetica&quot;,&quot;sans-serif&quot;;color:black;mso-font-kerning:0pt">Protocol Buffers do not include any built-in support for large data sets because different situations call for different solutions. Sometimes a simple list of records will do while other times you may want something more like a database. Each solution should be developed as a separate library, so that only those who need it need to pay the costs.<o:p></o:p></span></p>
<p align="left" class="MsoNormal" style="text-align:left;line-height:15.0pt;
mso-pagination:widow-orphan"><br />
	<b style="mso-bidi-font-weight:normal"><span lang="EN-US" style="font-size:12.0pt;font-family:&quot;Helvetica&quot;,&quot;sans-serif&quot;;
color:blue;mso-font-kerning:0pt">Protocol Buffers</span></b><b style="mso-bidi-font-weight:normal"><span style="font-size:12.0pt;font-family:
宋体;mso-ascii-font-family:Helvetica;mso-hansi-font-family:Helvetica;mso-bidi-font-family:
Helvetica;color:blue;mso-font-kerning:0pt">没有内置任何对大数据集的支持，因为不同的情况需要不同的解决方案。</span></b><b style="mso-bidi-font-weight:normal"><span lang="EN-US" style="font-size:12.0pt;
font-family:&quot;Helvetica&quot;,&quot;sans-serif&quot;;color:blue;mso-font-kerning:0pt"><o:p></o:p></span></b></p>
<p align="left" class="MsoNormal" style="text-align:left;line-height:15.0pt;
mso-pagination:widow-orphan"><br />
	<b style="mso-bidi-font-weight:normal"><span style="font-size:12.0pt;font-family:宋体;mso-ascii-font-family:Helvetica;
mso-hansi-font-family:Helvetica;mso-bidi-font-family:Helvetica;color:blue;
mso-font-kerning:0pt">有时，一个简单的记录列表就解决问题了，而在某些情况下，你可能更想要的是类似于数据库的东西。每个解决方案都应该作为一个独立的库来开发，所以只有需要它的人才需要付出代价。</span></b><b style="mso-bidi-font-weight:normal"><span lang="EN-US" style="font-size:12.0pt;
font-family:&quot;Helvetica&quot;,&quot;sans-serif&quot;;color:blue;mso-font-kerning:0pt"><o:p></o:p></span></b></p>
<p align="left" class="MsoNormal" style="text-align:left;line-height:15.0pt;
mso-pagination:widow-orphan"><br />
	<b style="mso-bidi-font-weight:normal"><span lang="EN-US" style="font-size:12.0pt;font-family:&quot;Helvetica&quot;,&quot;sans-serif&quot;;
color:blue;mso-font-kerning:0pt"><o:p>&nbsp;</o:p></span></b></p>
<div style="mso-element:para-border-div;border:none;border-top:solid #3366CC 1.0pt;
mso-border-top-alt:solid #3366CC .75pt;padding:1.0pt 0cm 0cm 0cm;background:
#E5ECF9;margin-left:-7.5pt;margin-right:0cm"></p>
<p align="left" class="MsoNormal" style="margin-top:24.0pt;text-align:left;
mso-pagination:widow-orphan;mso-outline-level:2;background:#E5ECF9;border:none;
mso-border-top-alt:solid #3366CC .75pt;padding:0cm;mso-padding-alt:1.0pt 0cm 0cm 0cm"><br />
		<b><span lang="EN-US" style="font-size:15.0pt;font-family:&quot;Helvetica&quot;,&quot;sans-serif&quot;;
color:black;mso-font-kerning:0pt">Union Types </span></b><b><span style="font-size:15.0pt;font-family:宋体;mso-ascii-font-family:Helvetica;
mso-hansi-font-family:Helvetica;mso-bidi-font-family:Helvetica;color:blue;
mso-font-kerning:0pt">联合类型</span></b><b><span lang="EN-US" style="font-size:15.0pt;
font-family:&quot;Helvetica&quot;,&quot;sans-serif&quot;;color:black;mso-font-kerning:0pt"><o:p></o:p></span></b></p>
</div>
<p align="left" class="MsoNormal" style="text-align:left;line-height:15.0pt;
mso-pagination:widow-orphan"><br />
	<span lang="EN-US" style="font-size:12.0pt;
font-family:&quot;Helvetica&quot;,&quot;sans-serif&quot;;color:black;mso-font-kerning:0pt">You may sometimes want to send a message that could be one of several different types. However, protocol buffer parsers cannot necessarily determine the type of a message based on the contents alone. So how do you make sure that the recipient application knows how to decode your message? One solution is to create a wrapper message that has one optional field for each possible message type.<o:p></o:p></span></p>
<p align="left" class="MsoNormal" style="text-align:left;line-height:15.0pt;
mso-pagination:widow-orphan"><br />
	<b style="mso-bidi-font-weight:normal"><span style="font-size:12.0pt;font-family:宋体;mso-ascii-font-family:Helvetica;
mso-hansi-font-family:Helvetica;mso-bidi-font-family:Helvetica;color:blue;
mso-font-kerning:0pt">有时，你可能想发送一个消息，它的类型可以是几种不同的类型之一。然而，</span></b><b style="mso-bidi-font-weight:normal"><span lang="EN-US" style="font-size:12.0pt;
font-family:&quot;Helvetica&quot;,&quot;sans-serif&quot;;color:blue;mso-font-kerning:0pt">protocol buffer</span></b><b style="mso-bidi-font-weight:normal"><span style="font-size:
12.0pt;font-family:宋体;mso-ascii-font-family:Helvetica;mso-hansi-font-family:
Helvetica;mso-bidi-font-family:Helvetica;color:blue;mso-font-kerning:0pt">解析器无法仅凭消息内容来决定消息的类型。所以，你如何确保接收方应用程序能知道怎么解析消息呢？有一个解决方案是：创建一个封装的消息，其含有</span></b><b style="mso-bidi-font-weight:normal"><span lang="EN-US" style="font-size:12.0pt;
font-family:&quot;Helvetica&quot;,&quot;sans-serif&quot;;color:blue;mso-font-kerning:0pt">N</span></b><b style="mso-bidi-font-weight:normal"><span style="font-size:12.0pt;font-family:
宋体;mso-ascii-font-family:Helvetica;mso-hansi-font-family:Helvetica;mso-bidi-font-family:
Helvetica;color:blue;mso-font-kerning:0pt">个</span></b><b style="mso-bidi-font-weight:
normal"><span lang="EN-US" style="font-size:12.0pt;font-family:&quot;Helvetica&quot;,&quot;sans-serif&quot;;
color:blue;mso-font-kerning:0pt">optional</span></b><b style="mso-bidi-font-weight:
normal"><span style="font-size:12.0pt;font-family:宋体;mso-ascii-font-family:
Helvetica;mso-hansi-font-family:Helvetica;mso-bidi-font-family:Helvetica;
color:blue;mso-font-kerning:0pt">的字段，每一个字段对应一种可能的消息类型。</span></b><b style="mso-bidi-font-weight:normal"><span lang="EN-US" style="font-size:12.0pt;
font-family:&quot;Helvetica&quot;,&quot;sans-serif&quot;;color:blue;mso-font-kerning:0pt"><o:p></o:p></span></b></p>
<p align="left" class="MsoNormal" style="text-align:left;line-height:15.0pt;
mso-pagination:widow-orphan"><br />
	<span style="color: rgb(255, 255, 255); font-family: arial, helvetica, sans-serif; font-size: 14px; background-color: rgb(255, 255, 255); ">文章来源：</span><a href="http://www.codelast.com/" target="_blank" rel="noopener noreferrer"><span style="color: rgb(255, 255, 255); ">http://www.codelast.com/</span></a></p>
<p align="left" class="MsoNormal" style="text-align:left;line-height:15.0pt;
mso-pagination:widow-orphan"><br />
	<span lang="EN-US" style="font-size:12.0pt;
font-family:&quot;Helvetica&quot;,&quot;sans-serif&quot;;color:black;mso-font-kerning:0pt">For example, if you have message types&nbsp;</span><span lang="EN-US" style="font-size:10.0pt;mso-bidi-font-size:11.0pt;font-family:&quot;Courier New&quot;;
color:#007000;mso-font-kerning:0pt">Foo</span><span lang="EN-US" style="font-size:12.0pt;font-family:&quot;Helvetica&quot;,&quot;sans-serif&quot;;color:black;
mso-font-kerning:0pt">,&nbsp;</span><span lang="EN-US" style="font-size:10.0pt;
mso-bidi-font-size:11.0pt;font-family:&quot;Courier New&quot;;color:#007000;mso-font-kerning:
0pt">Bar</span><span lang="EN-US" style="font-size:12.0pt;font-family:&quot;Helvetica&quot;,&quot;sans-serif&quot;;
color:black;mso-font-kerning:0pt">, and&nbsp;</span><span lang="EN-US" style="font-size:10.0pt;mso-bidi-font-size:11.0pt;font-family:&quot;Courier New&quot;;
color:#007000;mso-font-kerning:0pt">Baz</span><span lang="EN-US" style="font-size:12.0pt;font-family:&quot;Helvetica&quot;,&quot;sans-serif&quot;;color:black;
mso-font-kerning:0pt">, you can combine them with a type like:<o:p></o:p></span></p>
<p align="left" class="MsoNormal" style="text-align:left;line-height:15.0pt;
mso-pagination:widow-orphan"><br />
	<b style="mso-bidi-font-weight:normal"><span style="font-size:12.0pt;font-family:宋体;mso-ascii-font-family:Helvetica;
mso-hansi-font-family:Helvetica;mso-bidi-font-family:Helvetica;color:blue;
mso-font-kerning:0pt">例如，如果你有消息类型</span></b><span lang="EN-US" style="font-size:
10.0pt;mso-bidi-font-size:11.0pt;font-family:&quot;Courier New&quot;;color:#007000;
mso-font-kerning:0pt">Foo</span><b style="mso-bidi-font-weight:normal"><span style="font-size:12.0pt;font-family:宋体;mso-ascii-font-family:Helvetica;
mso-hansi-font-family:Helvetica;mso-bidi-font-family:Helvetica;color:blue;
mso-font-kerning:0pt">，</span></b><span lang="EN-US" style="font-size:10.0pt;
mso-bidi-font-size:11.0pt;font-family:&quot;Courier New&quot;;color:#007000;mso-font-kerning:
0pt">Bar</span><b style="mso-bidi-font-weight:normal"><span style="font-size:
12.0pt;font-family:宋体;mso-ascii-font-family:Helvetica;mso-hansi-font-family:
Helvetica;mso-bidi-font-family:Helvetica;color:blue;mso-font-kerning:0pt">和</span></b><span lang="EN-US" style="font-size:10.0pt;mso-bidi-font-size:11.0pt;font-family:&quot;Courier New&quot;;
color:#007000;mso-font-kerning:0pt">Baz</span><b style="mso-bidi-font-weight:
normal"><span style="font-size:12.0pt;font-family:宋体;mso-ascii-font-family:
Helvetica;mso-hansi-font-family:Helvetica;mso-bidi-font-family:Helvetica;
color:blue;mso-font-kerning:0pt">，那么你可以将它们与类型结合起来，像这样：</span></b><b style="mso-bidi-font-weight:normal"><span lang="EN-US" style="font-size:12.0pt;
font-family:&quot;Helvetica&quot;,&quot;sans-serif&quot;;color:blue;mso-font-kerning:0pt"><o:p></o:p></span></b></p>
<div style="mso-element:para-border-div;border:solid #BBBBBB 1.0pt;mso-border-alt:
solid #BBBBBB .75pt;padding:12.0pt 12.0pt 12.0pt 12.0pt;background:#FAFAFA"></p>
<p align="left" class="MsoNormal" style="margin-top:12.0pt;text-align:left;
line-height:12.75pt;mso-pagination:widow-orphan;tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;
background:#FAFAFA;border:none;mso-border-alt:solid #BBBBBB .75pt;padding:0cm;
mso-padding-alt:12.0pt 12.0pt 12.0pt 12.0pt"><br />
		<span lang="EN-US" style="font-size:
9.0pt;font-family:&quot;Courier New&quot;;color:#007000;mso-font-kerning:0pt">message OneMessage {<o:p></o:p></span></p>
<p align="left" class="MsoNormal" style="margin-top:12.0pt;text-align:left;
line-height:12.75pt;mso-pagination:widow-orphan;tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;
background:#FAFAFA;border:none;mso-border-alt:solid #BBBBBB .75pt;padding:0cm;
mso-padding-alt:12.0pt 12.0pt 12.0pt 12.0pt"><br />
		<span lang="EN-US" style="font-size:
9.0pt;font-family:&quot;Courier New&quot;;color:#007000;mso-font-kerning:0pt"><span style="mso-spacerun:yes">&nbsp; </span>// One of the following will be filled in.<o:p></o:p></span></p>
<p align="left" class="MsoNormal" style="margin-top:12.0pt;text-align:left;
line-height:12.75pt;mso-pagination:widow-orphan;tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;
background:#FAFAFA;border:none;mso-border-alt:solid #BBBBBB .75pt;padding:0cm;
mso-padding-alt:12.0pt 12.0pt 12.0pt 12.0pt"><br />
		<span lang="EN-US" style="font-size:
9.0pt;font-family:&quot;Courier New&quot;;color:#007000;mso-font-kerning:0pt"><span style="mso-spacerun:yes">&nbsp; </span>optional Foo foo = 1;<o:p></o:p></span></p>
<p align="left" class="MsoNormal" style="margin-top:12.0pt;text-align:left;
line-height:12.75pt;mso-pagination:widow-orphan;tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;
background:#FAFAFA;border:none;mso-border-alt:solid #BBBBBB .75pt;padding:0cm;
mso-padding-alt:12.0pt 12.0pt 12.0pt 12.0pt"><br />
		<span lang="EN-US" style="font-size:
9.0pt;font-family:&quot;Courier New&quot;;color:#007000;mso-font-kerning:0pt"><span style="mso-spacerun:yes">&nbsp; </span>optional Bar bar = 2;<o:p></o:p></span></p>
<p align="left" class="MsoNormal" style="margin-top:12.0pt;text-align:left;
line-height:12.75pt;mso-pagination:widow-orphan;tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;
background:#FAFAFA;border:none;mso-border-alt:solid #BBBBBB .75pt;padding:0cm;
mso-padding-alt:12.0pt 12.0pt 12.0pt 12.0pt"><br />
		<span lang="EN-US" style="font-size:
9.0pt;font-family:&quot;Courier New&quot;;color:#007000;mso-font-kerning:0pt"><span style="mso-spacerun:yes">&nbsp; </span>optional Baz baz = 3;<o:p></o:p></span></p>
<p align="left" class="MsoNormal" style="margin-top:12.0pt;text-align:left;
line-height:12.75pt;mso-pagination:widow-orphan;tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;
background:#FAFAFA;border:none;mso-border-alt:solid #BBBBBB .75pt;padding:0cm;
mso-padding-alt:12.0pt 12.0pt 12.0pt 12.0pt"><br />
		<span lang="EN-US" style="font-size:
9.0pt;font-family:&quot;Courier New&quot;;color:#007000;mso-font-kerning:0pt">}<o:p></o:p></span></p>
</div>
<p align="left" class="MsoNormal" style="text-align:left;line-height:15.0pt;
mso-pagination:widow-orphan"><br />
	<span lang="EN-US" style="font-size:12.0pt;
font-family:&quot;Helvetica&quot;,&quot;sans-serif&quot;;color:black;mso-font-kerning:0pt">You may also want to have an enum field that identifies which message is filled in, so that you can&nbsp;</span><span lang="EN-US" style="font-size:10.0pt;mso-bidi-font-size:
11.0pt;font-family:&quot;Courier New&quot;;color:#007000;mso-font-kerning:0pt">switch</span><span lang="EN-US" style="font-size:12.0pt;font-family:&quot;Helvetica&quot;,&quot;sans-serif&quot;;
color:black;mso-font-kerning:0pt">&nbsp;on it:<o:p></o:p></span></p>
<p align="left" class="MsoNormal" style="text-align:left;line-height:15.0pt;
mso-pagination:widow-orphan"><br />
	<b style="mso-bidi-font-weight:normal"><span style="font-size:12.0pt;font-family:宋体;mso-ascii-font-family:Helvetica;
mso-hansi-font-family:Helvetica;mso-bidi-font-family:Helvetica;color:blue;
mso-font-kerning:0pt">你也可能想这样做：添加一个枚举字段来标识是哪个消息被填充了，这样的话你就可以对它使用</span></b><span lang="EN-US" style="font-size:10.0pt;mso-bidi-font-size:11.0pt;font-family:&quot;Courier New&quot;;
color:#007000;mso-font-kerning:0pt">switch</span><b style="mso-bidi-font-weight:
normal"><span style="font-size:12.0pt;font-family:宋体;mso-ascii-font-family:
Helvetica;mso-hansi-font-family:Helvetica;mso-bidi-font-family:Helvetica;
color:blue;mso-font-kerning:0pt">（来进行不同的处理）：</span></b><b style="mso-bidi-font-weight:
normal"><span lang="EN-US" style="font-size:12.0pt;font-family:&quot;Helvetica&quot;,&quot;sans-serif&quot;;
color:blue;mso-font-kerning:0pt"><o:p></o:p></span></b></p>
<div style="mso-element:para-border-div;border:solid #BBBBBB 1.0pt;mso-border-alt:
solid #BBBBBB .75pt;padding:12.0pt 12.0pt 12.0pt 12.0pt;background:#FAFAFA"></p>
<p align="left" class="MsoNormal" style="margin-top:12.0pt;text-align:left;
line-height:12.75pt;mso-pagination:widow-orphan;tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;
background:#FAFAFA;border:none;mso-border-alt:solid #BBBBBB .75pt;padding:0cm;
mso-padding-alt:12.0pt 12.0pt 12.0pt 12.0pt"><br />
		<span lang="EN-US" style="font-size:
9.0pt;font-family:&quot;Courier New&quot;;color:#007000;mso-font-kerning:0pt">message OneMessage {<o:p></o:p></span></p>
<p align="left" class="MsoNormal" style="margin-top:12.0pt;text-align:left;
line-height:12.75pt;mso-pagination:widow-orphan;tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;
background:#FAFAFA;border:none;mso-border-alt:solid #BBBBBB .75pt;padding:0cm;
mso-padding-alt:12.0pt 12.0pt 12.0pt 12.0pt"><br />
		<span lang="EN-US" style="font-size:
9.0pt;font-family:&quot;Courier New&quot;;color:#007000;mso-font-kerning:0pt"><span style="mso-spacerun:yes">&nbsp; </span>enum Type { FOO = 1; BAR = 2; BAZ = 3; }<o:p></o:p></span></p>
<p align="left" class="MsoNormal" style="margin-top:12.0pt;text-align:left;
line-height:12.75pt;mso-pagination:widow-orphan;tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;
background:#FAFAFA;border:none;mso-border-alt:solid #BBBBBB .75pt;padding:0cm;
mso-padding-alt:12.0pt 12.0pt 12.0pt 12.0pt"><br />
		<span lang="EN-US" style="font-size:
9.0pt;font-family:&quot;Courier New&quot;;color:#007000;mso-font-kerning:0pt"><o:p>&nbsp;</o:p></span></p>
<p align="left" class="MsoNormal" style="margin-top:12.0pt;text-align:left;
line-height:12.75pt;mso-pagination:widow-orphan;tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;
background:#FAFAFA;border:none;mso-border-alt:solid #BBBBBB .75pt;padding:0cm;
mso-padding-alt:12.0pt 12.0pt 12.0pt 12.0pt"><br />
		<span lang="EN-US" style="font-size:
9.0pt;font-family:&quot;Courier New&quot;;color:#007000;mso-font-kerning:0pt"><span style="mso-spacerun:yes">&nbsp; </span>// Identifies which field is filled in.<o:p></o:p></span></p>
<p align="left" class="MsoNormal" style="margin-top:12.0pt;text-align:left;
line-height:12.75pt;mso-pagination:widow-orphan;tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;
background:#FAFAFA;border:none;mso-border-alt:solid #BBBBBB .75pt;padding:0cm;
mso-padding-alt:12.0pt 12.0pt 12.0pt 12.0pt"><br />
		<span lang="EN-US" style="font-size:
9.0pt;font-family:&quot;Courier New&quot;;color:#007000;mso-font-kerning:0pt"><span style="mso-spacerun:yes">&nbsp; </span>required Type type = 1;<o:p></o:p></span></p>
<p align="left" class="MsoNormal" style="margin-top:12.0pt;text-align:left;
line-height:12.75pt;mso-pagination:widow-orphan;tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;
background:#FAFAFA;border:none;mso-border-alt:solid #BBBBBB .75pt;padding:0cm;
mso-padding-alt:12.0pt 12.0pt 12.0pt 12.0pt"><br />
		<span lang="EN-US" style="font-size:
9.0pt;font-family:&quot;Courier New&quot;;color:#007000;mso-font-kerning:0pt"><o:p>&nbsp;</o:p></span></p>
<p align="left" class="MsoNormal" style="margin-top:12.0pt;text-align:left;
line-height:12.75pt;mso-pagination:widow-orphan;tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;
background:#FAFAFA;border:none;mso-border-alt:solid #BBBBBB .75pt;padding:0cm;
mso-padding-alt:12.0pt 12.0pt 12.0pt 12.0pt"><br />
		<span lang="EN-US" style="font-size:
9.0pt;font-family:&quot;Courier New&quot;;color:#007000;mso-font-kerning:0pt"><span style="mso-spacerun:yes">&nbsp; </span>// One of the following will be filled in.<o:p></o:p></span></p>
<p align="left" class="MsoNormal" style="margin-top:12.0pt;text-align:left;
line-height:12.75pt;mso-pagination:widow-orphan;tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;
background:#FAFAFA;border:none;mso-border-alt:solid #BBBBBB .75pt;padding:0cm;
mso-padding-alt:12.0pt 12.0pt 12.0pt 12.0pt"><br />
		<span lang="EN-US" style="font-size:
9.0pt;font-family:&quot;Courier New&quot;;color:#007000;mso-font-kerning:0pt"><span style="mso-spacerun:yes">&nbsp; </span>optional Foo foo = 2;<o:p></o:p></span></p>
<p align="left" class="MsoNormal" style="margin-top:12.0pt;text-align:left;
line-height:12.75pt;mso-pagination:widow-orphan;tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;
background:#FAFAFA;border:none;mso-border-alt:solid #BBBBBB .75pt;padding:0cm;
mso-padding-alt:12.0pt 12.0pt 12.0pt 12.0pt"><br />
		<span lang="EN-US" style="font-size:
9.0pt;font-family:&quot;Courier New&quot;;color:#007000;mso-font-kerning:0pt"><span style="mso-spacerun:yes">&nbsp; </span>optional Bar bar = 3;<o:p></o:p></span></p>
<p align="left" class="MsoNormal" style="margin-top:12.0pt;text-align:left;
line-height:12.75pt;mso-pagination:widow-orphan;tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;
background:#FAFAFA;border:none;mso-border-alt:solid #BBBBBB .75pt;padding:0cm;
mso-padding-alt:12.0pt 12.0pt 12.0pt 12.0pt"><br />
		<span lang="EN-US" style="font-size:
9.0pt;font-family:&quot;Courier New&quot;;color:#007000;mso-font-kerning:0pt"><span style="mso-spacerun:yes">&nbsp; </span>optional Baz baz = 4;<o:p></o:p></span></p>
<p align="left" class="MsoNormal" style="margin-top:12.0pt;text-align:left;
line-height:12.75pt;mso-pagination:widow-orphan;tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;
background:#FAFAFA;border:none;mso-border-alt:solid #BBBBBB .75pt;padding:0cm;
mso-padding-alt:12.0pt 12.0pt 12.0pt 12.0pt"><br />
		<span lang="EN-US" style="font-size:
9.0pt;font-family:&quot;Courier New&quot;;color:#007000;mso-font-kerning:0pt">}<o:p></o:p></span></p>
</div>
<p align="left" class="MsoNormal" style="text-align:left;line-height:15.0pt;
mso-pagination:widow-orphan"><br />
	<span lang="EN-US" style="font-size:12.0pt;
font-family:&quot;Helvetica&quot;,&quot;sans-serif&quot;;color:black;mso-font-kerning:0pt">If you have a very large number of possible types, listing every one of them in your container type may be unwieldy. Instead, you should consider using&nbsp;<a href="http://code.google.com/intl/zh-CN/apis/protocolbuffers/docs/proto.html#extensions"><span style="color:#0000CC">extensions</span></a>:<o:p></o:p></span></p>
<p align="left" class="MsoNormal" style="text-align:left;line-height:15.0pt;
mso-pagination:widow-orphan"><br />
	<b style="mso-bidi-font-weight:normal"><span style="font-size:12.0pt;font-family:宋体;mso-ascii-font-family:Helvetica;
mso-hansi-font-family:Helvetica;mso-bidi-font-family:Helvetica;color:blue;
mso-font-kerning:0pt">如果你有大量&ldquo;可能的类型&rdquo;，那么在你的容器类型中将它们一一列举出来可能非常困难。在这种情况下，你应该考虑使用扩展（</span></b><span lang="EN-US" style="font-size:12.0pt;font-family:&quot;Helvetica&quot;,&quot;sans-serif&quot;;
color:black;mso-font-kerning:0pt"><a href="http://code.google.com/intl/zh-CN/apis/protocolbuffers/docs/proto.html#extensions"><span style="color:#0000CC">extensions</span></a></span><b style="mso-bidi-font-weight:
normal"><span style="font-size:12.0pt;font-family:宋体;mso-ascii-font-family:
Helvetica;mso-hansi-font-family:Helvetica;mso-bidi-font-family:Helvetica;
color:blue;mso-font-kerning:0pt">）：</span></b><b style="mso-bidi-font-weight:
normal"><span lang="EN-US" style="font-size:12.0pt;font-family:&quot;Helvetica&quot;,&quot;sans-serif&quot;;
color:blue;mso-font-kerning:0pt"><o:p></o:p></span></b></p>
<div style="mso-element:para-border-div;border:solid #BBBBBB 1.0pt;mso-border-alt:
solid #BBBBBB .75pt;padding:12.0pt 12.0pt 12.0pt 12.0pt;background:#FAFAFA"></p>
<p align="left" class="MsoNormal" style="margin-top:12.0pt;text-align:left;
line-height:12.75pt;mso-pagination:widow-orphan;tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;
background:#FAFAFA;border:none;mso-border-alt:solid #BBBBBB .75pt;padding:0cm;
mso-padding-alt:12.0pt 12.0pt 12.0pt 12.0pt"><br />
		<span lang="EN-US" style="font-size:
9.0pt;font-family:&quot;Courier New&quot;;color:#007000;mso-font-kerning:0pt">message OneMessage {<o:p></o:p></span></p>
<p align="left" class="MsoNormal" style="margin-top:12.0pt;text-align:left;
line-height:12.75pt;mso-pagination:widow-orphan;tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;
background:#FAFAFA;border:none;mso-border-alt:solid #BBBBBB .75pt;padding:0cm;
mso-padding-alt:12.0pt 12.0pt 12.0pt 12.0pt"><br />
		<span lang="EN-US" style="font-size:
9.0pt;font-family:&quot;Courier New&quot;;color:#007000;mso-font-kerning:0pt"><span style="mso-spacerun:yes">&nbsp; </span>extensions 100 to max;<o:p></o:p></span></p>
<p align="left" class="MsoNormal" style="margin-top:12.0pt;text-align:left;
line-height:12.75pt;mso-pagination:widow-orphan;tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;
background:#FAFAFA;border:none;mso-border-alt:solid #BBBBBB .75pt;padding:0cm;
mso-padding-alt:12.0pt 12.0pt 12.0pt 12.0pt"><br />
		<span lang="EN-US" style="font-size:
9.0pt;font-family:&quot;Courier New&quot;;color:#007000;mso-font-kerning:0pt">}<o:p></o:p></span></p>
<p align="left" class="MsoNormal" style="margin-top:12.0pt;text-align:left;
line-height:12.75pt;mso-pagination:widow-orphan;tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;
background:#FAFAFA;border:none;mso-border-alt:solid #BBBBBB .75pt;padding:0cm;
mso-padding-alt:12.0pt 12.0pt 12.0pt 12.0pt"><br />
		<span lang="EN-US" style="font-size:
9.0pt;font-family:&quot;Courier New&quot;;color:#007000;mso-font-kerning:0pt"><o:p>&nbsp;</o:p></span></p>
<p align="left" class="MsoNormal" style="margin-top:12.0pt;text-align:left;
line-height:12.75pt;mso-pagination:widow-orphan;tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;
background:#FAFAFA;border:none;mso-border-alt:solid #BBBBBB .75pt;padding:0cm;
mso-padding-alt:12.0pt 12.0pt 12.0pt 12.0pt"><br />
		<span lang="EN-US" style="font-size:
9.0pt;font-family:&quot;Courier New&quot;;color:#007000;mso-font-kerning:0pt">// Elsewhere...<o:p></o:p></span></p>
<p align="left" class="MsoNormal" style="margin-top:12.0pt;text-align:left;
line-height:12.75pt;mso-pagination:widow-orphan;tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;
background:#FAFAFA;border:none;mso-border-alt:solid #BBBBBB .75pt;padding:0cm;
mso-padding-alt:12.0pt 12.0pt 12.0pt 12.0pt"><br />
		<span lang="EN-US" style="font-size:
9.0pt;font-family:&quot;Courier New&quot;;color:#007000;mso-font-kerning:0pt">extend OneMessage {<o:p></o:p></span></p>
<p align="left" class="MsoNormal" style="margin-top:12.0pt;text-align:left;
line-height:12.75pt;mso-pagination:widow-orphan;tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;
background:#FAFAFA;border:none;mso-border-alt:solid #BBBBBB .75pt;padding:0cm;
mso-padding-alt:12.0pt 12.0pt 12.0pt 12.0pt"><br />
		<span lang="EN-US" style="font-size:
9.0pt;font-family:&quot;Courier New&quot;;color:#007000;mso-font-kerning:0pt"><span style="mso-spacerun:yes">&nbsp; </span>optional Foo foo_ext = 100;<o:p></o:p></span></p>
<p align="left" class="MsoNormal" style="margin-top:12.0pt;text-align:left;
line-height:12.75pt;mso-pagination:widow-orphan;tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;
background:#FAFAFA;border:none;mso-border-alt:solid #BBBBBB .75pt;padding:0cm;
mso-padding-alt:12.0pt 12.0pt 12.0pt 12.0pt"><br />
		<span lang="EN-US" style="font-size:
9.0pt;font-family:&quot;Courier New&quot;;color:#007000;mso-font-kerning:0pt"><span style="mso-spacerun:yes">&nbsp; </span>optional Bar bar_ext = 101;<o:p></o:p></span></p>
<p align="left" class="MsoNormal" style="margin-top:12.0pt;text-align:left;
line-height:12.75pt;mso-pagination:widow-orphan;tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;
background:#FAFAFA;border:none;mso-border-alt:solid #BBBBBB .75pt;padding:0cm;
mso-padding-alt:12.0pt 12.0pt 12.0pt 12.0pt"><br />
		<span lang="EN-US" style="font-size:
9.0pt;font-family:&quot;Courier New&quot;;color:#007000;mso-font-kerning:0pt"><span style="mso-spacerun:yes">&nbsp; </span>optional Baz baz_ext = 102;<o:p></o:p></span></p>
<p align="left" class="MsoNormal" style="margin-top:12.0pt;text-align:left;
line-height:12.75pt;mso-pagination:widow-orphan;tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;
background:#FAFAFA;border:none;mso-border-alt:solid #BBBBBB .75pt;padding:0cm;
mso-padding-alt:12.0pt 12.0pt 12.0pt 12.0pt"><br />
		<span lang="EN-US" style="font-size:
9.0pt;font-family:&quot;Courier New&quot;;color:#007000;mso-font-kerning:0pt">}<o:p></o:p></span></p>
</div>
<p align="left" class="MsoNormal" style="text-align:left;line-height:15.0pt;
mso-pagination:widow-orphan"><br />
	<span lang="EN-US" style="font-size:12.0pt;
font-family:&quot;Helvetica&quot;,&quot;sans-serif&quot;;color:black;mso-font-kerning:0pt">Note that you can use the&nbsp;</span><span lang="EN-US" style="font-size:10.0pt;
mso-bidi-font-size:11.0pt;font-family:&quot;Courier New&quot;;color:#007000;mso-font-kerning:
0pt">ListFields</span><span lang="EN-US" style="font-size:12.0pt;font-family:
&quot;Helvetica&quot;,&quot;sans-serif&quot;;color:black;mso-font-kerning:0pt">&nbsp;reflection method (in C++, Java, and Python) to get a list of all fields present in the message, including extensions. You might use this as part of a scheme for registering handlers for diverse message types.<o:p></o:p></span></p>
<p align="left" class="MsoNormal" style="text-align:left;line-height:15.0pt;
mso-pagination:widow-orphan"><br />
	<b style="mso-bidi-font-weight:normal"><span style="font-size:12.0pt;font-family:宋体;mso-ascii-font-family:Helvetica;
mso-hansi-font-family:Helvetica;mso-bidi-font-family:Helvetica;color:blue;
mso-font-kerning:0pt">注意：你可以使用反射函数</span></b><span lang="EN-US" style="font-size:
10.0pt;mso-bidi-font-size:11.0pt;font-family:&quot;Courier New&quot;;color:#007000;
mso-font-kerning:0pt">ListFields</span><b style="mso-bidi-font-weight:normal"><span style="font-size:12.0pt;font-family:宋体;mso-ascii-font-family:Helvetica;
mso-hansi-font-family:Helvetica;mso-bidi-font-family:Helvetica;color:blue;
mso-font-kerning:0pt">（</span></b><b style="mso-bidi-font-weight:normal"><span lang="EN-US" style="font-size:12.0pt;font-family:&quot;Helvetica&quot;,&quot;sans-serif&quot;;
color:blue;mso-font-kerning:0pt">C++</span></b><b style="mso-bidi-font-weight:
normal"><span style="font-size:12.0pt;font-family:宋体;mso-ascii-font-family:
Helvetica;mso-hansi-font-family:Helvetica;mso-bidi-font-family:Helvetica;
color:blue;mso-font-kerning:0pt">，</span></b><b style="mso-bidi-font-weight:
normal"><span lang="EN-US" style="font-size:12.0pt;font-family:&quot;Helvetica&quot;,&quot;sans-serif&quot;;
color:blue;mso-font-kerning:0pt">Java</span></b><b style="mso-bidi-font-weight:
normal"><span style="font-size:12.0pt;font-family:宋体;mso-ascii-font-family:
Helvetica;mso-hansi-font-family:Helvetica;mso-bidi-font-family:Helvetica;
color:blue;mso-font-kerning:0pt">和</span></b><b style="mso-bidi-font-weight:
normal"><span lang="EN-US" style="font-size:12.0pt;font-family:&quot;Helvetica&quot;,&quot;sans-serif&quot;;
color:blue;mso-font-kerning:0pt">Python</span></b><b style="mso-bidi-font-weight:
normal"><span style="font-size:12.0pt;font-family:宋体;mso-ascii-font-family:
Helvetica;mso-hansi-font-family:Helvetica;mso-bidi-font-family:Helvetica;
color:blue;mso-font-kerning:0pt">都可用）来获取一个消息中的所有字段的列表（包括扩展）。在实现一个为不同消息类型分别注册句柄的技术方案的时候，你可能用得上这个功能。</span></b><b style="mso-bidi-font-weight:normal"><span lang="EN-US" style="font-size:12.0pt;
font-family:&quot;Helvetica&quot;,&quot;sans-serif&quot;;color:blue;mso-font-kerning:0pt"><o:p></o:p></span></b></p>
<p align="left" class="MsoNormal" style="text-align:left;line-height:15.0pt;
mso-pagination:widow-orphan"><br />
	<span lang="EN-US" style="font-size:12.0pt;
font-family:&quot;Helvetica&quot;,&quot;sans-serif&quot;;color:black;mso-font-kerning:0pt"><o:p>&nbsp;</o:p></span></p>
<div style="mso-element:para-border-div;border:none;border-top:solid #3366CC 1.0pt;
mso-border-top-alt:solid #3366CC .75pt;padding:1.0pt 0cm 0cm 0cm;background:
#E5ECF9;margin-left:-7.5pt;margin-right:0cm"></p>
<p align="left" class="MsoNormal" style="margin-top:24.0pt;text-align:left;
mso-pagination:widow-orphan;mso-outline-level:2;background:#E5ECF9;border:none;
mso-border-top-alt:solid #3366CC .75pt;padding:0cm;mso-padding-alt:1.0pt 0cm 0cm 0cm"><br />
		<b><span lang="EN-US" style="font-size:15.0pt;font-family:&quot;Helvetica&quot;,&quot;sans-serif&quot;;
color:black;mso-font-kerning:0pt">Self-describing Messages </span></b><b><span style="font-size:15.0pt;font-family:宋体;mso-ascii-font-family:Helvetica;
mso-hansi-font-family:Helvetica;mso-bidi-font-family:Helvetica;color:blue;
mso-font-kerning:0pt">自描述的消息</span></b><b><span lang="EN-US" style="font-size:
15.0pt;font-family:&quot;Helvetica&quot;,&quot;sans-serif&quot;;color:black;mso-font-kerning:0pt"><o:p></o:p></span></b></p>
</div>
<p align="left" class="MsoNormal" style="text-align:left;line-height:15.0pt;
mso-pagination:widow-orphan"><br />
	<span lang="EN-US" style="font-size:12.0pt;
font-family:&quot;Helvetica&quot;,&quot;sans-serif&quot;;color:black;mso-font-kerning:0pt">Protocol Buffers do not contain descriptions of their own types. Thus, given only a raw message without the corresponding&nbsp;</span><span lang="EN-US" style="font-size:10.0pt;mso-bidi-font-size:11.0pt;font-family:&quot;Courier New&quot;;
color:#007000;mso-font-kerning:0pt">.proto</span><span lang="EN-US" style="font-size:12.0pt;font-family:&quot;Helvetica&quot;,&quot;sans-serif&quot;;color:black;
mso-font-kerning:0pt">&nbsp;file defining its type, it is difficult to extract any useful data.<o:p></o:p></span></p>
<p align="left" class="MsoNormal" style="text-align:left;line-height:15.0pt;
mso-pagination:widow-orphan"><br />
	<span lang="EN-US" style="font-size:12.0pt;
font-family:&quot;Helvetica&quot;,&quot;sans-serif&quot;;color:black;mso-font-kerning:0pt">However, note that the contents of a .proto file can itself be represented using protocol buffers. The file&nbsp;</span><span lang="EN-US" style="font-size:10.0pt;
mso-bidi-font-size:11.0pt;font-family:&quot;Courier New&quot;;color:#007000;mso-font-kerning:
0pt">src/google/protobuf/descriptor.proto</span><span lang="EN-US" style="font-size:12.0pt;font-family:&quot;Helvetica&quot;,&quot;sans-serif&quot;;color:black;
mso-font-kerning:0pt">in the source code package defines the message types involved.&nbsp;</span><span lang="EN-US" style="font-size:10.0pt;mso-bidi-font-size:
11.0pt;font-family:&quot;Courier New&quot;;color:#007000;mso-font-kerning:0pt">protoc</span><span lang="EN-US" style="font-size:12.0pt;font-family:&quot;Helvetica&quot;,&quot;sans-serif&quot;;
color:black;mso-font-kerning:0pt">&nbsp;can output a&nbsp;</span><span lang="EN-US" style="font-size:10.0pt;mso-bidi-font-size:11.0pt;font-family:&quot;Courier New&quot;;
color:#007000;mso-font-kerning:0pt">FileDescriptorSet</span><span lang="EN-US" style="font-size:12.0pt;font-family:&quot;Helvetica&quot;,&quot;sans-serif&quot;;color:black;
mso-font-kerning:0pt">&nbsp;&ndash; which represents a set of .proto files &ndash; using the&nbsp;</span><span lang="EN-US" style="font-size:10.0pt;mso-bidi-font-size:
11.0pt;font-family:&quot;Courier New&quot;;color:#007000;mso-font-kerning:0pt">--descriptor_set_out</span><span lang="EN-US" style="font-size:12.0pt;font-family:&quot;Helvetica&quot;,&quot;sans-serif&quot;;
color:black;mso-font-kerning:0pt">&nbsp;option. With this, you could define a self-describing protocol message like so:<o:p></o:p></span></p>
<p align="left" class="MsoNormal" style="text-align:left;line-height:15.0pt;
mso-pagination:widow-orphan"><br />
	<b style="mso-bidi-font-weight:normal"><span lang="EN-US" style="font-size:12.0pt;font-family:&quot;Helvetica&quot;,&quot;sans-serif&quot;;
color:blue;mso-font-kerning:0pt">Protocol Buffers</span></b><b style="mso-bidi-font-weight:normal"><span style="font-size:12.0pt;font-family:
宋体;mso-ascii-font-family:Helvetica;mso-hansi-font-family:Helvetica;mso-bidi-font-family:
Helvetica;color:blue;mso-font-kerning:0pt">不包含自我类型描述的信息。因此，如果只提供原始消息，而不提供对应的</span></b><b style="mso-bidi-font-weight:normal"><span lang="EN-US" style="font-size:12.0pt;
font-family:&quot;Helvetica&quot;,&quot;sans-serif&quot;;color:blue;mso-font-kerning:0pt">.proto</span></b><b style="mso-bidi-font-weight:normal"><span style="font-size:12.0pt;font-family:
宋体;mso-ascii-font-family:Helvetica;mso-hansi-font-family:Helvetica;mso-bidi-font-family:
Helvetica;color:blue;mso-font-kerning:0pt">文件，你将很难从中提取出任何有用的数据。</span></b><b style="mso-bidi-font-weight:normal"><span lang="EN-US" style="font-size:12.0pt;
font-family:&quot;Helvetica&quot;,&quot;sans-serif&quot;;color:blue;mso-font-kerning:0pt"><o:p></o:p></span></b></p>
<p align="left" class="MsoNormal" style="text-align:left;line-height:15.0pt;
mso-pagination:widow-orphan"><br />
	<b style="mso-bidi-font-weight:normal"><span style="font-size:12.0pt;font-family:宋体;mso-ascii-font-family:Helvetica;
mso-hansi-font-family:Helvetica;mso-bidi-font-family:Helvetica;color:blue;
mso-font-kerning:0pt">然而，请注意：一个</span></b><b style="mso-bidi-font-weight:normal"><span lang="EN-US" style="font-size:12.0pt;font-family:&quot;Helvetica&quot;,&quot;sans-serif&quot;;
color:blue;mso-font-kerning:0pt">.proto</span></b><b style="mso-bidi-font-weight:
normal"><span style="font-size:12.0pt;font-family:宋体;mso-ascii-font-family:
Helvetica;mso-hansi-font-family:Helvetica;mso-bidi-font-family:Helvetica;
color:blue;mso-font-kerning:0pt">文件的内容可以使用</span></b><b style="mso-bidi-font-weight:
normal"><span lang="EN-US" style="font-size:12.0pt;font-family:&quot;Helvetica&quot;,&quot;sans-serif&quot;;
color:blue;mso-font-kerning:0pt">protocol buffers</span></b><b style="mso-bidi-font-weight:normal"><span style="font-size:12.0pt;font-family:
宋体;mso-ascii-font-family:Helvetica;mso-hansi-font-family:Helvetica;mso-bidi-font-family:
Helvetica;color:blue;mso-font-kerning:0pt">来描述。通过使用</span></b><span lang="EN-US" style="font-size:10.0pt;mso-bidi-font-size:11.0pt;font-family:&quot;Courier New&quot;;
color:#007000;mso-font-kerning:0pt">--descriptor_set_out</span><b style="mso-bidi-font-weight:normal"><span style="font-size:12.0pt;font-family:
宋体;mso-ascii-font-family:Helvetica;mso-hansi-font-family:Helvetica;mso-bidi-font-family:
Helvetica;color:blue;mso-font-kerning:0pt">选项，源代码包中的</span></b><span lang="EN-US" style="font-size:10.0pt;mso-bidi-font-size:11.0pt;font-family:&quot;Courier New&quot;;
color:#007000;mso-font-kerning:0pt">src/google/protobuf/descriptor.proto</span><b style="mso-bidi-font-weight:normal"><span style="font-size:12.0pt;font-family:
宋体;mso-ascii-font-family:Helvetica;mso-hansi-font-family:Helvetica;mso-bidi-font-family:
Helvetica;color:blue;mso-font-kerning:0pt">文件定义了相关的消息类型。</span></b><b style="mso-bidi-font-weight:normal"><span lang="EN-US" style="font-size:12.0pt;
font-family:&quot;Helvetica&quot;,&quot;sans-serif&quot;;color:blue;mso-font-kerning:0pt">protoc</span></b><b style="mso-bidi-font-weight:normal"><span style="font-size:12.0pt;font-family:
宋体;mso-ascii-font-family:Helvetica;mso-hansi-font-family:Helvetica;mso-bidi-font-family:
Helvetica;color:blue;mso-font-kerning:0pt">编译器可以输出一个</span></b><span lang="EN-US" style="font-size:10.0pt;mso-bidi-font-size:11.0pt;font-family:&quot;Courier New&quot;;
color:#007000;mso-font-kerning:0pt">FileDescriptorSet</span><b style="mso-bidi-font-weight:normal"><span style="font-size:12.0pt;font-family:
宋体;mso-ascii-font-family:Helvetica;mso-hansi-font-family:Helvetica;mso-bidi-font-family:
Helvetica;color:blue;mso-font-kerning:0pt">&mdash;&mdash;这个集合表示一系列的</span></b><b style="mso-bidi-font-weight:normal"><span lang="EN-US" style="font-size:12.0pt;
font-family:&quot;Helvetica&quot;,&quot;sans-serif&quot;;color:blue;mso-font-kerning:0pt">.proto</span></b><b style="mso-bidi-font-weight:normal"><span style="font-size:12.0pt;font-family:
宋体;mso-ascii-font-family:Helvetica;mso-hansi-font-family:Helvetica;mso-bidi-font-family:
Helvetica;color:blue;mso-font-kerning:0pt">文件。利用它，你可以像这样定义一个自描述的协议消息：</span></b><b style="mso-bidi-font-weight:normal"><span lang="EN-US" style="font-size:12.0pt;
font-family:&quot;Helvetica&quot;,&quot;sans-serif&quot;;color:blue;mso-font-kerning:0pt"><o:p></o:p></span></b></p>
<p align="left" class="MsoNormal" style="text-align:left;line-height:15.0pt;
mso-pagination:widow-orphan"><br />
	<b style="mso-bidi-font-weight:normal"><span lang="EN-US" style="font-size:12.0pt;font-family:&quot;Helvetica&quot;,&quot;sans-serif&quot;;
color:blue;mso-font-kerning:0pt"><o:p>&nbsp;</o:p></span></b></p>
<div style="mso-element:para-border-div;border:solid #BBBBBB 1.0pt;mso-border-alt:
solid #BBBBBB .75pt;padding:12.0pt 12.0pt 12.0pt 12.0pt;background:#FAFAFA"></p>
<p align="left" class="MsoNormal" style="margin-top:12.0pt;text-align:left;
line-height:12.75pt;mso-pagination:widow-orphan;tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;
background:#FAFAFA;border:none;mso-border-alt:solid #BBBBBB .75pt;padding:0cm;
mso-padding-alt:12.0pt 12.0pt 12.0pt 12.0pt"><br />
		<span lang="EN-US" style="font-size:
9.0pt;font-family:&quot;Courier New&quot;;color:#007000;mso-font-kerning:0pt">message SelfDescribingMessage {<o:p></o:p></span></p>
<p align="left" class="MsoNormal" style="margin-top:12.0pt;text-align:left;
line-height:12.75pt;mso-pagination:widow-orphan;tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;
background:#FAFAFA;border:none;mso-border-alt:solid #BBBBBB .75pt;padding:0cm;
mso-padding-alt:12.0pt 12.0pt 12.0pt 12.0pt"><br />
		<span lang="EN-US" style="font-size:
9.0pt;font-family:&quot;Courier New&quot;;color:#007000;mso-font-kerning:0pt"><span style="mso-spacerun:yes">&nbsp; </span>// Set of .proto files which define the type.<o:p></o:p></span></p>
<p align="left" class="MsoNormal" style="margin-top:12.0pt;text-align:left;
line-height:12.75pt;mso-pagination:widow-orphan;tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;
background:#FAFAFA;border:none;mso-border-alt:solid #BBBBBB .75pt;padding:0cm;
mso-padding-alt:12.0pt 12.0pt 12.0pt 12.0pt"><br />
		<span lang="EN-US" style="font-size:
9.0pt;font-family:&quot;Courier New&quot;;color:#007000;mso-font-kerning:0pt"><span style="mso-spacerun:yes">&nbsp;</span><span style="mso-spacerun:yes">&nbsp;</span>required FileDescriptorSet proto_files = 1;<o:p></o:p></span></p>
<p align="left" class="MsoNormal" style="margin-top:12.0pt;text-align:left;
line-height:12.75pt;mso-pagination:widow-orphan;tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;
background:#FAFAFA;border:none;mso-border-alt:solid #BBBBBB .75pt;padding:0cm;
mso-padding-alt:12.0pt 12.0pt 12.0pt 12.0pt"><br />
		<span lang="EN-US" style="font-size:
9.0pt;font-family:&quot;Courier New&quot;;color:#007000;mso-font-kerning:0pt"><o:p>&nbsp;</o:p></span></p>
<p align="left" class="MsoNormal" style="margin-top:12.0pt;text-align:left;
line-height:12.75pt;mso-pagination:widow-orphan;tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;
background:#FAFAFA;border:none;mso-border-alt:solid #BBBBBB .75pt;padding:0cm;
mso-padding-alt:12.0pt 12.0pt 12.0pt 12.0pt"><br />
		<span lang="EN-US" style="font-size:
9.0pt;font-family:&quot;Courier New&quot;;color:#007000;mso-font-kerning:0pt"><span style="mso-spacerun:yes">&nbsp; </span>// Name of the message type.<span style="mso-spacerun:yes">&nbsp; </span>Must be defined by one of the files in<o:p></o:p></span></p>
<p align="left" class="MsoNormal" style="margin-top:12.0pt;text-align:left;
line-height:12.75pt;mso-pagination:widow-orphan;tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;
background:#FAFAFA;border:none;mso-border-alt:solid #BBBBBB .75pt;padding:0cm;
mso-padding-alt:12.0pt 12.0pt 12.0pt 12.0pt"><br />
		<span lang="EN-US" style="font-size:
9.0pt;font-family:&quot;Courier New&quot;;color:#007000;mso-font-kerning:0pt"><span style="mso-spacerun:yes">&nbsp; </span>// proto_files.<o:p></o:p></span></p>
<p align="left" class="MsoNormal" style="margin-top:12.0pt;text-align:left;
line-height:12.75pt;mso-pagination:widow-orphan;tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;
background:#FAFAFA;border:none;mso-border-alt:solid #BBBBBB .75pt;padding:0cm;
mso-padding-alt:12.0pt 12.0pt 12.0pt 12.0pt"><br />
		<span lang="EN-US" style="font-size:
9.0pt;font-family:&quot;Courier New&quot;;color:#007000;mso-font-kerning:0pt"><span style="mso-spacerun:yes">&nbsp; </span>required string type_name = 2;<o:p></o:p></span></p>
<p align="left" class="MsoNormal" style="margin-top:12.0pt;text-align:left;
line-height:12.75pt;mso-pagination:widow-orphan;tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;
background:#FAFAFA;border:none;mso-border-alt:solid #BBBBBB .75pt;padding:0cm;
mso-padding-alt:12.0pt 12.0pt 12.0pt 12.0pt"><br />
		<span lang="EN-US" style="font-size:
9.0pt;font-family:&quot;Courier New&quot;;color:#007000;mso-font-kerning:0pt"><o:p>&nbsp;</o:p></span></p>
<p align="left" class="MsoNormal" style="margin-top:12.0pt;text-align:left;
line-height:12.75pt;mso-pagination:widow-orphan;tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;
background:#FAFAFA;border:none;mso-border-alt:solid #BBBBBB .75pt;padding:0cm;
mso-padding-alt:12.0pt 12.0pt 12.0pt 12.0pt"><br />
		<span lang="EN-US" style="font-size:
9.0pt;font-family:&quot;Courier New&quot;;color:#007000;mso-font-kerning:0pt"><span style="mso-spacerun:yes">&nbsp; </span>// The message data.<o:p></o:p></span></p>
<p align="left" class="MsoNormal" style="margin-top:12.0pt;text-align:left;
line-height:12.75pt;mso-pagination:widow-orphan;tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;
background:#FAFAFA;border:none;mso-border-alt:solid #BBBBBB .75pt;padding:0cm;
mso-padding-alt:12.0pt 12.0pt 12.0pt 12.0pt"><br />
		<span lang="EN-US" style="font-size:
9.0pt;font-family:&quot;Courier New&quot;;color:#007000;mso-font-kerning:0pt"><span style="mso-spacerun:yes">&nbsp; </span>required bytes message_data = 3;<o:p></o:p></span></p>
<p align="left" class="MsoNormal" style="margin-top:12.0pt;text-align:left;
line-height:12.75pt;mso-pagination:widow-orphan;tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;
background:#FAFAFA;border:none;mso-border-alt:solid #BBBBBB .75pt;padding:0cm;
mso-padding-alt:12.0pt 12.0pt 12.0pt 12.0pt"><br />
		<span lang="EN-US" style="font-size:
9.0pt;font-family:&quot;Courier New&quot;;color:#007000;mso-font-kerning:0pt">}<o:p></o:p></span></p>
</div>
<p align="left" class="MsoNormal" style="text-align:left;line-height:15.0pt;
mso-pagination:widow-orphan"><br />
	<span lang="EN-US" style="font-size:12.0pt;
font-family:&quot;Helvetica&quot;,&quot;sans-serif&quot;;color:black;mso-font-kerning:0pt">By using classes like&nbsp;</span><span lang="EN-US" style="font-size:10.0pt;mso-bidi-font-size:
11.0pt;font-family:&quot;Courier New&quot;;color:#007000;mso-font-kerning:0pt">DynamicMessage</span><span lang="EN-US" style="font-size:12.0pt;font-family:&quot;Helvetica&quot;,&quot;sans-serif&quot;;
color:black;mso-font-kerning:0pt">&nbsp;(available in C++ and Java), you can then write tools which can manipulate&nbsp;</span><span lang="EN-US" style="font-size:10.0pt;mso-bidi-font-size:11.0pt;font-family:&quot;Courier New&quot;;
color:#007000;mso-font-kerning:0pt">SelfDescribingMessage</span><span lang="EN-US" style="font-size:12.0pt;font-family:&quot;Helvetica&quot;,&quot;sans-serif&quot;;
color:black;mso-font-kerning:0pt">s.<o:p></o:p></span></p>
<p align="left" class="MsoNormal" style="text-align:left;line-height:15.0pt;
mso-pagination:widow-orphan"><br />
	<span lang="EN-US" style="font-size:12.0pt;
font-family:&quot;Helvetica&quot;,&quot;sans-serif&quot;;color:black;mso-font-kerning:0pt">All that said, the reason that this functionality is not included in the Protocol Buffer library is because we have never had a use for it inside Google.<o:p></o:p></span></p>
<p align="left" class="MsoNormal" style="text-align:left;line-height:15.0pt;
mso-pagination:widow-orphan"><br />
	<b style="mso-bidi-font-weight:normal"><span style="font-size:12.0pt;font-family:宋体;mso-ascii-font-family:Helvetica;
mso-hansi-font-family:Helvetica;mso-bidi-font-family:Helvetica;color:blue;
mso-font-kerning:0pt">通过使用像</span></b><span lang="EN-US" style="font-size:10.0pt;
mso-bidi-font-size:11.0pt;font-family:&quot;Courier New&quot;;color:#007000;mso-font-kerning:
0pt">DynamicMessage</span><b style="mso-bidi-font-weight:normal"><span style="font-size:12.0pt;font-family:宋体;mso-ascii-font-family:Helvetica;
mso-hansi-font-family:Helvetica;mso-bidi-font-family:Helvetica;color:blue;
mso-font-kerning:0pt">这样的类（</span></b><b style="mso-bidi-font-weight:normal"><span lang="EN-US" style="font-size:12.0pt;font-family:&quot;Helvetica&quot;,&quot;sans-serif&quot;;
color:blue;mso-font-kerning:0pt">C++</span></b><b style="mso-bidi-font-weight:
normal"><span style="font-size:12.0pt;font-family:宋体;mso-ascii-font-family:
Helvetica;mso-hansi-font-family:Helvetica;mso-bidi-font-family:Helvetica;
color:blue;mso-font-kerning:0pt">和</span></b><b style="mso-bidi-font-weight:
normal"><span lang="EN-US" style="font-size:12.0pt;font-family:&quot;Helvetica&quot;,&quot;sans-serif&quot;;
color:blue;mso-font-kerning:0pt">Java</span></b><b style="mso-bidi-font-weight:
normal"><span style="font-size:12.0pt;font-family:宋体;mso-ascii-font-family:
Helvetica;mso-hansi-font-family:Helvetica;mso-bidi-font-family:Helvetica;
color:blue;mso-font-kerning:0pt">都可用），你可以编写出操作</span></b><span lang="EN-US" style="font-size:10.0pt;mso-bidi-font-size:11.0pt;font-family:&quot;Courier New&quot;;
color:#007000;mso-font-kerning:0pt">SelfDescribingMessage</span><b style="mso-bidi-font-weight:normal"><span style="font-size:12.0pt;font-family:
宋体;mso-ascii-font-family:Helvetica;mso-hansi-font-family:Helvetica;mso-bidi-font-family:
Helvetica;color:blue;mso-font-kerning:0pt">的工具。</span></b><b style="mso-bidi-font-weight:
normal"><span lang="EN-US" style="font-size:12.0pt;font-family:&quot;Helvetica&quot;,&quot;sans-serif&quot;;
color:blue;mso-font-kerning:0pt"><o:p></o:p></span></b></p>
<p align="left" class="MsoNormal" style="text-align:left;line-height:15.0pt;
mso-pagination:widow-orphan"><br />
	<b style="mso-bidi-font-weight:normal"><span style="font-size:12.0pt;font-family:宋体;mso-ascii-font-family:Helvetica;
mso-hansi-font-family:Helvetica;mso-bidi-font-family:Helvetica;color:blue;
mso-font-kerning:0pt">总之，</span></b><b style="mso-bidi-font-weight:normal"><span lang="EN-US" style="font-size:12.0pt;font-family:&quot;Helvetica&quot;,&quot;sans-serif&quot;;
color:blue;mso-font-kerning:0pt">Protocol Buffer</span></b><b style="mso-bidi-font-weight:
normal"><span style="font-size:12.0pt;font-family:宋体;mso-ascii-font-family:
Helvetica;mso-hansi-font-family:Helvetica;mso-bidi-font-family:Helvetica;
color:blue;mso-font-kerning:0pt">库之所以没有包含这个特性，是因为我们在</span></b><b style="mso-bidi-font-weight:normal"><span lang="EN-US" style="font-size:12.0pt;
font-family:&quot;Helvetica&quot;,&quot;sans-serif&quot;;color:blue;mso-font-kerning:0pt">Google</span></b><b style="mso-bidi-font-weight:normal"><span style="font-size:12.0pt;font-family:
宋体;mso-ascii-font-family:Helvetica;mso-hansi-font-family:Helvetica;mso-bidi-font-family:
Helvetica;color:blue;mso-font-kerning:0pt">还从没有需要用它的机会。</span></b><b style="mso-bidi-font-weight:normal"><span lang="EN-US" style="font-size:12.0pt;
font-family:&quot;Helvetica&quot;,&quot;sans-serif&quot;;color:blue;mso-font-kerning:0pt"><o:p></o:p></span></b></p>
<p align="left" class="MsoNormal" style="text-align:left;line-height:15.0pt;
mso-pagination:widow-orphan"><br />
	<br />
	<span style="color: rgb(255, 255, 255);">文章来源：</span><a href="https://www.codelast.com/" rel="noopener noreferrer" target="_blank"><span style="color: rgb(255, 255, 255);">https://www.codelast.com/</span></a><br />
	<span style="color: rgb(255, 0, 0);">➤➤</span>&nbsp;版权声明&nbsp;<span style="color: rgb(255, 0, 0);">➤➤</span>&nbsp;<br />
	转载需注明出处：<u><a href="https://www.codelast.com/" rel="noopener noreferrer" target="_blank"><em><span style="color: rgb(0, 0, 255);"><strong style="font-size: 16px;"><span style="font-family: arial, helvetica, sans-serif;">codelast.com</span></strong></span></em></a></u>&nbsp;<br />
	感谢关注我的微信公众号（微信扫一扫）：</p>
<p style="border: 0px; font-size: 13px; margin: 0px 0px 9px; outline: 0px; padding: 0px; color: rgb(77, 77, 77);">
	<img decoding="async" alt="wechat qrcode of codelast" src="https://www.codelast.com/codelast_wechat_qr_code.jpg" style="width: 200px; height: 200px;" /></p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.codelast.com/%e5%8e%9f%e5%88%9b-techniques-%e4%b8%ad%e6%96%87%e7%bf%bb%e8%af%91%ef%bc%88google-protocol-buffers%e4%b8%ad%e6%96%87%e6%95%99%e7%a8%8b%ef%bc%89/feed/</wfw:commentRss>
			<slash:comments>1</slash:comments>
		
		
			</item>
	</channel>
</rss>
