流媒体开发之--HLS--M3U8解析(2): HLS草案

 

流媒体开发之--HLS--M3U8解析(2): HLS草案




分类: android 流媒体开发   2235人阅读  评论(2)  收藏  举报
流媒体 HLS

http://blog.csdn.net/jwzhangjie/article/details/9744027

目录(?)[+]

目录
1 简介 2
2 概述 2
3 播放列表文件 3
3.1 介绍 3
3.2新标签 4
3.2.1 EXT-X-TARGETDURATION 4
3.2.2 EXT-X-MEDIA-SEQUENCE 4
3.2.3 EXT-X-KEY 4
3.2.4 EXT-X-PROGRAM-DATE-TIME 5
3.2.5 EXT-X-ALLOW-CATCH 5
3.2.6 EXT-X-ENDLIST 5
3.2.7 EXT-X-STREAM-INF 5
3.2.8 EXT-X-DISCONTINUITY 6
3.2.9 EXT-X-VERSION 6
4 多媒体文件 7
5 密钥文件 7
5.1 介绍 7
5.2  IV FOR AES-128 7
6 客户端/服务器行为 8
6.1 介绍 8
6.2 服务器进程 8
6.2.1介绍 8
6.2.2 滑动窗口播放列表 9
6.2.3 加密媒体文件 9
6.2.4 提供变种数据流 10
6.3 客户端进程 10
6.2.1 介绍 10
6.2.2 加载播放列表文件 11
6.2.3播放播放列表文件 11
6.2.4重新载入播放列表文件 11
6.2.5 确定下一个要加载的文件 12
6.2.6 解密经加密的媒体文件 12
7 协议版本的兼容性 12
8 例子 12
8.1 简单的播放列表文件 12
8.2 滑动窗口播放列表,使用https 13
8.3 加密的媒体文件与播放列表文件 13
8.4 变种的播放列表文件 13

 
 

简介

本文档介绍了通过HTTP传输极大的多媒体数据流的协议[RFC2616]。该协议支持媒体数据的加密,并提供流的备用版本(如比特率)。媒体数据可以在创建后被很快地传输,允许它在近实时被接收。

在第11章中列出了,如HTTP的,描述相关标准的外部引用。

 

概述

多媒体演示文稿是由播放列表文件中的URI指定的,播放列表是一个由uri和信息标签组成的有序列表。每一个URI都关联了一个媒体文件,该媒体文件是一个连续数据流的一个分片。
为了播放数据流,客户端首先获取播放列表文件,然后获取并播放列表中的每一个媒体文件。正如本文档所描述的那样,它通过重载播放列表文件来发现其他新增的分片。
文档中的关键词“必须”“不准”,“需要”“应该”“不应该”“推荐”“可以”“可选”等见RFC2119
 

播放列表文件

3.1介绍

播放列表必须是扩展的M3U文件,该文档通过定义新的标签扩展了m3u文件的格式。M3U播放列表是一个文本文件,它包含了各自独立的行,行以一个LF字符或者LF字符紧跟一个CR字符来结束。行可以是一个URI,空行,或者以字符#开头。空行将会被忽略。空格只能作为一行中不同元素间的分隔。

一个URI 表示一个媒体文件或是变种播放列表文件(见3.2.7

    URI可以是相对的,一个相对的URI必须被包含该URI的播放列表文件中的URI所解析。

以注释字符#开头的行可能是注释或者标签,标签以#EXT开头,其他所有行都应该被忽略。播放列表文件的持续时间是他所指向的媒体文件的时长的总和。

.M3U8作为文件名后缀或者HTTPContent-TypeRFC2616)为“Application/vnd.apple.mpegurl”的M3U播放列表文件使用UTF-8RFC3629)编码。以.M3U作为文件名后缀或者HTTPContent-Type为“audio/mpegurl”的M3U播放列表文件使用US-ASCII编码。

播放列表文件名必须以.M3U8为后缀、HTTPContent-Type为“Application/vnd.apple.mpegurl”(如果使用http传输)或者以.M3U为后缀、HTTPContent-Type为“audio/mpegurl”。

扩展的M3U文件格式定义了两种标签:EXTM3UEXTINF。区分扩展的M3U文件与普通M3U文件的关键在于前者的首行为#EXTM3U

EXTINF是一个记录标记,该标记描述了后边URI所指定的媒体文件。每个媒体文件URI前边必须有EXTINF标签。格式如下:

