HLS(m3u8) 草案 译 (待修订)

1. 介绍HLS(Introduction to HTTP Live Streaming)

HLS (HTTP Live Streaming),Apple的动态码率自适应技术。主要用于PC和Apple终端的音视频服务。包括一个m3u(8)的索引文件,TS媒体分片文件和key加密串文件。

2. 概览(Overview)

3. TS片(Media Segments)

4. 播放列表(Playlists)

4.1. 播放列表的定义(Definition of a Playlist)

播放列表文件的格式是从M3U[M3U]演变而来,并继承了早期版本的文件两个标签格式:EXTM3U和EXTINF。

每个播放列表文件必须通过URI或HTTP内容类型验证。

在第一种情况下,该路径必须使用.m3u8或m3u格式结束。在第二种情况下,HTTP内容类型必须是 “application/vnd.apple.mpegurl” 或 “audio/mpegurl”。

客户端应该拒绝解析未通过验证的播放列表。

播放列表文件必须使用UTF-8进行编码。

以字符’#’开头的行要么是注释或标签。

标签以#EXT开始,它们是区分大小写的。剩下的以’#’开始是注释,应该被忽略。

一个URI表示是TS片或播放列表文件。每个TS片由URI和指的定标签所指定的。

如果一个播放列表是一个Media播放列表,在播放列表中所有URI行都标识其是一个TS片。如果一个播放列表是一个Master播放列表,在其播放列表中所有URI行都标识其是一个Media播放列表。

播放列表必须是Media播放列表或Master播放列表。

媒体播放列表文件的持续时间是其中所有的TS片的持续时间的总和。

4.2. 属性列表(Attribute Lists)

一个属性/值对的语法如:AttributeName=AttributeValue

AttributeNames只包含大写字母。AttributeName会和’=’字符之间以及AttributeValue之间,不能有任何空白。

AttributeValue是下列之一:

  1. 十进制整数字符
  2. 十六进制序列
  3. 十进制浮点数
  4. 引用的字符串,其中不能出现换行和回车
    等等

在属性列表中不能出现多次相同的属性名。客户端应该拒绝解析此类播放列表。

4.3. 播放列表标记(Playlist Tags)

4.3.1. 基础标签(Basic Tags)

允许在Media播放列表和Master播放列表中出现。

4.3.1.1. EXTM3U

该EXTM3U标签表示该文件是一个扩展的M3U播放列表文件。它必须是每个Media播放列表的第一行。

其格式为: #EXTM3U

4.3.1.2. EXT-X-VERSION

该EXT-X-VERSION标记表示播放列表文件/关联的媒体/服务器的兼容版本。

该EXT-X-VERSION标记适用于在整个播放列表文件。

其格式是:#EXT-X-VERSION:

n是一个整数表示协议兼容的版本号。

所有的播放列表必须包含这个标记。

播放列表文件不能包含多个EXT-X-VERSION标记。

如果一个客户端遇到多个EXT-X-VERSION标签的播放列表,必须拒绝它。

4.3.2. TS片标签(Media Segment Tags)

每个TS片是由一系列其后跟着URL的TS片标签所指定的,一些媒体段标签仅应用于下一个TS片,一些适用于后续所有的TS片,直到另一个相同的标记实例。

一个TS片不能出现于Master播放列表。

4.3.2.1. EXTINF

该EXTINF标记指定媒体段的持续时间。

它适用到下一个媒体段。必须使用这个标签分隔每个媒体段。

