HLS 协议入门指南以及延迟优化策略

HLS是什么

HLS是HTTP Live Streaming 的缩写,是由苹果公司推出的基于HTTP的能自适应的流媒体传输协议,常用于直播和点播。

HLS 的工作原理是当推流端把视频流推到服务端后,服务端会把视频流切割成一个个小的媒体文件(一般是ts文件,也有可能是fmp4文件)。然后服务器会把这些媒体文件的播放地址按照播放顺序罗列到一个索引文件当中,供客户端查找可以的媒体流。这个索引文件也就是我们平时在播放hls视频的时候,最常见到的m3u8文件。

image.png

码率自适应

为了能够适应观众的不同网络环境,服务端会以不同的比特率和分辨率创建多个流,并把不同流的媒体文件地址放到了不同的索引文件(media playlist)当中,并最终把不同流的索引文件的地址放到一个主索引文件中(master playlist)。

image.png

客户端在播放HLS媒体流时,能够基于当前的网络情况,选择当前可流畅播放的最高分辨率的媒体流进行播放。

image.png

M3U8文件详解

对于HLS客户端来讲,最先要面对的并需要播放的媒体文件,而是告知客户端从何获取媒体文件的索引(M3U8)文件。所以对于HLS客户端来说,最首要的事情是对M3U8文件进行解析。

从上面的介绍我们能够知道,索引文件分为两种类型,一种是 master playlist,一种是 media playlist。

media playlist

media playlist 内部存放着一系列媒体片段资源,客户端只要顺序播放这些媒体片段资源,就能够完整地播放服务端提供地媒体资源。

media playlist 文件地格式如下所示:

#EXTM3U
#EXT-X-VERSION:3
#EXT-X-PLAYLIST-TYPE:VOD
#EXT-X-TARGETDURATION:11
#EXTINF:10.000,
url_462/193039199_mp4_h264_aac_hd_7.ts
#EXTINF:10.000,
url_463/193039199_mp4_h264_aac_hd_7.ts
#EXTINF:10.000,
url_464/193039199_mp4_h264_aac_hd_7.ts
#EXTINF:10.000,
url_465/193039199_mp4_h264_aac_hd_7.ts
#EXTINF:10.000,
url_466/193039199_mp4_h264_aac_hd_7.ts
#EXTINF:10.000,
url_467/193039199_mp4_h264_aac_hd_7.ts
#EXTINF:10.000,
url_468/193039199_mp4_h264_aac_hd_7.ts
#EXTINF:9.950,
url_469/193039199_mp4_h264_aac_hd_7.ts
#EXTINF:10.050,
url_470/193039199_mp4_h264_aac_hd_7.ts
#EXTINF:10.000,
url_471/193039199_mp4_h264_aac_hd_7.ts
#EXTINF:10.000,
url_472/193039199_mp4_h264_aac_hd_7.ts
#EXT-X-ENDLIST

master playlist

master playlist 文件内记录着多个 media playlist 文件的地址,这些 media playlist 文件指向到的媒体文件的码率、格式各不相同。同时,还能够提供不同语言的音频文件,以及不同角度拍摄的视频文件等等。客户端能够根据用户不同的网络环境,或者是不同的语言、兴趣爱好的因素选择合适的媒体资源。

maser playlist 文件的格式如下所示:

#EXTM3U
#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=2149280,CODECS="mp4a.40.2,avc1.64001f",RESOLUTION=1280x720,NAME="720"
url_0/193039199_mp4_h264_aac_hd_7.m3u8
#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=246440,CODECS="mp4a.40.5,avc1.42000d",RESOLUTION=320x184,NAME="240"
url_2/193039199_mp4_h264_aac_ld_7.m3u8
#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=460560,CODECS="mp4a.40.5,avc1.420016",RESOLUTION=512x288,NAME="380"
url_4/193039199_mp4_h264_aac_7.m3u8
#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=836280,CODECS="mp4a.40.2,avc1.64001f",RESOLUTION=848x480,NAME="480"
url_6/193039199_mp4_h264_aac_hq_7.m3u8
#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=6221600,CODECS="mp4a.40.2,avc1.640028",RESOLUTION=1920x1080,NAME="1080"
url_8/193039199_mp4_h264_aac_fhd_7.m3u8

M3U8文件格式解析

playlist 文件定义

M3U8 文件必须以 UTF-8 [ RFC3629 ] 进行编码,不能包含 Byte Order Mark(BOM)字节序, 不能包含 UTF-8 控制字符(U+0000 到 U+001F 和 U+007F 至 U+009F),CR (U+000D) 和 LF 除外(U+000A)。

M3U8 文件的每行的内容只能是以下三种中的其中一种。

  • URI
  • 空行
  • 以 # 开头的字符串

除了明确指定的元素之外不能有空格的存在。

以字符“#”开头的行要么是注释,要么是标签。标签以 #EXT 开头,大小写敏感。其他以“#”开头的行都是注释,客户端解析时应该忽略掉。

属性列表

某些特定的标签的值是一个属性列表。

#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=2149280,CODECS="mp4a.40.2,avc1.64001f",RESOLUTION=1280x720,NAME="720"

属性列表以逗号作为分隔符,分离出多组不带空格的 AttributeName=AttributeValue 对。如上面的EXT-X-STREAM-INF属性能够分离出:

# AttributeName=AttributeValue
PROGRAM-ID=1,
BANDWIDTH=2149280,
CODECS="mp4a.40.2,avc1.64001f",
RESOLUTION=1280x720,
NAME="720"

标签

标签用于说明 M3U8 文件的全局参数,以及 切片文件和媒体播放列表 的信息。标签可分以下几种:

  • 基础标签(Basic Tags)
  • 媒体片段标签(Media Segment Tags)
  • 媒体播放列表标签(Media Playlist Tags)
  • 主播放列表标签 (Master Playlist Tags)
  • 媒体播放列表或主播放列表都使用的标签(Media or Master Playlist Tags)

下面会分别介绍这几种类型中一些比较重要和常用的标签。

基础标签(Basic Tags)

基础标签既能够媒体播放列表(Media Playlist)中使用,也可以在主播放列表(Master Playlist)中使用。

  • EXTM3U:每个 M3U8 文件必须将该标签放置在第一行,表明该文件是一个 M3U8 文件。
  • EXT-X-VERSION:表示 HLS 协议的版本号,该标签与流媒体的兼容性相关。该标签为一个全局参数,能够在整个 M3U8 文件中进行使用。每个 M3U8 文件内最多只能出现一个版本定义。如果 M3U8 文件内不包含该标签,则默认1。

媒体播放列表标签(Media Playlist Tags)

媒体播放列表标签为 M3U8 文件的全局参数信息并且只能在 M3U8 文件中至多出现一次。媒体播放列表标签只能出现而在媒体播放列表(Media Playlist)当中,而不能出现在主播放列表(Master Playlist)中。

EXT-X-TARGETDURATION

表示所有媒体片段最大的时长(单位秒),为必选标签。

#EXT-X-TARGETDURATION:

EXT-X-MEDIA-SEQUENCE

表示播放列表第一个 URL 片段文件的序列号。每个媒体片段 URL 都拥有一个唯一的整型序列号,每个媒体片段序列号按出现顺序依次加 1。如果该标签未指定,则默认序列号从 0 开始。媒体片段序列号与片段文件名无关。

#EXT-X-MEDIA-SEQUENCE:
EXT-X-ENDLIST

表明 文件的结束,该标签可出现在 M3U8 文件任意位置,一般是结尾。

当media playlist中出现该标签时,则说明改媒体流是一个点播源而不是一个直播源

EXT-X-PLAYLIST-TYPE

用于指明流媒体类型,该标签为可选标签。
其格式为:

#EXT-X-PLAYLIST-TYPE:

其中:type-enum可为:

  • VOD:即 Video on Demand,表示该媒体流为点播源,因此服务器不能更改该 M3U8 文件;

  • EVENT:表示该媒体流为直播源,服务器不能更改或删除该 M3U8 文件任意部分内容,但是可以在文件末尾添加新内容。

VOD 文件通常带有 EXT-X-ENDLIST 标签,因为其为点播源,结束位置不会改变;而 EVEVT 文件初始化时一般不会有 EXT-X-ENDLIST 标签,暗示有新的文件会添加到播放列表末尾,因此也需要客户端定时获取该 M3U8 文件,以获取新的媒体片段资源,直到访问到 EXT-X-ENDLIST 标签才停止)。

EXT-X-I-FRAMES-ONLY

该标签全局生效,表示每个媒体片段都是一个 I 帧。I 帧编码时不需要依赖于其他帧,因此可以通过I 帧进行快速播放等操作。

#EXT-X-I-FRAMES-ONLY

如果媒体播放列表设置了 EXT-X-I-FRAMES-ONLY,那么媒体片段的时长(EXTINF 标签的值)即为当前媒体分片的 I 帧开始到下一个 I 帧出现的时长。
媒体资源如果包含I 帧切片,那么必须提供媒体初始化块或者通过 EXT-X-MAP 标签提供媒体初始化块的获取途径,这样客户端就能通过这些I 帧切片以任意顺序进行加载和解码。

媒体片段标签(Media Segment Tags)