#EXTINF: ,</span></p> <p> <span style="font-family:Calibri;">DURATION</span>是一个整数,它指定了媒体文件以秒为单位的持续时间,时间应四舍五入到最接近的整数。行内逗号后边的剩余部分是媒体文件的名字,该名字是媒体分片的人眼可读的信息标题。</p> <p> 该文档定义了如下的新标签:<span style="font-family:Calibri;">EXT-X-TARGETDURATION</span>,<span style="font-family:Calibri;">EXT-X-MEDIA-SEQUENCE</span>,<span style="font-family:Calibri;">EXT-X-KEY</span>,<span style="font-family:Calibri;">EXT-X-PROGRAM-DATE-TIME</span>,<span style="font-family:Calibri;">EXT-X-ALLOW-CATCH</span>,<span style="font-family:Calibri;">EXT-X-ENDLIST</span>,<span style="font-family:Calibri;">EXT-X-STREAM-INF</span>,<span style="font-family:Calibri;">EXT-X-DISCONTINUITY</span>,<span style="font-family:Calibri;">EXT-X-VERSION</span></p> <pre><span style="font-family:'宋体';"> </span></pre> <h2><span style="font-family:Cambria;">3.2</span>新标签</h2> <h2><span style="font-family:Cambria;">3.2.1      EXT-X-TARGETDURATION</span></h2> <pre><span style="font-family:'宋体';">该标签指定了媒体文件持续时间的最大值,播放文件列表中的媒体文件在EXTINF标签中定义的持续时间必须小于或者等于该标签指定的持续时间。该标签在播放列表文件中必须出现一次,其格式为:</span></pre> <pre><span style="font-family:'宋体';"># EXT-X-TARGETDURATION:<s></span></pre> <pre><span style="font-family:'宋体';">S是一个以秒为单位的整数。</span></pre> <h3><span style="font-family:Calibri;">3.2.2      EXT-X-MEDIA-SEQUENCE</span></h3> <pre><span style="font-family:'宋体';">播放列表文件中每个媒体文件的URI都有一个唯一的序列号。URI的序列号等于它之前那个RUI的序列号加一。EXT-X-MEDIA-SEQUENCE指明了出现在播放列表文件中的第一个URI的序列号。其格式如下:</span></pre> <pre><span style="font-family:'宋体';">#EXT-X-MEDIA-SEQUENCE:<Number></span></pre> <pre><span style="font-family:'宋体';">播放列表文件中的EXT-X-MEDIA-SEQUENCE标签不能多于一个。如果播放列表文件中没有EXT-X-MEDIA-SEQUENCE标签,那么将会把播放列表中第一个URI的序列号当成0。</span></pre> <pre><span style="font-family:'宋体';">媒体文件的序列号码不是必须出现在它的URI中的。见6.3.2和6.3.5。</span></pre> <h3><span style="font-family:Calibri;">3.2.3      EXT-X-KEY</span></h3> <pre><span style="font-family:'宋体';">媒体文件可能是被加密的,EXT-X-KEY提供了解密媒体文件的必要信息,它的格式如下:</span></pre> <pre><span style="font-family:'宋体';">#EXT-X-KEY:METHOD=<method> [,URI = “<uri>”] [,IV = <iv>]</span></pre> <pre><span style="font-family:'宋体';">Method属性指定了加密方法,定义了两种加密方法:NONE和AES-128。</span></pre> <pre><span style="font-family:'宋体';">加密方法NONE表示媒体文件不被加密,如果加密方法是NONE,那么URI和IV属性不允许存在。</span></pre> <pre><span style="font-family:'宋体';">加密方法AES-128表示媒体文件使用高级加密标准128位密钥和PKCS7 padding加密。如果加密方法是AES-128,那么对于URI属性,如果存在,则指定获取密钥的方法;对于IV属性,如果存在,则指定使用密钥的初始化向量。</span></pre> <pre><span style="font-family:'宋体';">IV属性出现在协议版本2中,新的EXT-X-KEY将会取代任何一个先前的EXT-X-KEY。</span></pre> <pre><span style="font-family:'宋体';">如果播放列表文件没有包含EXT-X-KEY标签,那么媒体文件将不会被加密。</span></pre> <pre><span style="font-family:'宋体';">密钥文件的格式见第五章,媒体文件加密信息见5.2、6.2.3、6.3.6。</span></pre> <h3><span style="font-family:Calibri;">3.2.4      EXT-X-PROGRAM-DATE-TIME</span></h3> <pre><span style="font-family:'宋体';">EXT-X-PROGRAM-DATE-TIME标签将下一个媒体文件的开头和绝对日期关联起来。日期/时间的表示基于ISO/IEC,并且要指明时区。例如:</span></pre> <pre>#EXT-X-PROGRAM-DATE-TIME:<YYYY–MM–DDThh:mm:ssZ></pre> <pre><span style="font-family:'宋体';">详见</span>6.2.1<span style="font-family:'宋体';">和</span>6.3.3</pre> <h3><span style="font-family:Calibri;">3.2.5      EXT-X-ALLOW-CATCH</span></h3> <pre><span style="font-family:'宋体';">EXT-X-ALLOW-CATCH标签指定客户端可以或者不准缓存下载的媒体文件用来重播。它可能会出现在播放列表文件的任何地方,但是不能出现两次或以上。该标签适用于播放列表中的所有分片。其格式如下:</span></pre> <pre>#EXT-X-ALLOW-CACHE:<YES|NO></pre> <pre><span style="font-family:'宋体';">详见6.3.3</span></pre> <h3><span style="font-family:Calibri;">3.2.6      EXT-X-ENDLIST</span></h3> <p> <span style="font-family:Calibri;">    EXT-X-ENDLIST</span>标签标示没有更多媒体文件将会加入到播放列表中,它可能会出现在播放列表文件的任何地方,但是不能出现两次或以上。其格式如下:</p> <p> #EXT-X-ENDLIST</p> <h3><span style="font-family:Calibri;">3.2.7      EXT-X-STREAM-INF</span></h3> <pre><span style="font-family:'宋体';">     EXT-X-STREAM-INF标签表示在播放列表中的下一个URI标识另一个播放列表文件。格式如下:</span></pre> <p> #EXT-X-STREAM-INF:[attribute=value][,attribute=value]* <URI></p> <pre><span style="font-family:'宋体';">在一个EXT-X-STREAM-INF标签中attribute不能出现两次或以上。其它属性定义:</span></pre> <pre><span style="font-family:'宋体';">BANDWIDTH = <n></span></pre> <pre><span style="font-family:'宋体';">n为每秒比特数,它必须是每个媒体文件比特速率的上限,必须经过计算包含那些在播放列表中出现的或者将要出现的容器开销。</span></pre> <pre>PROGRAM-ID=<i></pre> <pre>i<span style="font-family:'宋体';">是一个数字,在播放列表文件的范围内唯一的标识了一个特定的演示文稿。</span></pre> <pre><span style="font-family:'宋体';">    一个播放列表文件可能包含多个具有相同</span>PROGRAM-ID <span style="font-family:'宋体';">的</span>EXT-X-STREAM-INF<span style="font-family:'宋体';">标签来标识某个演示文稿的不同编码。这些变种的的播放列表可能包含额外的</span>EXT-X-STREAM-INF<span style="font-family:'宋体';">标签。</span></pre> <pre><span style="font-family:'宋体';"> </span></pre> <pre>CODECS="[format][,format]*"</pre> <pre> </pre> <pre><span style="font-family:'宋体';">每一种格式都指定了存在于媒体文件中的媒体类型。合法的格式标示符都是那些在ISO文件格式名称空间被RFC4281定义的格式。</span></pre> <pre>RESOLUTION=<N>x<M></pre> <pre> </pre> <pre>N<span style="font-family:'宋体';">是流中视频水平编码分辨率的近似,以像素数表示,</span>M<span style="font-family:'宋体';">是编码垂直分辨率的近似。</span></pre> <h3><span style="font-family:Calibri;">3.2.8      EXT-X-DISCONTINUITY</span></h3> <pre><span style="font-family:'宋体';">     EXT-X-DISCONTINUITY标签表示该标签后边的媒体文件和之前的媒体文件之间的编码间断。特性可能改变的一组是:</span></pre> <pre><span style="font-family:'宋体';">file format</span></pre> <pre><span style="font-family:'宋体';">number and type of tracks</span></pre> <pre><span style="font-family:'宋体';">encoding parameters</span></pre> <pre><span style="font-family:'宋体';">encoding sequence</span></pre> <pre><span style="font-family:'宋体';">详见第四章,6.2.1、6.3.3。</span></pre> <pre><span style="font-family:'宋体';"> </span></pre> <pre><span style="font-family:'宋体';"> </span></pre> <h3><span style="font-family:Calibri;">3.2.9      EXT-X-VERSION</span></h3> <pre><span style="font-family:'宋体';">EXT-X-VERSION标签指出了播放列表版本的适应性。播放列表文件、其关联的媒体和服务器必须遵守最新版本的所有规定。</span></pre> <pre><span style="font-family:'宋体';"> </span></pre> <pre><span style="font-family:'宋体';"> </span></pre> <h1><span style="font-family:Calibri;">4 </span>多媒体文件</h1> <pre><span style="font-family:'宋体';">每一个媒体文件资源定位符都必须标识一个媒体文件,该文件是整体数据的一个分片。每个媒体文件必须按照MPEG-2的传输流和MPEG-2音频流的格式。[ISO13818]</span></pre> <pre><span style="font-family:'宋体';">传输流文件必须包含一个MPEG-2节目。在每个文件的开始应该有一个节目关联表和一个节目映射表。包含视频的文件应该有至少一个密钥帧和足够的信息来完全初始化一个视频解码器。</span></pre> <pre><span style="font-family:'宋体';">播放列表中的媒体文件必须是编码流中媒体文件的末尾与先前的序列号的延续,除非它是播放列表中出现的第一个媒体文件,或者它前边有EXT-X-DISCONTINUITY标签。</span></pre> <pre><span style="font-family:'宋体';">客户端应该准备好处理一个特定类型(音频或视频等)的多个轨道。一个没有优先级的客户端应该选择它能播放的具有最小数字编号的音轨。</span></pre> <pre><span style="font-family:'宋体';">客户端应该忽略那些传输流的内部不能识别的流。</span></pre> <pre><span style="font-family:'宋体';">媒体文件内样本流和相应的多媒体流的编码参数应保持一致。然而客户端应该解决编码的变化问题,例如缩放视频内容以适应分辨率改变。</span></pre> <h1><span style="font-family:Calibri;">5 </span>密钥文件</h1> <h2><span style="font-family:Cambria;">5.1</span>介绍</h2> <pre><span style="font-family:'宋体';">    URI属性中EXT-X-KEY标签标识一个密钥文件。密钥文件包含解密播放列表中媒体文件的密钥。AES-128加密算法使用16字节的密钥。密钥文件的格式为16字节的二进制数数组。</span></pre> <h2><span style="font-family:Cambria;">5.2  IV FOR AES-128</span></h2> <pre><span style="font-family:'宋体';">128位AES在加密和解密的时候需要提供一个相同的16字节的初始化向量(IV),变换IV可以提高密钥的健壮性。</span></pre> <pre><span style="font-family:'宋体';">如果EXT-X-KEY标签有IV属性,在使用密钥加密或者解密的时候必须使用此属性值作为IV。这个值必须被解释为128位的16进制数,而且必须有前缀0x。</span></pre> <pre><span style="font-family:'宋体';">    如果EXT-X-KEY标签没有IV属性,在加密或者解密媒体文件的时候必须使用序列号作为IV值。大端二进制表示的序列号应该放置在16字节的缓冲区中且左边补0。</span></pre> <h1><span style="font-family:Calibri;">6 </span>客户端<span style="font-family:Calibri;">/</span>服务器行为</h1> <h2><span style="font-family:Cambria;">6.1</span>介绍</h2> <pre><span style="font-family:'宋体';">本章介绍服务器怎样产生播放列表和媒体文件以及客户端怎样下载并播放。</span></pre> <h2><span style="font-family:Cambria;">6.2</span>服务器进程</h2> <h3><span style="font-family:Calibri;">6.2.1</span>介绍</h3> <pre><span style="font-family:'宋体';">MPEG-2数据流的产生超过了本文档的范围,本文档仅仅假设有一个数据流连续的源。</span></pre> <pre><span style="font-family:'宋体';">服务器必须将数据流分割成持续时间大致相等的媒体文件,服务器应该尝试点分割流来支持对个别媒体文件的有效解码,例如包和关键帧的边界。</span></pre> <pre><span style="font-family:'宋体';">服务器必须为媒体文件创建URI,允许它的客户端能够获取到文件。</span></pre> <pre><span style="font-family:'宋体';">服务器必须创建播放列表。播放列表必须符合第三章描述的格式。服务器要提供的媒体文件的URI必须按顺序出现在播放列表中。如果URI出现在了播放列表中,那么这个媒体文件对于客户端必须是可用的。</span></pre> <pre><span style="font-family:'宋体';">播放列表文件必须包含一个EXT-X-TARGRTDURATION标签,它必须指明添加到播放列表中媒体文件的最大EXTINF值。整个演示文稿期间,这个值必须保持不变。典型持续时间为10s。</span></pre> <pre><span style="font-family:'宋体';">播放列表文件应该包含EXT-X-VERSION标签来说明流对于版本的兼容性。它的值应该是服务器、播放列表文件和其所关联的媒体文件都能执行的最低协议版本。</span></pre> <pre><span style="font-family:'宋体';">如果播放列表文件通过HTTP传输,那么服务器应该支持客户端请求使用gzip内容编码。</span></pre> <pre><span style="font-family:'宋体';">从客户端的角度来看,播放列表文件的变更必须是自动的。</span></pre> <pre><span style="font-family:'宋体';">服务器不可以改变EXT-X-ALLOW-CATCH的值。</span></pre> <pre><span style="font-family:'宋体';">播放列表中每个媒体文件的URI必须以EXTINF作为前缀来说明媒体文件的持续时间。</span></pre> <pre><span style="font-family:'宋体';">服务器可以将媒体文件和绝对的日期和时间关联起来,只要在它的URI前缀上一个</span>EXT-X-PROGRAM-DATE-TIME<span style="font-family:'宋体';">标签。日期和时间的值提供了一个媒体时间表到挂钟时间的信息映射,该<span style="color:rgb(192,0,0);">挂钟时间</span>可以作为搜索、显示或其他目的的基准。</span></pre> <pre><span style="font-family:'宋体';">如果服务器提供了这个映射,那么它应该在每个</span>EXT-X-DISCONTINUITY<span style="font-family:'宋体';">标签的后边加一个</span>EXT-X-PROGRAM-DATE-TIME<span style="font-family:'宋体';">标签。</span></pre> <pre><span style="font-family:'宋体';">如果播放列表文件包含演示文稿的最后一个分片,那么应该加一个</span>EXT-X-ENDLIST<span style="font-family:'宋体';">标签。</span></pre> <pre><span style="font-family:'宋体';">如果播放列表文件没有包含EXT-X-ENDLIST标签,那么服务器应该使一个新版本的播放列表文件可用,并至少包含一个媒体文件的URI。新的播放列表文件必须与前一个播放列表文件在相对的时间内有效:从上一个播放列表文件开始有效的时间算起,不早于0.5倍持续时间,不晚于1.5倍持续时间。<span style="color:#FF0000;">//</span><span style="color:#FF0000;">不太清楚可用是什么意思?</span></span></pre> <pre><span style="font-family:'宋体';">如果服务器期望移除演示文稿,它必须使播放列表文件对于客户端不可用,在播放列表被清除时,它应该确保播放列表文件中的所有媒体文件对于客户端来说至少在一个播放列表文件持续时间内是可用的。</span></pre> <h3><span style="font-family:Calibri;">6.2.2</span>滑动窗口播放列表</h3> <pre><span style="font-family:'宋体';">服务器可以限制最近一段时间添加到播放列表文件中的媒体文件的可用性,为了达到这个目的,播放列表文件必须包含准确的</span>EXT-X-MEDIA-SEQUENCE<span style="font-family:'宋体';">标签。标签的值是按照从播放列表中移除的媒体文件的</span>URI<span style="font-family:'宋体';">递增的。</span></pre> <pre><span style="font-family:'宋体';">媒体文件的</span>URI<span style="font-family:'宋体';">必须按照其加入的顺序移除。当服务器从播放列表移除</span>URI<span style="font-family:'宋体';">时,媒体文件在一段时间内必须保持可用,该时间等于媒体文件的时间加上包含该媒体文件的最长播放列表文件的时间。</span></pre> <pre><span style="font-family:'宋体';">当媒体文件通过</span>http<span style="font-family:'宋体';">传输给客户端后,如果服务器打算移除该文件,那么它应该确保</span>http<span style="font-family:'宋体';">响应头包含反应生存时间的过期头。</span></pre> <pre><span style="font-family:'宋体';">那些不包含EXT-X-ENDLIST标签的播放列表文件的持续时间必须至少三倍于targrtdutration。<span style="color:#FF0000;">//</span><span style="color:#FF0000;">为什么是三倍?</span></span></pre> <h3><span style="font-family:Calibri;">6.2.3</span>加密媒体文件</h3> <pre><span style="font-family:'宋体';">如果媒体文件需要被加密,那么服务器必须定义一个URI来允许被授权的客户端获取包含解密密钥的密钥文件。密钥文件必须符合第五章描述的格式。服务器可以在密钥响应中设置超时头来表名密钥可以被缓存。</span></pre> <pre><span style="font-family:'宋体';">如果采用AES-128加密算法,那么AES-128 CBC加密模式应该适应于每一个媒体文件。整个文件必须是加密的。密码块的连接不能用于跨媒体文件。用于解密的初始化向量必须是媒体文件的序列号或者EXT-X-KEY标签的IV属性的值。服务器必须使用这种加密算法和其他由紧随在播放列表文件中URI后边的EXT-X-KEY标签所指定的属性来加密播放列表文件中的每一个媒体文件。EXT-X-KEY标签中方法为none或者没有EXT-X-KEY标签的媒体文件不能被加密。</span></pre> <pre><span style="font-family:'宋体';">    如果播放列表文件包含了一个经过加密的媒体文件的URI,那么服务器不可以将EXT-X-KEY标签从播放列表文件中移除。</span></pre> <h3><span style="font-family:Calibri;">6.2.4</span>提供变种数据流</h3> <pre><span style="font-family:'宋体';">服务器可以提供多个播放列表文件来支持对同一个演示文稿的不同编码。提<span style="color:#FF0000;">供变种播放列表文件列出每一个变种流,从而使得客户端可以在不同编码之间动</span>态切换。</span></pre> <pre><span style="font-family:'宋体';">变种播放列表文件必须为每一个变种流包含一个EXT-X-STREAM-INF标签。同一演示文稿的每个EXT-X-STREAM-INF都必须有相同的programid。每个演示文稿的programid在变种播放列表内必须是唯一的。</span></pre> <pre><span style="font-family:'宋体';">如果EXT-X-STREAM-INF标签包含CODECS属性,则属性值必须包含RFC4281定义的所有格式,</span></pre> <pre><span style="color:#FF0000;"><span style="font-family:'宋体';"> </span></span></pre> <pre><span style="font-family:'宋体';">服务器在生成变种流的时候必须遵守以下规则:</span></pre> <pre><span style="font-family:'宋体';">1)每一个变种流必须呈现相同的内容,包括流的间断性。</span></pre> <pre><span style="font-family:'宋体';">2)每个变种播放列表文件必须有相同的target duration。</span></pre> <pre><span style="font-family:'宋体';">3)只在个别变种播放列表文件中出现的内容必须放在列表文件的头或者尾,且不能超过target duration。</span></pre> <pre><span style="font-family:'宋体';">4)变种流内匹配内容,必须有匹配时间戳。这可以使客户端同步流。</span></pre> <pre>5)<span style="font-family:'宋体';">基本音频流文件必须在文件中第一个样本的采样信号的时间戳前预先准备一个</span>ID3 PRIV<span style="font-family:'宋体';">标签,标签的所有者标示符为</span>“com.apple.streaming.transportStreamTimestamp”<span style="font-family:'宋体';">。二进制数据必须是</span>33<span style="font-family:'宋体';">位的基本时间戳,用</span>8<span style="font-family:'宋体';">字节的数字表示。</span></pre> <pre> </pre> <pre><span style="font-family:'宋体';">另外,所有的变种流都应该包含相同编码的音频二进制流。这使得客户端在不同的流之间切换时没有毛刺声音。</span><span style="color:#FF0000;">//</span><span style="font-family:'宋体';"><span style="color:#FF0000;">什么事毛刺声音?</span></span></pre> <h2><span style="font-family:Cambria;">6.3</span>客户端进程</h2> <h3><span style="font-family:Calibri;">6.3.1</span>介绍</h3> <pre><span style="font-family:'宋体';">客户端怎样获取播放列表中的URI不在本文档的范围之内,我们假设已经获取到了URI。</span></pre> <h3><span style="font-family:Calibri;">6.3.2</span>加载播放列表文件</h3> <pre><span style="font-family:'宋体';">每一次加载或者重载播放列表文件时:</span></pre> <pre><span style="font-family:'宋体';">客户端必须保证播放列表文件以EXTM3U标签开头,并且如果协议版本号存在,客户端必须支持该版本。否则,客户端不可以试图使用该列表文件。</span></pre> <pre><span style="font-family:'宋体';">客户端可以忽略它不能识别的标签和属性。</span></pre> <pre><span style="font-family:'宋体';">如果播放列表文件包含了EXT-X-MEDIA-SEQUENCE标签,那么客户端会假设在播放列表被加载的时间内以及播放列表的持续时间内媒体文件将变得不可用。播放列表的持续时间等于其中包含的媒体文件时长的总和。<span style="color:#FF0000;">//</span><span style="color:#FF0000;">为啥假设不可用?</span></span></pre> <h3><span style="font-family:Calibri;">6.3.3</span>播放播放列表文件</h3> <pre><span style="font-family:'宋体';">当开始播放的时候,客户端首先从播放列表中选择要播放的媒体文件。如果不存在EXT-X-ENDLIST标签,并且客户端想正常播放媒体(按顺序以标准速率播放),那么客户端就不应该从播放列表文件尾部选择少于三个target duration的媒体文件。</span></pre> <pre><span style="font-family:'宋体';">为了达到正常播放的目的,媒体文件必须按照他们在播放列表中的顺序播放。客户端还可以用其他任何方式播放,比如顺序播放,随机播放,特效播放等。</span></pre> <pre><span style="font-family:'宋体';">对于存在EXT-X-DISCONTINUITY标签的媒体文件,在播放之前客户端必须准备好重置分析和解码器。</span></pre> <pre><span style="font-family:'宋体';">为了不间断播放,应该提前载入媒体文件,以补偿延时和吞吐量的变化。</span></pre> <pre><span style="font-family:'宋体';">如果播放列表文件包含了EXT-X-ALLOW-CATCH标签,并且它的值为NO,那么客户端在播放以后不可以缓存媒体文件。否则允许缓存用来以后重播。</span></pre> <pre><span style="font-family:'宋体';">客户端可以使用EXT-X-PROGRAM-DATE-TIME标签来为用户显示节目的起始时间。如果这个值包含了时区信息,那么客户端应该考虑到这点;如果不包含,那么客户端不可以推测时区。</span></pre> <pre><span style="color:#FF0000;"><span style="font-family:'宋体';">客户端不能依靠EXT-X-ALLOW-CATCH</span></span>标签值的正确性和一致性。</pre> <h3><span style="font-family:Calibri;">6.3.4</span>重新载入播放列表文件</h3> <pre><span style="font-family:'宋体';">客户端必须阶段性的重新载入播放列表文件,除非文件包含了EXT-X-ENDLIST标签。然而也不能过于频繁的载入。</span></pre> <pre><span style="font-family:'宋体';">当客户端第一次载入播放列表文件或者已经载入但是发现文件与上次载入的时候有了变化,客户端都必须等待一段时间在可以再次载入。这段时间被称为原始最小重载延迟,它是从客户端开始载入一个播放列表文件开始计算的。</span></pre> <pre><span style="font-family:'宋体';">原始最小重载延迟是播放列表文件中最后一个媒体文件的持续时间。媒体文件的持续时间由EXTINF标签来指定。</span></pre> <pre><span style="font-family:'宋体';">如果客户端重载了一个播放列表文件,但是发现文件并没有变化,那么它在重试之前必须等一段时间。最小延迟是target duration的倍数。第一次是0.5倍,第二次1.5倍,3倍。。。</span></pre> <h3><span style="font-family:Calibri;">6.3.5</span>确定下一个要加载的文件</h3> <pre><span style="font-family:'宋体';">当播放列表文件被载入或者重载以后,客户端必须检查播放列表来确定要载入的媒体文件。要载入的第一个文件必须是客户端要播放的第一个文件,见6.3.3。</span></pre> <pre><span style="font-family:'宋体';">    如果要播放的文件已经被载入,并且播放列表文件不包含EXT-X-MEDIA-SEQUENCE标签,那么客户端必须确认播放列表文件包含了最后一个被载入的媒体文件的URI,如果不包含,则暂停播放。要载入的下一个媒体文件必须是上一次载入的媒体文件URI之后的第一个媒体文件的URI。</span></pre> <pre><span style="font-family:'宋体';">    如果要播放的文件已经被载入,并且播放列表文件包含EXT-X-MEDIA-SEQUENCE标签,那么要载入的下一个媒体文件就是比上一次载入的文件的序列号大的媒体文件中的序列号最小者。</span></pre> <h3><span style="font-family:Calibri;">6.3.6</span>解密经加密的媒体文件</h3> <pre><span style="font-family:'宋体';">如果播放列表文件包含了一个指定密钥文件URI的EXT-X-KEY标签,客户端必须获取密钥文件,并使用其中的密钥来解密KEY标签之后的所有媒体文件,直到遇到另一个EXT-X-KEY标签为止。</span></pre> <h1><span style="font-family:Calibri;">7 </span>协议版本的兼容性</h1> <pre><span style="font-family:'宋体';">客户端和服务器必须使用版本2以及更高版本。</span></pre> <pre><span style="font-family:'宋体';"> </span></pre> <pre><span style="font-family:'宋体';"> </span></pre> <h1><span style="font-family:Calibri;">8 </span>例子</h1> <h2><span style="font-family:Cambria;">8.1</span>简单的播放列表文件</h2> <p> #EXTM3U</p> <p> #EXT-X-TARGETDURATION:5220</p> <p> #EXTINF:5220,</p> <p> http://media.example.com/entire.ts</p> <p> #EXT-X-ENDLIST</p> <p>  </p> <h2><span style="font-family:Cambria;">8.2</span>滑动窗口播放列表,使用<span style="font-family:Cambria;">https</span></h2> <p> #EXTM3U</p> <p> #EXT-X-TARGETDURATION:8</p> <p> #EXT-X-MEDIA-SEQUENCE:2680</p> <p> #EXTINF:8,</p> <p> https://priv.example.com/fileSequence2680.ts</p> <p> #EXTINF:8,</p> <p> https://priv.example.com/fileSequence2681.ts</p> <p> #EXTINF:8,</p> <pre>https://priv.example.com/fileSequence2682.ts</pre> <pre><span style="font-family:'宋体';"> </span></pre> <h2><span style="font-family:Cambria;">8.3</span>加密的媒体文件与播放列表文件</h2> <p> #EXTM3U</p> <p> #EXT-X-MEDIA-SEQUENCE:7794</p> <p> #EXT-X-TARGETDURATION:15</p> <p> #EXT-X-KEY:METHOD=AES-128,URI="https://priv.example.com/key.php?r=52"</p> <p> #EXTINF:15,</p> <p> http://media.example.com/fileSequence52-1.ts</p> <p> #EXTINF:15,</p> <p> http://media.example.com/fileSequence52-2.ts</p> <p> #EXTINF:15,</p> <p> http://media.example.com/fileSequence52-3.ts</p> <p> #EXT-X-KEY:METHOD=AES-128,URI="https://priv.example.com/key.php?r=53"</p> <p> #EXTINF:15,</p> <pre>http://media.example.com/fileSequence53-1.ts</pre> <h2>变种的播放列表文件</h2> <p> #EXTM3U</p> <p> #EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=1280000</p> <p> http://example.com/low.m3u8</p> <p> #EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=2560000</p> <p> http://example.com/mid.m3u8</p> <p> #EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=7680000</p> <p> http://example.com/hi.m3u8</p> <p> #EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=65000,CODECS="mp4a.40.5"</p> <pre>http://example.com/audio-only.m3u8</pre> </div> </div> </div> </div> </div> </div> <!--PC和WAP自适应版--> <div id="SOHUCS" sid="1295760928515629056"></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">你可能感兴趣的:(媒体技术,HLS)</h4> <div id="paradigm-article-related"> <div class="recommend-post mb30"> <ul class="widget-links"> <li><a href="/article/1880454572909064192.htm" title="无人机技术架构剖析!" target="_blank">无人机技术架构剖析!</a> <span class="text-muted">云卓SKYDROID</span> <a class="tag" taget="_blank" href="/search/%E6%97%A0%E4%BA%BA%E6%9C%BA/1.htm">无人机</a><a class="tag" taget="_blank" href="/search/%E4%BA%91%E5%8D%93%E7%A7%91%E6%8A%80/1.htm">云卓科技</a><a class="tag" taget="_blank" href="/search/%E7%A7%91%E6%99%AE/1.htm">科普</a><a class="tag" taget="_blank" href="/search/%E4%BA%BA%E5%B7%A5%E6%99%BA%E8%83%BD/1.htm">人工智能</a><a class="tag" taget="_blank" href="/search/%E6%97%A0%E4%BA%BA%E6%9C%BA%E6%9E%B6%E6%9E%84/1.htm">无人机架构</a> <div>一、飞机平台系统飞机平台系统是无人机飞行的主体平台,主要提供飞行能力和装载功能。它由机体结构、动力装置、电气设备等组成。机体结构:无人机的机身是其核心结构,承载着其他各个组件并提供稳定性。常见的机身材料包括碳纤维、铝合金、塑料等轻量化材质,以保证无人机在飞行中的轻便性和耐用性。机身设计通常需要考虑空气动力学特性,以减少空气阻力,提高续航时间和飞行稳定性。动力装置:无人机的动力系统决定了其飞行能力,</div> </li> <li><a href="/article/1880453439431962624.htm" title="Python学习路线" target="_blank">Python学习路线</a> <span class="text-muted">Python_JC</span> <a class="tag" taget="_blank" href="/search/python/1.htm">python</a> <div>Python是一门易学易用的编程语言,广泛应用于数据处理、Web开发、人工智能、自动化运维、游戏开发等领域。本篇文章将介绍Python的学习路线以及一些值得参考的书籍。Python学习路线Python的学习路线主要包括以下几个方面:掌握Python基础知识:了解变量、数据类型、表达式、流程控制、函数、模块等基础概念。学习Python面向对象编程:学习类、对象、继承、多态等面向对象编程的概念和技术。</div> </li> <li><a href="/article/1880451298046832640.htm" title="2025年地信、遥感等专业常见考试时间一览(教资/四六级/测绘师……" target="_blank">2025年地信、遥感等专业常见考试时间一览(教资/四六级/测绘师……</a> <span class="text-muted">新中地GIS开发老师</span> <a class="tag" taget="_blank" href="/search/GIS/1.htm">GIS</a><a class="tag" taget="_blank" href="/search/%E5%9C%B0%E4%BF%A1/1.htm">地信</a><a class="tag" taget="_blank" href="/search/%E5%9C%B0%E7%90%86%E4%BF%A1%E6%81%AF%E7%A7%91%E5%AD%A6/1.htm">地理信息科学</a><a class="tag" taget="_blank" href="/search/%E5%9C%B0%E7%90%86%E4%BF%A1%E6%81%AF%E7%B3%BB%E7%BB%9F/1.htm">地理信息系统</a><a class="tag" taget="_blank" href="/search/%E5%B9%B2%E8%B4%A7%E5%88%86%E4%BA%AB/1.htm">干货分享</a><a class="tag" taget="_blank" href="/search/arcgis/1.htm">arcgis</a> <div>25年的部分考试时间线基本上也确定了下来,我们今天就来总结一下地信遥感等专业25年常见的考试时间(以考试时间为准,报名时间需提前):(部分证书考试尚未公布具体时间,暂按照24年时间)一、2025年上半年中小学教师资格(笔试)考试时间:3月8日二、2025年上半年全国计算机等级考试考试时间:3月29日、31日三、2025年上半年GIS应用技术测评考试时间:5月中旬四、2025年上半年中小学教师资格(</div> </li> <li><a href="/article/1880450542535241728.htm" title="【2025最新计算机毕业设计】基于SSM的旅游与自然保护平台【提供源码+答辩PPT+文档+项目部署】" target="_blank">【2025最新计算机毕业设计】基于SSM的旅游与自然保护平台【提供源码+答辩PPT+文档+项目部署】</a> <span class="text-muted">万码堂源码</span> <a class="tag" taget="_blank" href="/search/%E8%AE%A1%E7%AE%97%E6%9C%BA%E6%AF%95%E8%AE%BE%E7%B2%BE%E5%93%81%E5%AE%9E%E6%88%98%E6%A1%88%E4%BE%8B/1.htm">计算机毕设精品实战案例</a><a class="tag" taget="_blank" href="/search/%E5%AE%9E%E6%88%98%E9%A1%B9%E7%9B%AE%E6%BA%90%E7%A0%81/1.htm">实战项目源码</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><a class="tag" taget="_blank" href="/search/%E5%89%8D%E7%AB%AF/1.htm">前端</a><a class="tag" taget="_blank" href="/search/%E8%AE%A1%E7%AE%97%E6%9C%BA%E6%AF%95%E4%B8%9A%E8%AE%BE%E8%AE%A1/1.htm">计算机毕业设计</a><a class="tag" taget="_blank" href="/search/%E6%AF%95%E8%AE%BE%E9%A1%B9%E7%9B%AE/1.htm">毕设项目</a><a class="tag" taget="_blank" href="/search/spring/1.htm">spring</a><a class="tag" taget="_blank" href="/search/boot/1.htm">boot</a> <div>作者简介:✌CSDN新星计划导师、Java领域优质创作者、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和学生毕业项目实战,高校老师/讲师/同行前辈交流。✌主要内容:Java项目、Python项目、前端项目、PHP、ASP.NET、人工智能与大数据、单片机开发、物联网设计与开发设计、简历模板、学习资料、面试题库、技术互助、就业指导等。业务范围:免费功能设计、开题报告、任务书</div> </li> <li><a href="/article/1880450416257331200.htm" title="【源码+文档】基于SpringBoot+Vue旅游网站系统【提供源码+答辩PPT+参考文档+项目部署】" target="_blank">【源码+文档】基于SpringBoot+Vue旅游网站系统【提供源码+答辩PPT+参考文档+项目部署】</a> <span class="text-muted">万码堂源码</span> <a class="tag" taget="_blank" href="/search/%E5%AE%9E%E6%88%98%E9%A1%B9%E7%9B%AE%E6%BA%90%E7%A0%81/1.htm">实战项目源码</a><a class="tag" taget="_blank" href="/search/%E8%AE%A1%E7%AE%97%E6%9C%BA%E6%AF%95%E8%AE%BE%E7%B2%BE%E5%93%81%E5%AE%9E%E6%88%98%E6%A1%88%E4%BE%8B/1.htm">计算机毕设精品实战案例</a><a class="tag" taget="_blank" href="/search/spring/1.htm">spring</a><a class="tag" taget="_blank" href="/search/boot/1.htm">boot</a><a class="tag" taget="_blank" href="/search/vue.js/1.htm">vue.js</a><a class="tag" taget="_blank" href="/search/%E6%97%85%E6%B8%B8/1.htm">旅游</a> <div>作者简介:✌CSDN新星计划导师、Java领域优质创作者、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和学生毕业项目实战,高校老师/讲师/同行前辈交流。✌主要内容:Java项目、Python项目、前端项目、PHP、ASP.NET、人工智能与大数据、单片机开发、物联网设计与开发设计、简历模板、学习资料、面试题库、技术互助、就业指导等。业务范围:免费功能设计、开题报告、任务书</div> </li> <li><a href="/article/1880449533712855040.htm" title="利用Python爬虫获取阿里巴巴商品详情:代码示例与实践指南" target="_blank">利用Python爬虫获取阿里巴巴商品详情:代码示例与实践指南</a> <span class="text-muted">小爬虫程序猿</span> <a class="tag" taget="_blank" href="/search/API/1.htm">API</a><a class="tag" taget="_blank" href="/search/python/1.htm">python</a><a class="tag" taget="_blank" href="/search/%E7%88%AC%E8%99%AB/1.htm">爬虫</a><a class="tag" taget="_blank" href="/search/%E5%BC%80%E5%8F%91%E8%AF%AD%E8%A8%80/1.htm">开发语言</a> <div>在电商数据分析和市场研究中,获取商品详情是至关重要的一步。虽然阿里巴巴开放平台提供了官方API来获取商品信息,但在某些情况下,使用爬虫技术来抓取数据也是一种有效的手段。本文将介绍如何利用Python爬虫获取阿里巴巴商品详情,并提供详细的代码示例。一、准备工作(一)环境搭建确保你的Python环境已经安装了以下必要的库:requests:用于发送HTTP请求。BeautifulSoup:用于解析HT</div> </li> <li><a href="/article/1880447264980267008.htm" title="docker 与K8s的恩怨情仇" target="_blank">docker 与K8s的恩怨情仇</a> <span class="text-muted">慧香一格</span> <a class="tag" taget="_blank" href="/search/docker/1.htm">docker</a><a class="tag" taget="_blank" href="/search/K8s/1.htm">K8s</a><a class="tag" taget="_blank" href="/search/%E5%AE%B9%E5%99%A8/1.htm">容器</a><a class="tag" taget="_blank" href="/search/docker/1.htm">docker</a><a class="tag" taget="_blank" href="/search/kubernetes/1.htm">kubernetes</a><a class="tag" taget="_blank" href="/search/%E5%AE%B9%E5%99%A8/1.htm">容器</a> <div>Docker和Kubernetes(通常简称为K8s)是容器化和容器编排领域的两大重要工具,它们在技术生态中扮演着不同的角色,并且有着密切的关系。虽然有时候人们会讨论它们之间的关系,但实际上它们更多的是互补而不是对立。下面详细探讨Docker与Kubernetes的关系及其各自的优劣势。Docker什么是Docker?Docker是一个开源的平台,用于自动化应用程序的部署、扩展和管理。它允许开发者</div> </li> <li><a href="/article/1880446508004864000.htm" title="自动驾驶中的混合决策架构" target="_blank">自动驾驶中的混合决策架构</a> <span class="text-muted">AI天才研究院</span> <a class="tag" taget="_blank" href="/search/ChatGPT/1.htm">ChatGPT</a><a class="tag" taget="_blank" href="/search/AI%E5%A4%A7%E6%A8%A1%E5%9E%8B%E4%BC%81%E4%B8%9A%E7%BA%A7%E5%BA%94%E7%94%A8%E5%BC%80%E5%8F%91%E5%AE%9E%E6%88%98/1.htm">AI大模型企业级应用开发实战</a><a class="tag" taget="_blank" href="/search/%E5%A4%A7%E6%95%B0%E6%8D%AEAI%E4%BA%BA%E5%B7%A5%E6%99%BA%E8%83%BD/1.htm">大数据AI人工智能</a><a class="tag" taget="_blank" href="/search/%E5%A4%A7%E5%8E%82Offer%E6%94%B6%E5%89%B2%E6%9C%BA/1.htm">大厂Offer收割机</a><a class="tag" taget="_blank" href="/search/%E9%9D%A2%E8%AF%95%E9%A2%98/1.htm">面试题</a><a class="tag" taget="_blank" href="/search/%E7%AE%80%E5%8E%86/1.htm">简历</a><a class="tag" taget="_blank" href="/search/%E7%A8%8B%E5%BA%8F%E5%91%98%E8%AF%BB%E4%B9%A6/1.htm">程序员读书</a><a class="tag" taget="_blank" href="/search/%E7%A1%85%E5%9F%BA%E8%AE%A1%E7%AE%97/1.htm">硅基计算</a><a class="tag" taget="_blank" href="/search/%E7%A2%B3%E5%9F%BA%E8%AE%A1%E7%AE%97/1.htm">碳基计算</a><a class="tag" taget="_blank" href="/search/%E8%AE%A4%E7%9F%A5%E8%AE%A1%E7%AE%97/1.htm">认知计算</a><a class="tag" taget="_blank" href="/search/%E7%94%9F%E7%89%A9%E8%AE%A1%E7%AE%97/1.htm">生物计算</a><a class="tag" taget="_blank" href="/search/%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0/1.htm">深度学习</a><a class="tag" taget="_blank" href="/search/%E7%A5%9E%E7%BB%8F%E7%BD%91%E7%BB%9C/1.htm">神经网络</a><a class="tag" taget="_blank" href="/search/%E5%A4%A7%E6%95%B0%E6%8D%AE/1.htm">大数据</a><a class="tag" taget="_blank" href="/search/AIGC/1.htm">AIGC</a><a class="tag" taget="_blank" href="/search/AGI/1.htm">AGI</a><a class="tag" taget="_blank" href="/search/LLM/1.htm">LLM</a><a class="tag" taget="_blank" href="/search/Java/1.htm">Java</a><a class="tag" taget="_blank" href="/search/Python/1.htm">Python</a><a class="tag" taget="_blank" href="/search/%E6%9E%B6%E6%9E%84%E8%AE%BE%E8%AE%A1/1.htm">架构设计</a><a class="tag" taget="_blank" href="/search/Agent/1.htm">Agent</a><a class="tag" taget="_blank" href="/search/%E7%A8%8B%E5%BA%8F%E5%91%98%E5%AE%9E%E7%8E%B0%E8%B4%A2%E5%AF%8C%E8%87%AA%E7%94%B1/1.htm">程序员实现财富自由</a> <div>自动驾驶中的混合决策架构关键词:自动驾驶、混合决策架构、决策模型、算法、数学模型、项目实战摘要:本文将深入探讨自动驾驶中的混合决策架构,从基础理论到实际应用,全面解析这一领域的核心概念、算法原理及其在自动驾驶中的具体应用。通过详细的项目实战案例,本文旨在为读者提供全面的技术指导和深刻的思考。第一部分:自动驾驶基础理论第1章:自动驾驶概述自动驾驶技术的发展背景源于人类对便捷、安全和高效的交通出行的需</div> </li> <li><a href="/article/1880446004227010560.htm" title="大模型开发的5种应用架构" target="_blank">大模型开发的5种应用架构</a> <span class="text-muted">我爱学大模型</span> <a class="tag" taget="_blank" href="/search/%E5%A4%A7%E6%95%B0%E6%8D%AE/1.htm">大数据</a><a class="tag" taget="_blank" href="/search/%E4%BA%BA%E5%B7%A5%E6%99%BA%E8%83%BD/1.htm">人工智能</a><a class="tag" taget="_blank" href="/search/%E8%87%AA%E7%84%B6%E8%AF%AD%E8%A8%80%E5%A4%84%E7%90%86/1.htm">自然语言处理</a><a class="tag" taget="_blank" href="/search/%E5%A4%A7%E6%A8%A1%E5%9E%8B%E6%9C%BA%E5%99%A8%E4%BA%BA/1.htm">大模型机器人</a><a class="tag" taget="_blank" href="/search/%E5%A4%A7%E6%A8%A1%E5%9E%8B%E5%BC%80%E5%8F%91/1.htm">大模型开发</a><a class="tag" taget="_blank" href="/search/ai%E5%A4%A7%E6%A8%A1%E5%9E%8B/1.htm">ai大模型</a><a class="tag" taget="_blank" href="/search/%E8%AE%A1%E7%AE%97%E6%9C%BA%E6%8A%80%E6%9C%AF/1.htm">计算机技术</a> <div>架构对一个项目来说至关重要,它们能帮助构建高效、可维护的系统。然而,当我们进入大模型应用领域时,传统的设计模式似乎不再完全适用。生成式AI等新兴技术的出现,使得我们在设计这些系统时面临前所未有的挑战。在大模型应用实现过程中存在许多独特的问题,例如高昂的成本、较长的响应延迟以及生成内容的不确定性。这些问题要求我们在设计时采用新的方法和策略,以确保系统的稳定性和效率。为了解决这些问题,总结了一些针对大</div> </li> <li><a href="/article/1880445248279212032.htm" title="美国最高法院维持TikTok不卖就禁法案;荣耀 CEO 赵明辞职;OpenAI计划几周内推出o3 mini推理模型 | 极客头条" target="_blank">美国最高法院维持TikTok不卖就禁法案;荣耀 CEO 赵明辞职;OpenAI计划几周内推出o3 mini推理模型 | 极客头条</a> <span class="text-muted">极客日报</span> <a class="tag" taget="_blank" href="/search/tiktok/1.htm">tiktok</a><a class="tag" taget="_blank" href="/search/openai/1.htm">openai</a> <div>「极客头条」——技术人员的新闻圈!CSDN的读者朋友们好,「极客头条」来啦,快来看今天都有哪些值得我们技术人关注的重要新闻吧。整理|苏宓出品|CSDN(ID:CSDNnews)一分钟速览新闻点!荣耀CEO赵明辞职,前为华为监事李健继任阿里巴巴内部调整:天猫精灵硬件团队与夸克融合,瞄准AI眼镜市场小米NAS已进入到开发的尾声传特斯拉上海工厂春节期间将停产,内部人员:没听说此事游戏科学在杭州成立黑神话</div> </li> <li><a href="/article/1880444366506487808.htm" title="华为云计算平台架构介绍" target="_blank">华为云计算平台架构介绍</a> <span class="text-muted">单车~</span> <a class="tag" taget="_blank" href="/search/%E7%AE%97%E6%B3%95/1.htm">算法</a><a class="tag" taget="_blank" href="/search/%E6%95%B0%E6%8D%AE%E7%BB%93%E6%9E%84/1.htm">数据结构</a> <div>在当今数字化时代,云计算已成为企业实现数字化转型和创新发展的关键支撑技术。华为作为全球领先的信息与通信技术(ICT)解决方案供应商,凭借先进的技术和创新的设计,其云计算平台架构为用户提供了高效、可靠、安全且灵活的云计算服务。一、总体架构概述华为云计算平台架构秉持分层设计的理念,涵盖了基础设施层(IaaS)、平台层(PaaS)以及应用层(SaaS)。这样的分层架构,能够让各层实现独立的扩展与优化,并</div> </li> <li><a href="/article/1880443485190942720.htm" title="Oracle 学习全攻略" target="_blank">Oracle 学习全攻略</a> <span class="text-muted">来恩1003</span> <a class="tag" taget="_blank" href="/search/Oracle/1.htm">Oracle</a><a class="tag" taget="_blank" href="/search/oracle/1.htm">oracle</a><a class="tag" taget="_blank" href="/search/%E5%AD%A6%E4%B9%A0/1.htm">学习</a><a class="tag" taget="_blank" href="/search/%E6%95%B0%E6%8D%AE%E5%BA%93/1.htm">数据库</a> <div>Oracle学习资料Oracle学习资料Oracle学习资料在当今信息技术蓬勃发展的时代,数据库管理系统起着举足轻重的作用,而Oracle作为行业内的领军者,以其强大、稳定、高效的特性,广泛应用于金融、电信、政府等诸多关键领域。若你渴望踏入数据库领域的高阶殿堂,开启Oracle的学习之旅无疑是明智之举。以下将为你详细阐述Oracle的学习路径。一、入门奠基:环境搭建与初步认知了解Oracle体系架</div> </li> <li><a href="/article/1880443107057659904.htm" title="Intel系统编程指南第八章——8.8 多核架构" target="_blank">Intel系统编程指南第八章——8.8 多核架构</a> <span class="text-muted">zenny_chen</span> <a class="tag" taget="_blank" href="/search/%E6%93%8D%E4%BD%9C%E7%B3%BB%E7%BB%9F%E5%8F%8A%E5%B5%8C%E5%85%A5%E5%BC%8F%E5%BC%80%E5%8F%91/1.htm">操作系统及嵌入式开发</a><a class="tag" taget="_blank" href="/search/%E7%BC%96%E7%A8%8B/1.htm">编程</a><a class="tag" taget="_blank" href="/search/cache/1.htm">cache</a><a class="tag" taget="_blank" href="/search/%E5%A4%9A%E7%BA%BF%E7%A8%8B/1.htm">多线程</a><a class="tag" taget="_blank" href="/search/%E5%AD%98%E5%82%A8/1.htm">存储</a><a class="tag" taget="_blank" href="/search/%E5%B7%A5%E5%85%B7/1.htm">工具</a><a class="tag" taget="_blank" href="/search/%E6%89%A9%E5%B1%95/1.htm">扩展</a> <div>本小节描述了支持双核和四核技术的Intel64和IA-32处理器的架构。本讨论可应用于Intel奔腾处理器至尊版、奔腾D处理器、Intel酷睿Duo、双核Intel至强处理器、Intel酷睿2Quad处理器,以及四核Intel至强处理器。通常而言,每个处理器核心具有专用的架构资源,与底层的不带硬件多线程性能微架构的一单个处理器实现相同。一个双核处理器中的每个逻辑处理器(不管是否支持Intel超线程</div> </li> <li><a href="/article/1880442854862548992.htm" title="华为CANN架构与Ascend C算子开发" target="_blank">华为CANN架构与Ascend C算子开发</a> <span class="text-muted">z1931195</span> <a class="tag" taget="_blank" href="/search/%E5%8D%8E%E4%B8%BA/1.htm">华为</a> <div>CANN架构CANN(ComputeArchitectureforNeuralNetworks)是华为专为应对人工智能场景而推出的一种新型异构计算架构。在当前快速发展的AI技术背景下,CANN致力于提供一种高效且灵活的解决方案,以支持多种AI框架的应用。其设计不仅仅关注于上层应用的兼容性,同时也服务于底层AI处理器的优化和编程需求,发挥了承上启下的关键作用,成为华为昇腾AI处理器计算效率提升的核心</div> </li> <li><a href="/article/1880441592070860800.htm" title="LargeAD:用于自动驾驶的大规模跨传感器数据预训练" target="_blank">LargeAD:用于自动驾驶的大规模跨传感器数据预训练</a> <span class="text-muted">硅谷秋水</span> <a class="tag" taget="_blank" href="/search/%E8%87%AA%E5%8A%A8%E9%A9%BE%E9%A9%B6/1.htm">自动驾驶</a><a class="tag" taget="_blank" href="/search/%E8%AE%A1%E7%AE%97%E6%9C%BA%E8%A7%86%E8%A7%89/1.htm">计算机视觉</a><a class="tag" taget="_blank" href="/search/%E6%9C%BA%E5%99%A8%E5%AD%A6%E4%B9%A0/1.htm">机器学习</a><a class="tag" taget="_blank" href="/search/%E8%87%AA%E5%8A%A8%E9%A9%BE%E9%A9%B6/1.htm">自动驾驶</a><a class="tag" taget="_blank" href="/search/%E4%BA%BA%E5%B7%A5%E6%99%BA%E8%83%BD/1.htm">人工智能</a><a class="tag" taget="_blank" href="/search/%E6%9C%BA%E5%99%A8%E5%AD%A6%E4%B9%A0/1.htm">机器学习</a><a class="tag" taget="_blank" href="/search/%E8%AE%A1%E7%AE%97%E6%9C%BA%E8%A7%86%E8%A7%89/1.htm">计算机视觉</a> <div>25年1月来自新加坡国立大学、南京航空航天、德国Bremerhaven技术大学、上海AI实验室、香港科技大学和香港大学的论文“LargeAD:Large-ScaleCross-SensorDataPretrainingforAutonomousDriving”。视觉基础模型(VFM)的最新进展彻底改变2D视觉感知,但它们在3D场景理解方面的潜力,特别是在自动驾驶应用中的潜力仍未得到充分探索。Lar</div> </li> <li><a href="/article/1880436030029492224.htm" title="手机云存储同步电脑软件,手机云存储同步电脑软件的教程,个人云电脑是什么以及怎么连接" target="_blank">手机云存储同步电脑软件,手机云存储同步电脑软件的教程,个人云电脑是什么以及怎么连接</a> <span class="text-muted"></span> <a class="tag" taget="_blank" href="/search/%E5%90%8E%E7%AB%AF/1.htm">后端</a> <div>远程连接技术的兴起,犹如一场静悄悄的革命,颠覆了传统的工作和生活模式。它让距离不再是问题,人们可以在任何时间、任何地点,与任何人进行沟通和协作。在疫情期间,远程连接更是成为了维持社会运转的重要支撑,企业依靠它实现远程办公,学校借助它开展线上教学。这种技术的普及,不仅体现了科技的强大力量,也让我们看到了未来工作与生活的无限可能,它将继续塑造一个更加互联互通的世界。接下来和大家一起探索手机云存储同步电</div> </li> <li><a href="/article/1880435157551345664.htm" title="集团企业IT技术架构规划方案(基于TOGAF企业架构框架方法论)" target="_blank">集团企业IT技术架构规划方案(基于TOGAF企业架构框架方法论)</a> <span class="text-muted">公众号:优享智库</span> <a class="tag" taget="_blank" href="/search/%E6%95%B0%E5%AD%97%E5%8C%96%E8%BD%AC%E5%9E%8B/1.htm">数字化转型</a><a class="tag" taget="_blank" href="/search/%E6%95%B0%E6%8D%AE%E6%B2%BB%E7%90%86/1.htm">数据治理</a><a class="tag" taget="_blank" href="/search/%E4%B8%BB%E6%95%B0%E6%8D%AE/1.htm">主数据</a><a class="tag" taget="_blank" href="/search/%E6%95%B0%E6%8D%AE%E4%BB%93%E5%BA%93/1.htm">数据仓库</a><a class="tag" taget="_blank" href="/search/%E6%9E%B6%E6%9E%84/1.htm">架构</a><a class="tag" taget="_blank" href="/search/%E5%BE%AE%E6%9C%8D%E5%8A%A1/1.htm">微服务</a><a class="tag" taget="_blank" href="/search/%E4%BA%91%E5%8E%9F%E7%94%9F/1.htm">云原生</a> <div>集团企业IT技术架构规划方案(基于TOGAF企业架构框架方法论)集团企业IT技术架构规划方案(基于TOGAF企业架构框架方法论)引言项目背景与目标TOGAF方法论简介规划方案概述企业现状分析与评估业务流程梳理现有IT架构评估存在问题及挑战分析架构设计原则与策略制定架构设计原则确定技术选型及标准化策略安全性、可靠性和可扩展性考虑业务架构规划与设计业务需求梳理与整合业务功能模块划分业务流程优化建议数据</div> </li> <li><a href="/article/1880433885561548800.htm" title="产品解读 | 构建数智融合时代下的一站式大数据平台" target="_blank">产品解读 | 构建数智融合时代下的一站式大数据平台</a> <span class="text-muted"></span> <div>随着智能化技术的飞速发展,尤其是以生成式AI为代表的技术快速应用,推动了数据与智能的深化融合,给数据基础设施带来了新的变革和挑战。如何简化日益复杂的系统架构,提高数据处理效率,降低开发运维成本,促进数据开放共享和创新应用,成为企业关注的核心问题。一站式大数据平台,旨在通过一个平台即可满足各类业务需求,成为数智融合时代下数据基础设施的发展趋势,并从四个维度向四个“一体化”方向演进:数据架构-湖仓集一</div> </li> <li><a href="/article/1880433758486720512.htm" title="重新认识下:从程序员泥瓦匠到增长黑客子木" target="_blank">重新认识下:从程序员泥瓦匠到增长黑客子木</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> <div>Welcometo子木聊出海!从「程序员泥瓦匠」写技术博客,现在改到「子木聊出海」写一写以下相关的,欢迎阅读和交流~一、关于我我是子木,10年的SaaS、营销、电商和AI等领域经验,一路从技术开发到产品与增长负责人。在过去的职业生涯中,我的工作经历跨越了从编写代码、产品研发、到驱动增长的不同领域,尤其专注于工具类产品的设计、推广和用户增长策略二、我的职业旅程:从技术,到产品,再到增长驱动产品我的职</div> </li> <li><a href="/article/1880431125059399680.htm" title="TOGAF中的企业架构:让业务架构与数据、应用、技术架构形成闭环的魔法之旅" target="_blank">TOGAF中的企业架构:让业务架构与数据、应用、技术架构形成闭环的魔法之旅</a> <span class="text-muted">火山说数</span> <a class="tag" taget="_blank" href="/search/%E6%95%B0%E5%AD%97%E5%8C%96/1.htm">数字化</a><a class="tag" taget="_blank" href="/search/%E4%BC%81%E4%B8%9A%E6%9E%B6%E6%9E%84/1.htm">企业架构</a><a class="tag" taget="_blank" href="/search/%E6%9E%B6%E6%9E%84/1.htm">架构</a><a class="tag" taget="_blank" href="/search/%E5%BE%AE%E6%9C%8D%E5%8A%A1/1.htm">微服务</a><a class="tag" taget="_blank" href="/search/%E4%BA%91%E5%8E%9F%E7%94%9F/1.htm">云原生</a> <div>前言你是否曾经有过这样一种感觉:企业在进行数字化转型时,架构之间常常感觉像是一盘散沙?业务部门、IT部门、数据分析师各自为政,技术团队则像一群“救火队员”随时准备扑灭各种系统bug。好消息是,TOGAF(TheOpenGroupArchitectureFramework)可以帮助企业打破这种局面,让业务架构(BusinessArchitecture)和其他“三A”架构——数据架构(DataArch</div> </li> <li><a href="/article/1880428729457504256.htm" title="基于JAVA面向餐饮行业的会员营销系统计算机毕业设计源码+数据库+lw文档+系统+部署" target="_blank">基于JAVA面向餐饮行业的会员营销系统计算机毕业设计源码+数据库+lw文档+系统+部署</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/%E5%BC%80%E5%8F%91%E8%AF%AD%E8%A8%80/1.htm">开发语言</a> <div>基于JAVA面向餐饮行业的会员营销系统计算机毕业设计源码+数据库+lw文档+系统+部署基于JAVA面向餐饮行业的会员营销系统计算机毕业设计源码+数据库+lw文档+系统+部署本源码技术栈:项目架构:B/S架构开发语言:Java语言开发软件:ideaeclipse前端技术:Layui、HTML、CSS、JS、JQuery等技术后端技术:JAVA运行环境:Win10、JDK1.8数据库:MySQL5.7</div> </li> <li><a href="/article/1880426712727089152.htm" title="物联网工业级网关解决方案 工业4G路由器助力智慧生活" target="_blank">物联网工业级网关解决方案 工业4G路由器助力智慧生活</a> <span class="text-muted">博晶网络</span> <a class="tag" taget="_blank" href="/search/%E5%B7%A5%E4%B8%9A4G%E8%B7%AF%E7%94%B1%E5%99%A8%E6%A8%A1%E5%9D%97/1.htm">工业4G路由器模块</a><a class="tag" taget="_blank" href="/search/4G%E8%BD%ACWiFi/1.htm">4G转WiFi</a><a class="tag" taget="_blank" href="/search/%E7%89%A9%E8%81%94%E7%BD%91%E7%BD%91%E5%85%B3%E6%96%B9%E6%A1%88/1.htm">物联网网关方案</a><a class="tag" taget="_blank" href="/search/%E5%B7%A5%E4%B8%9A4G%E8%B7%AF%E7%94%B1%E5%99%A8%E6%A8%A1%E5%9D%97/1.htm">工业4G路由器模块</a><a class="tag" taget="_blank" href="/search/%E5%B7%A5%E4%B8%9A4G%E8%B7%AF%E7%94%B1%E5%99%A8/1.htm">工业4G路由器</a><a class="tag" taget="_blank" href="/search/%E5%B7%A5%E4%B8%9A%E7%BA%A7%E7%BD%91%E5%85%B3/1.htm">工业级网关</a><a class="tag" taget="_blank" href="/search/%E7%89%A9%E8%81%94%E7%BD%91/1.htm">物联网</a><a class="tag" taget="_blank" href="/search/%E6%99%BA%E8%83%BD%E8%B7%AF%E7%94%B1%E5%99%A8/1.htm">智能路由器</a> <div>随着科技的飞速发展,无线通信技术正逐步改变我们的工作与生活。在这个智能互联的时代,一款高性能、稳定可靠的工业4G路由器成为了众多行业不可或缺的装备。工业4G路由器以其卓越的性能和多样化的功能,助力我们步入智慧新纪元。一、快速转化,无线变有线工业4G路由器能够迅速将4G信号转化为网口传输或WiFi传输,让无线信号瞬间变为有线连接,实现稳定、高速的数据传输。无论是在偏远地区还是网络覆盖不佳的角落,它都</div> </li> <li><a href="/article/1880425452170964992.htm" title="HTTP/2 与 HTTP/3 的新特性" target="_blank">HTTP/2 与 HTTP/3 的新特性</a> <span class="text-muted">计算机毕设定制辅导-无忧学长</span> <a class="tag" taget="_blank" href="/search/%23/1.htm">#</a><a class="tag" taget="_blank" href="/search/HTTP/1.htm">HTTP</a><a class="tag" taget="_blank" href="/search/http/1.htm">http</a><a class="tag" taget="_blank" href="/search/%E7%BD%91%E7%BB%9C%E5%8D%8F%E8%AE%AE/1.htm">网络协议</a><a class="tag" taget="_blank" href="/search/%E7%BD%91%E7%BB%9C/1.htm">网络</a> <div>一、引言在互联网蓬勃发展的浪潮中,HTTP协议作为网络通信的基石,历经多次迭代升级,不断推动着网络传输效率与性能的提升。从最初简单的HTTP/0.9版本,仅能实现基本的文本传输,到HTTP/1.0引入多种请求方法与头部信息,再到HTTP/1.1通过长连接、管线化等技术优化传输性能,HTTP协议逐步适应了日益复杂的网络需求。然而,随着移动互联网、高清视频、在线游戏等应用的爆发式增长,对网络传输的速度</div> </li> <li><a href="/article/1880424568074596352.htm" title="【设计模式-创建型】原型模式" target="_blank">【设计模式-创建型】原型模式</a> <span class="text-muted">博一波</span> <a class="tag" taget="_blank" href="/search/%E8%AE%BE%E8%AE%A1%E6%A8%A1%E5%BC%8F/1.htm">设计模式</a><a class="tag" taget="_blank" href="/search/%E5%8E%9F%E5%9E%8B%E6%A8%A1%E5%BC%8F/1.htm">原型模式</a><a class="tag" taget="_blank" href="/search/java/1.htm">java</a> <div>一、什么是原型模式原型模式是一种高效的对象复制技术,它通过复制已有对象的状态来快速生成新对象,避免了复杂的创建过程。以馒头坊为例,我们可以将原型模式比作使用标准化的馒头模具来制作馒头。每当需要制作新的馒头时,我们只需将面团填入模具,压模后取出,就能得到大小和形状完全一致的馒头,而无需从头开始调整面团的大小和形状。这样,馒头模具就像是一个“原型对象”,确保了每次复制的结果都是标准化和一致的,大大简化</div> </li> <li><a href="/article/1880419400922755072.htm" title="企业级应用的历史、现状与未来:技术转移与问题优化" target="_blank">企业级应用的历史、现状与未来:技术转移与问题优化</a> <span class="text-muted">自由鬼</span> <a class="tag" taget="_blank" href="/search/%E8%A1%8C%E4%B8%9A%E5%8F%91%E5%B1%95/1.htm">行业发展</a><a class="tag" taget="_blank" href="/search/IT%E5%BA%94%E7%94%A8%E6%8E%A2%E8%AE%A8/1.htm">IT应用探讨</a><a class="tag" taget="_blank" href="/search/%E5%BE%AE%E6%9C%8D%E5%8A%A1/1.htm">微服务</a><a class="tag" taget="_blank" href="/search/%E4%BC%81%E4%B8%9A%E7%BA%A7%E5%BA%94%E7%94%A8/1.htm">企业级应用</a><a class="tag" taget="_blank" href="/search/%E8%BD%AF%E4%BB%B6%E5%BC%80%E5%8F%91/1.htm">软件开发</a> <div>企业级应用是组织生产环境的核心,旨在保障关键需求如安全、稳定、扩展性和业务连续性。在技术发展的过程中,企业级应用的架构和实现方式经历了显著的变化。本文将探讨企业级应用的历史、现状及未来,并分析技术演进中问题转移与优化的现象。一、企业级应用的历史:传统架构的复杂性在传统架构中,企业级应用的设计主要依赖于强大的中间件和数据库。例如,IBMWAS(WebSphereApplicationServer)常</div> </li> <li><a href="/article/1880414731068567552.htm" title="医院如何进行安全等级保护?!推介方案:医院网络安全等级保护解决方案V1.0" target="_blank">医院如何进行安全等级保护?!推介方案:医院网络安全等级保护解决方案V1.0</a> <span class="text-muted">智慧化智能化数字化方案</span> <a class="tag" taget="_blank" href="/search/%E6%96%B9%E6%A1%88%E8%A7%A3%E8%AF%BB%E9%A6%86/1.htm">方案解读馆</a><a class="tag" taget="_blank" href="/search/%E5%AE%89%E5%85%A8%E7%AD%89%E7%BA%A7%E4%BF%9D%E6%8A%A4%E6%96%B9%E6%A1%88/1.htm">安全等级保护方案</a><a class="tag" taget="_blank" href="/search/%E7%AD%89%E4%BF%9D2.0/1.htm">等保2.0</a><a class="tag" taget="_blank" href="/search/%E5%8C%BB%E9%99%A2%E7%AD%89%E4%BF%9D%E6%96%B9%E6%A1%88/1.htm">医院等保方案</a> <div>第一章项目概述背景1.1项目背景医院网络复杂,需满足高效办公和外界通讯需求,同时保障数据安全,应对《网络安全法》和等级保护要求。1.2项目建设目标建立安全技术防护体系,健全安全管理制度,制定应急预案,提供安全培训,完善整体安全规划。1.3方案设计原则遵循等级保护要求,体系化设计,采用先进产品,有序建设,提供细致化安全服务。1.4项目依据依据多项国家信息安全标准和法规,确保项目合规性。</div> </li> <li><a href="/article/1880413974210605056.htm" title="java毕业设计宠物领养饲养交流管理平台Mybatis+系统+数据库+调试部署" target="_blank">java毕业设计宠物领养饲养交流管理平台Mybatis+系统+数据库+调试部署</a> <span class="text-muted">静静学姐</span> <a class="tag" taget="_blank" href="/search/mybatis/1.htm">mybatis</a><a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/%E5%AE%A0%E7%89%A9/1.htm">宠物</a> <div>java毕业设计宠物领养饲养交流管理平台Mybatis+系统+数据库+调试部署java毕业设计宠物领养饲养交流管理平台Mybatis+系统+数据库+调试部署本源码技术栈:项目架构:B/S架构开发语言:Java语言开发软件:ideaeclipse前端技术:Layui、HTML、CSS、JS、JQuery等技术后端技术:JAVA运行环境:Win10、JDK1.8数据库:MySQL5.7/8.0源码地址</div> </li> <li><a href="/article/1880412838305001472.htm" title="小北的技术博客:探索华为昇腾CANN训练营与AI技术创新——Ascend C算子开发能力认证考试(初级)" target="_blank">小北的技术博客:探索华为昇腾CANN训练营与AI技术创新——Ascend C算子开发能力认证考试(初级)</a> <span class="text-muted">Stitch .</span> <a class="tag" taget="_blank" href="/search/C%E8%AF%AD%E8%A8%80/1.htm">C语言</a><a class="tag" taget="_blank" href="/search/HUAWEI/1.htm">HUAWEI</a><a class="tag" taget="_blank" href="/search/%E7%AE%97%E6%B3%95/1.htm">算法</a><a class="tag" taget="_blank" href="/search/%E4%BA%BA%E5%B7%A5%E6%99%BA%E8%83%BD/1.htm">人工智能</a><a class="tag" taget="_blank" href="/search/%E5%8D%8E%E4%B8%BA/1.htm">华为</a><a class="tag" taget="_blank" href="/search/%E5%A4%A7%E6%95%B0%E6%8D%AE/1.htm">大数据</a><a class="tag" taget="_blank" href="/search/HUAWEI/1.htm">HUAWEI</a><a class="tag" taget="_blank" href="/search/AScend/1.htm">AScend</a><a class="tag" taget="_blank" href="/search/c%E8%AF%AD%E8%A8%80/1.htm">c语言</a><a class="tag" taget="_blank" href="/search/NPU/1.htm">NPU</a> <div>前言哈喽哈喽友友们,这里是zyll~(小北)智慧龙阁的创始人及核心技术开发者。在技术的广阔天地里,我专注于大数据与全栈开发,并致力于成为这一领域的新锐力量。通过智慧龙阁这个平台,我期望能与大家分享我的技术心得,共同探索技术的无限可能。AscendC编程:小北的技术之旅近期,我深入研究了AscendC编程,并整理了一系列关于AscendC算子开发能力认证考试(初级)的题目及其答案。我希望这些内容能为</div> </li> <li><a href="/article/1880411324207394816.htm" title="设计模式-结构型模式-装饰器模式" target="_blank">设计模式-结构型模式-装饰器模式</a> <span class="text-muted">LB_bei</span> <a class="tag" taget="_blank" href="/search/%E8%AE%BE%E8%AE%A1%E6%A8%A1%E5%BC%8F/1.htm">设计模式</a><a class="tag" taget="_blank" href="/search/%E8%AE%BE%E8%AE%A1%E6%A8%A1%E5%BC%8F/1.htm">设计模式</a><a class="tag" taget="_blank" href="/search/%E8%A3%85%E9%A5%B0%E5%99%A8%E6%A8%A1%E5%BC%8F/1.htm">装饰器模式</a><a class="tag" taget="_blank" href="/search/java/1.htm">java</a> <div>1.装饰器模式定义装饰器模式动态的给一个对象添加一些额外的职责,就扩展功能而言,装饰器模式提供了一种比子类更加灵活的方案;在软件设计中,装饰器模式是一种用于替代继承的技术,通过一种无需定义子类的方式给对象动态的增加职责,使用对象之间的关联关系取代类之间的继承关系;1.1装饰器模式的优缺点优点对于扩展一个对象的功能,装饰器模式比继承更加灵活,不会导致类的个数急剧增加;可以通过一种动态的方式来扩展一个</div> </li> <li><a href="/article/1880409686268768256.htm" title="基于 Python 的毕设选题管理系统设计与实现" target="_blank">基于 Python 的毕设选题管理系统设计与实现</a> <span class="text-muted">赵谨言</span> <a class="tag" taget="_blank" href="/search/%E8%AE%BA%E6%96%87/1.htm">论文</a><a class="tag" taget="_blank" href="/search/python/1.htm">python</a><a class="tag" taget="_blank" href="/search/%E6%AF%95%E4%B8%9A%E8%AE%BE%E8%AE%A1/1.htm">毕业设计</a><a class="tag" taget="_blank" href="/search/%E7%BB%8F%E9%AA%8C%E5%88%86%E4%BA%AB/1.htm">经验分享</a><a class="tag" taget="_blank" href="/search/python/1.htm">python</a> <div>标题:基于Python的毕设选题管理系统设计与实现内容:1.摘要本文介绍了一个基于Python的毕设选题管理系统的设计与实现。该系统旨在解决传统毕设选题管理方式中存在的效率低下、信息不透明等问题。通过使用Python语言和相关技术,实现了对毕设选题的信息化管理,提高了管理效率和质量。本文详细介绍了系统的需求分析、设计思路、功能实现和测试结果。系统采用了B/S架构,实现了学生选题、教师审核、管理员管</div> </li> <li><a href="/article/104.htm" title="springmvc 下 freemarker页面枚举的遍历输出" target="_blank">springmvc 下 freemarker页面枚举的遍历输出</a> <span class="text-muted">杨白白</span> <a class="tag" taget="_blank" href="/search/enum/1.htm">enum</a><a class="tag" taget="_blank" href="/search/freemarker/1.htm">freemarker</a> <div>spring mvc freemarker 中遍历枚举 1枚举类型有一个本地方法叫values(),这个方法可以直接返回枚举数组。所以可以利用这个遍历。 enum public enum BooleanEnum { TRUE(Boolean.TRUE, "是"), FALSE(Boolean.FALSE, "否"); </div> </li> <li><a href="/article/231.htm" title="实习简要总结" target="_blank">实习简要总结</a> <span class="text-muted">byalias</span> <a class="tag" taget="_blank" href="/search/%E5%B7%A5%E4%BD%9C/1.htm">工作</a> <div>来白虹不知不觉中已经一个多月了,因为项目还在需求分析及项目架构阶段,自己在这段 时间都是在学习相关技术知识,现在对这段时间的工作及学习情况做一个总结: (1)工作技能方面 大体分为两个阶段,Java Web 基础阶段和Java EE阶段 1)Java Web阶段 在这个阶段,自己主要着重学习了 JSP, Servlet, JDBC, MySQL,这些知识的核心点都过 了一遍,也</div> </li> <li><a href="/article/358.htm" title="Quartz——DateIntervalTrigger触发器" target="_blank">Quartz——DateIntervalTrigger触发器</a> <span class="text-muted">eksliang</span> <a class="tag" taget="_blank" href="/search/quartz/1.htm">quartz</a> <div>转载请出自出处:http://eksliang.iteye.com/blog/2208559 一.概述 simpleTrigger 内部实现机制是通过计算间隔时间来计算下次的执行时间,这就导致他有不适合调度的定时任务。例如我们想每天的 1:00AM 执行任务,如果使用 SimpleTrigger,间隔时间就是一天。注意这里就会有一个问题,即当有 misfired 的任务并且恢复执行时,该执行时间</div> </li> <li><a href="/article/485.htm" title="Unix快捷键" target="_blank">Unix快捷键</a> <span class="text-muted">18289753290</span> <a class="tag" taget="_blank" href="/search/unix/1.htm">unix</a><a class="tag" taget="_blank" href="/search/Unix%EF%BC%9B%E5%BF%AB%E6%8D%B7%E9%94%AE%3B/1.htm">Unix;快捷键;</a> <div>复制,删除,粘贴: dd:删除光标所在的行                             &nbs</div> </li> <li><a href="/article/612.htm" title="获取Android设备屏幕的相关参数" target="_blank">获取Android设备屏幕的相关参数</a> <span class="text-muted">酷的飞上天空</span> <a class="tag" taget="_blank" href="/search/android/1.htm">android</a> <div>包含屏幕的分辨率  以及 屏幕宽度的最大dp 高度最大dp   TextView text = (TextView)findViewById(R.id.text); DisplayMetrics dm = new DisplayMetrics(); text.append("getResources().ge</div> </li> <li><a href="/article/739.htm" title="要做物联网?先保护好你的数据" target="_blank">要做物联网?先保护好你的数据</a> <span class="text-muted">蓝儿唯美</span> <a class="tag" taget="_blank" href="/search/%E6%95%B0%E6%8D%AE/1.htm">数据</a> <div>根据Beecham Research的说法,那些在行业中希望利用物联网的关键领域需要提供更好的安全性。 在Beecham的物联网安全威胁图谱上,展示了那些可能产生内外部攻击并且需要通过快速发展的物联网行业加以解决的关键领域。 Beecham Research的技术主管Jon Howes说:“之所以我们目前还没有看到与物联网相关的严重安全事件,是因为目前还没有在大型客户和企业应用中进行部署,也就</div> </li> <li><a href="/article/866.htm" title="Java取模(求余)运算" target="_blank">Java取模(求余)运算</a> <span class="text-muted">随便小屋</span> <a class="tag" taget="_blank" href="/search/java/1.htm">java</a> <div>        整数之间的取模求余运算很好求,但几乎没有遇到过对负数进行取模求余,直接看下面代码: /** * * @author Logic * */ public class Test { public static void main(String[] args) { // TODO A</div> </li> <li><a href="/article/993.htm" title="SQL注入介绍" target="_blank">SQL注入介绍</a> <span class="text-muted">aijuans</span> <a class="tag" taget="_blank" href="/search/sql%E6%B3%A8%E5%85%A5/1.htm">sql注入</a> <div>二、SQL注入范例 这里我们根据用户登录页面 <form action="" > 用户名:<input type="text" name="username"><br/> 密 码:<input type="password" name="passwor</div> </li> <li><a href="/article/1120.htm" title="优雅代码风格" target="_blank">优雅代码风格</a> <span class="text-muted">aoyouzi</span> <a class="tag" taget="_blank" href="/search/%E4%BB%A3%E7%A0%81/1.htm">代码</a> <div>总结了几点关于优雅代码风格的描述: 代码简单:不隐藏设计者的意图,抽象干净利落,控制语句直截了当。 接口清晰:类型接口表现力直白,字面表达含义,API 相互呼应以增强可测试性。 依赖项少:依赖关系越少越好,依赖少证明内聚程度高,低耦合利于自动测试,便于重构。 没有重复:重复代码意味着某些概念或想法没有在代码中良好的体现,及时重构消除重复。 战术分层:代码分层清晰,隔离明确,</div> </li> <li><a href="/article/1247.htm" title="布尔数组" target="_blank">布尔数组</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/%E5%B8%83%E5%B0%94%E6%95%B0%E7%BB%84/1.htm">布尔数组</a> <div>  androi中提到了布尔数组;   布尔数组默认的是false,  并且只会打印false或者是true   布尔数组的例子;  根据字符数组创建布尔数组 char[] c = {'p','u','b','l','i','c'}; //根据字符数组的长度创建布尔数组的个数 boolean[] b = new bool</div> </li> <li><a href="/article/1374.htm" title="web.xml之welcome-file-list、error-page" target="_blank">web.xml之welcome-file-list、error-page</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/web.xml/1.htm">web.xml</a><a class="tag" taget="_blank" href="/search/servlet/1.htm">servlet</a><a class="tag" taget="_blank" href="/search/error-page/1.htm">error-page</a> <div>welcome-file-list 1.定义: <welcome-file-list> <welcome-file>login.jsp</welcome> </welcome-file-list>  2.作用:用来指定WEB应用首页名称。   error-page1.定义: <error-page&g</div> </li> <li><a href="/article/1501.htm" title="richfaces 4 fileUpload组件删除上传的文件" target="_blank">richfaces 4 fileUpload组件删除上传的文件</a> <span class="text-muted">sunjing</span> <a class="tag" taget="_blank" href="/search/clear/1.htm">clear</a><a class="tag" taget="_blank" href="/search/Richfaces+4/1.htm">Richfaces 4</a><a class="tag" taget="_blank" href="/search/fileupload/1.htm">fileupload</a> <div> 页面代码               <h:form id="fileForm">            <rich:</div> </li> <li><a href="/article/1628.htm" title="技术文章备忘" target="_blank">技术文章备忘</a> <span class="text-muted">bit1129</span> <a class="tag" taget="_blank" href="/search/%E6%8A%80%E6%9C%AF%E6%96%87%E7%AB%A0/1.htm">技术文章</a> <div>Zookeeper http://wenku.baidu.com/view/bab171ffaef8941ea76e05b8.html http://wenku.baidu.com/link?url=8thAIwFTnPh2KL2b0p1V7XSgmF9ZEFgw4V_MkIpA9j8BX2rDQMPgK5l3wcs9oBTxeekOnm5P3BK8c6K2DWynq9nfUCkRlTt9uV</div> </li> <li><a href="/article/1755.htm" title="org.hibernate.hql.ast.QuerySyntaxException: unexpected token: on near line 1解决方案" target="_blank">org.hibernate.hql.ast.QuerySyntaxException: unexpected token: on near line 1解决方案</a> <span class="text-muted">白糖_</span> <a class="tag" taget="_blank" href="/search/Hibernate/1.htm">Hibernate</a> <div>文章摘自:http://blog.csdn.net/yangwawa19870921/article/details/7553181   在编写HQL时,可能会出现这种代码: select a.name,b.age from TableA a left join TableB b on a.id=b.id  如果这是HQL,那么这段代码就是错误的,因为HQL不支持</div> </li> <li><a href="/article/1882.htm" title="sqlserver按照字段内容进行排序" target="_blank">sqlserver按照字段内容进行排序</a> <span class="text-muted">bozch</span> <a class="tag" taget="_blank" href="/search/%E6%8C%89%E7%85%A7%E5%86%85%E5%AE%B9%E6%8E%92%E5%BA%8F/1.htm">按照内容排序</a> <div>在做项目的时候,遇到了这样的一个需求:           从数据库中取出的数据集,首先要将某个数据或者多个数据按照地段内容放到前面显示,例如:从学生表中取出姓李的放到数据集的前面;          select * fro</div> </li> <li><a href="/article/2009.htm" title="编程珠玑-第一章-位图排序" target="_blank">编程珠玑-第一章-位图排序</a> <span class="text-muted">bylijinnan</span> <a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/%E7%BC%96%E7%A8%8B%E7%8F%A0%E7%8E%91/1.htm">编程珠玑</a> <div> import java.io.BufferedWriter; import java.io.File; import java.io.FileWriter; import java.io.IOException; import java.io.Writer; import java.util.Random; public class BitMapSearch { </div> </li> <li><a href="/article/2136.htm" title="Java关于==和equals" target="_blank">Java关于==和equals</a> <span class="text-muted">chenbowen00</span> <a class="tag" taget="_blank" href="/search/java/1.htm">java</a> <div>关于==和equals概念其实很简单,一个是比较内存地址是否相同,一个比较的是值内容是否相同。虽然理解上不难,但是有时存在一些理解误区,如下情况: 1、 String a = "aaa"; a=="aaa"; ==> true 2、 new String("aaa")==new String("aaa</div> </li> <li><a href="/article/2263.htm" title="[IT与资本]软件行业需对外界投资热情保持警惕" target="_blank">[IT与资本]软件行业需对外界投资热情保持警惕</a> <span class="text-muted">comsci</span> <a class="tag" taget="_blank" href="/search/it/1.htm">it</a> <div>       我还是那个看法,软件行业需要增强内生动力,尽量依靠自有资金和营业收入来进行经营,避免在资本市场上经受各种不同类型的风险,为企业自主研发核心技术和产品提供稳定,温和的外部环境...       如果我们在自己尚未掌握核心技术之前,企图依靠上市来筹集资金,然后使劲往某个领域砸钱,然</div> </li> <li><a href="/article/2390.htm" title="oracle 数据块结构" target="_blank">oracle 数据块结构</a> <span class="text-muted">daizj</span> <a class="tag" taget="_blank" href="/search/oracle/1.htm">oracle</a><a class="tag" taget="_blank" href="/search/%E5%9D%97/1.htm">块</a><a class="tag" taget="_blank" href="/search/%E6%95%B0%E6%8D%AE%E5%9D%97/1.htm">数据块</a><a class="tag" taget="_blank" href="/search/%E5%9D%97%E7%BB%93%E6%9E%84/1.htm">块结构</a><a class="tag" taget="_blank" href="/search/%E8%A1%8C%E7%9B%AE%E5%BD%95/1.htm">行目录</a> <div>oracle 数据块是数据库存储的最小单位,一般为操作系统块的N倍。其结构为: 块头--〉空行--〉数据,其实际为纵行结构。 块的标准大小由初始化参数DB_BLOCK_SIZE指定。具有标准大小的块称为标准块(Standard Block)。块的大小和标准块的大小不同的块叫非标准块(Nonstandard Block)。同一数据库中,Oracle9i及以上版本支持同一数据库中同时使用标</div> </li> <li><a href="/article/2517.htm" title="github上一些觉得对自己工作有用的项目收集" target="_blank">github上一些觉得对自己工作有用的项目收集</a> <span class="text-muted">dengkane</span> <a class="tag" taget="_blank" href="/search/github/1.htm">github</a> <div>github上一些觉得对自己工作有用的项目收集 技能类 markdown语法中文说明 回到顶部 全文检索 elasticsearch bigdesk elasticsearch管理插件 回到顶部 nosql mapdb 支持亿级别map, list, 支持事务. 可考虑做为缓存使用 C</div> </li> <li><a href="/article/2644.htm" title="初二上学期难记单词二" target="_blank">初二上学期难记单词二</a> <span class="text-muted">dcj3sjt126com</span> <a class="tag" taget="_blank" href="/search/english/1.htm">english</a><a class="tag" taget="_blank" href="/search/word/1.htm">word</a> <div>dangerous 危险的 panda 熊猫 lion 狮子 elephant 象 monkey 猴子 tiger 老虎 deer 鹿 snake 蛇 rabbit 兔子 duck 鸭 horse 马 forest 森林 fall 跌倒;落下 climb 爬;攀登 finish 完成;结束 cinema 电影院;电影 seafood 海鲜;海产食品 bank 银行</div> </li> <li><a href="/article/2771.htm" title="8、mysql外键(FOREIGN KEY)的简单使用" target="_blank">8、mysql外键(FOREIGN KEY)的简单使用</a> <span class="text-muted">dcj3sjt126com</span> <a class="tag" taget="_blank" href="/search/mysql/1.htm">mysql</a> <div>一、基本概念 1、MySQL中“键”和“索引”的定义相同,所以外键和主键一样也是索引的一种。不同的是MySQL会自动为所有表的主键进行索引,但是外键字段必须由用户进行明确的索引。用于外键关系的字段必须在所有的参照表中进行明确地索引,InnoDB不能自动地创建索引。 2、外键可以是一对一的,一个表的记录只能与另一个表的一条记录连接,或者是一对多的,一个表的记录与另一个表的多条记录连接。 3、如</div> </li> <li><a href="/article/2898.htm" title="java循环标签 Foreach" target="_blank">java循环标签 Foreach</a> <span class="text-muted">shuizhaosi888</span> <a class="tag" taget="_blank" href="/search/%E6%A0%87%E7%AD%BE/1.htm">标签</a><a class="tag" taget="_blank" href="/search/java%E5%BE%AA%E7%8E%AF/1.htm">java循环</a><a class="tag" taget="_blank" href="/search/foreach/1.htm">foreach</a> <div>1. 简单的for循环 public static void main(String[] args) { for (int i = 1, y = i + 10; i < 5 && y < 12; i++, y = i * 2) { System.err.println("i=" + i + " y=" </div> </li> <li><a href="/article/3025.htm" title="Spring Security(05)——异常信息本地化" target="_blank">Spring Security(05)——异常信息本地化</a> <span class="text-muted">234390216</span> <a class="tag" taget="_blank" href="/search/exception/1.htm">exception</a><a class="tag" taget="_blank" href="/search/Spring+Security/1.htm">Spring Security</a><a class="tag" taget="_blank" href="/search/%E5%BC%82%E5%B8%B8%E4%BF%A1%E6%81%AF/1.htm">异常信息</a><a class="tag" taget="_blank" href="/search/%E6%9C%AC%E5%9C%B0%E5%8C%96/1.htm">本地化</a> <div>异常信息本地化          Spring Security支持将展现给终端用户看的异常信息本地化,这些信息包括认证失败、访问被拒绝等。而对于展现给开发者看的异常信息和日志信息(如配置错误)则是不能够进行本地化的,它们是以英文硬编码在Spring Security的代码中的。在Spring-Security-core-x</div> </li> <li><a href="/article/3152.htm" title="DUBBO架构服务端告警Failed to send message Response" target="_blank">DUBBO架构服务端告警Failed to send message Response</a> <span class="text-muted">javamingtingzhao</span> <a class="tag" taget="_blank" href="/search/%E6%9E%B6%E6%9E%84/1.htm">架构</a><a class="tag" taget="_blank" href="/search/DUBBO/1.htm">DUBBO</a> <div> 废话不多说,警告日志如下,不知道有哪位遇到过,此异常在服务端抛出(服务器启动第一次运行会有这个警告),后续运行没问题,找了好久真心不知道哪里错了。    WARN 2015-07-18 22:31:15,272 com.alibaba.dubbo.remoting.transport.dispatcher.ChannelEventRunnable.run(84)</div> </li> <li><a href="/article/3279.htm" title="JS中Date对象中几个用法" target="_blank">JS中Date对象中几个用法</a> <span class="text-muted">leeqq</span> <a class="tag" taget="_blank" href="/search/JavaScript/1.htm">JavaScript</a><a class="tag" taget="_blank" href="/search/Date/1.htm">Date</a><a class="tag" taget="_blank" href="/search/%E6%9C%80%E5%90%8E%E4%B8%80%E5%A4%A9/1.htm">最后一天</a> <div>近来工作中遇到这样的两个需求 1. 给个Date对象,找出该时间所在月的第一天和最后一天 2. 给个Date对象,找出该时间所在周的第一天和最后一天   需求1中的找月第一天很简单,我记得api中有setDate方法可以使用 使用setDate方法前,先看看getDate var date = new Date(); console.log(date); // Sat J</div> </li> <li><a href="/article/3406.htm" title="MFC中使用ado技术操作数据库" target="_blank">MFC中使用ado技术操作数据库</a> <span class="text-muted">你不认识的休道人</span> <a class="tag" taget="_blank" href="/search/sql/1.htm">sql</a><a class="tag" taget="_blank" href="/search/mfc/1.htm">mfc</a> <div>1.在stdafx.h中导入ado动态链接库 #import"C:\Program Files\Common Files\System\ado\msado15.dll" no_namespace rename("EOF","end")2.在CTestApp文件的InitInstance()函数中domodal之前写::CoIniti</div> </li> <li><a href="/article/3533.htm" title="Android Studio加速" target="_blank">Android Studio加速</a> <span class="text-muted">rensanning</span> <a class="tag" taget="_blank" href="/search/android+studio/1.htm">android studio</a> <div>Android Studio慢、吃内存!启动时后会立即通过Gradle来sync & build工程。 (1)设置Android Studio a) 禁用插件 File -> Settings...  Plugins 去掉一些没有用的插件。 比如:Git Integration、GitHub、Google Cloud Testing、Google Cloud</div> </li> <li><a href="/article/3660.htm" title="各数据库的批量Update操作" target="_blank">各数据库的批量Update操作</a> <span class="text-muted">tomcat_oracle</span> <a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/oracle/1.htm">oracle</a><a class="tag" taget="_blank" href="/search/sql/1.htm">sql</a><a class="tag" taget="_blank" href="/search/mysql/1.htm">mysql</a><a class="tag" taget="_blank" href="/search/sqlite/1.htm">sqlite</a> <div>MyBatis的update元素的用法与insert元素基本相同,因此本篇不打算重复了。本篇仅记录批量update操作的 sql语句,懂得SQL语句,那么MyBatis部分的操作就简单了。   注意:下列批量更新语句都是作为一个事务整体执行,要不全部成功,要不全部回滚。 MSSQL的SQL语句  WITH R AS(   SELECT 'John' as name, 18 as</div> </li> <li><a href="/article/3787.htm" title="html禁止清除input文本输入缓存" target="_blank">html禁止清除input文本输入缓存</a> <span class="text-muted">xp9802</span> <a class="tag" taget="_blank" href="/search/input/1.htm">input</a> <div>多数浏览器默认会缓存input的值,只有使用ctl+F5强制刷新的才可以清除缓存记录。如果不想让浏览器缓存input的值,有2种方法: 方法一: 在不想使用缓存的input中添加 autocomplete="off"; eg: <input type="text" autocomplete="off" name</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>