其格式为:#EXTINF:,[]</code></p> <h4 id="4322-ext-x-byterange">4.3.2.2. EXT-X-BYTERANGE</h4> <p>该EXT-X-BYTERANGE标签指定TS片是URI所指定资源的一个子范围。</p> <p>它仅适用于下一行的URI,其格式为:<code>#EXT-X-BYTERANGE:<n>[@<o>]</code></p> <p>其中n是一整数,表示子范围的字节长度。如果o存在,其也是个整数,表示开始的子范围,如果o不存在,则开始于上一个媒体段的下一个字节,并且上一个媒体段必须存在,并且必须是相同的媒体资源的子范围。</p> <p>在使用EXT-X-BYTERANGE标签时,需要4以上的兼容版本为。</p> <h4 id="4323-ext-x-discontinuity">4.3.2.3. EXT-X-DISCONTINUITY</h4> <p>该EXT-X-DISCONTINUITY表示它后面的TS片和它之前的TS片是不连续的。</p> <p>其格式为:<code>#EXT-X-DISCONTINUITY</code></p> <p>如有一下几个特性,EXT-X-DISCONTINUITY标签必须存在:</p> <ol> <li>文件格式</li> <li>编号,类型和标识</li> <li>时间戳序列</li> </ol> <p>如有以下几个特性,EXT-X-DISCONTINUITY标签应该存在:</p> <ol> <li>编码参数</li> <li>编码序列</li> </ol> <h4 id="4324-ext-x-key">4.3.2.4. EXT-X-KEY</h4> <p>媒体片段可以被加密。该EXT-X-KEY标记指定如何解密。</p> <p>它适用于碰到下一个EXT-X-KEY标签间的所有TS片(使用相同的KEYFORMAT)。</p> <p>多个EXT-X-KEY标签使用不同的KEYFORMAT属性,如果他们最终产生相同的解密密钥,则可以应用于同一个媒体段。</p> <p>格式为:<code>#EXT-X-KEY:<attribute-list></code></p> <p>属性定义如下:</p> <ol> <li><p>METHOD: <br> 该值是一个枚举字符串指定加密方法。此属性是必需的。定义的加密方法有:NONE,AES-128,SAMPLE-AES三种。 <br> NONE的加密方法是指TS片不加密。如果加密方法是NONE,其他属性不能出现。 <br> AES-128的加密方法,该方法的TS片是使用AES-128(高级加密标准)完全加密。此方法需要URI属性。 <br> SAMPLE-AES加密方法意味着TS片内含有一些样本,可能是视频或音频,其使用AES加密标准。</p></li> <li><p>URI:其值是如何获得密钥的URL引用字符串。除非METHOD为NONE,否则此属性是必需的。</p></li> <li><p>IV:是一个十六进制序列,指定一个128位的无符号整数初始化向量,和解密KEY一起使用。这个属性需要2以上的兼容版本。</p></li> <li><p>KEYFORMAT:其值是一个字符串,指定解密KEY是如何由URI所指定的。</p></li> </ol> <p>这个属性需要5以上的兼容版本。</p> <p>如果Media播放列表没有包含EXT-X-KEY标签,说名媒体段没有被加密。</p> <h4 id="4325-ext-x-map">4.3.2.5. EXT-X-MAP</h4> <p>该EXT-X-MAP标记指定如何获取媒体初始化的部分,来解析使用的TS片。</p> <p>它适用于每一个TS片,直到碰到下一个EXT-X-MAP标签,或直到文件结尾。</p> <p>其格式如下:<code>#EXT-X-MAP:<attribute-list></code></p> <p>下面是属性定义:</p> <ol> <li><p>URI:该值是是一个包含URI的字符串,此属性是必须的。</p></li> <li><p>BYTERANGE:该值是一个指定URI资源的字节范围的字符串,此范围只包括初始化部分。如果不存在,表示整个URI只是的资源。</p></li> </ol> <h4 id="4326-ext-x-program-date-time">4.3.2.6. EXT-X-PROGRAM-DATE-TIME</h4> <h3 id="433-media播放列表标签media-playlist-tags">4.3.3. Media播放列表标签(Media Playlist Tags)</h3> <p>每种类型的Media播放列表标签不能出现多次。</p> <p>Media播放列表标签不能出现在Master播放列表中。</p> <h4 id="4331-ext-x-targetduration">4.3.3.1. EXT-X-TARGETDURATION</h4> <p>该EXT-X-TARGETDURATION标记指定最大的TS片的持续时间。</p> <p>每个TS片的持续时间,必须小于等于最大的持续时间。</p> <p>其格式是:<code>#EXT-X-TARGETDURATION:<s></code></p> <p>其中s是一个整数,代表的是秒时间。该EXT-X-TARGETDURATION标签是必须的。</p> <h4 id="4332-ext-x-media-sequence">4.3.3.2. EXT-X-MEDIA-SEQUENCE</h4> <p>该EXT-X-MEDIA-SEQUENCE表示TS片的开始序号。</p> <p><code>#EXT-X-MEDIA-SEQUENCE:<number></code></p> <p>如果EXT-X-MEDIA-SEQUENCE不存在,则媒体段的第一个序号应该为0.</p> <p>如果EXT-XMEDIA-SEQUENCE存在,则必须在第一个媒体段之前。</p> <h4 id="4333-ext-x-discontinuity-sequence">4.3.3.3. EXT-X-DISCONTINUITY-SEQUENCE</h4> <h4 id="4334-ext-x-endlist">4.3.3.4. EXT-X-ENDLIST</h4> <p>该EXT-X-END-LIST标签表示没有更多的TS片被添加到播放列表中。</p> <p>它可能发生在任何地方Media播放列表文件。</p> <p>其格式为:<code>#EXT-X-ENDLIST</code></p> <h4 id="4335-ext-x-playlist-type">4.3.3.5. EXT-X-PLAYLIST-TYPE</h4> <p>该EXT-X-PLAYLIST标签提供了关于Media播放列表可变性的相关信息。</p> <p>它适用于整个Media播放列表文件。它是可选的。</p> <p>其格式为:<code>#EXT-X-PLAYLIST-TYPE:<EVENT|VOD></code></p> <p>6.2.1节定义了EXT-X-PLAYLIST-TYPE标签的影响。</p> <p>如果EXT-X-PLAYLIST-TYPE的值是EVENT时,TS片只能被添加到Media播放列表的末尾。</p> <p>当EXT-X-PLAYLIST-TYPE的值是VOD时,播放列表不能被改变。</p> <p>如果EXT-X-PLAYLIST-TYPE标签没有出现在Media播放列表中,那么可以按照6.2.1的规则更新列表</p> <h4 id="4336-ext-x-i-frames-only">4.3.3.6. EXT-X-I-FRAMES-ONLY</h4> <p>该EXT-X-I-FRAMES-ONLY标签表示每个TS片是一个I-Frame,I-Frames(or Intra Frames)视频的编码不依赖于其他的Frame。</p> <p>在 EXT-X-I-FRAMES-ONLY标签适用于整个播放列表。</p> <p>其格式为:<code>EXT-X-I-FRAMES-ONLY</code></p> <h3 id="434-master-playlist-tags">4.3.4. Master Playlist Tags</h3> <p>Master播放列表标签的定义了多流,多译和一些其他的全局参数。</p> <p>Master播放列表标签不能在出现在Media播放列表中。</p> <p>客户端必须拒绝同时包含Master播放列表标签和Media播放列表标签或媒体段标签的播放列表。</p> <h4 id="4341-ext-x-media">4.3.4.1. EXT-X-MEDIA</h4> <p>该EXT-X-MEDIA标签用于Media播放列表的翻译功能,相同内容的不同翻译语言。</p> <p>例如,三个EXT-X-MEDIA标签能够标识出英语,法语,中文等翻译语言。或者,两个EXT-X-MEDIA标签来标识出对于同一内容的,不同播放角度。</p> <p>其格式为:<code>#EXT-X-MEDIA:<attribute-list></code></p> <p>例子:</p> <pre class="prettyprint"><code class=" hljs lasso"><span class="hljs-variable">#EXT</span><span class="hljs-attribute">-X</span><span class="hljs-attribute">-MEDIA</span>:<span class="hljs-keyword">TYPE</span><span class="hljs-subst">=</span>SUBTITLES,<span class="hljs-keyword">GROUP</span><span class="hljs-attribute">-ID</span><span class="hljs-subst">=</span><span class="hljs-string">"subs"</span>,NAME<span class="hljs-subst">=</span><span class="hljs-string">"English"</span>,DEFAULT<span class="hljs-subst">=</span>YES,AUTOSELECT<span class="hljs-subst">=</span>YES,FORCED<span class="hljs-subst">=</span>NO,LANGUAGE<span class="hljs-subst">=</span><span class="hljs-string">"en"</span>,CHARACTERISTICS<span class="hljs-subst">=</span><span class="hljs-string">"public.accessibility.transcribes-spoken-dialog, public.accessibility.describes-music-and-sound"</span>,URI<span class="hljs-subst">=</span><span class="hljs-string">"subtitles/eng/prog_index.m3u8"</span> <span class="hljs-variable">#EXT</span><span class="hljs-attribute">-X</span><span class="hljs-attribute">-MEDIA</span>:<span class="hljs-keyword">TYPE</span><span class="hljs-subst">=</span>SUBTITLES,<span class="hljs-keyword">GROUP</span><span class="hljs-attribute">-ID</span><span class="hljs-subst">=</span><span class="hljs-string">"subs"</span>,NAME<span class="hljs-subst">=</span><span class="hljs-string">"English (Forced)"</span>,DEFAULT<span class="hljs-subst">=</span>NO,AUTOSELECT<span class="hljs-subst">=</span>NO,FORCED<span class="hljs-subst">=</span>YES,LANGUAGE<span class="hljs-subst">=</span><span class="hljs-string">"en"</span>,URI<span class="hljs-subst">=</span><span class="hljs-string">"subtitles/eng_forced/prog_index.m3u8"</span> <span class="hljs-variable">#EXT</span><span class="hljs-attribute">-X</span><span class="hljs-attribute">-MEDIA</span>:<span class="hljs-keyword">TYPE</span><span class="hljs-subst">=</span>SUBTITLES,<span class="hljs-keyword">GROUP</span><span class="hljs-attribute">-ID</span><span class="hljs-subst">=</span><span class="hljs-string">"subs"</span>,NAME<span class="hljs-subst">=</span><span class="hljs-string">"Français"</span>,DEFAULT<span class="hljs-subst">=</span>NO,AUTOSELECT<span class="hljs-subst">=</span>YES,FORCED<span class="hljs-subst">=</span>NO,LANGUAGE<span class="hljs-subst">=</span><span class="hljs-string">"fr"</span>,CHARACTERISTICS<span class="hljs-subst">=</span><span class="hljs-string">"public.accessibility.transcribes-spoken-dialog, public.accessibility.describes-music-and-sound"</span>,URI<span class="hljs-subst">=</span><span class="hljs-string">"subtitles/fra/prog_index.m3u8"</span> <span class="hljs-variable">#EXT</span><span class="hljs-attribute">-X</span><span class="hljs-attribute">-MEDIA</span>:<span class="hljs-keyword">TYPE</span><span class="hljs-subst">=</span>SUBTITLES,<span class="hljs-keyword">GROUP</span><span class="hljs-attribute">-ID</span><span class="hljs-subst">=</span><span class="hljs-string">"subs"</span>,NAME<span class="hljs-subst">=</span><span class="hljs-string">"Français (Forced)"</span>,DEFAULT<span class="hljs-subst">=</span>NO,AUTOSELECT<span class="hljs-subst">=</span>NO,FORCED<span class="hljs-subst">=</span>YES,LANGUAGE<span class="hljs-subst">=</span><span class="hljs-string">"fr"</span>,URI<span class="hljs-subst">=</span><span class="hljs-string">"subtitles/fra_forced/prog_index.m3u8"</span> <span class="hljs-variable">#EXT</span><span class="hljs-attribute">-X</span><span class="hljs-attribute">-MEDIA</span>:<span class="hljs-keyword">TYPE</span><span class="hljs-subst">=</span>SUBTITLES,<span class="hljs-keyword">GROUP</span><span class="hljs-attribute">-ID</span><span class="hljs-subst">=</span><span class="hljs-string">"subs"</span>,NAME<span class="hljs-subst">=</span><span class="hljs-string">"Español"</span>,DEFAULT<span class="hljs-subst">=</span>NO,AUTOSELECT<span class="hljs-subst">=</span>YES,FORCED<span class="hljs-subst">=</span>NO,LANGUAGE<span class="hljs-subst">=</span><span class="hljs-string">"es"</span>,CHARACTERISTICS<span class="hljs-subst">=</span><span class="hljs-string">"public.accessibility.transcribes-spoken-dialog, public.accessibility.describes-music-and-sound"</span>,URI<span class="hljs-subst">=</span><span class="hljs-string">"subtitles/spa/prog_index.m3u8"</span> <span class="hljs-variable">#EXT</span><span class="hljs-attribute">-X</span><span class="hljs-attribute">-MEDIA</span>:<span class="hljs-keyword">TYPE</span><span class="hljs-subst">=</span>SUBTITLES,<span class="hljs-keyword">GROUP</span><span class="hljs-attribute">-ID</span><span class="hljs-subst">=</span><span class="hljs-string">"subs"</span>,NAME<span class="hljs-subst">=</span><span class="hljs-string">"Español (Forced)"</span>,DEFAULT<span class="hljs-subst">=</span>NO,AUTOSELECT<span class="hljs-subst">=</span>NO,FORCED<span class="hljs-subst">=</span>YES,LANGUAGE<span class="hljs-subst">=</span><span class="hljs-string">"es"</span>,URI<span class="hljs-subst">=</span><span class="hljs-string">"subtitles/spa_forced/prog_index.m3u8"</span> <span class="hljs-variable">#EXT</span><span class="hljs-attribute">-X</span><span class="hljs-attribute">-MEDIA</span>:<span class="hljs-keyword">TYPE</span><span class="hljs-subst">=</span>SUBTITLES,<span class="hljs-keyword">GROUP</span><span class="hljs-attribute">-ID</span><span class="hljs-subst">=</span><span class="hljs-string">"subs"</span>,NAME<span class="hljs-subst">=</span><span class="hljs-string">"日本語"</span>,DEFAULT<span class="hljs-subst">=</span>NO,AUTOSELECT<span class="hljs-subst">=</span>YES,FORCED<span class="hljs-subst">=</span>NO,LANGUAGE<span class="hljs-subst">=</span><span class="hljs-string">"ja"</span>,CHARACTERISTICS<span class="hljs-subst">=</span><span class="hljs-string">"public.accessibility.transcribes-spoken-dialog, public.accessibility.describes-music-and-sound"</span>,URI<span class="hljs-subst">=</span><span class="hljs-string">"subtitles/jpn/prog_index.m3u8"</span> <span class="hljs-variable">#EXT</span><span class="hljs-attribute">-X</span><span class="hljs-attribute">-MEDIA</span>:<span class="hljs-keyword">TYPE</span><span class="hljs-subst">=</span>SUBTITLES,<span class="hljs-keyword">GROUP</span><span class="hljs-attribute">-ID</span><span class="hljs-subst">=</span><span class="hljs-string">"subs"</span>,NAME<span class="hljs-subst">=</span><span class="hljs-string">"日本語 (Forced)"</span>,DEFAULT<span class="hljs-subst">=</span>NO,AUTOSELECT<span class="hljs-subst">=</span>NO,FORCED<span class="hljs-subst">=</span>YES,LANGUAGE<span class="hljs-subst">=</span><span class="hljs-string">"ja"</span>,URI<span class="hljs-subst">=</span><span class="hljs-string">"subtitles/jpn_forced/prog_index.m3u8"</span></code></pre> <p>属性定义如下:</p> <ol> <li><p>TYPE:该值是一个枚举字符串,合法的字符串有:AUDIO,VIDEO,SUBTITLES,CLOSED-CAPTIONS[http://baike.baidu.com/link?url=fVkQIBnGTiLMZ2GtkBD4VcQ-pP7-q98pvfzqoHeAHRcxXM9gJLSCHXQZvbgMd-VwRmxiEDZuFDrZHIPQz1g25_]. 这个属性是必须的。</p></li> <li><p>URI:该值是一个Media播放文件的URL引用字符串。此属性是可选的。如果TYPE是CLOSED-CAPTIONS,则URI一定不能存在。</p></li> <li><p>GROUP-ID: 用于标识翻译属于那个组。此属性是必须的。 </p></li> <li><p>LANGUAGE: 翻译语言,此属性是可选的。</p></li> <li><p>ASSOC-LANGUAGE:</p></li> <li><p>NAME: 翻译语言名,此属性是必须的。</p></li> <li><p>DEFAULT: 该值是一个枚举字符串,合法的值有:YES,NO。如果值是YES,那代表客户端应该使用这个翻译内容,在用户没有其他选择时。此属性是可选的。如果没有此属性,则是NO</p></li> <li><p>AUTOSELECT: 该值是一个枚举字符串,合法的值有:YES,NO。此属性是可选的。如果没有此属性,则表示其值是NO,如果该值是YES,当没有用户偏好时,匹配当前的用户环境,如选择系统的语言,来使用此翻译。</p></li> <li><p>FORCED:该值是一个枚举字符串,合法的值有:YES,NO。此属性是可选的。如果没有此属性,则表示其值是NO。只有TYPE为SUBTITLES,FORCE属性才能存在。</p></li> </ol> <h5 id="43411-翻译组rendition-groups">4.3.4.1.1. 翻译组(Rendition Groups)</h5> <p>一组中的一个或多个EXT-X-MEDIA标签具有相同的GROUP-ID值,与同类型的值定义了一个翻译集合。</p> <p>每个成员必须是同一内容的另一种翻译,否则可能会出现播放错误。</p> <p>在播放列表中的所有EXT-X-MEDIA标签必须满足一下约束:</p> <ul> <li>在同一组中的所有EXT-X-MEDIA标签必须有不同的名称属性。</li> <li>一组中不允许有多个成员的默认属性是YES</li> <li>组内成员的AUTOSELECT的属性如果为YES,那么LANGUAGE属性必须有唯一值</li> </ul> <p>一个播放列表可能包含相同TYPE的多个组,以提供媒体类型的多种编码。如果这么做,相同TYPE的多个组,组内必须有相同的成员,相同的成员必须具有除URI之外的相同属性</p> <h4 id="4342-ext-x-stream-inf">4.3.4.2. EXT-X-STREAM-INF</h4> <p>该EXT-X-STREAM-INF标签用于指定多码率流的信息。</p> <p>URI行跟在EXT-X-STREAM-INF标签行的后面,用于指定Media播放列表。该URI是必须存在的。</p> <p>格式如下:</p> <pre class="prettyprint"><code class=" hljs lasso"><span class="hljs-variable">#EXT</span><span class="hljs-attribute">-X</span><span class="hljs-attribute">-STREAM</span><span class="hljs-attribute">-INF</span>:<span class="hljs-subst"><</span>attribute<span class="hljs-attribute">-list</span><span class="hljs-subst">></span> <span class="hljs-subst"><</span>URI<span class="hljs-subst">></span></code></pre> <p>属性定义如下:</p> <ol> <li><p>BANDWIDTH:该值是每秒比特的十进制整数,它代表了流高峰段的比特率。每个EXT-X-STREAM-INF标签必须包含BANDWIDTH属性</p></li> <li><p>AVERAGE-BANDWIDTH:该值是每秒比特的十进制整数,它代表了流平均的比特率。AVERAGE-BANDWIDTH标签是可选的。</p></li> <li><p>CODECS:该值是使用逗号(,)分隔的引用字符串,其中每一个指定了媒体采样类型,每个EXT-X-STREAM-INF标签应该包含CODECS属性。</p></li> <li><p>RESOLUTION(分辨率):该值是一个整数的用于描述视频的最佳像素分辨率,该RESOLUTION是可选的,如果流包含视频,推荐有这个属性。</p></li> <li><p>FRAME-RATE:该值是一个浮点数用于描述视频的最大帧。该FRAME-RATE是可选的,如果流包含视频,推荐有这个属性。</p></li> <li><p>AUDIO:该值是一个引用字符串,该值是可选的。</p></li> <li><p>VIDEO:该值是一个引用字符串,该值是可选的。</p></li> <li><p>SUBTITLES:该值是一个引用字符串,该值是可选的。</p></li> <li><p>CLOSED-CAPTIONS:该值是一个引用字符串,该值是可选的。</p></li> </ol> <h5 id="43421-alternative-renditions">4.3.4.2.1. Alternative Renditions</h5> <h4 id="4343-ext-x-i-frame-stream-inf">4.3.4.3. EXT-X-I-FRAME-STREAM-INF</h4> <h4 id="4344-ext-x-session-data">4.3.4.4. EXT-X-SESSION-DATA</h4> <h4 id="4345-ext-x-session-key">4.3.4.5. EXT-X-SESSION-KEY</h4> <h3 id="435-media-or-master-playlist-tags">4.3.5. Media or Master Playlist Tags</h3> <h4 id="4351-ext-x-independent-segments">4.3.5.1. EXT-X-INDEPENDENT-SEGMENTS</h4> <h4 id="4352-ext-x-start">4.3.5.2. EXT-X-START</h4> <h1 id="5-解密文件key-files">5. (解密文件)Key files</h1> <h2 id="51-structure-of-key-files">5.1. Structure of Key files</h2> <p>EXT-X-KEY标签的URI属性用于标识秘钥文件。用于解密TS片。</p> <p>[AES128]加密使用16字节的密钥。</p> <h2 id="52-iv-for-aes128">5.2. IV for [AES_128]</h2> <p>加密和解密时,[AES_128]要求提供16字节的初始化向量(IV)。IV增加了密码的强度。</p> <h1 id="6-客户端服务端职责clientserver-responsibilities">6. (客户端/服务端职责)Client/Server Responsibilities</h1> <h2 id="61-introduction">6.1. Introduction</h2> <h2 id="62-server-responsibilities">6.2. Server Responsibilities</h2> <h3 id="621-general-server-responsibilities">6.2.1. General Server Responsibilities</h3> <h3 id="622-live-playlists">6.2.2. Live Playlists</h3> <h3 id="623-encrypting-media-segments">6.2.3. Encrypting Media Segments</h3> <h3 id="624-providing-variant-streams">6.2.4. Providing Variant Streams</h3> <h2 id="63-client-responsibilities">6.3. Client Responsibilities</h2> <h3 id="631-general-client-responsibilities">6.3.1. General Client Responsibilities</h3> <h3 id="632-loading-the-media-playlist-file">6.3.2. Loading the Media Playlist file</h3> <h3 id="633-playing-the-media-playlist-file">6.3.3. Playing the Media Playlist file</h3> <h3 id="634-reloading-the-media-playlist-file">6.3.4. Reloading the Media Playlist file</h3> <h3 id="635-determining-the-next-segment-to-load">6.3.5. Determining the next segment to load</h3> <h3 id="636-decrypting-encrypted-media-segments">6.3.6. Decrypting encrypted Media Segments</h3> <h1 id="7-协议版本的兼容性protocol-version-compatibility">7. 协议版本的兼容性(Protocol version compatibility)</h1> <p>使用EXT-X-VERSION标签指定协议的兼容性。如果不存在EXT-X-VERSION标签,客户端应该拒绝播放。</p> <p>EXT-X-VERSION:2(以上),支持EXT-X-KEY的IV属性</p> <p>EXT-X-VERSION:3(以上),支持EXTINF浮点数值</p> <p>EXT-X-VERSION:4(以上),支持EXT-X-BYTERANGE标签,支持EXT-X-I-FRAMES-ONLY标签</p> <p>EXT-X-VERSION:5(以上),支持EXT-X-KEY的KEYFORMAT和KEYFORMATVERSIONS属性,支持EXT-X-MAP标签。</p> <p>EXT-X-VERSION:6(以上),支持EXT-X-MAP标签内不支持EXT-X-I-FRAMES-ONLY。</p> <p>EXT-X-VERSION:7(以上),支持EXT-X-MEDIA标签的INSTREAM-ID有SERVICE值</p> <p>EXT-X-STREAM-INF和EXT-X-I-FRAME-STREAM-INF标签的PROGRAM-ID属性在6版本被移除。</p> <p>EXT-X-ALLOW-CACHE标签在7版本被移除。</p> <h1 id="8-播放列表的例子playlist-examples">8. 播放列表的例子(Playlist Examples)</h1> <h2 id="81-简单的media播放列表-simple-media-playlist">8.1. 简单的Media播放列表 Simple Media Playlist</h2> <pre class="prettyprint"><code class=" hljs avrasm"><span class="hljs-preprocessor">#EXTM3U</span> <span class="hljs-preprocessor">#EXT-X-TARGETDURATION:10</span> <span class="hljs-preprocessor">#EXTINF:9.009,</span> <span class="hljs-label">http:</span>//media<span class="hljs-preprocessor">.example</span><span class="hljs-preprocessor">.com</span>/first<span class="hljs-preprocessor">.ts</span> <span class="hljs-preprocessor">#EXTINF:9.009,</span> <span class="hljs-label">http:</span>//media<span class="hljs-preprocessor">.example</span><span class="hljs-preprocessor">.com</span>/second<span class="hljs-preprocessor">.ts</span> <span class="hljs-preprocessor">#EXTINF:3.003,</span> <span class="hljs-label">http:</span>//media<span class="hljs-preprocessor">.example</span><span class="hljs-preprocessor">.com</span>/third<span class="hljs-preprocessor">.ts</span> <span class="hljs-preprocessor">#EXT-X-ENDLIST</span></code></pre> <h2 id="82-https的视频直播流live-media-playlist-using-https">8.2. Https的视频直播流(Live Media Playlist, using HTTPS)</h2> <pre class="prettyprint"><code class=" hljs avrasm"><span class="hljs-preprocessor">#EXTM3U</span> <span class="hljs-preprocessor">#EXT-X-VERSION:3</span> <span class="hljs-preprocessor">#EXT-X-TARGETDURATION:8</span> <span class="hljs-preprocessor">#EXT-X-MEDIA-SEQUENCE:2680</span> <span class="hljs-preprocessor">#EXTINF:7.975,</span> <span class="hljs-label">https:</span>//priv<span class="hljs-preprocessor">.example</span><span class="hljs-preprocessor">.com</span>/fileSequence2680<span class="hljs-preprocessor">.ts</span> <span class="hljs-preprocessor">#EXTINF:7.941,</span> <span class="hljs-label">https:</span>//priv<span class="hljs-preprocessor">.example</span><span class="hljs-preprocessor">.com</span>/fileSequence2681<span class="hljs-preprocessor">.ts</span> <span class="hljs-preprocessor">#EXTINF:7.975,</span> <span class="hljs-label">https:</span>//priv<span class="hljs-preprocessor">.example</span><span class="hljs-preprocessor">.com</span>/fileSequence2682<span class="hljs-preprocessor">.ts</span></code></pre> <h3 id="83-加密媒体段的播放列表playlist-with-encrypted-media-segments">8.3. 加密媒体段的播放列表(Playlist with encrypted Media Segments)</h3> <pre class="prettyprint"><code class=" hljs oxygene">#EXTM3U #EXT-X-VERSION:<span class="hljs-number">3</span> #EXT-X-MEDIA-<span class="hljs-keyword">SEQUENCE</span>:<span class="hljs-number">7794</span> #EXT-X-TARGETDURATION:<span class="hljs-number">15</span> #EXT-X-KEY:<span class="hljs-function"><span class="hljs-keyword">METHOD</span>=<span class="hljs-title">AES</span>-128,<span class="hljs-title">URI</span>="<span class="hljs-title">https</span>:</span><span class="hljs-comment">//priv.example.com/key.php?r=52"</span> #EXTINF:<span class="hljs-number">2.833</span>, http:<span class="hljs-comment">//media.example.com/fileSequence52-A.ts</span> #EXTINF:<span class="hljs-number">15.0</span>, http:<span class="hljs-comment">//media.example.com/fileSequence52-B.ts</span> #EXTINF:<span class="hljs-number">13.333</span>, http:<span class="hljs-comment">//media.example.com/fileSequence52-C.ts</span> #EXT-X-KEY:<span class="hljs-function"><span class="hljs-keyword">METHOD</span>=<span class="hljs-title">AES</span>-128,<span class="hljs-title">URI</span>="<span class="hljs-title">https</span>:</span><span class="hljs-comment">//priv.example.com/key.php?r=53"</span> #EXTINF:<span class="hljs-number">15.0</span>, http:<span class="hljs-comment">//media.example.com/fileSequence53-A.ts</span> </code></pre> <h2 id="84-master播放列表master-playlist">8.4. Master播放列表(Master Playlist)</h2> <pre class="prettyprint"><code class=" hljs lasso"><span class="hljs-variable">#EXTM3U</span> <span class="hljs-variable">#EXT</span><span class="hljs-attribute">-X</span><span class="hljs-attribute">-STREAM</span><span class="hljs-attribute">-INF</span>:BANDWIDTH<span class="hljs-subst">=</span><span class="hljs-number">1280000</span>,<span class="hljs-keyword">AVERAGE</span><span class="hljs-attribute">-BANDWIDTH</span><span class="hljs-subst">=</span><span class="hljs-number">1000000</span> http:<span class="hljs-comment">//example.com/low.m3u8</span> <span class="hljs-variable">#EXT</span><span class="hljs-attribute">-X</span><span class="hljs-attribute">-STREAM</span><span class="hljs-attribute">-INF</span>:BANDWIDTH<span class="hljs-subst">=</span><span class="hljs-number">2560000</span>,<span class="hljs-keyword">AVERAGE</span><span class="hljs-attribute">-BANDWIDTH</span><span class="hljs-subst">=</span><span class="hljs-number">2000000</span> http:<span class="hljs-comment">//example.com/mid.m3u8</span> <span class="hljs-variable">#EXT</span><span class="hljs-attribute">-X</span><span class="hljs-attribute">-STREAM</span><span class="hljs-attribute">-INF</span>:BANDWIDTH<span class="hljs-subst">=</span><span class="hljs-number">7680000</span>,<span class="hljs-keyword">AVERAGE</span><span class="hljs-attribute">-BANDWIDTH</span><span class="hljs-subst">=</span><span class="hljs-number">6000000</span> http:<span class="hljs-comment">//example.com/hi.m3u8</span> <span class="hljs-variable">#EXT</span><span class="hljs-attribute">-X</span><span class="hljs-attribute">-STREAM</span><span class="hljs-attribute">-INF</span>:BANDWIDTH<span class="hljs-subst">=</span><span class="hljs-number">65000</span>,CODECS<span class="hljs-subst">=</span><span class="hljs-string">"mp4a.40.5"</span> http:<span class="hljs-comment">//example.com/audio-only.m3u8</span> </code></pre> <h2 id="85-master-playlist-with-i-frames">8.5. Master Playlist with I-Frames</h2> <pre class="prettyprint"><code class=" hljs lasso"><span class="hljs-variable">#EXTM3U</span> <span class="hljs-variable">#EXT</span><span class="hljs-attribute">-X</span><span class="hljs-attribute">-STREAM</span><span class="hljs-attribute">-INF</span>:BANDWIDTH<span class="hljs-subst">=</span><span class="hljs-number">1280000</span> low/audio<span class="hljs-attribute">-video</span><span class="hljs-built_in">.</span>m3u8 <span class="hljs-variable">#EXT</span><span class="hljs-attribute">-X</span><span class="hljs-attribute">-I</span><span class="hljs-attribute">-FRAME</span><span class="hljs-attribute">-STREAM</span><span class="hljs-attribute">-INF</span>:BANDWIDTH<span class="hljs-subst">=</span><span class="hljs-number">86000</span>,URI<span class="hljs-subst">=</span><span class="hljs-string">"low/iframe.m3u8"</span> <span class="hljs-variable">#EXT</span><span class="hljs-attribute">-X</span><span class="hljs-attribute">-STREAM</span><span class="hljs-attribute">-INF</span>:BANDWIDTH<span class="hljs-subst">=</span><span class="hljs-number">2560000</span> mid/audio<span class="hljs-attribute">-video</span><span class="hljs-built_in">.</span>m3u8 <span class="hljs-variable">#EXT</span><span class="hljs-attribute">-X</span><span class="hljs-attribute">-I</span><span class="hljs-attribute">-FRAME</span><span class="hljs-attribute">-STREAM</span><span class="hljs-attribute">-INF</span>:BANDWIDTH<span class="hljs-subst">=</span><span class="hljs-number">150000</span>,URI<span class="hljs-subst">=</span><span class="hljs-string">"mid/iframe.m3u8"</span> <span class="hljs-variable">#EXT</span><span class="hljs-attribute">-X</span><span class="hljs-attribute">-STREAM</span><span class="hljs-attribute">-INF</span>:BANDWIDTH<span class="hljs-subst">=</span><span class="hljs-number">7680000</span> hi/audio<span class="hljs-attribute">-video</span><span class="hljs-built_in">.</span>m3u8 <span class="hljs-variable">#EXT</span><span class="hljs-attribute">-X</span><span class="hljs-attribute">-I</span><span class="hljs-attribute">-FRAME</span><span class="hljs-attribute">-STREAM</span><span class="hljs-attribute">-INF</span>:BANDWIDTH<span class="hljs-subst">=</span><span class="hljs-number">550000</span>,URI<span class="hljs-subst">=</span><span class="hljs-string">"hi/iframe.m3u8"</span> <span class="hljs-variable">#EXT</span><span class="hljs-attribute">-X</span><span class="hljs-attribute">-STREAM</span><span class="hljs-attribute">-INF</span>:BANDWIDTH<span class="hljs-subst">=</span><span class="hljs-number">65000</span>,CODECS<span class="hljs-subst">=</span><span class="hljs-string">"mp4a.40.5"</span> audio<span class="hljs-attribute">-only</span><span class="hljs-built_in">.</span>m3u8</code></pre> <h2 id="86-master-playlist-with-alternative-audio">8.6. Master Playlist with Alternative audio</h2> <pre class="prettyprint"><code class=" hljs lasso"><span class="hljs-variable">#EXTM3U</span> <span class="hljs-variable">#EXT</span><span class="hljs-attribute">-X</span><span class="hljs-attribute">-MEDIA</span>:<span class="hljs-keyword">TYPE</span><span class="hljs-subst">=</span>AUDIO,<span class="hljs-keyword">GROUP</span><span class="hljs-attribute">-ID</span><span class="hljs-subst">=</span><span class="hljs-string">"aac"</span>,NAME<span class="hljs-subst">=</span><span class="hljs-string">"English"</span>, DEFAULT<span class="hljs-subst">=</span>YES,AUTOSELECT<span class="hljs-subst">=</span>YES,LANGUAGE<span class="hljs-subst">=</span><span class="hljs-string">"en"</span>, URI<span class="hljs-subst">=</span><span class="hljs-string">"main/english-audio.m3u8"</span> <span class="hljs-variable">#EXT</span><span class="hljs-attribute">-X</span><span class="hljs-attribute">-MEDIA</span>:<span class="hljs-keyword">TYPE</span><span class="hljs-subst">=</span>AUDIO,<span class="hljs-keyword">GROUP</span><span class="hljs-attribute">-ID</span><span class="hljs-subst">=</span><span class="hljs-string">"aac"</span>,NAME<span class="hljs-subst">=</span><span class="hljs-string">"Deutsch"</span>, DEFAULT<span class="hljs-subst">=</span>NO,AUTOSELECT<span class="hljs-subst">=</span>YES,LANGUAGE<span class="hljs-subst">=</span><span class="hljs-string">"de"</span>, URI<span class="hljs-subst">=</span><span class="hljs-string">"main/german-audio.m3u8"</span> <span class="hljs-variable">#EXT</span><span class="hljs-attribute">-X</span><span class="hljs-attribute">-MEDIA</span>:<span class="hljs-keyword">TYPE</span><span class="hljs-subst">=</span>AUDIO,<span class="hljs-keyword">GROUP</span><span class="hljs-attribute">-ID</span><span class="hljs-subst">=</span><span class="hljs-string">"aac"</span>,NAME<span class="hljs-subst">=</span><span class="hljs-string">"Commentary"</span>, DEFAULT<span class="hljs-subst">=</span>NO,AUTOSELECT<span class="hljs-subst">=</span>NO,LANGUAGE<span class="hljs-subst">=</span><span class="hljs-string">"en"</span>, URI<span class="hljs-subst">=</span><span class="hljs-string">"commentary/audio-only.m3u8"</span> <span class="hljs-variable">#EXT</span><span class="hljs-attribute">-X</span><span class="hljs-attribute">-STREAM</span><span class="hljs-attribute">-INF</span>:BANDWIDTH<span class="hljs-subst">=</span><span class="hljs-number">1280000</span>,CODECS<span class="hljs-subst">=</span><span class="hljs-string">"..."</span>,AUDIO<span class="hljs-subst">=</span><span class="hljs-string">"aac"</span> low/video<span class="hljs-attribute">-only</span><span class="hljs-built_in">.</span>m3u8 <span class="hljs-variable">#EXT</span><span class="hljs-attribute">-X</span><span class="hljs-attribute">-STREAM</span><span class="hljs-attribute">-INF</span>:BANDWIDTH<span class="hljs-subst">=</span><span class="hljs-number">2560000</span>,CODECS<span class="hljs-subst">=</span><span class="hljs-string">"..."</span>,AUDIO<span class="hljs-subst">=</span><span class="hljs-string">"aac"</span> mid/video<span class="hljs-attribute">-only</span><span class="hljs-built_in">.</span>m3u8 <span class="hljs-variable">#EXT</span><span class="hljs-attribute">-X</span><span class="hljs-attribute">-STREAM</span><span class="hljs-attribute">-INF</span>:BANDWIDTH<span class="hljs-subst">=</span><span class="hljs-number">7680000</span>,CODECS<span class="hljs-subst">=</span><span class="hljs-string">"..."</span>,AUDIO<span class="hljs-subst">=</span><span class="hljs-string">"aac"</span> hi/video<span class="hljs-attribute">-only</span><span class="hljs-built_in">.</span>m3u8 <span class="hljs-variable">#EXT</span><span class="hljs-attribute">-X</span><span class="hljs-attribute">-STREAM</span><span class="hljs-attribute">-INF</span>:BANDWIDTH<span class="hljs-subst">=</span><span class="hljs-number">65000</span>,CODECS<span class="hljs-subst">=</span><span class="hljs-string">"mp4a.40.5"</span>,AUDIO<span class="hljs-subst">=</span><span class="hljs-string">"aac"</span> main/english<span class="hljs-attribute">-audio</span><span class="hljs-built_in">.</span>m3u8 </code></pre> <h2 id="87-master-playlist-with-alternative-video">8.7. Master Playlist with Alternative video</h2> <pre class="prettyprint"><code class=" hljs lasso"><span class="hljs-variable">#EXTM3U</span> <span class="hljs-variable">#EXT</span><span class="hljs-attribute">-X</span><span class="hljs-attribute">-MEDIA</span>:<span class="hljs-keyword">TYPE</span><span class="hljs-subst">=</span>VIDEO,<span class="hljs-keyword">GROUP</span><span class="hljs-attribute">-ID</span><span class="hljs-subst">=</span><span class="hljs-string">"low"</span>,NAME<span class="hljs-subst">=</span><span class="hljs-string">"Main"</span>, DEFAULT<span class="hljs-subst">=</span>YES,URI<span class="hljs-subst">=</span><span class="hljs-string">"low/main/audio-video.m3u8"</span> <span class="hljs-variable">#EXT</span><span class="hljs-attribute">-X</span><span class="hljs-attribute">-MEDIA</span>:<span class="hljs-keyword">TYPE</span><span class="hljs-subst">=</span>VIDEO,<span class="hljs-keyword">GROUP</span><span class="hljs-attribute">-ID</span><span class="hljs-subst">=</span><span class="hljs-string">"low"</span>,NAME<span class="hljs-subst">=</span><span class="hljs-string">"Centerfield"</span>, DEFAULT<span class="hljs-subst">=</span>NO,URI<span class="hljs-subst">=</span><span class="hljs-string">"low/centerfield/audio-video.m3u8"</span> <span class="hljs-variable">#EXT</span><span class="hljs-attribute">-X</span><span class="hljs-attribute">-MEDIA</span>:<span class="hljs-keyword">TYPE</span><span class="hljs-subst">=</span>VIDEO,<span class="hljs-keyword">GROUP</span><span class="hljs-attribute">-ID</span><span class="hljs-subst">=</span><span class="hljs-string">"low"</span>,NAME<span class="hljs-subst">=</span><span class="hljs-string">"Dugout"</span>, DEFAULT<span class="hljs-subst">=</span>NO,URI<span class="hljs-subst">=</span><span class="hljs-string">"low/dugout/audio-video.m3u8"</span> <span class="hljs-variable">#EXT</span><span class="hljs-attribute">-X</span><span class="hljs-attribute">-STREAM</span><span class="hljs-attribute">-INF</span>:BANDWIDTH<span class="hljs-subst">=</span><span class="hljs-number">1280000</span>,CODECS<span class="hljs-subst">=</span><span class="hljs-string">"..."</span>,VIDEO<span class="hljs-subst">=</span><span class="hljs-string">"low"</span> low/main/audio<span class="hljs-attribute">-video</span><span class="hljs-built_in">.</span>m3u8 <span class="hljs-variable">#EXT</span><span class="hljs-attribute">-X</span><span class="hljs-attribute">-MEDIA</span>:<span class="hljs-keyword">TYPE</span><span class="hljs-subst">=</span>VIDEO,<span class="hljs-keyword">GROUP</span><span class="hljs-attribute">-ID</span><span class="hljs-subst">=</span><span class="hljs-string">"mid"</span>,NAME<span class="hljs-subst">=</span><span class="hljs-string">"Main"</span>, DEFAULT<span class="hljs-subst">=</span>YES,URI<span class="hljs-subst">=</span><span class="hljs-string">"mid/main/audio-video.m3u8"</span> <span class="hljs-variable">#EXT</span><span class="hljs-attribute">-X</span><span class="hljs-attribute">-MEDIA</span>:<span class="hljs-keyword">TYPE</span><span class="hljs-subst">=</span>VIDEO,<span class="hljs-keyword">GROUP</span><span class="hljs-attribute">-ID</span><span class="hljs-subst">=</span><span class="hljs-string">"mid"</span>,NAME<span class="hljs-subst">=</span><span class="hljs-string">"Centerfield"</span>, DEFAULT<span class="hljs-subst">=</span>NO,URI<span class="hljs-subst">=</span><span class="hljs-string">"mid/centerfield/audio-video.m3u8"</span> <span class="hljs-variable">#EXT</span><span class="hljs-attribute">-X</span><span class="hljs-attribute">-MEDIA</span>:<span class="hljs-keyword">TYPE</span><span class="hljs-subst">=</span>VIDEO,<span class="hljs-keyword">GROUP</span><span class="hljs-attribute">-ID</span><span class="hljs-subst">=</span><span class="hljs-string">"mid"</span>,NAME<span class="hljs-subst">=</span><span class="hljs-string">"Dugout"</span>, DEFAULT<span class="hljs-subst">=</span>NO,URI<span class="hljs-subst">=</span><span class="hljs-string">"mid/dugout/audio-video.m3u8"</span> <span class="hljs-variable">#EXT</span><span class="hljs-attribute">-X</span><span class="hljs-attribute">-STREAM</span><span class="hljs-attribute">-INF</span>:BANDWIDTH<span class="hljs-subst">=</span><span class="hljs-number">2560000</span>,CODECS<span class="hljs-subst">=</span><span class="hljs-string">"..."</span>,VIDEO<span class="hljs-subst">=</span><span class="hljs-string">"mid"</span> mid/main/audio<span class="hljs-attribute">-video</span><span class="hljs-built_in">.</span>m3u8 <span class="hljs-variable">#EXT</span><span class="hljs-attribute">-X</span><span class="hljs-attribute">-MEDIA</span>:<span class="hljs-keyword">TYPE</span><span class="hljs-subst">=</span>VIDEO,<span class="hljs-keyword">GROUP</span><span class="hljs-attribute">-ID</span><span class="hljs-subst">=</span><span class="hljs-string">"hi"</span>,NAME<span class="hljs-subst">=</span><span class="hljs-string">"Main"</span>, DEFAULT<span class="hljs-subst">=</span>YES,URI<span class="hljs-subst">=</span><span class="hljs-string">"hi/main/audio-video.m3u8"</span> <span class="hljs-variable">#EXT</span><span class="hljs-attribute">-X</span><span class="hljs-attribute">-MEDIA</span>:<span class="hljs-keyword">TYPE</span><span class="hljs-subst">=</span>VIDEO,<span class="hljs-keyword">GROUP</span><span class="hljs-attribute">-ID</span><span class="hljs-subst">=</span><span class="hljs-string">"hi"</span>,NAME<span class="hljs-subst">=</span><span class="hljs-string">"Centerfield"</span>, DEFAULT<span class="hljs-subst">=</span>NO,URI<span class="hljs-subst">=</span><span class="hljs-string">"hi/centerfield/audio-video.m3u8"</span> <span class="hljs-variable">#EXT</span><span class="hljs-attribute">-X</span><span class="hljs-attribute">-MEDIA</span>:<span class="hljs-keyword">TYPE</span><span class="hljs-subst">=</span>VIDEO,<span class="hljs-keyword">GROUP</span><span class="hljs-attribute">-ID</span><span class="hljs-subst">=</span><span class="hljs-string">"hi"</span>,NAME<span class="hljs-subst">=</span><span class="hljs-string">"Dugout"</span>, DEFAULT<span class="hljs-subst">=</span>NO,URI<span class="hljs-subst">=</span><span class="hljs-string">"hi/dugout/audio-video.m3u8"</span> <span class="hljs-variable">#EXT</span><span class="hljs-attribute">-X</span><span class="hljs-attribute">-STREAM</span><span class="hljs-attribute">-INF</span>:BANDWIDTH<span class="hljs-subst">=</span><span class="hljs-number">7680000</span>,CODECS<span class="hljs-subst">=</span><span class="hljs-string">"..."</span>,VIDEO<span class="hljs-subst">=</span><span class="hljs-string">"hi"</span> hi/main/audio<span class="hljs-attribute">-video</span><span class="hljs-built_in">.</span>m3u8 </code></pre> </div> </div> </div> </div> </div> <!--PC和WAP自适应版--> <div id="SOHUCS" sid="1296117375933947904"></div> <script type="text/javascript" src="/views/front/js/chanyan.js"></script> <!-- 文章页-底部 动态广告位 --> <div class="youdao-fixed-ad" id="detail_ad_bottom"></div> </div> <div class="col-md-3"> <div class="row" id="ad"> <!-- 文章页-右侧1 动态广告位 --> <div id="right-1" class="col-lg-12 col-md-12 col-sm-4 col-xs-4 ad"> <div class="youdao-fixed-ad" id="detail_ad_1"> </div> </div> <!-- 文章页-右侧2 动态广告位 --> <div id="right-2" class="col-lg-12 col-md-12 col-sm-4 col-xs-4 ad"> <div class="youdao-fixed-ad" id="detail_ad_2"></div> </div> <!-- 文章页-右侧3 动态广告位 --> <div id="right-3" class="col-lg-12 col-md-12 col-sm-4 col-xs-4 ad"> <div class="youdao-fixed-ad" id="detail_ad_3"></div> </div> </div> </div> </div> </div> </div> <div class="container"> <h4 class="pt20 mb15 mt0 border-top">你可能感兴趣的:(综合,计算机网络)</h4> <div id="paradigm-article-related"> <div class="recommend-post mb30"> <ul class="widget-links"> <li><a href="/article/1835511036317364224.htm" title="Cell Insight | 单细胞测序技术又一新发现,可用于HIV-1和Mtb共感染个体诊断" target="_blank">Cell Insight | 单细胞测序技术又一新发现,可用于HIV-1和Mtb共感染个体诊断</a> <span class="text-muted">尐尐呅</span> <div>结核病是艾滋病合并其他疾病中导致患者死亡的主要原因。其中结核病由结核分枝杆菌(Mycobacteriumtuberculosis,Mtb)感染引起,获得性免疫缺陷综合症(艾滋病)由人免疫缺陷病毒(Humanimmunodeficiencyvirustype1,HIV-1)感染引起。国家感染性疾病临床医学研究中心/深圳市第三人民医院张国良团队携手深圳华大生命科学研究院吴靓团队,共同研究得出单细胞测序</div> </li> <li><a href="/article/1835485681187647488.htm" title="【华为OD技术面试真题精选 - 非技术题】 -HR面,综合面_华为od hr面" target="_blank">【华为OD技术面试真题精选 - 非技术题】 -HR面,综合面_华为od hr面</a> <span class="text-muted">一个射手座的程序媛</span> <a class="tag" taget="_blank" href="/search/%E7%A8%8B%E5%BA%8F%E5%91%98/1.htm">程序员</a><a class="tag" taget="_blank" href="/search/%E5%8D%8E%E4%B8%BAod/1.htm">华为od</a><a class="tag" taget="_blank" href="/search/%E9%9D%A2%E8%AF%95/1.htm">面试</a><a class="tag" taget="_blank" href="/search/%E8%81%8C%E5%9C%BA%E5%92%8C%E5%8F%91%E5%B1%95/1.htm">职场和发展</a> <div>最后的话最近很多小伙伴找我要Linux学习资料,于是我翻箱倒柜,整理了一些优质资源,涵盖视频、电子书、PPT等共享给大家!资料预览给大家整理的视频资料:给大家整理的电子书资料:如果本文对你有帮助,欢迎点赞、收藏、转发给朋友,让我有持续创作的动力!网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。需要这份系统化的资料的朋友,可以点击这里获</div> </li> <li><a href="/article/1835434875872702464.htm" title="计算机网络八股总结" target="_blank">计算机网络八股总结</a> <span class="text-muted">Petrichorzncu</span> <a class="tag" taget="_blank" href="/search/%E5%85%AB%E8%82%A1%E6%80%BB%E7%BB%93/1.htm">八股总结</a><a class="tag" taget="_blank" href="/search/%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%BD%91%E7%BB%9C/1.htm">计算机网络</a><a class="tag" taget="_blank" href="/search/%E7%AC%94%E8%AE%B0/1.htm">笔记</a> <div>这里写目录标题网络模型划分(五层和七层)及每一层的功能五层网络模型七层网络模型(OSI模型)==三次握手和四次挥手具体过程及原因==三次握手四次挥手TCP/IP协议组成==UDP协议与TCP/IP协议的区别==Http协议相关知识网络地址,子网掩码等相关计算网络模型划分(五层和七层)及每一层的功能五层网络模型应用层:负责处理网络应用程序,如电子邮件、文件传输和网页浏览。主要协议包括HTTP、FTP</div> </li> <li><a href="/article/1835428821877223424.htm" title="计算机毕业设计PHP仓储综合管理系统(源码+程序+VUE+lw+部署)" target="_blank">计算机毕业设计PHP仓储综合管理系统(源码+程序+VUE+lw+部署)</a> <span class="text-muted">java毕设程序源码王哥</span> <a class="tag" taget="_blank" href="/search/php/1.htm">php</a><a class="tag" taget="_blank" href="/search/%E8%AF%BE%E7%A8%8B%E8%AE%BE%E8%AE%A1/1.htm">课程设计</a><a class="tag" taget="_blank" href="/search/vue.js/1.htm">vue.js</a> <div>该项目含有源码、文档、程序、数据库、配套开发软件、软件安装教程。欢迎交流项目运行环境配置:phpStudy+Vscode+Mysql5.7+HBuilderX+Navicat11+Vue+Express。项目技术:原生PHP++Vue等等组成,B/S模式+Vscode管理+前后端分离等等。环境需要1.运行环境:最好是小皮phpstudy最新版,我们在这个版本上开发的。其他版本理论上也可以。2.开发</div> </li> <li><a href="/article/1835423399606841344.htm" title="ERP企业资源规划系统" target="_blank">ERP企业资源规划系统</a> <span class="text-muted">点滴~</span> <a class="tag" taget="_blank" href="/search/%E6%95%99%E8%82%B2%E7%94%B5%E5%95%86/1.htm">教育电商</a> <div>ERP企业资源规划系统ERP(EnterpriseResourcePlanning)企业资源规划系统是一种综合性的管理信息系统,旨在通过信息技术手段实现对企业内部资源的全面规划、管理和控制。以下是对ERP企业资源规划系统的详细解析:一、定义与核心思想ERP系统建立在信息技术基础上,以系统化的管理思想,为企业决策层及员工提供决策运行手段的管理平台。它不仅仅是一个软件,更重要的是一个管理思想,实现了企</div> </li> <li><a href="/article/1835420753252675584.htm" title="微信小程序开发注意事项" target="_blank">微信小程序开发注意事项</a> <span class="text-muted">jun778895</span> <a class="tag" taget="_blank" href="/search/%E5%BE%AE%E4%BF%A1%E5%B0%8F%E7%A8%8B%E5%BA%8F/1.htm">微信小程序</a><a class="tag" taget="_blank" href="/search/%E5%B0%8F%E7%A8%8B%E5%BA%8F/1.htm">小程序</a> <div>微信小程序开发是一个融合了前端开发、用户体验设计、后端服务(可选)以及微信小程序平台特性的综合性项目。这里,我将详细介绍一个典型的小程序开发项目的全过程,包括项目规划、设计、开发、测试及部署上线等各个环节,并尽量使内容达到或超过2000字的要求。一、项目规划1.1项目背景与目标假设我们要开发一个名为“智慧校园助手”的微信小程序,旨在为学生提供一站式校园生活服务,包括课程表查询、图书馆座位预约、食堂</div> </li> <li><a href="/article/1835408449098313728.htm" title="淘宝网优惠券,你的购物神器,你知道吗?" target="_blank">淘宝网优惠券,你的购物神器,你知道吗?</a> <span class="text-muted">氧惠超好用</span> <div>淘宝网作为中国最大的综合性网络零售平台,吸引了无数消费者的目光。在淘宝网上,我们不仅可以找到丰富多样的商品,还可以通过各种促销活动享受到购物的乐趣。其中,淘宝网优惠券就是一项备受消费者喜爱的福利。那么,淘宝网优惠券究竟有何魅力,能够让我们在购物时更加得心应手呢?淘宝网优惠券作为一种促销手段,为消费者提供了实实在在的购物优惠。无论是店铺优惠券、平台优惠券还是特定商品优惠券,都能在一定程度上降低购物成</div> </li> <li><a href="/article/1835378698665160704.htm" title="设计好了产品组合,获客没你想得那么难" target="_blank">设计好了产品组合,获客没你想得那么难</a> <span class="text-muted">老姜观察</span> <div>放眼望去,财富管理公司的综合服务已经成为大势所趋。所谓的综合服务,其实就是财富管理公司的产品组合逐渐丰富和完善。然而,在对客户进行综合服务的过程中,财富管理公司常常会面对各种问题。例如:如何评估公司是否应当开展一项服务或者产品?如何定义一项服务(产品)的考核指标?如何配置资源投入不同的产品线?以保险为例,财富管理公司经常需要考虑的问题有:我是否要导入保险业务?如何考核这项业务的发展?我应该投入多少</div> </li> <li><a href="/article/1835355667586707456.htm" title="安全演练有保障,专项督查促改进——记公道中学校园安全(化学实验)系列活动" target="_blank">安全演练有保障,专项督查促改进——记公道中学校园安全(化学实验)系列活动</a> <span class="text-muted">公中盛传云</span> <div>近期,公道中学为了全面贯彻落实“预防为主,安全第一,综合治理”的安全工作方针,学校按照安全工作方针的要求,通过多种途径开展了以“预防演练为主,人防物防技防相结合”的主题的安全教育系列活动。11月8日,在学校校务会议上,学校党总支书记李兆兵强调,学校必须采取有力措施,不断增强教师综治安全防范意识,落实学校安全工作责任制,切实保障教师和学生的安全坚决杜绝意外事故的发生,确保校园平安稳定、教育教学工作顺</div> </li> <li><a href="/article/1835343686234370048.htm" title="第九章 肿瘤放射治疗" target="_blank">第九章 肿瘤放射治疗</a> <span class="text-muted">晨翕</span> <div>放射物理学:主要研究各种放射源的性能特点、治疗剂量学、质量控制、质量保证及辐射防护等放射生物学:主要研究机体正常组织和肿瘤组织对射线对反应及如何人为地改变这些反应对质和量。放射技术学:主要研究具体运用各种放射源及设备治疗肿瘤患者,包括射野设置、体位固定、定位、摆位操作等技术实施。临床放射肿瘤学:在临床肿瘤学的基础上,研究肿瘤放射治疗的适应证,根据病理、分期、预后确定治疗策略,综合运用放射物理、放射</div> </li> <li><a href="/article/1835329170654195712.htm" title="公道中学举行校园安全目标责任书签订仪式" target="_blank">公道中学举行校园安全目标责任书签订仪式</a> <span class="text-muted">公中盛传云</span> <div>图片发自App为认真做好学校校园安全管理工作,切实将安全抓实抓细,真正落实到位,责任到人,形成齐抓共管的局面。公道中学在毓贤楼多功能教室举行了2018-2019学年校园安全目标责任书签订仪式。公道中学全体教职工近150人参加签订仪式。图片发自App会议开始,公道中学校长助理盛传云传达了《扬州市邗江区教育系统社会治安综合治理暨平安校园建设责任书》的精神及近期有关上级教育主管部门下发有关食品安全、交通</div> </li> <li><a href="/article/1835327252280209408.htm" title="演说:孩子嘴巴笨不会说话,如何提升自己的口才?#吴守立冬令营" target="_blank">演说:孩子嘴巴笨不会说话,如何提升自己的口才?#吴守立冬令营</a> <span class="text-muted">吴守立国学智慧</span> <div>关键词:少年领袖演说班国学吴守立国学天第书院论语吴守立在现代社会,口才已是一个人综合素质和综合能力的具体体现,二十一世纪是“表达世纪”,要想在这个“表达世纪”里成人成才,“会说”“会写”必不可少,随着新课改、升学对孩子表达能力提出更高的要求,口才将是我们每个人必修课和基本功。然而,孩子嘴巴笨不会说话,如何提升自己的口才?天第书院为大家介绍以下几种方法。1、父母做孩子最佳的倾听者和沟通者在孩子天性中</div> </li> <li><a href="/article/1835326103993020416.htm" title="教师资格考试中学《教育知识与能力》知识点|高频考点汇总" target="_blank">教师资格考试中学《教育知识与能力》知识点|高频考点汇总</a> <span class="text-muted">小山丘</span> <div>温馨提示:更多汇总详情留言小编哦!!!认知过程之易混知识点剖析社会中心课程论情绪——重要考点皮亚杰教你带孩子斯金纳强化规律你的心理足够强大吗?教育心理学的效应德育有规律常考人物思想之夸美纽斯中学常考教学原则孔子及《论语》中的重要教育思想教育学创立阶段人物之赫尔巴特学习策略分类知识点梳理教师资格证辨析题作答思路综合课程的类型班杜拉的学习理论马斯洛需要层次理论记忆类型的四大分类柏拉图和他的《理想国》感</div> </li> <li><a href="/article/1835303809182691328.htm" title="一日一神兽(第一集)" target="_blank">一日一神兽(第一集)</a> <span class="text-muted">yrfrds</span> <div>今年我的神兽会是什么呢?唉,别胡思乱想了,根本没有神兽,可是我睁眼一看,看见了一只梅花鹿,外部特点是:一大部分树木梅花鹿的部分背上长一对翅膀。属性是综合属性,这不可能的吧?我又揉了揉了眼睛,一看还是那只神兽哇,居然用神兽了,我找找东西,看看哪一块部分适合收他,找了一会儿,我找到了嗯,一个小方块儿我觉得这个很适合她我说收她被吸到了方块儿哩哈哈,我竟然用神兽了哈哈,现在我无人能敌了上完学校下午放学的时</div> </li> <li><a href="/article/1835266404060852224.htm" title="机电综合管理系统架构" target="_blank">机电综合管理系统架构</a> <span class="text-muted">小熊coder</span> <a class="tag" taget="_blank" href="/search/%E6%9C%BA%E8%BD%BD%E7%B3%BB%E7%BB%9F/1.htm">机载系统</a><a class="tag" taget="_blank" href="/search/%E7%B3%BB%E7%BB%9F%E6%9E%B6%E6%9E%84/1.htm">系统架构</a> <div>文章目录一、机电综合管理系统架构1.系统概述2.架构层次3.核心组件二、余度管理1.余度概述2.硬件冗余3.软件冗余4.通信冗余三、总线架构1.MIL-STD-1553B总线2.ARINC429总线3.ARINC629总线4.AFDX/ARINC664总线四、未来发展趋势1.分布式架构2.高速网络3.智能化与自动化结语机电综合管理系统(ElectromechanicalManagementSyst</div> </li> <li><a href="/article/1835238039471878144.htm" title="拼多多返利app叫什么名字?拼多多返利靠前的5个软件大全" target="_blank">拼多多返利app叫什么名字?拼多多返利靠前的5个软件大全</a> <span class="text-muted">小小编007</span> <div>拼多多返利app指的是拼多多购物平台的返现或折扣应用。这些应用通过提供优惠券、折扣、返现等方式吸引消费者,增加购物体验的实惠性。在拼多多平台上,有很多返利软件,其中排名前五的软件分别是:1.果冻宝盒果冻宝盒是一个综合导购返利软件,覆盖了淘宝,拼多多、京东、抖音等各大电商平台的商品优惠券和返利服务。还有话费充值,汽车加油,电影票,外卖红包,视频会员充值等各种低折扣生活娱乐权益。果冻宝盒相比其它同行,</div> </li> <li><a href="/article/1835221485564817408.htm" title="【0220读书笔记】面对压力怎么办" target="_blank">【0220读书笔记】面对压力怎么办</a> <span class="text-muted">正本</span> <div>人生每一天都是现场直播,所谓的人前显赫,不过是以往的极致积累付出所换来的。今天看到江南春谈到他过往的创业史,也并不是一帆风顺,顺风顺雨的。恰恰相反,在他创业的道路上,每一步都是如履薄冰,都是受宠若惊,竞争对手也会层出不穷,虎视眈眈向其发起挑战。001.量力而行与全力以赴在创业初期,我们的态度就应当是敢想敢做,全力以赴,因为不拼就不会有机会。当我们进入经营时期时,就要综合评判,尽自己所能去行事,万不</div> </li> <li><a href="/article/1835219574539251712.htm" title="日运势 | 2023年10月22日 九月初八·平" target="_blank">日运势 | 2023年10月22日 九月初八·平</a> <span class="text-muted">禅如易</span> <div>日运势|2023年10月22日九月初八·平平者,乃绳纠齐一义、平常之谓。宜行船收捕治邪瘟治病除灾行嫁与平台道途及场屋地基,修造泥饰墙壁等,若遇伐日及逢金禽宜出兵除贼等。图片图片生肖鼠图片综合运势★★★★生肖鼠的朋友进入运势多表现不错,某事顺心。在工作和生活中会出现一些好的机缘,而且而且遇事多有贵人相助,建议多多做自己力所能及的事情。事业运势★★★★事业平顺发展。机会比较好,应好好掌握,多做多成,今</div> </li> <li><a href="/article/1835198220704247808.htm" title="最新手机赚钱软件有哪些,分享刚刚上线的十款手机赚钱软件" target="_blank">最新手机赚钱软件有哪些,分享刚刚上线的十款手机赚钱软件</a> <span class="text-muted">好项目高省</span> <div>手机赚钱最快的软件,今天分享几款手机快速赚钱的方法,零投资宝藏级别app,这几款只要你认真做,就会让你实现财富自由!推荐高省app,高省是一款综合优惠劵导购平台+本地生活优惠平台,手机各大应用商店搜索高省即可下载使用登录邀请码887766,我们常见的好物分享群,薅羊毛群,捡漏群,内部优惠劵群,以及抖音主播推广的团购劵都是这种赚钱方式,在高省可获取到各大网购平台的内部优惠劵,本地生活团购劵,我们自己</div> </li> <li><a href="/article/1835193264798527488.htm" title="家校共育转化待优生的途径的研究" target="_blank">家校共育转化待优生的途径的研究</a> <span class="text-muted">冰皮石榴</span> <div>家校共育转化待优生的途径的研究“没有最好,只有更好”。从广义来说,我们每个尚没有挖掘出巨大潜力的个体都是待优生,这里我们只针对陕隘意义的待优生,每个学校、每个班级几乎都会有待优生的身影。待优生是指思想上、行为上、学习上暂时落后于一般学生的那些学生,他们不是生而落后。待优生的产生是家庭教育、学校教育、社会教育和待优生自身等多方面因素综合作用的结果。“孩子没有问题,如果孩子有问题,那一定是父母的问题”</div> </li> <li><a href="/article/1835192533358047232.htm" title="安卓玩机搞机技巧综合资源----安卓机型使用ADB指令 无需root 卸载 禁用当前机型各种软件app" target="_blank">安卓玩机搞机技巧综合资源----安卓机型使用ADB指令 无需root 卸载 禁用当前机型各种软件app</a> <span class="text-muted">安卓机器</span> <a class="tag" taget="_blank" href="/search/%E5%AE%89%E5%8D%93%E7%8E%A9%E6%9C%BA%E6%90%9E%E6%9C%BA%E6%8A%80%E5%B7%A7%E7%BB%BC%E5%90%88%E8%B5%84%E6%BA%90/1.htm">安卓玩机搞机技巧综合资源</a><a class="tag" taget="_blank" href="/search/android/1.htm">android</a> <div>在前面的博文我有分享过如何使用adb来卸载禁用有些系统自带的软件。今天将详细的步骤来讲解。在操作前需要注意。不要禁用或者卸载有些系统应用如应用商店和系统更新等。否则系统严重会导致不开机。在做未有把握操作之前,最好先备份数据。如果遇到卡logo问题,极端情况下可能要在Recovery界面清除数据才能启动系统或者线刷来救砖。前期工作1----下载adb环境工具{https://dl.google.co</div> </li> <li><a href="/article/1835191235422285824.htm" title="nfs服务搭建" target="_blank">nfs服务搭建</a> <span class="text-muted">GHope</span> <div>nfs是什么?基哥度娘网络文件系统(NFS)是sun微系统最初开发的分布式文件系统协议,[1]允许客户端计算机上的用户通过计算机网络访问文件很像本地存储被访问。NFS与许多其他协议一样,在开放网络计算远程过程调用(很久以前RPC)系统上建立。NFS是在请求注释(RFC)中定义的开放标准,允许任何人实现协议。NFSNFS优势:节省本地存储空间,将常用的数据存放在一台NFS服务器上且可以通过网络访问,</div> </li> <li><a href="/article/1835170527573012480.htm" title="在职四战考研3day" target="_blank">在职四战考研3day</a> <span class="text-muted">MM加油女孩</span> <div>今日已完成考研任务:与教务处老师联系,学习怎么正确使用书籍;看333教育综合大纲;日总结:下午下班后与教务处老师联系,老师跟我讲了资料的正确使用方式,心里也有了大概的思路——根据老师提供的教材,我第一轮需要用到的资料就是一本通+网课,书籍只作为辅助对象,倘若网课里的内容听懂了,老师说书籍就可以不看了。第二轮复习:就是网课+自己构建思维导图,并尝试做333教育综合的主观题;第三轮复习:背诵客观题起码</div> </li> <li><a href="/article/1835157681590071296.htm" title="计算机网络基础" target="_blank">计算机网络基础</a> <span class="text-muted">柒公子c</span> <div>1通信协议1.1定义通信协议(communicationsprotocol)是指双方实体完成通信或服务所必须遵循的规则和约定。协议定义了数据单元使用的格式,信息单元应该包含的信息与含义,连接方式,信息发送和接收的时序,从而确保网络中数据顺利地传送到确定的地方。在计算机通信中,通信协议用于实现计算机与网络连接之间的标准,网络如果没有统一的通信协议,电脑之间的信息传递就无法识别。通信协议是指通信各方事</div> </li> <li><a href="/article/1835152531081228288.htm" title="含光热电站、有机有机朗肯循环、P2G的综合能源优化调度(Matlab代码实现)" target="_blank">含光热电站、有机有机朗肯循环、P2G的综合能源优化调度(Matlab代码实现)</a> <span class="text-muted">冒泡芳</span> <a class="tag" taget="_blank" href="/search/%E8%83%BD%E6%BA%90/1.htm">能源</a><a class="tag" taget="_blank" href="/search/matlab/1.htm">matlab</a><a class="tag" taget="_blank" href="/search/%E5%BC%80%E5%8F%91%E8%AF%AD%E8%A8%80/1.htm">开发语言</a> <div>‍个人主页:研学社的博客欢迎来到本博客❤️❤️博主优势:博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。⛳️座右铭:行百里者,半于九十。本文目录如下:目录1概述2运行结果3参考文献4Matlab代码实现1概述光热发电(concentratingsolarpower,CSP)是一种新型可再生能源发电技术,具有低碳发电和高效储能的优势,但当前光热电站常充当单一发电源进行能源供应,其供能潜力未得到充分</div> </li> <li><a href="/article/1835141314119823360.htm" title="【物联网技术大作业】设计一个智能家居的应用场景" target="_blank">【物联网技术大作业】设计一个智能家居的应用场景</a> <span class="text-muted">Dream_Chaser~</span> <a class="tag" taget="_blank" href="/search/%E6%9C%9F%E6%9C%AB%E5%A4%8D%E4%B9%A0/1.htm">期末复习</a><a class="tag" taget="_blank" href="/search/%E6%99%BA%E8%83%BD%E5%AE%B6%E5%B1%85/1.htm">智能家居</a><a class="tag" taget="_blank" href="/search/%E7%89%A9%E8%81%94%E7%BD%91%E6%8A%80%E6%9C%AF/1.htm">物联网技术</a><a class="tag" taget="_blank" href="/search/%E6%9C%9F%E6%9C%AB%E5%A4%A7%E4%BD%9C%E4%B8%9A/1.htm">期末大作业</a> <div>前言:本人的物联网技术的期末大作业,希望对你有帮助。目录大作业设计题(1)智能家居的概述。(2)介绍智能家居应用。要求至少5个方面的应用,包括每个应用所采用的设备,性能,功能。(3)画出智能家居应用图,并设计使用。大作业设计题设计一个智能家居的应用场景。要求:(1)智能家居的概述。答:智能家居,又称为智能住宅或家庭自动化,是指运用综合布线、网络通信、安全防范、自动控制及音视频等技术,将家居设施集成</div> </li> <li><a href="/article/1835140683665600512.htm" title="Quartus sdc UI界面设置(二)" target="_blank">Quartus sdc UI界面设置(二)</a> <span class="text-muted">落雨无风</span> <a class="tag" taget="_blank" href="/search/IC%E8%AE%BE%E8%AE%A1/1.htm">IC设计</a><a class="tag" taget="_blank" href="/search/fpga/1.htm">fpga</a><a class="tag" taget="_blank" href="/search/fpga%E5%BC%80%E5%8F%91/1.htm">fpga开发</a> <div>Quartussdc设置根据一配置quartus综合简单流程(一)上次文章中,说了自己写sdc需要配置的分类点,这次将说明在UI界面配置sdc。1.在Quartus软件中,导入verilog设计之后,打开Tools/TimeQuestTimingAnalyzer界面大致分为上下两部分,上半部分左侧显示Report、Tasks,右侧显示欢迎界面;下半部分显示Console和History,此处缺图,</div> </li> <li><a href="/article/1835125289584259072.htm" title="解锁企业潜能,Vatee万腾平台引领智能新纪元" target="_blank">解锁企业潜能,Vatee万腾平台引领智能新纪元</a> <span class="text-muted">自媒体经济说</span> <a class="tag" taget="_blank" href="/search/%E5%85%B6%E4%BB%96/1.htm">其他</a> <div>在数字化转型的浪潮中,企业正站在一个前所未有的十字路口,面对着前所未有的机遇与挑战。解锁企业内在潜能,实现跨越式发展,已成为众多企业的共同追求。而Vatee万腾平台,作为智能科技的先锋,正以其强大的智能赋能能力,引领企业步入一个全新的智能纪元。Vatee万腾平台,是一个集成了人工智能、大数据、云计算等前沿技术的综合性智能服务平台。它不仅仅是一个技术工具,更是企业转型升级的加速器,能够深入企业运营的</div> </li> <li><a href="/article/1835103360517238784.htm" title="2024上半年软考系统架构设计师-综合知识选择题及答案" target="_blank">2024上半年软考系统架构设计师-综合知识选择题及答案</a> <span class="text-muted">不对法</span> <a class="tag" taget="_blank" href="/search/%E7%B3%BB%E7%BB%9F%E6%9E%B6%E6%9E%84/1.htm">系统架构</a> <div>1.操作系统先来先服务调度算法2.操作系统多道程序设计,利用率3.操作系统状态流转错误的,执行态到运行态4.数据库2NF每一个非主属性完全依赖主键5.数据库笛卡尔积m*n6.数据库不属于事务的特点,并发性7.数据库交集表达式R-(R-S)8.数据库反规范化属于逻辑设计9.网络没有加密功能,物理层10.网络二层交换机数据,数据链路层11.知识产权专利法是否属于民法12.知识产权商标不属于,其他几个是</div> </li> <li><a href="/article/1835099327492616192.htm" title="JavaScript 基础 - 第13天" target="_blank">JavaScript 基础 - 第13天</a> <span class="text-muted">+码农快讯+</span> <a class="tag" taget="_blank" href="/search/JavaScript%E5%AD%A6%E4%B9%A0%E7%AC%94%E8%AE%B0/1.htm">JavaScript学习笔记</a><a class="tag" taget="_blank" href="/search/javascript/1.htm">javascript</a><a class="tag" taget="_blank" href="/search/%E5%BC%80%E5%8F%91%E8%AF%AD%E8%A8%80/1.htm">开发语言</a><a class="tag" taget="_blank" href="/search/ecmascript/1.htm">ecmascript</a> <div>文章目录JavaScript基础-第13天深入对象创建对象三种方式构造函数new实例化过程实例成员&静态成员实例成员静态成员一切皆对象内置构造函数ObjectArrayStringNumberJavaScript基础-第13天了解面向对象编程的基础概念及构造函数的作用,体会JavaScript一切皆对象的语言特征,掌握常见的对象属性和方法的使用。深入对象内置构造函数综合案例深入对象了解面向对象的基</div> </li> <li><a href="/article/76.htm" title="遍历dom 并且存储(将每一层的DOM元素存在数组中)" target="_blank">遍历dom 并且存储(将每一层的DOM元素存在数组中)</a> <span class="text-muted">换个号韩国红果果</span> <a class="tag" taget="_blank" href="/search/JavaScript/1.htm">JavaScript</a><a class="tag" taget="_blank" href="/search/html/1.htm">html</a> <div>数组从0开始!! var a=[],i=0; for(var j=0;j<30;j++){ a[j]=[];//数组里套数组,且第i层存储在第a[i]中 } function walkDOM(n){ do{ if(n.nodeType!==3)//筛选去除#text类型 a[i].push(n); //con</div> </li> <li><a href="/article/203.htm" title="Android+Jquery Mobile学习系列(9)-总结和代码分享" target="_blank">Android+Jquery Mobile学习系列(9)-总结和代码分享</a> <span class="text-muted">白糖_</span> <a class="tag" taget="_blank" href="/search/JQuery+Mobile/1.htm">JQuery Mobile</a> <div>目录导航   经过一个多月的边学习边练手,学会了Android基于Web开发的毛皮,其实开发过程中用Android原生API不是很多,更多的是HTML/Javascript/Css。   个人觉得基于WebView的Jquery Mobile开发有以下优点: 1、对于刚从Java Web转型过来的同学非常适合,只要懂得HTML开发就可以上手做事。 2、jquerym</div> </li> <li><a href="/article/330.htm" title="impala参考资料" target="_blank">impala参考资料</a> <span class="text-muted">dayutianfei</span> <a class="tag" taget="_blank" href="/search/impala/1.htm">impala</a> <div>记录一些有用的Impala资料   1. 入门资料 >>官网翻译:     http://my.oschina.net/weiqingbin/blog?catalog=423691   2. 实用进阶 >>代码&架构分析:     Impala/Hive现状分析与前景展望:http</div> </li> <li><a href="/article/457.htm" title="JAVA 静态变量与非静态变量初始化顺序之新解" target="_blank">JAVA 静态变量与非静态变量初始化顺序之新解</a> <span class="text-muted">周凡杨</span> <a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/%E9%9D%99%E6%80%81/1.htm">静态</a><a class="tag" taget="_blank" href="/search/%E9%9D%9E%E9%9D%99%E6%80%81/1.htm">非静态</a><a class="tag" taget="_blank" href="/search/%E9%A1%BA%E5%BA%8F/1.htm">顺序</a> <div>今天和同事争论一问题,关于静态变量与非静态变量的初始化顺序,谁先谁后,最终想整理出来!测试代码: import java.util.Map; public class T { public static T t = new T(); private Map map = new HashMap(); public T(){ System.out.println(&quo</div> </li> <li><a href="/article/584.htm" title="跳出iframe返回外层页面" target="_blank">跳出iframe返回外层页面</a> <span class="text-muted">g21121</span> <a class="tag" taget="_blank" href="/search/iframe/1.htm">iframe</a> <div>在web开发过程中难免要用到iframe,但当连接超时或跳转到公共页面时就会出现超时页面显示在iframe中,这时我们就需要跳出这个iframe到达一个公共页面去。 首先跳转到一个中间页,这个页面用于判断是否在iframe中,在页面加载的过程中调用如下代码: <script type="text/javascript"> //<!-- function</div> </li> <li><a href="/article/711.htm" title="JAVA多线程监听JMS、MQ队列" target="_blank">JAVA多线程监听JMS、MQ队列</a> <span class="text-muted">510888780</span> <a class="tag" taget="_blank" href="/search/java%E5%A4%9A%E7%BA%BF%E7%A8%8B/1.htm">java多线程</a> <div>背景:消息队列中有非常多的消息需要处理,并且监听器onMessage()方法中的业务逻辑也相对比较复杂,为了加快队列消息的读取、处理速度。可以通过加快读取速度和加快处理速度来考虑。因此从这两个方面都使用多线程来处理。对于消息处理的业务处理逻辑用线程池来做。对于加快消息监听读取速度可以使用1.使用多个监听器监听一个队列;2.使用一个监听器开启多线程监听。 对于上面提到的方法2使用一个监听器开启多线</div> </li> <li><a href="/article/838.htm" title="第一个SpringMvc例子" target="_blank">第一个SpringMvc例子</a> <span class="text-muted">布衣凌宇</span> <a class="tag" taget="_blank" href="/search/spring+mvc/1.htm">spring mvc</a> <div>第一步:导入需要的包; 第二步:配置web.xml文件 <?xml version="1.0" encoding="UTF-8"?> <web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi=</div> </li> <li><a href="/article/965.htm" title="我的spring学习笔记15-容器扩展点之PropertyOverrideConfigurer" target="_blank">我的spring学习笔记15-容器扩展点之PropertyOverrideConfigurer</a> <span class="text-muted">aijuans</span> <a class="tag" taget="_blank" href="/search/Spring3/1.htm">Spring3</a> <div>PropertyOverrideConfigurer类似于PropertyPlaceholderConfigurer,但是与后者相比,前者对于bean属性可以有缺省值或者根本没有值。也就是说如果properties文件中没有某个bean属性的内容,那么将使用上下文(配置的xml文件)中相应定义的值。如果properties文件中有bean属性的内容,那么就用properties文件中的值来代替上下</div> </li> <li><a href="/article/1092.htm" title="通过XSD验证XML" target="_blank">通过XSD验证XML</a> <span class="text-muted">antlove</span> <a class="tag" taget="_blank" href="/search/xml/1.htm">xml</a><a class="tag" taget="_blank" href="/search/schema/1.htm">schema</a><a class="tag" taget="_blank" href="/search/xsd/1.htm">xsd</a><a class="tag" taget="_blank" href="/search/validation/1.htm">validation</a><a class="tag" taget="_blank" href="/search/SchemaFactory/1.htm">SchemaFactory</a> <div>1. XmlValidation.java package xml.validation; import java.io.InputStream; import javax.xml.XMLConstants; import javax.xml.transform.stream.StreamSource; import javax.xml.validation.Schem</div> </li> <li><a href="/article/1219.htm" title="文本流与字符集" target="_blank">文本流与字符集</a> <span class="text-muted">百合不是茶</span> <a class="tag" taget="_blank" href="/search/PrintWrite%28%29%E7%9A%84%E4%BD%BF%E7%94%A8/1.htm">PrintWrite()的使用</a><a class="tag" taget="_blank" href="/search/%E5%AD%97%E7%AC%A6%E9%9B%86%E5%90%8D%E5%AD%97+%E5%88%AB%E5%90%8D%E8%8E%B7%E5%8F%96/1.htm">字符集名字 别名获取</a> <div>文本数据的输入输出;           输入;数据流,缓冲流         输出;介绍向文本打印格式化的输出PrintWrite();   package 文本流; import java.io.FileNotFound</div> </li> <li><a href="/article/1346.htm" title="ibatis模糊查询sqlmap-mapping-**.xml配置" target="_blank">ibatis模糊查询sqlmap-mapping-**.xml配置</a> <span class="text-muted">bijian1013</span> <a class="tag" taget="_blank" href="/search/ibatis/1.htm">ibatis</a> <div>        正常我们写ibatis的sqlmap-mapping-*.xml文件时,传入的参数都用##标识,如下所示: <resultMap id="personInfo" class="com.bijian.study.dto.PersonDTO"> <res</div> </li> <li><a href="/article/1473.htm" title="java jvm常用命令工具——jdb命令(The Java Debugger)" target="_blank">java jvm常用命令工具——jdb命令(The Java Debugger)</a> <span class="text-muted">bijian1013</span> <a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/jvm/1.htm">jvm</a><a class="tag" taget="_blank" href="/search/jdb/1.htm">jdb</a> <div>        用来对core文件和正在运行的Java进程进行实时地调试,里面包含了丰富的命令帮助您进行调试,它的功能和Sun studio里面所带的dbx非常相似,但 jdb是专门用来针对Java应用程序的。         现在应该说日常的开发中很少用到JDB了,因为现在的IDE已经帮我们封装好了,如使用ECLI</div> </li> <li><a href="/article/1600.htm" title="【Spring框架二】Spring常用注解之Component、Repository、Service和Controller注解" target="_blank">【Spring框架二】Spring常用注解之Component、Repository、Service和Controller注解</a> <span class="text-muted">bit1129</span> <a class="tag" taget="_blank" href="/search/controller/1.htm">controller</a> <div>在Spring常用注解第一步部分【Spring框架一】Spring常用注解之Autowired和Resource注解(http://bit1129.iteye.com/blog/2114084)中介绍了Autowired和Resource两个注解的功能,它们用于将依赖根据名称或者类型进行自动的注入,这简化了在XML中,依赖注入部分的XML的编写,但是UserDao和UserService两个bea</div> </li> <li><a href="/article/1727.htm" title="cxf wsdl2java生成代码super出错,构造函数不匹配" target="_blank">cxf wsdl2java生成代码super出错,构造函数不匹配</a> <span class="text-muted">bitray</span> <a class="tag" taget="_blank" href="/search/super/1.htm">super</a> <div>    由于过去对于soap协议的cxf接触的不是很多,所以遇到了也是迷糊了一会.后来经过查找资料才得以解决. 初始原因一般是由于jaxws2.2规范和jdk6及以上不兼容导致的.所以要强制降为jaxws2.1进行编译生成.我们需要少量的修改: 我们原来的代码 wsdl2java com.test.xxx -client http://..... 修改后的代</div> </li> <li><a href="/article/1854.htm" title="动态页面正文部分中文乱码排障一例" target="_blank">动态页面正文部分中文乱码排障一例</a> <span class="text-muted">ronin47</span> <div>公司网站一部分动态页面,早先使用apache+resin的架构运行,考虑到高并发访问下的响应性能问题,在前不久逐步开始用nginx替换掉了apache。 不过随后发现了一个问题,随意进入某一有分页的网页,第一页是正常的(因为静态化过了);点“下一页”,出来的页面两边正常,中间部分的标题、关键字等也正常,唯独每个标题下的正文无法正常显示。 因为有做过系统调整,所以第一反应就是新上</div> </li> <li><a href="/article/1981.htm" title="java-54- 调整数组顺序使奇数位于偶数前面" target="_blank">java-54- 调整数组顺序使奇数位于偶数前面</a> <span class="text-muted">bylijinnan</span> <a class="tag" taget="_blank" href="/search/java/1.htm">java</a> <div> import java.util.Arrays; import java.util.Random; import ljn.help.Helper; public class OddBeforeEven { /** * Q 54 调整数组顺序使奇数位于偶数前面 * 输入一个整数数组,调整数组中数字的顺序,使得所有奇数位于数组的前半部分,所有偶数位于数组的后半</div> </li> <li><a href="/article/2108.htm" title="从100PV到1亿级PV网站架构演变" target="_blank">从100PV到1亿级PV网站架构演变</a> <span class="text-muted">cfyme</span> <a class="tag" taget="_blank" href="/search/%E7%BD%91%E7%AB%99%E6%9E%B6%E6%9E%84/1.htm">网站架构</a> <div>一个网站就像一个人,存在一个从小到大的过程。养一个网站和养一个人一样,不同时期需要不同的方法,不同的方法下有共同的原则。本文结合我自已14年网站人的经历记录一些架构演变中的体会。 1:积累是必不可少的 架构师不是一天练成的。 1999年,我作了一个个人主页,在学校内的虚拟空间,参加了一次主页大赛,几个DREAMWEAVER的页面,几个TABLE作布局,一个DB连接,几行PHP的代码嵌入在HTM</div> </li> <li><a href="/article/2235.htm" title="[宇宙时代]宇宙时代的GIS是什么?" target="_blank">[宇宙时代]宇宙时代的GIS是什么?</a> <span class="text-muted">comsci</span> <a class="tag" taget="_blank" href="/search/Gis/1.htm">Gis</a> <div>        我们都知道一个事实,在行星内部的时候,因为地理信息的坐标都是相对固定的,所以我们获取一组GIS数据之后,就可以存储到硬盘中,长久使用。。。但是,请注意,这种经验在宇宙时代是不能够被继续使用的          宇宙是一个高维时空</div> </li> <li><a href="/article/2362.htm" title="详解create database命令" target="_blank">详解create database命令</a> <span class="text-muted">czmmiao</span> <a class="tag" taget="_blank" href="/search/database/1.htm">database</a> <div>完整命令 CREATE DATABASE mynewdb   USER SYS IDENTIFIED BY sys_password   USER SYSTEM IDENTIFIED BY system_password   LOGFILE GROUP 1 ('/u01/logs/my/redo01a.log','/u02/logs/m</div> </li> <li><a href="/article/2489.htm" title="几句不中听却不得不认可的话" target="_blank">几句不中听却不得不认可的话</a> <span class="text-muted">datageek</span> <div>1、人丑就该多读书。 2、你不快乐是因为:你可以像猪一样懒,却无法像只猪一样懒得心安理得。 3、如果你太在意别人的看法,那么你的生活将变成一件裤衩,别人放什么屁,你都得接着。 4、你的问题主要在于:读书不多而买书太多,读书太少又特爱思考,还他妈话痨。 5、与禽兽搏斗的三种结局:(1)、赢了,比禽兽还禽兽。(2)、输了,禽兽不如。(3)、平了,跟禽兽没两样。结论:选择正确的对手很重要。 6</div> </li> <li><a href="/article/2616.htm" title="1 14:00 PHP中的“syntax error, unexpected T_PAAMAYIM_NEKUDOTAYIM”错误" target="_blank">1 14:00 PHP中的“syntax error, unexpected T_PAAMAYIM_NEKUDOTAYIM”错误</a> <span class="text-muted">dcj3sjt126com</span> <a class="tag" taget="_blank" href="/search/PHP/1.htm">PHP</a> <div>原文地址:http://www.kafka0102.com/2010/08/281.html   因为需要,今天晚些在本机使用PHP做些测试,PHP脚本依赖了一堆我也不清楚做什么用的库。结果一跑起来,就报出类似下面的错误:“Parse error: syntax error, unexpected T_PAAMAYIM_NEKUDOTAYIM in /home/kafka/test/</div> </li> <li><a href="/article/2743.htm" title="xcode6 Auto layout and size classes" target="_blank">xcode6 Auto layout and size classes</a> <span class="text-muted">dcj3sjt126com</span> <a class="tag" taget="_blank" href="/search/ios/1.htm">ios</a> <div>官方GUI   https://developer.apple.com/library/ios/documentation/UserExperience/Conceptual/AutolayoutPG/Introduction/Introduction.html   iOS中使用自动布局(一)   http://www.cocoachina.com/ind</div> </li> <li><a href="/article/2870.htm" title="通过PreparedStatement批量执行sql语句【sql语句相同,值不同】" target="_blank">通过PreparedStatement批量执行sql语句【sql语句相同,值不同】</a> <span class="text-muted">梦见x光</span> <a class="tag" taget="_blank" href="/search/sql/1.htm">sql</a><a class="tag" taget="_blank" href="/search/%E4%BA%8B%E5%8A%A1/1.htm">事务</a><a class="tag" taget="_blank" href="/search/%E6%89%B9%E9%87%8F%E6%89%A7%E8%A1%8C/1.htm">批量执行</a> <div>比如说:我有一个List需要添加到数据库中,那么我该如何通过PreparedStatement来操作呢? public void addCustomerByCommit(Connection conn , List<Customer> customerList) {    String sql = "inseret into customer(id </div> </li> <li><a href="/article/2997.htm" title="程序员必知必会----linux常用命令之十【系统相关】" target="_blank">程序员必知必会----linux常用命令之十【系统相关】</a> <span class="text-muted">hanqunfeng</span> <a class="tag" taget="_blank" href="/search/Linux%E5%B8%B8%E7%94%A8%E5%91%BD%E4%BB%A4/1.htm">Linux常用命令</a> <div>一.linux快捷键 Ctrl+C : 终止当前命令 Ctrl+S : 暂停屏幕输出 Ctrl+Q : 恢复屏幕输出 Ctrl+U : 删除当前行光标前的所有字符 Ctrl+Z : 挂起当前正在执行的进程 Ctrl+L : 清除终端屏幕,相当于clear   二.终端命令 clear : 清除终端屏幕 reset : 重置视窗,当屏幕编码混乱时使用 time com</div> </li> <li><a href="/article/3124.htm" title="NGINX" target="_blank">NGINX</a> <span class="text-muted">IXHONG</span> <a class="tag" taget="_blank" href="/search/nginx/1.htm">nginx</a> <div>pcre 编译安装 nginx conf/vhost/test.conf   upstream admin { server 127.0.0.1:8080; }   server {                 listen       80; &</div> </li> <li><a href="/article/3251.htm" title="设计模式--工厂模式" target="_blank">设计模式--工厂模式</a> <span class="text-muted">kerryg</span> <a class="tag" taget="_blank" href="/search/%E8%AE%BE%E8%AE%A1%E6%A8%A1%E5%BC%8F/1.htm">设计模式</a> <div>工厂方式模式分为三种:   1、普通工厂模式:建立一个工厂类,对实现了同一个接口的一些类进行实例的创建。   2、多个工厂方法的模式:就是对普通工厂方法模式的改进,在普通工厂方法模式中,如果传递的字符串出错,则不能正确创建对象,而多个工厂方法模式就是提供多个工厂方法,分别创建对象。   3、静态工厂方法模式:就是将上面的多个工厂方法模式里的方法置为静态,</div> </li> <li><a href="/article/3378.htm" title="Spring InitializingBean/init-method和DisposableBean/destroy-method" target="_blank">Spring InitializingBean/init-method和DisposableBean/destroy-method</a> <span class="text-muted">mx_xiehd</span> <a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/spring/1.htm">spring</a><a class="tag" taget="_blank" href="/search/bean/1.htm">bean</a><a class="tag" taget="_blank" href="/search/xml/1.htm">xml</a> <div>1.initializingBean/init-method 实现org.springframework.beans.factory.InitializingBean接口允许一个bean在它的所有必须属性被BeanFactory设置后,来执行初始化的工作,InitialzingBean仅仅指定了一个方法。 通常InitializingBean接口的使用是能够被避免的,(不鼓励使用,因为没有必要</div> </li> <li><a href="/article/3505.htm" title="解决Centos下vim粘贴内容格式混乱问题" target="_blank">解决Centos下vim粘贴内容格式混乱问题</a> <span class="text-muted">qindongliang1922</span> <a class="tag" taget="_blank" href="/search/centos/1.htm">centos</a><a class="tag" taget="_blank" href="/search/vim/1.htm">vim</a> <div> 有时候,我们在向vim打开的一个xml,或者任意文件中,拷贝粘贴的代码时,格式莫名其毛的就混乱了,然后自己一个个再重新,把格式排列好,非常耗时,而且很不爽,那么有没有办法避免呢? 答案是肯定的,设置下缩进格式就可以了,非常简单: 在用户的根目录下 直接vi  ~/.vimrc文件 然后将set pastetoggle=<F9> 写入这个文件中,保存退出,重新登录,</div> </li> <li><a href="/article/3632.htm" title="netty大并发请求问题" target="_blank">netty大并发请求问题</a> <span class="text-muted">tianzhihehe</span> <a class="tag" taget="_blank" href="/search/netty/1.htm">netty</a> <div>多线程并发使用同一个channel java.nio.BufferOverflowException: null at java.nio.HeapByteBuffer.put(HeapByteBuffer.java:183) ~[na:1.7.0_60-ea] at java.nio.ByteBuffer.put(ByteBuffer.java:832) ~[na:1.7.0_60-ea] </div> </li> <li><a href="/article/3759.htm" title="Hadoop NameNode单点问题解决方案之一 AvatarNode" target="_blank">Hadoop NameNode单点问题解决方案之一 AvatarNode</a> <span class="text-muted">wyz2009107220</span> <a class="tag" taget="_blank" href="/search/NameNode/1.htm">NameNode</a> <div>我们遇到的情况 Hadoop NameNode存在单点问题。这个问题会影响分布式平台24*7运行。先说说我们的情况吧。 我们的团队负责管理一个1200节点的集群(总大小12PB),目前是运行版本为Hadoop 0.20,transaction logs写入一个共享的NFS filer(注:NetApp NFS Filer)。 经常遇到需要中断服务的问题是给hadoop打补丁。 DataNod</div> </li> </ul> </div> </div> </div> <div> <div class="container"> <div class="indexes"> <strong>按字母分类:</strong> <a href="/tags/A/1.htm" target="_blank">A</a><a href="/tags/B/1.htm" target="_blank">B</a><a href="/tags/C/1.htm" target="_blank">C</a><a href="/tags/D/1.htm" target="_blank">D</a><a href="/tags/E/1.htm" target="_blank">E</a><a href="/tags/F/1.htm" target="_blank">F</a><a href="/tags/G/1.htm" target="_blank">G</a><a href="/tags/H/1.htm" target="_blank">H</a><a href="/tags/I/1.htm" target="_blank">I</a><a href="/tags/J/1.htm" target="_blank">J</a><a href="/tags/K/1.htm" target="_blank">K</a><a href="/tags/L/1.htm" target="_blank">L</a><a href="/tags/M/1.htm" target="_blank">M</a><a href="/tags/N/1.htm" target="_blank">N</a><a href="/tags/O/1.htm" target="_blank">O</a><a href="/tags/P/1.htm" target="_blank">P</a><a href="/tags/Q/1.htm" target="_blank">Q</a><a href="/tags/R/1.htm" target="_blank">R</a><a href="/tags/S/1.htm" target="_blank">S</a><a href="/tags/T/1.htm" target="_blank">T</a><a href="/tags/U/1.htm" target="_blank">U</a><a href="/tags/V/1.htm" target="_blank">V</a><a href="/tags/W/1.htm" target="_blank">W</a><a href="/tags/X/1.htm" target="_blank">X</a><a href="/tags/Y/1.htm" target="_blank">Y</a><a href="/tags/Z/1.htm" target="_blank">Z</a><a href="/tags/0/1.htm" target="_blank">其他</a> </div> </div> </div> <footer id="footer" class="mb30 mt30"> <div class="container"> <div class="footBglm"> <a target="_blank" href="/">首页</a> - <a target="_blank" href="/custom/about.htm">关于我们</a> - <a target="_blank" href="/search/Java/1.htm">站内搜索</a> - <a target="_blank" href="/sitemap.txt">Sitemap</a> - <a target="_blank" href="/custom/delete.htm">侵权投诉</a> </div> <div class="copyright">版权所有 IT知识库 CopyRight © 2000-2050 E-COM-NET.COM , All Rights Reserved. <!-- <a href="https://beian.miit.gov.cn/" rel="nofollow" target="_blank">京ICP备09083238号</a><br>--> </div> </div> </footer> <!-- 代码高亮 --> <script type="text/javascript" src="/static/syntaxhighlighter/scripts/shCore.js"></script> <script type="text/javascript" src="/static/syntaxhighlighter/scripts/shLegacy.js"></script> <script type="text/javascript" src="/static/syntaxhighlighter/scripts/shAutoloader.js"></script> <link type="text/css" rel="stylesheet" href="/static/syntaxhighlighter/styles/shCoreDefault.css"/> <script type="text/javascript" src="/static/syntaxhighlighter/src/my_start_1.js"></script> </body> </html>