每个媒体片段的 URI 前面都有一系列媒体片段标签,用于描述媒体片段的信息。有些片段标签只对其后切片资源有效,有些片段标签对其后所有切片都有效,直到后续遇到另一个相同的标签描述。媒体片段类型标签只能出现而在媒体播放列表(Media Playlist)当中,而不能出现在主播放列表(Master Playlist)中(因为媒体片段URI只会出现在媒体播放列表中)。

EXTINF

表示其后 URI 指定的媒体片段时长(单位为秒)。每个 URL 媒体片段之前必须指定该标签。该标签的使用格式为:

#EXTINF:,[]
</code></pre> 
 <p>其中,duration是一个十进制的整数或者浮点数,其值必须小于或等于 <code>EXT-X-TARGETDURATION</code> 指定的值。</p> 
 <h5><code>EXT-X-BYTERANGE</code></h5> 
 <p>该标签表示接下来的媒体片段资源只是其 URI 指定的媒体片段资源的局部范围(即截取 URI 媒体资源部分内容作为下一个切片)。该标签只对其后一个 URI 起作用。其格式为:</p> 
 <pre><code>#EXT-X-BYTERANGE:<length>[@<offset>]
</code></pre> 
 <p>其中, <code>length</code>是一个十进制整型,表示截取片段大小(单位:字节)。可选参数<code>offset</code>也是一个十进制整型,指示截取起始位置(以字节表示,在 URI 指定的资源开头移动该字节位置后进行截取)。如果<code>offset</code>未指定,则截取起始位置从上一个该标签截取完成的下一个字节(即上一个length+offset+1)开始截取。</p> 
 <p>如果没有指定该标签,则表明的切分范围为整个 URI 资源片段。</p> 
 <blockquote> 
  <p>使用 EXT-X-BYTERANGE 标签要求兼容版本号 EXT-X-VERSION 大于等于 4。</p> 
 </blockquote> 
 <h5><code>EXT-X-DISCONTINUITY</code></h5> 
 <p>表明标签之前媒体片段与下一个媒体片段之间存在中断。<br> 当以下任一情况变化时,必须使用该标签:</p> 
 <ol> 
  <li>文件格式(file format)</li> 
  <li>数字(number),类型(type),媒体标识符(identifiers of tracks)</li> 
  <li>时间戳序列(timestamp sequence)</li> 
 </ol> 
 <p>当以下任一情况变化时,建议使用该标签:</p> 
 <ol> 
  <li>编码参数(encoding parameters)</li> 
  <li>编码序列(encoding sequence)</li> 
 </ol> 
 <p>EXT-X-DISCONTINUITY 最常用的场景是在媒体流中插入广告。插入广告的例子:</p> 
 <pre><code>#EXTM3U
#EXT-X-TARGETDURATION:10
#EXT-X-VERSION:4
#EXT-X-MEDIA-SEQUENCE:0
#EXTINF:10.0,
ad0.ts
#EXTINF:8.0,
ad1.ts
#EXT-X-DISCONTINUITY
#EXTINF:10.0,
movieA.ts
#EXTINF:10.0,
movieB.ts
...
#EXT-X-ENDLIST
</code></pre> 
 <h5><code>EXT-X-KEY</code></h5> 
 <p>该标签用于为加密的媒体片段指定解密方法。<br> 该标签对所有 媒体片段 和 由标签 EXT-X-MAP 声明的围绕其间的所有 媒体初始化块(Meida Initialization Section) 都起作用,直到遇到下一个 EXT-X-KEY(若 m3u8 文件只有一个 EXT-X-KEY 标签,则其作用于所有媒体片段)。多个 EXT-X-KEY 标签如果最终生成的是同样的秘钥,则他们都可作用于同一个媒体片段。</p> 
 <pre><code>#EXT-X-KEY:<attribute-list>
</code></pre> 
 <h5><code>EXT-X-MAP</code></h5> 
 <p>用于指明获取媒体初始化块(Meida Initialization Section)的方法。该标签对其后所有媒体片段生效,直至遇到另一个 EXT-X-MAP 标签。拥有改标签的 M3U8 文件内的所有媒体片段必须加上这个初始化片段才能组成一个完整的媒体文件。<br> 其格式为:</p> 
 <pre><code>#EXT-X-MAP:<attribute-list>
</code></pre> 
 <p>其属性列表取值范围如下:</p> 
 <ul> 
  <li><p>URI:由引号包裹的字符串,指定了包含媒体初始化块的资源的路径。该属性为必选参数。</p></li> 
  <li><p>BYTERANGE:由引号包裹的字符串,指定了媒体初始化块在 URI 指定的资源的位置(片段)。<br> 该属性指定的范围应当只包含媒体初始化块。<br> 该属性为可选参数,如果未指定,则表示 URI 指定的资源就是全部的媒体初始化块。</p></li> 
 </ul> 
 <h5><code>EXT-X-PROGRAM-DATE-TIME</code></h5> 
 <p>该标签使用一个绝对日期/时间表明第一个媒体片段的取样时间。<br> 其格式为:</p> 
 <pre><code>#EXT-X-PROGRAM-DATE-TIME:<date-time-msec>
</code></pre> 
 <p>其中,date-time-msec是一个 ISO/IEC 8601:2004 规定的日期格式,形如:YYYY-MM-DDThh:mm:ss.SSSZ。<br> 例如:</p> 
 <pre><code> #EXT-X-PROGRAM-DATE-TIME:2010-02-19T14:54:23.031+08:00
</code></pre> 
 <h4>主播放列表标签 (Master Playlist Tags)</h4> 
 <p>主播放列表(Master Playlist)定义了备份流,多语言翻译流和其他全局参数。主播放列表标签只能出现在主播放列表(Master Playlist )中而不能出现在媒体播放列表(Media Playlist)中。</p> 
 <h5><code>EXT-X-MEDIA</code></h5> 
 <p>用于指定相同内容的媒体文件的不同语言翻译的媒体文件列表资源。<br> 比如,通过三个 <strong>EXT-X-MEIDA</strong> 标签,可以提供包含英文,法语和西班牙语版本的相同内容的音频资源,或者通过两个 <strong>EXT-X-MEDIA</strong> 提供两个不同拍摄角度的视频资源。</p> 
 <h5><code>EXT-X-STREAM-INF</code></h5> 
 <p>该属性指定了一个备份源,并提供了该备份源的相关信息。</p> 
 <h5><code>EXT-X-I-FRAME-STREAM-INF</code></h5> 
 <p>该标签表明媒体播放列表文件包含多种媒体资源的 I帧。</p> 
 <h5><code>EXT-X-SESSION-KEY</code></h5> 
 <p>该标签允许主播放列表(Master Playlist)指定媒体播放列表(Meida Playlist)的加密密钥。这使得客户端可以预先加载这些密钥,而无需从媒体播放列表中获取。其属性列表与 EXT-X-KEY 相同,除了 METHOD 属性的值必须不为NONE。</p> 
 <h4>媒体播放列表或主播放列表都使用的标签(Media or Master Playlist Tags)</h4> 
 <p>以下标签可同时设置于主播放列表(Master Playlist)和媒体播放列表(Media Playlist)中。但是对于在主播放列表中设置了的标签,不应当再次设置媒体播放列表中。同时出现在两者播放列表的相同标签必须具备相同的值。这些标签在播放列表中不能出现多次(只能使用一次)。</p> 
 <h5><code>EXT-X-INDEPENDENT-SEGMENTS</code></h5> 
 <p>该标签对列表内所有媒体片段均有效,用于表明对于一个媒体片段中的所有媒体样本均可独立进行解码,而无须依赖其他媒体片段信息。</p> 
 <pre><code>#EXT-X-INDEPENDENT-SEGMENTS
</code></pre> 
 <p>如果该标签出现在主播放列表中,则其对所有媒体播放列表的所有媒体片段都生效。</p> 
 <h5><code>EXT-X-START</code></h5> 
 <p>该标签为可选标签,用于表示播放列表播放起始位置。默认情况下,客户端应该使用该标签指定的位置进行播放。</p> 
 <pre><code>#EXT-X-START:<attribute-list>
