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/1897028267311951872.htm"
                           title="3.1、密码学基础" target="_blank">3.1、密码学基础</a>
                        <span class="text-muted">山兔1</span>
<a class="tag" taget="_blank" href="/search/%E4%BF%A1%E6%81%AF%E5%AE%89%E5%85%A8%E5%B7%A5%E7%A8%8B%E5%B8%88/1.htm">信息安全工程师</a><a class="tag" taget="_blank" href="/search/%E5%AF%86%E7%A0%81%E5%AD%A6/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/%E6%9C%8D%E5%8A%A1%E5%99%A8/1.htm">服务器</a>
                        <div>目录密码学概念与法律密码安全分析密码体制分类-私钥密码/对称密码体制密码体制分类-公钥密码/非对称密码体制密码体制分类-混合密码体制密码学概念与法律密码学主要是由密码编码以及密码分析两个部分组成,密码编码就是加密,密码分析就是把我们的密文变化成相应的明文,就是解密跟密码相关的有两个法律,密码法在2020年1月1日起开始实施。2005年,实施了电子签名法密码学相关的一些概念,罗列了一些明文密文,加密</div>
                    </li>
                    <li><a href="/article/1897024357083967488.htm"
                           title="Java生成LRC纵向冗余校验" target="_blank">Java生成LRC纵向冗余校验</a>
                        <span class="text-muted">YunFeiDong</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><a class="tag" taget="_blank" href="/search/Modbus/1.htm">Modbus</a><a class="tag" taget="_blank" href="/search/ASCII/1.htm">ASCII</a>
                        <div>纵向冗余校验(LongitudinalRedundancyCheck,简称:LRC)是通信中常用的一种校验形式,也称LRC校验或纵向校验;它是一种从纵向通道上的特定比特串产生校验比特的错误检测方法;通常Modbus协议ASCII模式采用LRC算法。1.生成LRC校验/***生成LRC校验值:**1)对需要校验的数据(2n个字符)两两组成一个16进制的数值求和;*2)将求和结果与256求模;*3)用</div>
                    </li>
                    <li><a href="/article/1897023601199083520.htm"
                           title="python运行代码时标红_PyCharm 中写 Turtle代码没提示以及标黄问题" target="_blank">python运行代码时标红_PyCharm 中写 Turtle代码没提示以及标黄问题</a>
                        <span class="text-muted">weixin_39977642</span>
<a class="tag" taget="_blank" href="/search/python%E8%BF%90%E8%A1%8C%E4%BB%A3%E7%A0%81%E6%97%B6%E6%A0%87%E7%BA%A2/1.htm">python运行代码时标红</a>
                        <div>PyCharm中在使用Turtle(海龟)库绘图体系时,代码明明是正确可以运行的,但是没有提示,代码出现黄色标记以及红色波浪线,经验不足的人还以为自己的书写方法错误,毕竟出现了红色波浪线,效果如下图:原因说明:出现这个问题往往可能并不是你的问题,而是pycharm和turtle库有冲突,不能自己识别出turtle下的方法,站在pycharm本身的角度下它觉得你的代码出错了,找不到,所以给你标红线,</div>
                    </li>
                    <li><a href="/article/1897021575354445824.htm"
                           title="超详细的docker以及docker-compose的部署教程" target="_blank">超详细的docker以及docker-compose的部署教程</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/docker/1.htm">docker</a><a class="tag" taget="_blank" href="/search/java/1.htm">java</a>
                        <div>目录一、docker安装1.准备工作2.安装docker3.设置国内镜像2.docker-compose安装1.准备工作2.通过curl命令下载(不建议)3.手动安装(强烈建议)3.docker常用命令一、docker安装1.准备工作(1)一台Linux服务器,如果使用的是CentOS系统,请确保内核要不低于3.10。以下的演示环境皆为CentOS7.6。(2)安装之前,请执行下面的命令卸载旧的d</div>
                    </li>
                    <li><a href="/article/1897021576004562944.htm"
                           title="JAVA学习——DAY1" target="_blank">JAVA学习——DAY1</a>
                        <span class="text-muted">E卤蛋</span>
<a class="tag" taget="_blank" href="/search/JAVA%E5%AD%A6%E4%B9%A0/1.htm">JAVA学习</a><a class="tag" taget="_blank" href="/search/java/1.htm">java</a>
                        <div>几个cmd终端命令:cls——清屏cd——移至所在路径,后跟绝对路径or相对路径ip-config——查看本机ip信息java开发环境:JDK——java开发环境,包含:JRE(Java运行时环境),JVM(java虚拟机),以及各类开发库文件;安装目录:bin目录:两个重要——javac.exe(java编译工具),从.java文件编译为.class(字节码文件),java.exe(Java运行</div>
                    </li>
                    <li><a href="/article/1897021071496900608.htm"
                           title="深度解析JVM世界:JVM内存分配" target="_blank">深度解析JVM世界:JVM内存分配</a>
                        <span class="text-muted">最后一支迷迭香</span>
<a class="tag" taget="_blank" href="/search/jvm%E8%99%9A%E6%8B%9F%E6%9C%BA/1.htm">jvm虚拟机</a><a class="tag" taget="_blank" href="/search/jvm/1.htm">jvm</a><a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/jvm%E5%86%85%E5%AD%98/1.htm">jvm内存</a>
                        <div>本篇文章的主要内容是介绍JVM内存的分配方式、JVM内存的快速分配策略、JVM的逃逸分析和堆内存的分代思想几部分内容。请同学们认真听讲,面试会问到。。。1.内存分配大家需要注意不分配内存的对象无法进行其他操作JVM为对象分配内存的过程:首先计算对象占用空间大小,接着在堆中划分一块内存给新对象主要方式分为以下两种:如果内存规整,使用指针碰撞(BumpThePointer)。所有用过的内存在一边,空闲</div>
                    </li>
                    <li><a href="/article/1897018550791499776.htm"
                           title="JMeter 不同协议测试最佳实践汇总" target="_blank">JMeter 不同协议测试最佳实践汇总</a>
                        <span class="text-muted">那片海还在吗</span>
<a class="tag" taget="_blank" href="/search/test/1.htm">test</a><a class="tag" taget="_blank" href="/search/jmeter/1.htm">jmeter</a><a class="tag" taget="_blank" href="/search/%E6%B5%8B%E8%AF%95%E5%B7%A5%E5%85%B7/1.htm">测试工具</a>
                        <div>JMeter不同协议测试最佳实践汇总一、JMeter测试HTTPS(一)环境准备JMeter安装:从JMeter官方网站下载并解压JMeter到本地。Java环境:确保系统已安装Java运行环境(JRE)或开发环境(JDK),建议使用Java8及以上版本。(二)创建测试计划启动JMeter,默认有一个测试计划。右键点击测试计划,选择“添加”->“线程(用户)”->“线程组”,可设置线程数、循环次数</div>
                    </li>
                    <li><a href="/article/1897017289555898368.htm"
                           title="图数据库Neo4j面试内容整理-Cypher 查询优化" target="_blank">图数据库Neo4j面试内容整理-Cypher 查询优化</a>
                        <span class="text-muted">不务正业的猿</span>
<a class="tag" taget="_blank" href="/search/%E9%9D%A2%E8%AF%95/1.htm">面试</a><a class="tag" taget="_blank" href="/search/Neo4j/1.htm">Neo4j</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/neo4j/1.htm">neo4j</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/%E5%9B%BE%E6%95%B0%E6%8D%AE%E5%BA%93/1.htm">图数据库</a>
                        <div>Cypher查询优化是在Neo4j中提高查询性能的关键部分。Cypher是Neo4j的查询语言,允许我们通过图的结构进行高效的数据检索。然而,随着数据量的增大和查询复杂度的提高,查询性能可能会变差。为了优化Cypher查询,我们可以使用多种策略,包括合理设计查询、利用索引和约束、避免不必要的查询操作等。以下是一些Cypher查询优化的最佳实践和策略:1.使用索引(Index)</div>
                    </li>
                    <li><a href="/article/1897016404952018944.htm"
                           title="查询速度慢的原因,如何优化查询" target="_blank">查询速度慢的原因,如何优化查询</a>
                        <span class="text-muted">狂野弘仁</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/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/%E5%A4%A7%E6%95%B0%E6%8D%AE/1.htm">大数据</a>
                        <div>页面显示数据一定要及时的呈现,否则会影响用户体现.那么导致页面加载数据慢或者显示滞后的原因又是什么呢?原因分析后台数据库中数据过多,未做数据优化数据请求-解析-展示处理不当网络问题提高数据库查询的速度方案SQL查询速度慢的原因有很多,常见的有以下几种:1、没有索引或者没有用到索引(查询慢最常见的问题,是程序设计的缺陷)2、I/O吞吐量小,形成了瓶颈效应。3、没有创建计算列导致查询不优化。4、内存不</div>
                    </li>
                    <li><a href="/article/1897014765390196736.htm"
                           title="golang分布式中间件之MySQL" target="_blank">golang分布式中间件之MySQL</a>
                        <span class="text-muted">SMILY12138</span>
<a class="tag" taget="_blank" href="/search/mysql/1.htm">mysql</a><a class="tag" taget="_blank" href="/search/golang/1.htm">golang</a><a class="tag" taget="_blank" href="/search/%E5%88%86%E5%B8%83%E5%BC%8F/1.htm">分布式</a>
                        <div>MySQL是广泛应用于Web应用程序和其他分布式系统中的关系型数据库管理系统(RDBMS)。在golang分布式中间件领域,MySQL作为一种常用工具,被广泛使用。本文将深度探讨MySQL在golang分布式系统中的应用,包括MySQL的基础知识、MySQL在golang中的使用方法、MySQL的主从复制以及MySQL在分布式系统中的应用场景。一、MySQL基础知识MySQL的安装与配置MySQL</div>
                    </li>
                    <li><a href="/article/1897007326825607168.htm"
                           title="c++编译过程初识&静态&动态链接库&makefile&cmakelists初始" target="_blank">c++编译过程初识&静态&动态链接库&makefile&cmakelists初始</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/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>编译过程预处理:主要是执行一些预处理指令,主要是#开头的代码,如#include的头文件、#define定义的宏常量、#ifdef#ifndef#endif等条件编译的代码,具体包括查找头文件、进行宏替换、根据条件编译等操作。g++-Eexample.cpp-oexample.i编译:进行词法分析、语法分析、语义分析、代码优化等,将.i文件转换为汇编代码文件,即.s文件。g++-Sexample.</div>
                    </li>
                    <li><a href="/article/1897006117045727232.htm"
                           title="Matplotlib 和 Seaborn 哪个更适合做数据可视化?" target="_blank">Matplotlib 和 Seaborn 哪个更适合做数据可视化?</a>
                        <span class="text-muted"></span>
<a class="tag" taget="_blank" href="/search/matplotlib%E5%8F%AF%E8%A7%86%E5%8C%96/1.htm">matplotlib可视化</a>
                        <div>Matplotlib和Seaborn都是Python中非常流行的数据可视化库,它们各有优势和适用场景。选择哪一个更适合做数据可视化,取决于你的具体需求、数据类型以及你希望达到的可视化效果。以下是对这两个库的详细对比,帮助你做出选择:MatplotlibMatplotlib是Python最基础的绘图库,提供了广泛的绘图功能,支持多种图表类型。优点功能强大:支持几乎所有常见的图表类型,如折线图、柱状图</div>
                    </li>
                    <li><a href="/article/1897004933740294144.htm"
                           title="这些部署方式你知道么:灰度发布、蓝绿部署与金丝雀部署" target="_blank">这些部署方式你知道么:灰度发布、蓝绿部署与金丝雀部署</a>
                        <span class="text-muted">提前退休了-程序员阿飞</span>
<a class="tag" taget="_blank" href="/search/%E6%9E%B6%E6%9E%84/1.htm">架构</a><a class="tag" taget="_blank" href="/search/%E5%88%86%E5%B8%83%E5%BC%8F/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/java/1.htm">java</a>
                        <div>灰度发布、蓝绿部署与金丝雀部署:核心概念与实战选型指南在软件交付过程中,如何安全、高效地将新版本发布到生产环境一直是开发团队的核心挑战。灰度发布、蓝绿部署和金丝雀部署是三种主流的渐进式发布策略,它们通过不同的方式降低发布风险。本文将深入解析它们的原理、优缺点及适用场景。一、核心概念与原理1.灰度发布(GrayRelease)定义:灰度发布是一种渐进式发布策略,将新版本逐步推送给特定用户群体(如10</div>
                    </li>
                    <li><a href="/article/1897002413164916736.htm"
                           title="LangChain链与记忆处理[10]:四种基础内置链、四种文档处理链,以及链的自定义和五种运行方式,让你的大模型更加智能" target="_blank">LangChain链与记忆处理[10]:四种基础内置链、四种文档处理链,以及链的自定义和五种运行方式,让你的大模型更加智能</a>
                        <span class="text-muted">汀、人工智能</span>
<a class="tag" taget="_blank" href="/search/AI/1.htm">AI</a><a class="tag" taget="_blank" href="/search/Agent/1.htm">Agent</a><a class="tag" taget="_blank" href="/search/langchain/1.htm">langchain</a><a class="tag" taget="_blank" href="/search/LangGraph/1.htm">LangGraph</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%A4%A7%E6%A8%A1%E5%9E%8B/1.htm">大模型</a><a class="tag" taget="_blank" href="/search/%E6%99%BA%E8%83%BD%E9%97%AE%E7%AD%94/1.htm">智能问答</a><a class="tag" taget="_blank" href="/search/chain/1.htm">chain</a><a class="tag" taget="_blank" href="/search/Agent/1.htm">Agent</a>
                        <div>LangChain链与记忆处理[10]:四种基础内置链、四种文档处理链,以及链的自定义和五种运行方式,让你的大模型更加智能参考文章可以使用国产LLM进行下述项目复现:初识langchain[1]:Langchain实战教学,利用qwen2.1与GLM-4大模型构建智能解决方案[含Agent、tavily面向AI搜索]langchain[2]:Langchain实战教学,国内大模型LLM选择以及主流</div>
                    </li>
                    <li><a href="/article/1897001277259313152.htm"
                           title="tensorflow Serving架构详解和代码示例" target="_blank">tensorflow Serving架构详解和代码示例</a>
                        <span class="text-muted">lloyd_chou</span>
<a class="tag" taget="_blank" href="/search/%E7%AE%97%E6%B3%95/1.htm">算法</a><a class="tag" taget="_blank" href="/search/ml/1.htm">ml</a><a class="tag" taget="_blank" href="/search/%E6%9C%BA%E5%99%A8%E7%BF%BB%E8%AF%91/1.htm">机器翻译</a><a class="tag" taget="_blank" href="/search/%E6%99%BA%E6%85%A7%E5%9F%8E%E5%B8%82/1.htm">智慧城市</a><a class="tag" taget="_blank" href="/search/%E8%BE%B9%E7%BC%98%E8%AE%A1%E7%AE%97/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>本文介绍tensorflowServing的原理和代码实现,并提供简要的代码阅读指导.如何serve一个模型具体的步骤可以参考官方文档.主要包括两个部分:1.导出模型1.启动服务需要说明的是导出模型部分.如果要把我们训练的模型拿来提供服务,除了模型本身外,还需要一些额外的信息,比如模型的名称,输入、输出对应的tensor信息,方法名,这些东西可以让TFS进行请求数据的格式检查以及目标模型查找.这就</div>
                    </li>
                    <li><a href="/article/1896997855361560576.htm"
                           title="Leetcode 54: 螺旋矩阵" target="_blank">Leetcode 54: 螺旋矩阵</a>
                        <span class="text-muted">越哥聊IT</span>
<a class="tag" taget="_blank" href="/search/LeetCode%E7%AE%97%E6%B3%95%E9%9D%A2%E8%AF%95%E9%80%9A%E5%85%B3/1.htm">LeetCode算法面试通关</a><a class="tag" taget="_blank" href="/search/leetcode/1.htm">leetcode</a><a class="tag" taget="_blank" href="/search/%E7%9F%A9%E9%98%B5/1.htm">矩阵</a><a class="tag" taget="_blank" href="/search/%E7%AE%97%E6%B3%95/1.htm">算法</a>
                        <div>Leetcode54:螺旋矩阵是一道经典的矩阵遍历模拟题目,要求我们以螺旋顺序遍历一个二维数组。这个问题在面试中非常经典,考察模拟、数组操作以及逻辑清晰度。掌握本题的高效解法可以迅速给面试官留下好印象。适合面试的解法:边界法(层级遍历)解法描述核心思想:一次遍历一圈,按四个边界移动指针定义四个边界:top,bottom,left,right,分别表示当前未遍历层的上边界、下边界、左边界和右边界。遍</div>
                    </li>
                    <li><a href="/article/1896997473948332032.htm"
                           title="凤凰架构-演进中的架构" target="_blank">凤凰架构-演进中的架构</a>
                        <span class="text-muted">metazz</span>
<a class="tag" taget="_blank" href="/search/%E5%88%86%E5%B8%83%E5%BC%8F/1.htm">分布式</a><a class="tag" taget="_blank" href="/search/%E5%BE%AE%E6%9C%8D%E5%8A%A1/1.htm">微服务</a>
                        <div>原始分布式时代1、惠普公司=》网络运算架构(NCA)=》远程服务调用的雏形卡内基梅隆大学=》AFS文件系统=》分布式文件系统的最早实现麻省理工学院=》Kerberos协议=》服务认证和访问控制的基础性协议,分布式服务安全性的重要支撑,目前仍被用于实现包括Windows和MacOS在内众多操作系统的登录、认证功能。2、OSF(开放软件基金会)发起制订=》DCE(分布式运算环境)分布式技术体系3、DC</div>
                    </li>
                    <li><a href="/article/1896995080292593664.htm"
                           title="非结构化数据的“汇、存、管、用”之道探究" target="_blank">非结构化数据的“汇、存、管、用”之道探究</a>
                        <span class="text-muted">CaritoB</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/%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>
                        <div>摘要随着信息技术的飞速发展,非结构化数据作为数字时代的重要资产,其管理与利用成为企业与社会关注的焦点。本文系统探究了非结构化数据的“汇、存、管、用”之道,为数据的有效治理与价值挖掘提供了新视角。在汇集方面,我们深入剖析了非结构化数据的多元来源与高效采集技术,强调了数据源多样性与采集效率的重要性。存储策略方面,探讨了存储介质与格式选择对数据管理的影响,并引入了数据压缩与去重技术以优化存储效能。管理挑</div>
                    </li>
                    <li><a href="/article/1896993814669750272.htm"
                           title="NCU使用指南及模型性能测试(pytorch2.5.1)" target="_blank">NCU使用指南及模型性能测试(pytorch2.5.1)</a>
                        <span class="text-muted">Jakari</span>
<a class="tag" taget="_blank" href="/search/cuda/1.htm">cuda</a><a class="tag" taget="_blank" href="/search/gpu/1.htm">gpu</a><a class="tag" taget="_blank" href="/search/ncu/1.htm">ncu</a><a class="tag" taget="_blank" href="/search/python/1.htm">python</a><a class="tag" taget="_blank" href="/search/docker/1.htm">docker</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/pytorch/1.htm">pytorch</a>
                        <div>本项目在原项目的基础上增加了NsightCompute(ncu)测试的功能,并对相关脚本功能做了一些健硕性的增强,同时,对一些框架的代码进行了更改(主要是数据集的大小和epoch等),增加模型性能测试的效率,同时完善了模型LSTM的有关功能。OverviewNsightCompute(NCU)是NVIDIA提供的GPU内核级性能分析工具,专注于CUDA程序的优化。它提供详细的计算资源、内存带宽、指</div>
                    </li>
                    <li><a href="/article/1896992677640073216.htm"
                           title="Langchain解锁LLM大语言模型的结构化输出能力(多种实现方案)" target="_blank">Langchain解锁LLM大语言模型的结构化输出能力(多种实现方案)</a>
                        <span class="text-muted">晨欣</span>
<a class="tag" taget="_blank" href="/search/langchain/1.htm">langchain</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>
                        <div>在LangChain解锁LLM大语言模型的结构化输出能力:调用with_structured_output()方法这篇博客中,我们了解了格式化LLM输出内容的必要性以及如何通过调用langchain框架中提供的with_structured_output()方法对LLM输出进行格式化(三种可选方式:基于TypedDict类(类型化字典)、JSONSchema(JSON模式)和Pydantic类)。</div>
                    </li>
                    <li><a href="/article/1896991543106007040.htm"
                           title="Beyond Compare for mac v5.0.6.30713 文件对比利器 支持M、Intel芯片" target="_blank">Beyond Compare for mac v5.0.6.30713 文件对比利器 支持M、Intel芯片</a>
                        <span class="text-muted">Macdo_cn</span>
<a class="tag" taget="_blank" href="/search/macos/1.htm">macos</a>
                        <div>Mac毒搜集到的BeyondCompare是一套超级的文件及文件夹(目录)的比较工具,不仅可以快速比较出两个目录的不同,还可以比较每个文件的内容,而且可以任意显示比较结果。应用介绍程序内建了文件浏览器,方便您对文件、文件夹、压缩包、FTP网站之间的差异比对以及资料同步。使用它可以管理源代码,保持文件夹的同步,比较程序输出,及验证光盘的复制。它还支持脚本、插件,尤其对中文支持很好。并列比较文件夹、F</div>
                    </li>
                    <li><a href="/article/1896990284324073472.htm"
                           title="网络原理 初识[Java EE]" target="_blank">网络原理 初识[Java EE]</a>
                        <span class="text-muted">猿周LV</span>
<a class="tag" taget="_blank" href="/search/Java/1.htm">Java</a><a class="tag" taget="_blank" href="/search/EE/1.htm">EE</a><a class="tag" taget="_blank" href="/search/%E7%BD%91%E7%BB%9C%E5%8E%9F%E7%90%86/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/java-ee/1.htm">java-ee</a><a class="tag" taget="_blank" href="/search/java/1.htm">java</a>
                        <div>目录网络发展史独立模式网络互联局域网LAN1.基于网络直连2.基于集线器(Hub)组建3.基于交换机(Switch)组建4.基于交换机和路由器(Router)组建广域网WAN网络通信基础IP地址1.概念2.格式端口号1.概念2.格式认识协议1.概念2.作用3.协议分层3.1什么是协议分层3.2分层的作用3.2.1上层不需要了解下层的细节(封装)3.2.2灵活的调整/替换某层的协议4.五元组4.1源</div>
                    </li>
                    <li><a href="/article/1896988517133774848.htm"
                           title="基于Ubuntu+vLLM+NVIDIA T4高效部署DeepSeek大模型实战指南" target="_blank">基于Ubuntu+vLLM+NVIDIA T4高效部署DeepSeek大模型实战指南</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/%E4%BA%BA%E5%B7%A5%E6%99%BA%E8%83%BD/1.htm">人工智能</a><a class="tag" taget="_blank" href="/search/pytorch/1.htm">pytorch</a><a class="tag" taget="_blank" href="/search/%E8%AF%AD%E8%A8%80%E6%A8%A1%E5%9E%8B/1.htm">语言模型</a>
                        <div>一、前言:拥抱vLLM与T4显卡的强强联合在探索人工智能的道路上,如何高效地部署和运行大型语言模型(LLMs)一直是一个核心挑战。尤其是当我们面对资源有限的环境时,这个问题变得更加突出。原始的DeepSeek-R1-32B模型虽然强大,但在T4显卡上遭遇了显存溢出的问题,这限制了其在实际应用中的潜力。为了解决这一难题,我们转向了官方提供的优化版本——DeepSeek-R1-Distill-Qwen</div>
                    </li>
                    <li><a href="/article/1896972508897275904.htm"
                           title="Wireshark LUA脚本分析自定义帧格式" target="_blank">Wireshark LUA脚本分析自定义帧格式</a>
                        <span class="text-muted">sh1t灬</span>
<a class="tag" taget="_blank" href="/search/lua/1.htm">lua</a><a class="tag" taget="_blank" href="/search/wireshark/1.htm">wireshark</a><a class="tag" taget="_blank" href="/search/%E5%BC%80%E5%8F%91%E8%AF%AD%E8%A8%80/1.htm">开发语言</a>
                        <div>WiresharkLUA脚本分析自定义帧格式1.帧格式该帧格式由课设要求引出,本次课设要求在eth0网络接口与Linux内核TCP/IP间串接一个虚拟网络接口vni0,如下图所示:此报文格式修改为下图所示:以太帧头部:目的MAC地址(6字节)=广播MAC地址;源MAC地址(6字节)=发送方eth0的MAC地址;类型(2字节)=0xF4F0(即VNI的协议编号);VNI头部:VNI类型(4字节)=学</div>
                    </li>
                    <li><a href="/article/1896972130407477248.htm"
                           title="深入理解 Transformer:用途、原理和示例" target="_blank">深入理解 Transformer:用途、原理和示例</a>
                        <span class="text-muted">范吉民(DY Young)</span>
<a class="tag" taget="_blank" href="/search/%E7%AE%80%E5%8D%95AI%E5%AD%A6%E4%B9%A0/1.htm">简单AI学习</a><a class="tag" taget="_blank" href="/search/transformer/1.htm">transformer</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>深入理解Transformer:用途、原理和示例一、Transformer是什么Transformer是一种基于注意力机制(AttentionMechanism)的深度学习架构,在2017年的论文“AttentionIsAllYouNeed”中惊艳登场。它打破了传统循环神经网络(RNN)按顺序处理序列、难以并行计算以及卷积神经网络(CNN)在捕捉长距离依赖关系上的局限,另辟蹊径地采用多头注意力机制</div>
                    </li>
                    <li><a href="/article/1896971878191394816.htm"
                           title="QT状态机框架" target="_blank">QT状态机框架</a>
                        <span class="text-muted">斜阳日落</span>
<a class="tag" taget="_blank" href="/search/qt/1.htm">qt</a><a class="tag" taget="_blank" href="/search/%E5%BC%80%E5%8F%91%E8%AF%AD%E8%A8%80/1.htm">开发语言</a>
                        <div>一、介绍Qt中的状态机框架为我们提供了很多的API和类,使我们能更容易的在自己的应用程序中集成状态动画。这个框架是和Qt的元对象系统机密结合在一起的。比如,各个状态之间的转换是通过信号触发的,状态可被配置为用来设置QObject对象的属性以及调用其方法。可以说Qt中的状态机就是通过Qt自身的事件系统来驱动的。同时,状态机中的状态图是分层次的。一些状态可以被嵌套到另一些状态里,当前的状态机配置是由当</div>
                    </li>
                    <li><a href="/article/1896963558621638656.htm"
                           title="遨游防爆智能终端“问诊”工业制造,开出数据采集“良方”" target="_blank">遨游防爆智能终端“问诊”工业制造,开出数据采集“良方”</a>
                        <span class="text-muted">AORO_BEIDOU</span>
<a class="tag" taget="_blank" href="/search/%E5%88%B6%E9%80%A0/1.htm">制造</a>
                        <div>在数据驱动的时代,唯有采集足够规模的工业数据,方能支撑起基于工业大数据的深度分析与智能决策,从而驱动传统产业的蜕变与升级。但是,数据采集之路并非坦途,面临着设备协议多样、接口不一等挑战。技术难题求解,往往要在市场找良方。AOROM5-5G防爆智能终端遨游通讯防爆智能终端其独特之处在于全景前瞻架构的设计理念。在产品定义之初,便充分考虑了未来可能的数据采集需求,预留了丰富的接口,可根据企业的实际需求,</div>
                    </li>
                    <li><a href="/article/1896959652621512704.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/%E6%AD%A3%E5%88%99%E8%A1%A8%E8%BE%BE%E5%BC%8F/1.htm">正则表达式</a>
                        <div>正则表达式正则表达式(RegularExpression,简称正则或RegExp)是一种强大的文本模式匹配工具,被广泛应用于字符串的搜索、替换、验证等场景。Python的re库为正则表达式提供了丰富的支持,使得开发者能够在处理文本数据时更加高效和灵活。本文将深入探讨Python中的re库,包括基本语法、常见用法、高级技巧以及一些最佳实践,旨在帮助读者更全面地理解和运用正则表达式。什么是正则表达式?</div>
                    </li>
                    <li><a href="/article/1896959526259716096.htm"
                           title="C++ MySQL ORM接口设计优化:从宏污染到现代流式API" target="_blank">C++ MySQL ORM接口设计优化:从宏污染到现代流式API</a>
                        <span class="text-muted">C语言小火车</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/c%2B%2B/1.htm">c++</a><a class="tag" taget="_blank" href="/search/mysql/1.htm">mysql</a><a class="tag" taget="_blank" href="/search/java/1.htm">java</a>
                        <div>(基于编译期反射与链式调用的ORM框架重构实践)在C++中设计一个优雅的MySQLORM接口,既要兼顾易用性,又要保障性能与类型安全。本文针对开发者常见的宏污染、元数据冗余、API臃肿等问题,结合现代C++特性提出一套优化方案,并提供可直接复用的代码示例。一、问题分析:传统ORM接口的痛点1.宏污染严重示例代码问题:通过META_INJECTION等宏手动绑定元信息,导致代码侵入性强、可读性差。维</div>
                    </li>
                    <li><a href="/article/1896955742737461248.htm"
                           title="单源最短路径" target="_blank">单源最短路径</a>
                        <span class="text-muted">陵易居士</span>
<a class="tag" taget="_blank" href="/search/%E6%95%B0%E6%8D%AE%E7%BB%93%E6%9E%84%E4%B8%8E%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/%E5%9B%BE%E8%AE%BA/1.htm">图论</a>
                        <div>目录无负权单源最短路径迪杰斯特拉算法(dijkstra)朴素版迪杰斯特拉小根堆优化版本dijkstra有负权的图的单源最短路径SPFA总结无负权单源最短路径在处理图论相关问题时,经常会遇到求一点到其他点的最短距离是多少的问题,很多实际应用场景的题目也可以转化成求最短路的问题,这里我们先来了解没有负权的图的最短路问题.迪杰斯特拉算法(dijkstra)迪杰斯特拉算法是由dijkstra提出的,它的主</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>