</code></pre> 
 <p>其参数属性列表的取值范围如下:</p> 
 <ul> 
  <li><p><strong>TIME-OFFSET</strong>:该属性值为一个带符号十进制浮点数(单位:秒)。<br> 一个正数表示以播放列表起始位置开始的时间偏移量。<br> 一个负数表示播放列表上一个媒体片段最后位置往前的时间偏移量。<br> 该属性的绝对值应当不超过播放列表的时长。如果超过,则表示到达文件结尾(数值为正数),或者达到文件起始(数值为负数)。<br> 如果播放列表不包含 <strong>EXT-X-ENDLIST</strong> 标签,那么 <strong>TIME-OFFSET</strong> 属性值不应当在播放文件末尾三个切片时长之内。</p></li> 
  <li><p><strong>PRECISE</strong>:该值为一个可枚举字符串。<br> 有效的取值为<code>YES</code> 或 <code>NO</code>。<br> 如果值为<code>YES</code>,客户端应当播放包含 <strong>TIME-OFFSET</strong> 的媒体片段,但不要渲染该块内优先于 <strong>TIME-OFFSET</strong> 的样本块。<br> 如果值为<code>NO</code>,客户端应当尝试渲染在媒体片段内的所有样本块。<br> 该属性为可选参数,未指定则认为<code>NO</code>。</p></li> 
 </ul> 
 <h1>HLS直播延迟高的原因</h1> 
 <p>HLS直播延迟主要由以下几个原因导致的:</p> 
 <ol> 
  <li>客户端一般存在安全缓冲的时长。HLS协议不建议客户端选择开始时间到最后一个分片结束时间间隔小于最后一个分片时长加两倍的 EXT-X-TARGETDURATION 时长的分片作为首个分片进行播放。也就是说,一般而言,客户端应该从 M3U8 文件中倒数第三个或倒数第四个分片开始播放。</li> 
 </ol> 
 <div class="image-package"> 
  <div class="image-container" style="max-width: 700px; max-height: 500px;"> 
   <div class="image-view">  
   </div> 
  </div> 
  <div class="image-caption">
    image.png 
  </div> 
 </div> 
 <ol start="2"> 
  <li><p>服务器更新 M3U8 文件的间隔。理论上HLS服务器需要大于等于一个EXT-X-TARGETDURATION的时长去更新 M3U8文件。</p></li> 
  <li><p>CDN缓存机制。若当前源站 M3U8 已经更新到了第四个片段,但是CDN边缘节点还缓存着上一个版本的 M3U8文件(只包含3个片段)。此时就需要等文件的TTL过期,边缘节点才会去获取最新版本的 M3U8 文件。而这个缓存TTL也不能取消,如果每个端上的请求到达CDN边缘节点时都去找源站要最新版本,源站就可能会被流量冲垮。</p></li> 
  <li><p>客户端下载分片以及解码的时长。</p></li> 
  <li><p>网络延迟。</p></li> 
 </ol> 
 <h1>优化延迟的方法</h1> 
 <p>我们可以从延迟原因中的第 <code>1</code> 和第 <code>2</code> 点入手,降低我们直播的延迟。</p> 
 <ol> 
  <li>适当减少客户端的安全缓冲时长。在保证网络环境足够优越的场景下(如内网直播),可以适当降低客户端安全缓冲的时长。如hls.js可以通过修改<code>liveSyncDurationCount</code>(安全缓冲的分片数量,默认为3)和<code>liveSyncDuration</code>(安全缓冲的时长,单位为秒)来调整安全缓冲的时长。</li> 
  <li>尽量使用GOP(Group Of Picture)的时长来设置分片的时长,降低服务器更新 M3U8 文件的间隔。</li> 
 </ol> 
</article>
                            </div>
                        </div>
                    </div>
                    <!--PC和WAP自适应版-->
                    <div id="SOHUCS" sid="1672379502086414336"></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/1892496190289801216.htm"
                           title="同步盘怎么选?2025年这三款网盘的功能和优缺点全在这!" target="_blank">同步盘怎么选?2025年这三款网盘的功能和优缺点全在这!</a>
                        <span class="text-muted">SJ_HP</span>
<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/%E8%BF%9C%E7%A8%8B%E5%B7%A5%E4%BD%9C/1.htm">远程工作</a><a class="tag" taget="_blank" href="/search/%E5%AE%89%E5%85%A8/1.htm">安全</a><a class="tag" taget="_blank" href="/search/%E7%99%BE%E5%BA%A6%E4%BA%91/1.htm">百度云</a>
                        <div>在数字时代,文件存储、多设备同步和团队协作已经成为我们生活和工作中不可或缺的一部分。无论是个人用户还是企业团队,都面临着文件存储空间不足、设备间同步困难以及团队合作效率低下的痛点。同步盘和企业云盘的出现,正是为了解决这些问题。它们不仅提供了便捷的文件存储和管理功能,还通过多设备同步和团队协作功能,极大地提升了工作效率。今天,我们将对比几款热门的同步盘产品,帮助你找到最适合自己的解决方案。亿方云:企</div>
                    </li>
                    <li><a href="/article/1892490141654642688.htm"
                           title="网络协议、网络安全架构、网络安全标准" target="_blank">网络协议、网络安全架构、网络安全标准</a>
                        <span class="text-muted">Utopia.️</span>
<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/web%E5%AE%89%E5%85%A8/1.htm">web安全</a><a class="tag" taget="_blank" href="/search/%E6%9E%B6%E6%9E%84/1.htm">架构</a>
                        <div>1.网络协议网络协议是计算机网络中设备之间通信的规则集。熟悉常见的网络协议及其工作原理是确保网络安全的基础。常见协议:TCP/IP协议:这是网络通信的基础协议,确保数据从源端传输到目标端,支持多种传输方式(TCP可靠传输,UDP快速但不可靠)。HTTP/HTTPS:HTTP用于浏览器与服务器之间的通信,HTTPS则是在HTTP上添加了SSL/TLS加密层,用于确保数据传输的安全性。DNS协议:用于</div>
                    </li>
                    <li><a href="/article/1892489889514057728.htm"
                           title="嵌入式音视频开发(二)ffmpeg音视频同步" target="_blank">嵌入式音视频开发(二)ffmpeg音视频同步</a>
                        <span class="text-muted">云雨歇</span>
<a class="tag" taget="_blank" href="/search/%E9%9F%B3%E8%A7%86%E9%A2%91/1.htm">音视频</a><a class="tag" taget="_blank" href="/search/ffmpeg/1.htm">ffmpeg</a>
                        <div>系列文章目录嵌入式音视频开发(零)移植ffmpeg及推流测试嵌入式音视频开发(一)ffmpeg框架及内核解析嵌入式音视频开发(二)ffmpeg音视频同步嵌入式音视频开发(三)直播协议及编码器文章目录系列文章目录前言一、音视频同步1.1基础概念1.2三种同步方法二、音视频同步的实现2.1时间基的转换问题2.2音频为基准2.2.1实现思路2.2.2代码大纲2.3外部时钟同步2.3.1实现思路2.3.2</div>
                    </li>
                    <li><a href="/article/1892489385207721984.htm"
                           title="Conda 常用命令全解析" target="_blank">Conda 常用命令全解析</a>
                        <span class="text-muted">melck</span>
<a class="tag" taget="_blank" href="/search/conda/1.htm">conda</a>
                        <div>在Windows系统中,Conda是一款功能强大的包管理和环境管理工具,尤其对于数据分析、科学计算等场景有着重要的作用。本文将详细介绍Conda在Windows系统中的常用命令,帮助你高效地管理虚拟环境和软件包。一、环境管理命令1.1查看Conda版本conda--version该命令用于确认Conda是否成功安装以及查看其版本号。这对于确保Conda的兼容性和功能性非常重要。1.2创建新环境co</div>
                    </li>
                    <li><a href="/article/1892489258774622208.htm"
                           title="CH340N的使用注意事项" target="_blank">CH340N的使用注意事项</a>
                        <span class="text-muted">鹿屿二向箔</span>
<a class="tag" taget="_blank" href="/search/%E5%8D%95%E7%89%87%E6%9C%BA/1.htm">单片机</a><a class="tag" taget="_blank" href="/search/%E5%B5%8C%E5%85%A5%E5%BC%8F%E7%A1%AC%E4%BB%B6/1.htm">嵌入式硬件</a>
                        <div>使用CH340N将MCU的串口(UART)转换为USB输出是一种常见的方案,适用于需要将嵌入式设备连接到电脑的场景。以下是详细的连接方法和步骤:1.CH340N简介功能:CH340N是一款USB转串口芯片,支持USB2.0协议,可将UART信号转换为USB信号。特点:内置晶振,无需外部晶振。支持5V和3.3V电源电压。封装为SOP-8,体积小,适合紧凑设计。2.硬件连接以下是CH340N与MCU(</div>
                    </li>
                    <li><a href="/article/1892487744546992128.htm"
                           title="欧*雅WCS项目总结" target="_blank">欧*雅WCS项目总结</a>
                        <span class="text-muted">十五001</span>
<a class="tag" taget="_blank" href="/search/%E9%A1%B9%E7%9B%AE%E5%BD%92%E6%A1%A3/1.htm">项目归档</a><a class="tag" taget="_blank" href="/search/%E5%90%8E%E7%AB%AF/1.htm">后端</a><a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/%E7%A8%8B%E5%BA%8F%E4%BA%BA%E7%94%9F/1.htm">程序人生</a>
                        <div>项目介绍使用系统APRISO下发任务与wcs交互,wcs包含与海康agv对接,以及APRISO不纳入管理的库位(包括线边库位、码头库位、暂存区库位、空栈板库位)。wcs的主要定位就是高度定制化贴合生产业务,可以说wcs成为了agv和APRISO之间的桥梁。APRISO下发任务时候,通过生成xml文件实现的,这时候wcs会监听该文件目录新建的xml文件来生成任务。刚开始部署后不到一周出现了监听失效问</div>
                    </li>
                    <li><a href="/article/1892487746182770688.htm"
                           title="JMM(Java内存模型)讲解" target="_blank">JMM(Java内存模型)讲解</a>
                        <span class="text-muted">十五001</span>
<a class="tag" taget="_blank" href="/search/%E5%9F%BA%E7%A1%80/1.htm">基础</a><a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/jvm/1.htm">jvm</a>
                        <div>JMM(JavaMemoryModel,Java内存模型)是Java并发编程中的一个非常重要的概念,它帮助我们理解Java程序在多线程环境下内存操作的行为。别担心,我会用简单易懂的方式来讲解,让你轻松掌握它的核心内容。1.什么是JMM?定义JMM是Java内存模型的简称,它定义了Java程序中内存操作的规则和规范。简单来说,JMM规定了Java程序中的变量存储在内存中的方式,以及线程如何读取和写入</div>
                    </li>
                    <li><a href="/article/1892487112591208448.htm"
                           title="【人工智能时代】- AI 聚合平台" target="_blank">【人工智能时代】- AI 聚合平台</a>
                        <span class="text-muted">xiaoli8748_软件开发</span>
<a class="tag" taget="_blank" href="/search/%E4%BA%BA%E5%B7%A5%E6%99%BA%E8%83%BD%E6%97%B6%E4%BB%A3/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>
                        <div>最近听朋友介绍,国内有个团队开发了一个全功能的AI聚合平台,包含主流的GPT和绘画功能,以及一些其他的衍生功能,几乎应有尽有。于是,对AI很感兴趣的我,便也来瞧瞧这是个什么样的存在,以下便是我的真实使用感受。除此以外,作为一个程序员,我还使用了该平台提供的API接口,开发了一个简单的小程序。文章的末尾,我将提供免费的AI机器人,以及小程序体验地址,记得查收哦~官方网站:https://302.ai</div>
                    </li>
                    <li><a href="/article/1892483583331856384.htm"
                           title="Python 舆论风向分析爬虫:全流程数据获取、清洗与情感剖析" target="_blank">Python 舆论风向分析爬虫:全流程数据获取、清洗与情感剖析</a>
                        <span class="text-muted">西攻城狮北</span>
<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><a class="tag" taget="_blank" href="/search/%E5%AE%9E%E6%88%98%E6%A1%88%E4%BE%8B/1.htm">实战案例</a>
                        <div>引言在当今信息爆炸的时代,互联网上充斥着海量的用户言论和观点。了解舆论风向对于企业、政府机构以及研究者等具有重要的意义,可以帮助他们及时把握公众情绪、调整策略与决策。Python作为一种强大的编程语言,在数据爬取与分析方面具有得天独厚的优势,能够助力我们高效地实现舆情监测与深入剖析。一、环境搭建与目标确定1.环境搭建为了顺利完成爬虫与数据分析任务,首先需要确保你的开发环境已经安装了以下Python</div>
                    </li>
                    <li><a href="/article/1892483330612457472.htm"
                           title="Android. WebView出现net::ERR_UNKNOWN_URL_SCHEME错误" target="_blank">Android. WebView出现net::ERR_UNKNOWN_URL_SCHEME错误</a>
                        <span class="text-muted">沙漠蓝色披头</span>
<a class="tag" taget="_blank" href="/search/%E5%B0%8F%E6%8A%80%E5%B7%A7/1.htm">小技巧</a><a class="tag" taget="_blank" href="/search/webview/1.htm">webview</a><a class="tag" taget="_blank" href="/search/android/1.htm">android</a>
                        <div>1.仔细观察图中url可以发现这是一个自定协议的url,究其原因,就是拦截webview中的url,如果url是自定义协议(如:tel,weixin,alipays等等)开头的,就url转换成原生调用(intent跳转),因为webview只能识别http,https这样的协议.webview其实就相当于pc端的浏览器,遇到http/https开头的url时会向host发起一个请求,而遇到自定义的</div>
                    </li>
                    <li><a href="/article/1892480557481259008.htm"
                           title="分布式数据库解析" target="_blank">分布式数据库解析</a>
                        <span class="text-muted">qcidyu</span>
<a class="tag" taget="_blank" href="/search/%E6%96%87%E7%AB%A0%E5%BD%92%E6%A1%A3/1.htm">文章归档</a><a class="tag" taget="_blank" href="/search/%E6%95%B0%E6%8D%AE%E5%88%86%E7%89%87/1.htm">数据分片</a><a class="tag" taget="_blank" href="/search/%E9%AB%98%E5%8F%AF%E7%94%A8%E6%9E%B6%E6%9E%84/1.htm">高可用架构</a><a class="tag" taget="_blank" href="/search/%E4%BA%91%E6%95%B0%E6%8D%AE%E5%BA%93/1.htm">云数据库</a><a class="tag" taget="_blank" href="/search/%E5%85%B1%E8%AF%86%E7%AE%97%E6%B3%95/1.htm">共识算法</a><a class="tag" taget="_blank" href="/search/%E5%85%A8%E7%90%83%E4%B8%80%E8%87%B4%E6%80%A7/1.htm">全球一致性</a><a class="tag" taget="_blank" href="/search/%E5%88%86%E5%B8%83%E5%BC%8F%E4%BA%8B%E5%8A%A1/1.htm">分布式事务</a><a class="tag" taget="_blank" href="/search/CAP%E5%AE%9A%E7%90%86/1.htm">CAP定理</a>
                        <div>title:分布式数据库解析date:2025/2/20updated:2025/2/20author:cmdragonexcerpt:通过金融交易、社交平台、物联网等9大真实场景,结合GoogleSpanner跨洲事务、DynamoDB毫秒级扩展等38个生产级案例,揭示分布式数据库的核心原理与工程实践。内容涵盖CAP定理的动态权衡策略、Paxos/Raft协议的工程实现差异、TrueTime时钟</div>
                    </li>
                    <li><a href="/article/1892479169636397056.htm"
                           title="java竞赛优化输入输出效率" target="_blank">java竞赛优化输入输出效率</a>
                        <span class="text-muted">px不是xp</span>
<a class="tag" taget="_blank" href="/search/%E8%93%9D%E6%A1%A5%E5%87%86%E5%A4%87/1.htm">蓝桥准备</a><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的`Scanner`和`System.out.println`虽然简单,但在处理大规模数据时会严重拖慢速度。以下是**竞赛专用输入输出模板**及其原理详解,助你轻松应对高频I/O场景。---###⚡竞赛级输入输出模板(Java)importjava.io.*;importjava.util.*;publicclassMain{  publicstatic</div>
                    </li>
                    <li><a href="/article/1892479042192470016.htm"
                           title="快速复制A库表数据前10000行到B库" target="_blank">快速复制A库表数据前10000行到B库</a>
                        <span class="text-muted">musk1212</span>
<a class="tag" taget="_blank" href="/search/%E6%95%B0%E6%8D%AE%E5%BA%93/1.htm">数据库</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>
                        <div>提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录应用场景一、存储过程,快速复制A库表数据前10000行到B库二、使用优化点说明结构优化性能调整错误处理增强安全改进调用示例应用场景表结构可预先存在或不存在mysql5.7快速复制A库表数据前10000行到B库一、存储过程,快速复制A库表数据前10000行到B库/*设置自定义分隔符以处理存储过程中的分号*/DELIMITER$$</div>
                    </li>
                    <li><a href="/article/1892468194430480384.htm"
                           title="使用rknn进行yolo11-pose部署" target="_blank">使用rknn进行yolo11-pose部署</a>
                        <span class="text-muted">点PY</span>
<a class="tag" taget="_blank" href="/search/%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0%E6%A8%A1%E5%9E%8B%E9%83%A8%E7%BD%B2/1.htm">深度学习模型部署</a><a class="tag" taget="_blank" href="/search/pytorch/1.htm">pytorch</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/%E4%BA%BA%E5%B7%A5%E6%99%BA%E8%83%BD/1.htm">人工智能</a>
                        <div>文章目录概要生成ONNX生成RKNN实测效果概要使用RKNN进行YOLOv11Pose部署的必要性在于,RKNN能将YOLOv11Pose模型转化为适合Rockchip硬件平台(如RV1109、RV1126)执行的格式,充分利用其AI加速功能,显著提高推理速度和效率。此外,RKNN提供模型优化(如量化)功能,有助于减少计算资源消耗,提升实时处理能力,特别适合在嵌入式设备上进行高效、低功耗的姿态估计</div>
                    </li>
                    <li><a href="/article/1892466934134403072.htm"
                           title="SQL面试题集:累计值与1000差值最小的记录" target="_blank">SQL面试题集:累计值与1000差值最小的记录</a>
                        <span class="text-muted">数星星的阿波罗</span>
<a class="tag" taget="_blank" href="/search/Sql%E8%83%BD%E5%8A%9B%E9%80%9A%E5%85%B3/1.htm">Sql能力通关</a><a class="tag" taget="_blank" href="/search/sql/1.htm">sql</a><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%E5%BA%93/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/%E5%A4%A7%E6%95%B0%E6%8D%AE/1.htm">大数据</a><a class="tag" taget="_blank" href="/search/%E6%95%B0%E6%8D%AE%E5%88%86%E6%9E%90/1.htm">数据分析</a><a class="tag" taget="_blank" href="/search/%E9%9D%A2%E8%AF%95/1.htm">面试</a>
                        <div>一、题目描述司机累计收入首次接近目标值的订单定位,滴滴平台计划优化司机奖励策略的触发机制,需精准识别司机在接单过程中累计收入首次接近特定目标值1000元的订单节点。该分析用于动态调整奖励发放规则,提升司机接单积极性。样例数据假设表t_sales结构如下:driver_idorder_idincomeorder_time11012002025-02-1909:00:0011023002025-02-</div>
                    </li>
                    <li><a href="/article/1892466429802901504.htm"
                           title="深入解析JVM性能问题定位与优化" target="_blank">深入解析JVM性能问题定位与优化</a>
                        <span class="text-muted">测试不打烊</span>
<a class="tag" taget="_blank" href="/search/%E6%80%A7%E8%83%BD%E6%B5%8B%E8%AF%95/1.htm">性能测试</a><a class="tag" taget="_blank" href="/search/jvm/1.htm">jvm</a><a class="tag" taget="_blank" href="/search/%E6%80%A7%E8%83%BD%E4%BC%98%E5%8C%96/1.htm">性能优化</a>
                        <div>JVM性能问题定位与优化详解:架构、内存、Linux命令与监控工具的全面解析引言Java虚拟机(JVM)是运行Java应用程序的核心组件,它管理内存、执行字节码,并提供垃圾回收机制等功能。然而,随着应用规模的增长,JVM的性能问题时常会成为系统瓶颈。为了有效定位和优化JVM性能问题,我们需要从JVM架构、内存管理、Linux系统命令,以及监控工具入手,对JVM的各类指标进行详尽的分析和优化。本文将</div>
                    </li>
                    <li><a href="/article/1892465292462845952.htm"
                           title="【java基础】Java 中的 this 关键字" target="_blank">【java基础】Java 中的 this 关键字</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/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的编程世界里,this关键字宛如一把神奇的钥匙,看似简单,却蕴含着强大的功能。它在对象的创建、方法的调用以及成员变量的访问等方面都发挥着至关重要的作用。1.this关键字的基本概念this关键字是Java中的一个引用变量,它指向当前对象。在一个类的方法或构造器内部,this关键字可以用来引用调用该方法或构造器的对象实例。简单来说,this代表了当前正在执行操作的对象本身。哪个对象调用</div>
                    </li>
                    <li><a href="/article/1892462136815316992.htm"
                           title="关于防火墙运维面试题2" target="_blank">关于防火墙运维面试题2</a>
                        <span class="text-muted">编织幻境的妖</span>
<a class="tag" taget="_blank" href="/search/%E8%BF%90%E7%BB%B4/1.htm">运维</a><a class="tag" taget="_blank" href="/search/%E7%BD%91%E7%BB%9C/1.htm">网络</a><a class="tag" taget="_blank" href="/search/php/1.htm">php</a>
                        <div>三、防火墙配置与管理类21.如何根据企业的网络安全策略,制定一套全面的防火墙规则集?需要考虑哪些关键因素?以下是根据企业网络安全策略制定全面防火墙规则集的指导,以及需要考虑的关键因素:一、关键因素(一)网络架构与拓扑了解企业的网络结构明确企业网络是简单的星型拓扑、复杂的网状拓扑还是混合拓扑等。例如,在星型拓扑中,所有设备都连接到一个中心交换机或集线器,这种结构下防火墙规则可能相对集中和简单;而在网</div>
                    </li>
                    <li><a href="/article/1892459485125996544.htm"
                           title="C++ C_style string overview and basic Input funcitons" target="_blank">C++ C_style string overview and basic Input funcitons</a>
                        <span class="text-muted">狗头鹰</span>
<a class="tag" taget="_blank" href="/search/C%2B%2B/1.htm">C++</a><a class="tag" taget="_blank" href="/search/notes/1.htm">notes</a><a class="tag" taget="_blank" href="/search/c%2B%2B/1.htm">c++</a><a class="tag" taget="_blank" href="/search/%E5%BC%80%E5%8F%91%E8%AF%AD%E8%A8%80/1.htm">开发语言</a>
                        <div>writeinadvance最近在做题,遇到一个简单的将console的输入输出到文件中的简单题目,没有写出来。悔恨当初没有踏实地总结string相关的I/O以及与文件的操作。这篇文章旨在记录基础的字符I/O,简单常用的文件I/O操作函数。当然,你会说C++已经有一个stringclass,我们只需要#include就能够使用它带来的便捷性及强大的功能,无需烦恼细节。但知道底层的具体情况在语言的学</div>
                    </li>
                    <li><a href="/article/1892459106929799168.htm"
                           title="十大经典排序算法的C++实现与解析" target="_blank">十大经典排序算法的C++实现与解析</a>
                        <span class="text-muted">金外飞176</span>
<a class="tag" taget="_blank" href="/search/%E7%AE%97%E6%B3%95/1.htm">算法</a><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><a class="tag" taget="_blank" href="/search/c%2B%2B/1.htm">c++</a>
                        <div>经典排序算法的C++实现与解析在计算机科学中,排序算法是数据处理和算法设计的基础。无论是处理大规模数据还是优化小规模数据的性能,排序算法都扮演着重要角色。本文将介绍10种经典排序算法,并提供它们的C++实现代码。这些算法包括冒泡排序、选择排序、插入排序、希尔排序、归并排序、快速排序、堆排序、计数排序、基数排序和桶排序。1.冒泡排序(BubbleSort)原理冒泡排序是最简单的排序算法之一。它通过重</div>
                    </li>
                    <li><a href="/article/1892457086076383232.htm"
                           title="动态蛇形卷积(DySnakeConv)在YOLOv8检测头中的应用与优化-分割性能的提升【YOLOv8】" target="_blank">动态蛇形卷积(DySnakeConv)在YOLOv8检测头中的应用与优化-分割性能的提升【YOLOv8】</a>
                        <span class="text-muted">步入烟尘</span>
<a class="tag" taget="_blank" href="/search/YOLO/1.htm">YOLO</a><a class="tag" taget="_blank" href="/search/%E5%8A%A8%E6%80%81%E8%9B%87%E5%BD%A2%E5%8D%B7%E7%A7%AF/1.htm">动态蛇形卷积</a><a class="tag" taget="_blank" href="/search/DySnakeConv/1.htm">DySnakeConv</a>
                        <div>本专栏专为AI视觉领域的爱好者和从业者打造。涵盖分类、检测、分割、追踪等多项技术,带你从入门到精通!后续更有实战项目,助你轻松应对面试挑战!立即订阅,开启你的YOLOv8之旅!专栏订阅地址:https://blog.csdn.net/mrdeam/category_12804295.html文章目录动态蛇形卷积(DySnakeConv)在YOLOv8检测头中的应用与优化-分割性能的提升【YOLOv</div>
                    </li>
                    <li><a href="/article/1892455070847528960.htm"
                           title="Java JVM性能优化与调优" target="_blank">Java JVM性能优化与调优</a>
                        <span class="text-muted">卖血买老婆</span>
<a class="tag" taget="_blank" href="/search/Java%E4%B8%93%E6%A0%8F/1.htm">Java专栏</a><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/%E6%80%A7%E8%83%BD%E4%BC%98%E5%8C%96/1.htm">性能优化</a>
                        <div>优化Java应用的性能通常需要深入理解JVM(JavaVirtualMachine)的工作原理和运行机制,因为JVM直接决定了Java程序的运行时表现。以下是JVM性能优化与调优的要点和详细指导,涵盖常见问题、调优工具及策略。一、常见性能问题内存相关问题堆内存不足(OutOfMemoryError:Javaheapspace)元空间(Metaspace)不足频繁的垃圾回收导致长时间停顿内存泄漏(对</div>
                    </li>
                    <li><a href="/article/1892453181489737728.htm"
                           title="webpack性能优化策略" target="_blank">webpack性能优化策略</a>
                        <span class="text-muted">雅望天堂i</span>
<a class="tag" taget="_blank" href="/search/webpack/1.htm">webpack</a><a class="tag" taget="_blank" href="/search/%E5%89%8D%E7%AB%AF/1.htm">前端</a><a class="tag" taget="_blank" href="/search/node.js/1.htm">node.js</a>
                        <div>1.代码分割(CodeSplitting)通过代码分割,可以将代码拆分成多个较小的文件,实现按需加载,减少首屏加载时间。使用SplitChunksPlugin将公共代码提取到单独的chunk中,避免重复打包。config.optimization.splitChunks({chunks:'all',cacheGroups:{//第三方组件libs:{name:'chunk-libs',test:/</div>
                    </li>
                    <li><a href="/article/1892452924794138624.htm"
                           title="《神经网络与深度学习》(邱锡鹏) 内容概要【不含数学推导】" target="_blank">《神经网络与深度学习》(邱锡鹏) 内容概要【不含数学推导】</a>
                        <span class="text-muted">code_stream</span>
<a class="tag" taget="_blank" href="/search/%23/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/%E7%A5%9E%E7%BB%8F%E7%BD%91%E7%BB%9C/1.htm">神经网络</a>
                        <div>第1章绪论基本概念:介绍了人工智能的发展历程及不同阶段的特点,如符号主义、连接主义、行为主义等。还阐述了深度学习在人工智能领域的重要地位和发展现状,以及其在图像、语音、自然语言处理等多个领域的成功应用。术语解释人工智能:旨在让机器模拟人类智能的技术和科学。深度学习:一种基于对数据进行表征学习的方法,通过构建具有很多层的神经网络模型,自动从大量数据中学习复杂的模式和特征。第2章机器学习概述基本概念:</div>
                    </li>
                    <li><a href="/article/1892452295224913920.htm"
                           title="BP 神经网络在考古数据分析中的应用" target="_blank">BP 神经网络在考古数据分析中的应用</a>
                        <span class="text-muted">fanxbl957</span>
<a class="tag" taget="_blank" href="/search/%E4%BA%BA%E5%B7%A5%E6%99%BA%E8%83%BD%E7%90%86%E8%AE%BA%E4%B8%8E%E5%AE%9E%E8%B7%B5/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/%E6%95%B0%E6%8D%AE%E5%88%86%E6%9E%90/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>
                        <div>BP神经网络在考古数据分析中的应用摘要:本文深入探讨了BP神经网络在考古数据分析领域的应用。首先阐述了考古数据分析的重要性以及传统分析方法的局限性。随后详细介绍了BP神经网络的结构、原理与训练算法。通过丰富的代码示例展示了如何运用BP神经网络进行考古文物的分类鉴定、年代预测以及遗址空间分布分析等任务,涵盖数据预处理、网络构建、模型训练与评估等关键环节。分析了该应用的优势与局限性,并对其在考古数据分</div>
                    </li>
                    <li><a href="/article/1892451287539183616.htm"
                           title="CentOS 7 安装以及配置桌面环境" target="_blank">CentOS 7 安装以及配置桌面环境</a>
                        <span class="text-muted">a4132447</span>
<a class="tag" taget="_blank" href="/search/linux/1.htm">linux</a>
                        <div>一、安装GNOME桌面1、安装命令:yumgroupinstall"GNOMEDesktop"-y//CentOS6的安装命令为:yumgroupinstall"XWindowSystem""DesktopPlatform"Desktop2、安装后,重启系统会出来如下界面:按“1”,回车按“2”,回车按"q",回车按“yes”,回车即可进入系统3、进入系统后,需要设置桌面为默认启动,设置命令为:s</div>
                    </li>
                    <li><a href="/article/1892450152266919936.htm"
                           title="市场波动中的数据分析与策略优化" target="_blank">市场波动中的数据分析与策略优化</a>
                        <span class="text-muted">QQ3990385023</span>
<a class="tag" taget="_blank" href="/search/%E6%95%B0%E6%8D%AE%E5%88%86%E6%9E%90/1.htm">数据分析</a><a class="tag" taget="_blank" href="/search/%E5%8C%BA%E5%9D%97%E9%93%BE/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>
                        <div>市场波动中的数据分析与策略优化在市场交易中,价格的波动往往受到多种因素影响,包括资金流向、经济数据、政策调整等。如何利用数据分析优化交易策略,提升市场适应能力,是投资者需要重点关注的问题。借助科学的分析方法,结合技术指标,可以更精准地识别趋势,提高交易稳定性。一、市场数据分析的核心要素1.价格趋势分析市场价格的变动通常会形成一定的趋势,例如上涨趋势、震荡趋势或下跌趋势。通过均线(MA)等技术指标,</div>
                    </li>
                    <li><a href="/article/1892449900264747008.htm"
                           title="100道计算机网络面试八股文(答案、分析和深入提问)整理" target="_blank">100道计算机网络面试八股文(答案、分析和深入提问)整理</a>
                        <span class="text-muted">守护海洋的猫</span>
<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/%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><a class="tag" taget="_blank" href="/search/python/1.htm">python</a><a class="tag" taget="_blank" href="/search/django/1.htm">django</a>
                        <div>1.说一说POST与GET有哪些区别回答在计算机网络中,POST和GET是HTTP协议中两种主要的请求方法,它们各自具有不同的特性和用途。下面是二者的主要区别:1.数据传输方式GET:数据通过URL传递,参数以查询字符串的形式附加在URL后面。示例:http://example.com/api?name=value&age=30POST:数据包含在HTTP请求的主体部分,数据不会显示在URL中。示</div>
                    </li>
                    <li><a href="/article/1892448765290278912.htm"
                           title="【Go语言快速上手】第二部分:Go语言进阶之测试与性能优化" target="_blank">【Go语言快速上手】第二部分:Go语言进阶之测试与性能优化</a>
                        <span class="text-muted">卜及中</span>
<a class="tag" taget="_blank" href="/search/Golang/1.htm">Golang</a><a class="tag" taget="_blank" href="/search/golang/1.htm">golang</a><a class="tag" taget="_blank" href="/search/%E6%80%A7%E8%83%BD%E4%BC%98%E5%8C%96/1.htm">性能优化</a><a class="tag" taget="_blank" href="/search/log4j/1.htm">log4j</a>
                        <div>文章目录前言:测试和性能优化一、编写单元测试和基准测试1.1单元测试1.1.1示例:编写单元测试1.2基准测试1.2.1示例:编写基准测试二、使用pprof进行性能分析2.1启用pprof2.1.1示例:启用pprof2.2使用pprof工具分析性能2.2.1示例:生成CPU性能报告2.2.2示例:生成内存使用报告2.3分析报告三、代码优化技巧3.1减少内存分配3.1.1示例:重用切片3.2避免锁</div>
                    </li>
                    <li><a href="/article/1892447377365725184.htm"
                           title="从开发到部署,搭建离线私有大模型知识库_离线大模型" target="_blank">从开发到部署,搭建离线私有大模型知识库_离线大模型</a>
                        <span class="text-muted">ai大模型应用开发</span>
<a class="tag" taget="_blank" href="/search/%E6%95%B0%E6%8D%AE%E5%BA%93/1.htm">数据库</a><a class="tag" taget="_blank" href="/search/%E6%9C%8D%E5%8A%A1%E5%99%A8/1.htm">服务器</a><a class="tag" taget="_blank" href="/search/linux/1.htm">linux</a><a class="tag" taget="_blank" href="/search/%E8%AF%AD%E8%A8%80%E6%A8%A1%E5%9E%8B/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/%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0/1.htm">深度学习</a>
                        <div>文末有福利!背景介绍最近一段时间搭建了一套完整的私有大模型知识库,目前完整的服务已经完成测试部署上线。基本之前的实践过程,从工程角度整理技术方案以及中间碰到的一些问题,方便后续对这个方向有需求的研发同学们。为什么做离线私有化部署在大模型火热起来之后,很多企业都有尝试相关服务。但是实际会碰到大模型不了解公司个性化的情况,无法针对公司情况给出个性化回答。因此就出现了针对大模型的知识库,通过提供公司内部</div>
                    </li>
                                <li><a href="/article/90.htm"
                                       title="java观察者模式" target="_blank">java观察者模式</a>
                                    <span class="text-muted">3213213333332132</span>
<a class="tag" taget="_blank" href="/search/java/1.htm">java</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/%E6%B8%B8%E6%88%8F/1.htm">游戏</a><a class="tag" taget="_blank" href="/search/%E8%A7%82%E5%AF%9F%E8%80%85%E6%A8%A1%E5%BC%8F/1.htm">观察者模式</a>
                                    <div>观察者模式——顾名思义,就是一个对象观察另一个对象,当被观察的对象发生变化时,观察者也会跟着变化。 
 
在日常中,我们配java环境变量时,设置一个JAVAHOME变量,这就是被观察者,使用了JAVAHOME变量的对象都是观察者,一旦JAVAHOME的路径改动,其他的也会跟着改动。 
 
这样的例子很多,我想用小时候玩的老鹰捉小鸡游戏来简单的描绘观察者模式。 
 
老鹰会变成观察者,母鸡和小鸡是</div>
                                </li>
                                <li><a href="/article/217.htm"
                                       title="TFS RESTful API 模拟上传测试" target="_blank">TFS RESTful API 模拟上传测试</a>
                                    <span class="text-muted">ronin47</span>

                                    <div>       TFS RESTful API 模拟上传测试。 
   
细节参看这里:https://github.com/alibaba/nginx-tfs/blob/master/TFS_RESTful_API.markdown 
模拟POST上传一个图片: 
curl --data-binary @/opt/tfs.png http</div>
                                </li>
                                <li><a href="/article/344.htm"
                                       title="PHP常用设计模式单例, 工厂, 观察者, 责任链, 装饰, 策略,适配,桥接模式" target="_blank">PHP常用设计模式单例, 工厂, 观察者, 责任链, 装饰, 策略,适配,桥接模式</a>
                                    <span class="text-muted">dcj3sjt126com</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/PHP/1.htm">PHP</a>
                                    <div>// 多态, 在JAVA中是这样用的, 其实在PHP当中可以自然消除, 因为参数是动态的, 你传什么过来都可以, 不限制类型, 直接调用类的方法
abstract class Tiger {
    public abstract function climb();
}

class XTiger extends Tiger {
    public function  climb()</div>
                                </li>
                                <li><a href="/article/471.htm"
                                       title="hibernate" target="_blank">hibernate</a>
                                    <span class="text-muted">171815164</span>
<a class="tag" taget="_blank" href="/search/Hibernate/1.htm">Hibernate</a>
                                    <div>main,save 
 
Configuration conf =new Configuration().configure();
SessionFactory sf=conf.buildSessionFactory();
Session sess=sf.openSession();
Transaction tx=sess.beginTransaction();

News a=new </div>
                                </li>
                                <li><a href="/article/598.htm"
                                       title="Ant实例分析" target="_blank">Ant实例分析</a>
                                    <span class="text-muted">g21121</span>
<a class="tag" taget="_blank" href="/search/ant/1.htm">ant</a>
                                    <div>        下面是一个Ant构建文件的实例,通过这个实例我们可以很清楚的理顺构建一个项目的顺序及依赖关系,从而编写出更加合理的构建文件。 
  
        下面是build.xml的代码: 
<?xml version="1</div>
                                </li>
                                <li><a href="/article/725.htm"
                                       title="[简单]工作记录_接口返回405原因" target="_blank">[简单]工作记录_接口返回405原因</a>
                                    <span class="text-muted">53873039oycg</span>
<a class="tag" taget="_blank" href="/search/%E5%B7%A5%E4%BD%9C/1.htm">工作</a>
                                    <div>         最近调接口时候一直报错,错误信息是: 
      
responseCode:405
responseMsg:Method Not Allowed 
       接口请求方式Post. </div>
                                </li>
                                <li><a href="/article/852.htm"
                                       title="关于java.lang.ClassNotFoundException 和 java.lang.NoClassDefFoundError 的区别" target="_blank">关于java.lang.ClassNotFoundException 和 java.lang.NoClassDefFoundError 的区别</a>
                                    <span class="text-muted">程序员是怎么炼成的</span>

                                    <div>  
 真正完成类的加载工作是通过调用 defineClass来实现的; 
 而启动类的加载过程是通过调用 loadClass来实现的; 
 就是类加载器分为加载和定义 
   
 protected Class<?> findClass(String name) throws ClassNotFoundExcept</div>
                                </li>
                                <li><a href="/article/979.htm"
                                       title="JDBC学习笔记-JDBC详细的操作流程" target="_blank">JDBC学习笔记-JDBC详细的操作流程</a>
                                    <span class="text-muted">aijuans</span>
<a class="tag" taget="_blank" href="/search/jdbc/1.htm">jdbc</a>
                                    <div>所有的JDBC应用程序都具有下面的基本流程:  1、加载数据库驱动并建立到数据库的连接。  2、执行SQL语句。  3、处理结果。  4、从数据库断开连接释放资源。 
下面我们就来仔细看一看每一个步骤: 
其实按照上面所说每个阶段都可得单独拿出来写成一个独立的类方法文件。共别的应用来调用。 
1、加载数据库驱动并建立到数据库的连接: 
     Html代码    
 
 St</div>
                                </li>
                                <li><a href="/article/1106.htm"
                                       title="rome创建rss" target="_blank">rome创建rss</a>
                                    <span class="text-muted">antonyup_2006</span>
<a class="tag" taget="_blank" href="/search/tomcat/1.htm">tomcat</a><a class="tag" taget="_blank" href="/search/cms/1.htm">cms</a><a class="tag" taget="_blank" href="/search/xml/1.htm">xml</a><a class="tag" taget="_blank" href="/search/struts/1.htm">struts</a><a class="tag" taget="_blank" href="/search/Opera/1.htm">Opera</a>
                                    <div>引用   
1.RSS标准 
 
RSS标准比较混乱,主要有以下3个系列 
 
 RSS 0.9x / 2.0 : RSS技术诞生于1999年的网景公司(Netscape),其发布了一个0.9版本的规范。2001年,RSS技术标准的发展工作被Userland Software公司的戴夫 温那(Dave Winer)所接手。陆续发布了0.9x的系列版本。当W3C小组发布RSS 1.0后,Dave W</div>
                                </li>
                                <li><a href="/article/1233.htm"
                                       title="html表格和表单基础" target="_blank">html表格和表单基础</a>
                                    <span class="text-muted">百合不是茶</span>
<a class="tag" taget="_blank" href="/search/html/1.htm">html</a><a class="tag" taget="_blank" href="/search/%E8%A1%A8%E6%A0%BC/1.htm">表格</a><a class="tag" taget="_blank" href="/search/%E8%A1%A8%E5%8D%95/1.htm">表单</a><a class="tag" taget="_blank" href="/search/meta/1.htm">meta</a><a class="tag" taget="_blank" href="/search/%E9%94%9A%E7%82%B9/1.htm">锚点</a>
                                    <div>第一次用html来写东西,感觉压力山大,每次看见别人发的都是比较牛逼的 再看看自己什么都还不会, 
  
html是一种标记语言,其实很简单都是固定的格式 
  
_----------------------------------------表格和表单 
表格是html的重要组成部分,表格用在body里面的 
主要用法如下; 
<table>

     &</div>
                                </li>
                                <li><a href="/article/1360.htm"
                                       title="ibatis如何传入完整的sql语句" target="_blank">ibatis如何传入完整的sql语句</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/sql/1.htm">sql</a><a class="tag" taget="_blank" href="/search/ibatis/1.htm">ibatis</a>
                                    <div>        ibatis如何传入完整的sql语句?进一步说,String str ="select * from test_table",我想把str传入ibatis中执行,是传递整条sql语句。 
        解决办法: 
<</div>
                                </li>
                                <li><a href="/article/1487.htm"
                                       title="精通Oracle10编程SQL(14)开发动态SQL" target="_blank">精通Oracle10编程SQL(14)开发动态SQL</a>
                                    <span class="text-muted">bijian1013</span>
<a class="tag" taget="_blank" href="/search/oracle/1.htm">oracle</a><a class="tag" taget="_blank" href="/search/%E6%95%B0%E6%8D%AE%E5%BA%93/1.htm">数据库</a><a class="tag" taget="_blank" href="/search/plsql/1.htm">plsql</a>
                                    <div>/*
 *开发动态SQL
 */
--使用EXECUTE IMMEDIATE处理DDL操作
CREATE OR REPLACE PROCEDURE drop_table(table_name varchar2)
is
   sql_statement varchar2(100);
begin
   sql_statement:='DROP TABLE '||table_name;
</div>
                                </li>
                                <li><a href="/article/1614.htm"
                                       title="【Linux命令】Linux工作中常用命令" target="_blank">【Linux命令】Linux工作中常用命令</a>
                                    <span class="text-muted">bit1129</span>
<a class="tag" taget="_blank" href="/search/linux%E5%91%BD%E4%BB%A4/1.htm">linux命令</a>
                                    <div>不断的总结工作中常用的Linux命令 
  
1.查看端口被哪个进程占用 
  
通过这个命令可以得到占用8085端口的进程号,然后通过ps -ef|grep 进程号得到进程的详细信息 
  
netstat -anp | grep 8085 
  
察看进程ID对应的进程占用的端口号 
  
netstat -anp | grep 进程ID 
&</div>
                                </li>
                                <li><a href="/article/1741.htm"
                                       title="优秀网站和文档收集" target="_blank">优秀网站和文档收集</a>
                                    <span class="text-muted">白糖_</span>
<a class="tag" taget="_blank" href="/search/%E7%BD%91%E7%AB%99/1.htm">网站</a>
                                    <div>集成 Flex, Spring, Hibernate 构建应用程序 
  
性能测试工具-JMeter 
  
Hmtl5-IOCN网站 
  
Oracle精简版教程网站 
  
鸟哥的linux私房菜 
  
Jetty中文文档 
  
50个jquery必备代码片段 
  
swfobject.js检测flash版本号工具</div>
                                </li>
                                <li><a href="/article/1868.htm"
                                       title="angular.extend" target="_blank">angular.extend</a>
                                    <span class="text-muted">boyitech</span>
<a class="tag" taget="_blank" href="/search/AngularJS/1.htm">AngularJS</a><a class="tag" taget="_blank" href="/search/angular.extend/1.htm">angular.extend</a><a class="tag" taget="_blank" href="/search/AngularJS+API/1.htm">AngularJS API</a>
                                    <div>angular.extend   复制src对象中的属性去dst对象中. 支持多个src对象. 如果你不想改变一个对象,你可以把dst设为空对象{}: var object = angular.extend({}, object1, object2). 注意: angular.extend不支持递归复制.    使用方法:   angular.extend(dst, src);    参数:   </div>
                                </li>
                                <li><a href="/article/1995.htm"
                                       title="java-谷歌面试题-设计方便提取中数的数据结构" target="_blank">java-谷歌面试题-设计方便提取中数的数据结构</a>
                                    <span class="text-muted">bylijinnan</span>
<a class="tag" taget="_blank" href="/search/java/1.htm">java</a>
                                    <div>网上找了一下这道题的解答,但都是提供思路,没有提供具体实现。其中使用大小堆这个思路看似简单,但实现起来要考虑很多。 
以下分别用排序数组和大小堆来实现。 
使用大小堆: 
 

import java.util.Arrays;

public class MedianInHeap {
	/**
	 * 题目:设计方便提取中数的数据结构
	 * 设计一个数据结构,其中包含两个函数,1.插</div>
                                </li>
                                <li><a href="/article/2122.htm"
                                       title="ajaxFileUpload 针对 ie jquery 1.7+不能使用问题修复版本" target="_blank">ajaxFileUpload 针对 ie jquery 1.7+不能使用问题修复版本</a>
                                    <span class="text-muted">Chen.H</span>
<a class="tag" taget="_blank" href="/search/ajaxFileUpload/1.htm">ajaxFileUpload</a><a class="tag" taget="_blank" href="/search/ie6/1.htm">ie6</a><a class="tag" taget="_blank" href="/search/ie7/1.htm">ie7</a><a class="tag" taget="_blank" href="/search/ie8/1.htm">ie8</a><a class="tag" taget="_blank" href="/search/ie9/1.htm">ie9</a>
                                    <div>jQuery.extend({
	handleError: function( s, xhr, status, e ) 		{
		// If a local callback was specified, fire it
				if ( s.error ) {
					s.error.call( s.context || s, xhr, status, e );
				}

</div>
                                </li>
                                <li><a href="/article/2249.htm"
                                       title="[机器人制造原则]机器人的电池和存储器必须可以替换" target="_blank">[机器人制造原则]机器人的电池和存储器必须可以替换</a>
                                    <span class="text-muted">comsci</span>
<a class="tag" taget="_blank" href="/search/%E5%88%B6%E9%80%A0/1.htm">制造</a>
                                    <div> 
 
       机器人的身体随时随地可能被外来力量所破坏,但是如果机器人的存储器和电池可以更换,那么这个机器人的思维和记忆力就可以保存下来,即使身体受到伤害,在把存储器取下来安装到一个新的身体上之后,原有的性格和能力都可以继续维持..... 
 
       另外,如果一</div>
                                </li>
                                <li><a href="/article/2376.htm"
                                       title="Oracle Multitable INSERT 的用法" target="_blank">Oracle Multitable INSERT 的用法</a>
                                    <span class="text-muted">daizj</span>
<a class="tag" taget="_blank" href="/search/oracle/1.htm">oracle</a>
                                    <div>转载Oracle笔记-Multitable INSERT 的用法 
 
http://blog.chinaunix.net/uid-8504518-id-3310531.html 
 
一、Insert基础用法 
 
语法: 
 
    Insert Into 表名 (字段1,字段2,字段3...) 
 
    Values (值1,</div>
                                </li>
                                <li><a href="/article/2503.htm"
                                       title="专访黑客历史学家George Dyson" target="_blank">专访黑客历史学家George Dyson</a>
                                    <span class="text-muted">datamachine</span>
<a class="tag" taget="_blank" href="/search/on/1.htm">on</a>
                                    <div>20世纪最具威力的两项发明——核弹和计算机出自同一时代、同一群年青人。可是,与大名鼎鼎的曼哈顿计划(第二次世界大战中美国原子弹研究计划)相 比,计算机的起源显得默默无闻。出身计算机世家的历史学家George Dyson在其新书《图灵大教堂》(Turing’s Cathedral)中讲述了阿兰·图灵、约翰·冯·诺依曼等一帮子天才小子创造计算机及预见计算机未来</div>
                                </li>
                                <li><a href="/article/2630.htm"
                                       title="小学6年级英语单词背诵第一课" target="_blank">小学6年级英语单词背诵第一课</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>always 总是 
rice 水稻,米饭 
before 在...之前 
live 生活,居住 
  
usual 通常的 
early 早的 
begin 开始 
month 月份 
  
year 年 
last 最后的 
east 东方的 
high 高的 
  
far 远的 
window 窗户 
world 世界 
than 比...更 
  </div>
                                </li>
                                <li><a href="/article/2757.htm"
                                       title="在线IT教育和在线IT高端教育" target="_blank">在线IT教育和在线IT高端教育</a>
                                    <span class="text-muted">dcj3sjt126com</span>
<a class="tag" taget="_blank" href="/search/%E6%95%99%E8%82%B2/1.htm">教育</a>
                                    <div>codecademy 
http://www.codecademy.com   codeschool 
https://www.codeschool.com   teamtreehouse 
http://teamtreehouse.com   lynda 
http://www.lynda.com/   Coursera 
https://www.coursera.</div>
                                </li>
                                <li><a href="/article/2884.htm"
                                       title="Struts2 xml校验框架所定义的校验文件" target="_blank">Struts2 xml校验框架所定义的校验文件</a>
                                    <span class="text-muted">蕃薯耀</span>
<a class="tag" taget="_blank" href="/search/Struts2+xml%E6%A0%A1%E9%AA%8C/1.htm">Struts2 xml校验</a><a class="tag" taget="_blank" href="/search/Struts2+xml%E6%A0%A1%E9%AA%8C%E6%A1%86%E6%9E%B6/1.htm">Struts2 xml校验框架</a><a class="tag" taget="_blank" href="/search/Struts2%E6%A0%A1%E9%AA%8C/1.htm">Struts2校验</a>
                                    <div>  
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> 
蕃薯耀 2015年7月11日 15:54:59 星期六 
http://fa</div>
                                </li>
                                <li><a href="/article/3011.htm"
                                       title="mac下安装rar和unrar命令" target="_blank">mac下安装rar和unrar命令</a>
                                    <span class="text-muted">hanqunfeng</span>
<a class="tag" taget="_blank" href="/search/mac/1.htm">mac</a>
                                    <div>1.下载:http://www.rarlab.com/download.htm  选择 
RAR 5.21 for Mac OS X   2.解压下载后的文件   tar -zxvf rarosx-5.2.1.tar   3.cd rar   sudo install -c -o $USER unrar /bin #输入当前用户登录密码   sudo install -c -o $USER rar</div>
                                </li>
                                <li><a href="/article/3138.htm"
                                       title="三种将list转换为map的方法" target="_blank">三种将list转换为map的方法</a>
                                    <span class="text-muted">jackyrong</span>
<a class="tag" taget="_blank" href="/search/list/1.htm">list</a>
                                    <div>  在本文中,介绍三种将list转换为map的方法: 
 
1) 传统方法 
 
假设有某个类如下 
   

class Movie {
    
    private Integer rank;
    private String description;
    
    public Movie(Integer rank, String des</div>
                                </li>
                                <li><a href="/article/3265.htm"
                                       title="年轻程序员需要学习的5大经验" target="_blank">年轻程序员需要学习的5大经验</a>
                                    <span class="text-muted">lampcy</span>
<a class="tag" taget="_blank" href="/search/%E5%B7%A5%E4%BD%9C/1.htm">工作</a><a class="tag" taget="_blank" href="/search/PHP/1.htm">PHP</a><a class="tag" taget="_blank" href="/search/%E7%A8%8B%E5%BA%8F%E5%91%98/1.htm">程序员</a>
                                    <div>在过去的7年半时间里,我带过的软件实习生超过一打,也看到过数以百计的学生和毕业生的档案。我发现很多事情他们都需要学习。或许你会说,我说的不就是某种特定的技术、算法、数学,或者其他特定形式的知识吗?没错,这的确是需要学习的,但却并不是最重要的事情。他们需要学习的最重要的东西是“自我规范”。这些规范就是:尽可能地写出最简洁的代码;如果代码后期会因为改动而变得凌乱不堪就得重构;尽量删除没用的代码,并添加</div>
                                </li>
                                <li><a href="/article/3392.htm"
                                       title="评“女孩遭野蛮引产致终身不育 60万赔偿款1分未得”医腐深入骨髓" target="_blank">评“女孩遭野蛮引产致终身不育 60万赔偿款1分未得”医腐深入骨髓</a>
                                    <span class="text-muted">nannan408</span>

                                    <div>先来看南方网的一则报道: 
 

再正常不过的结婚、生子,对于29岁的郑畅来说,却是一个永远也无法实现的梦想。从2010年到2015年,从24岁到29岁,一张张新旧不一的诊断书记录了她病情的同时,也清晰地记下了她人生的悲哀。

  粗暴手术让人发寒

  2010年7月,在酒店做服务员的郑畅发现自己怀孕了,可男朋友却联系不上。在没有和家人商量的情况下,她决定堕胎。

  12月5日,</div>
                                </li>
                                <li><a href="/article/3519.htm"
                                       title="使用jQuery为input输入框绑定回车键事件 VS 为a标签绑定click事件" target="_blank">使用jQuery为input输入框绑定回车键事件 VS 为a标签绑定click事件</a>
                                    <span class="text-muted">Everyday都不同</span>
<a class="tag" taget="_blank" href="/search/jsp/1.htm">jsp</a><a class="tag" taget="_blank" href="/search/input/1.htm">input</a><a class="tag" taget="_blank" href="/search/%E5%9B%9E%E8%BD%A6%E9%94%AE%E7%BB%91%E5%AE%9A/1.htm">回车键绑定</a><a class="tag" taget="_blank" href="/search/click/1.htm">click</a><a class="tag" taget="_blank" href="/search/enter/1.htm">enter</a>
                                    <div>假设如题所示的事件为同一个,必须先把该js函数抽离出来,该函数定义了监听的处理: 
  
function search() {
	//监听函数略......	
} 
  
为input框绑定回车事件,当用户在文本框中输入搜索关键字时,按回车键,即可触发search(): 
  
//回车绑定
$(".search").keydown(fun</div>
                                </li>
                                <li><a href="/article/3646.htm"
                                       title="EXT学习记录" target="_blank">EXT学习记录</a>
                                    <span class="text-muted">tntxia</span>
<a class="tag" taget="_blank" href="/search/ext/1.htm">ext</a>
                                    <div>  
1. 准备 
  
(1) 官网:http://www.sencha.com/ 
  
里面有源代码和API文档下载。 
  
EXT的域名已经从www.extjs.com改成了www.sencha.com ,但extjs这个域名会自动转到sencha上。 
  
(2)帮助文档: 
  
想要查看EXT的官方文档的话,可以去这里h</div>
                                </li>
                                <li><a href="/article/3773.htm"
                                       title="mybatis3的mapper文件报Referenced file contains errors" target="_blank">mybatis3的mapper文件报Referenced file contains errors</a>
                                    <span class="text-muted">xingguangsixian</span>
<a class="tag" taget="_blank" href="/search/mybatis/1.htm">mybatis</a>
                                    <div>最近使用mybatis.3.1.0时无意中碰到一个问题: 
The errors below were detected when validating the file "mybatis-3-mapper.dtd" via the file "account-mapper.xml".  In most cases these errors can be d</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>