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/1897057022612926464.htm"
                           title="MySQL备份与恢复原理及步骤" target="_blank">MySQL备份与恢复原理及步骤</a>
                        <span class="text-muted">AI天才研究院</span>
<a class="tag" taget="_blank" href="/search/Python%E5%AE%9E%E6%88%98/1.htm">Python实战</a><a class="tag" taget="_blank" href="/search/DeepSeek/1.htm">DeepSeek</a><a class="tag" taget="_blank" href="/search/R1/1.htm">R1</a><a class="tag" taget="_blank" href="/search/%26amp%3B/1.htm">&</a><a class="tag" taget="_blank" href="/search/%E5%A4%A7%E6%95%B0%E6%8D%AEAI%E4%BA%BA%E5%B7%A5%E6%99%BA%E8%83%BD%E5%A4%A7%E6%A8%A1%E5%9E%8B/1.htm">大数据AI人工智能大模型</a><a class="tag" taget="_blank" href="/search/Java%E5%AE%9E%E6%88%98/1.htm">Java实战</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><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/Java/1.htm">Java</a><a class="tag" taget="_blank" href="/search/Python/1.htm">Python</a><a class="tag" taget="_blank" href="/search/%E6%9E%B6%E6%9E%84%E8%AE%BE%E8%AE%A1/1.htm">架构设计</a>
                        <div>作者:禅与计算机程序设计艺术1.简介MySQL作为关系型数据库管理系统(RDBMS),其数据备份和恢复技术是其生命线。掌握MySQL的数据备份与恢复原理与方法可以有效地保障数据的安全、可靠性以及可用性。通过正确地执行备份策略,并合理地配置备份服务器,就能够实现备份数据在不同时间点恢复、复制或还原。本文将从以下几个方面进行介绍:什么是MySQL备份?为何需要MySQL备份?MySQL备份原理MySQ</div>
                    </li>
                    <li><a href="/article/1897055133397741568.htm"
                           title="蓝桥杯单片机竞赛学习计划(七)" target="_blank">蓝桥杯单片机竞赛学习计划(七)</a>
                        <span class="text-muted">一支兔子</span>
<a class="tag" taget="_blank" href="/search/%E8%93%9D%E6%A1%A5%E6%9D%AF/1.htm">蓝桥杯</a><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%AD%A6%E4%B9%A0/1.htm">学习</a>
                        <div>蓝桥杯单片机学习计划之AT24C02目录前言一、存储器介绍1.随机存储器(RAM)2.只读存储器(ROM)二、AT24C02介绍1.引脚介绍2.通信方式三、代码总结前言之前的章节我们把单片机外围最基础的一些外设如流水灯、数码管以及内部资源定时器和中断都学习完了,那么这一节开始我们学习比较重要的几个模块,今天先来学习存储模块AT24C02。一、存储器介绍存储器,通俗点讲就是能够存储数据的器件,我们都</div>
                    </li>
                    <li><a href="/article/1897050344509206528.htm"
                           title="Oracle 18c RAC(cdb多租户)+ADG备库部署以及维护" target="_blank">Oracle 18c RAC(cdb多租户)+ADG备库部署以及维护</a>
                        <span class="text-muted">iverycd</span>
<a class="tag" taget="_blank" href="/search/DataGuard/1.htm">DataGuard</a><a class="tag" taget="_blank" href="/search/18c/1.htm">18c</a><a class="tag" taget="_blank" href="/search/rac/1.htm">rac</a><a class="tag" taget="_blank" href="/search/dg/1.htm">dg</a>
                        <div>Oracle18cRAC+ADG备库部署以及维护一、环境部署1.1主机配置1.2实施步骤1.3部署FAQ二、DataGuard数据库应用日志模式2.1ActiveDataGuard模式2.2Real-TimeApply实时应用模式2.3备库停止日志应用三、维护使用3.1打开与关闭RAC+DG数据库3.2检查主备库的归档日志号3.3检查备库的归档日志同步情况以及应用指标参数3.4查看主备库的模式3.</div>
                    </li>
                    <li><a href="/article/1897046939787128832.htm"
                           title="【论文笔记】3DGS压缩相关工作2篇" target="_blank">【论文笔记】3DGS压缩相关工作2篇</a>
                        <span class="text-muted">AndrewHZ</span>
<a class="tag" taget="_blank" href="/search/%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0%E6%96%B0%E6%B5%AA%E6%BD%AE/1.htm">深度学习新浪潮</a><a class="tag" taget="_blank" href="/search/%E8%AE%BA%E6%96%87%E9%98%85%E8%AF%BB/1.htm">论文阅读</a><a class="tag" taget="_blank" href="/search/3DGS/1.htm">3DGS</a><a class="tag" taget="_blank" href="/search/%E8%AE%A1%E7%AE%97%E6%9C%BA%E5%9B%BE%E5%BD%A2%E5%AD%A6/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/%E4%B8%89%E7%BB%B4%E9%AB%98%E6%96%AF%E9%A3%9E%E6%BA%85/1.htm">三维高斯飞溅</a><a class="tag" taget="_blank" href="/search/%E5%8E%8B%E7%BC%A9%E6%96%B9%E6%B3%95/1.htm">压缩方法</a>
                        <div>1.背景介绍:NVS神经辐射场(NeRFs)引入了一种基于多层感知机(MLP)的新型隐式场景表示方法,它将体密度编码作为几何形状和方向辐射的代理量。渲染通过光线行进的方式来执行。这一解决方案为新视图合成(NVS)带来了前所未有的视觉质量,但代价是训练多层感知机的优化过程极为耗时,且渲染速度很慢。有几种方法加速了训练和渲染过程,通常是利用空间数据结构或者像哈希这样的编码方式,不过牺牲了视觉质量。近期</div>
                    </li>
                    <li><a href="/article/1897046310033354752.htm"
                           title="Sui 携手 RedStone 将 BTC 功能引入链上,进一步扩展 BTCfi 生态" target="_blank">Sui 携手 RedStone 将 BTC 功能引入链上,进一步扩展 BTCfi 生态</a>
                        <span class="text-muted">Sui_Network</span>
<a class="tag" taget="_blank" href="/search/Sui/1.htm">Sui</a><a class="tag" taget="_blank" href="/search/%E5%90%88%E4%BD%9C%E4%BC%99%E4%BC%B4/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/web3/1.htm">web3</a><a class="tag" taget="_blank" href="/search/%E6%B8%B8%E6%88%8F/1.htm">游戏</a><a class="tag" taget="_blank" href="/search/%E4%BA%BA%E5%B7%A5%E6%99%BA%E8%83%BD/1.htm">人工智能</a><a class="tag" taget="_blank" href="/search/%E6%95%B0%E6%8D%AE%E5%BA%93/1.htm">数据库</a>
                        <div>领先的跨链数据预言机RedStone现已在Sui上线。RedStone为超过140个DeFi协议提供价格数据,确保价格准确性,并加速BTC支持的DeFi发展,进一步加强SuiBTCfi生态。这一扩展将RedStone的预言机解决方案引入增长最快的Layer1生态之一。通过此次集成,RedStone将为Sui用户和开发者提供BTC及其他资产的实时、可靠价格数据,解锁BTC持有者的收益机会,同时确保S</div>
                    </li>
                    <li><a href="/article/1897042146045784064.htm"
                           title="如何把图片或者图片地址存到 MySQL 数据库中以及如何将这些图片数据通过 JSP 显示在网页中" target="_blank">如何把图片或者图片地址存到 MySQL 数据库中以及如何将这些图片数据通过 JSP 显示在网页中</a>
                        <span class="text-muted">m0_67265654</span>
<a class="tag" taget="_blank" href="/search/%E9%9D%A2%E8%AF%95/1.htm">面试</a><a class="tag" taget="_blank" href="/search/%E5%AD%A6%E4%B9%A0%E8%B7%AF%E7%BA%BF/1.htm">学习路线</a><a class="tag" taget="_blank" href="/search/%E9%98%BF%E9%87%8C%E5%B7%B4%E5%B7%B4/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/mysql/1.htm">mysql</a><a class="tag" taget="_blank" href="/search/java/1.htm">java</a>
                        <div>如何优雅地管理图片:从MySQL数据库存储到JSP展示的全流程解析在互联网时代,一张引人入胜的图片往往能为网站带来巨大的流量。而作为开发者的我们,如何高效地管理和展示这些图片资源则成为了一项重要的技术挑战。今天,我们就一起来探讨一下,如何通过MySQL数据库存储图片(或其地址),并在JSP页面上实现美观大方的展示。一、存储策略选择图片存储方式存储图片有两种常见的方法:直接存储图片文件和存储图片路径</div>
                    </li>
                    <li><a href="/article/1897041642125324288.htm"
                           title="Java RPC(远程过程调用)技术详解" target="_blank">Java RPC(远程过程调用)技术详解</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/rpc/1.htm">rpc</a><a class="tag" taget="_blank" href="/search/%E5%BC%80%E5%8F%91%E8%AF%AD%E8%A8%80/1.htm">开发语言</a>
                        <div>在当今分布式系统盛行的时代,服务间的通信变得至关重要。JavaRPC(RemoteProcedureCall,远程过程调用)作为一种高效、透明的远程通信手段,在微服务架构、分布式计算等领域扮演着重要角色。本文将深入介绍JavaRPC的基本概念、工作原理、实现方式以及实际应用中的注意事项。一、JavaRPC概述RPC允许一个程序直接调用另一个地址空间(通常是另一台机器上的程序)中的过程或函数,就像调</div>
                    </li>
                    <li><a href="/article/1897041263421616128.htm"
                           title="AI 代理 x Sui:开启 Web3 自动化新时代!" target="_blank">AI 代理 x Sui:开启 Web3 自动化新时代!</a>
                        <span class="text-muted">Sui_Network</span>
<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/web3/1.htm">web3</a><a class="tag" taget="_blank" href="/search/%E8%87%AA%E5%8A%A8%E5%8C%96/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/%E5%A4%A7%E6%95%B0%E6%8D%AE/1.htm">大数据</a>
                        <div>AI代理正在重塑Web3,它们通过更高的自动化、智能化和适应性,使去中心化应用(DApp)更高效。这些自主程序能够分析数据、与智能合约交互,并实时执行任务,从而提升资产管理效率、增强安全性,并提供更动态的用户体验和交互方式。随着Web3的不断发展,AI代理正成为链上流程优化的重要工具,并不断拓展Web3的可能性。从自动化DeFi策略、实时安全监测,到数据分析洞察,甚至是meme生成,AI代理的应用</div>
                    </li>
                    <li><a href="/article/1897040255639416832.htm"
                           title="工资和奖金(acwing)c/c++/java/python" target="_blank">工资和奖金(acwing)c/c++/java/python</a>
                        <span class="text-muted">xinghuitunan</span>
<a class="tag" taget="_blank" href="/search/c%2B%2B/1.htm">c++</a><a class="tag" taget="_blank" href="/search/c%E8%AF%AD%E8%A8%80/1.htm">c语言</a><a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/python/1.htm">python</a>
                        <div>请你编写一个程序,给定你一个销售人员的名字,底薪以及月销售额。请你计算他的月收入是多少。已知月收入等于底薪加15%15%的月销售额。所有数据保留两位小数。输入格式输入第一行包含一个由大写字母构成的长度不超过1010的字符串,表示销售人员的名字。第二行包含一个浮点数,表示该人员的底薪。第三行包含一个浮点数,表示该人员的月销售额。输出格式输出格式为TOTAL=R$X,XX为该人员月收入。数据范围0≤底</div>
                    </li>
                    <li><a href="/article/1897038995876016128.htm"
                           title="Virtual Scrolling 虚拟滚动优化方案" target="_blank">Virtual Scrolling 虚拟滚动优化方案</a>
                        <span class="text-muted">shaoin_2</span>
<a class="tag" taget="_blank" href="/search/%E5%89%8D%E7%AB%AF%E9%9B%B6%E7%A2%8E/1.htm">前端零碎</a><a class="tag" taget="_blank" href="/search/%E5%89%8D%E7%AB%AF/1.htm">前端</a><a class="tag" taget="_blank" href="/search/vue.js/1.htm">vue.js</a>
                        <div>虚拟滚动(VirtualScrolling)是一种优化前端渲染大量数据的技术,它通过按需渲染可见区域的内容,避免一次性创建所有DOM元素,从而解决性能问题。以下是其核心原理:1.核心思想物理世界:假设列表有10,000条数据,传统渲染会生成10,000个DOM节点。虚拟滚动:只渲染用户当前可见的20条数据(视窗区域),其余数据通过占位和位置偏移模拟完整列表。2.实现步骤(1)容器与占位容器高度:设</div>
                    </li>
                    <li><a href="/article/1897036594460815360.htm"
                           title="寻找最优解的算法-模拟退火算法(Simulated Annealing)" target="_blank">寻找最优解的算法-模拟退火算法(Simulated Annealing)</a>
                        <span class="text-muted">搞技术的妹子</span>
<a class="tag" taget="_blank" href="/search/%E7%AE%97%E6%B3%95/1.htm">算法</a><a class="tag" taget="_blank" href="/search/%E6%A8%A1%E6%8B%9F%E9%80%80%E7%81%AB%E7%AE%97%E6%B3%95/1.htm">模拟退火算法</a><a class="tag" taget="_blank" href="/search/%E4%BA%BA%E5%B7%A5%E6%99%BA%E8%83%BD/1.htm">人工智能</a>
                        <div>模拟退火算法(SimulatedAnnealing,简称SA)是一种基于物理退火过程的优化算法。它灵感来源于金属退火过程中的分子运动——在高温下,金属分子的自由度很高,随着温度的逐渐降低,分子排列逐渐有序,最终达到最低能量状态。退火算法通过模拟这一过程,解决复杂的优化问题。在现实生活中,我们经常会遇到寻找最优解的问题,无论是优化路线、调度任务还是调整模型参数。模拟退火算法(SimulatedAnn</div>
                    </li>
                    <li><a href="/article/1897036596042067968.htm"
                           title="【量子退火(Quantum Annealing, QA)在Machine Learning Classification中的应用】" target="_blank">【量子退火(Quantum Annealing, QA)在Machine Learning Classification中的应用】</a>
                        <span class="text-muted">搞技术的妹子</span>
<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/%E9%87%8F%E5%AD%90%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>随着量子计算技术的发展,**量子退火(QuantumAnnealing,QA)成为了优化问题中一种潜力巨大的方法。它不仅可以用于求解传统优化问题,还被逐渐应用于机器学习领域,特别是机器学习分类(MachineLearningClassification)**任务中。在这篇博客中,我们将探讨量子退火在机器学习分类中的应用,并通过一个实际的案例来展示如何使用量子退火优化分类模型。什么是量子退火(Qua</div>
                    </li>
                    <li><a href="/article/1897032179578368000.htm"
                           title="似然函数与极大似然估计" target="_blank">似然函数与极大似然估计</a>
                        <span class="text-muted">Shockang</span>
<a class="tag" taget="_blank" href="/search/%E6%9C%BA%E5%99%A8%E5%AD%A6%E4%B9%A0%E6%95%B0%E5%AD%A6%E9%80%9A%E5%85%B3%E6%8C%87%E5%8D%97/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/%E4%BA%BA%E5%B7%A5%E6%99%BA%E8%83%BD/1.htm">人工智能</a><a class="tag" taget="_blank" href="/search/%E6%95%B0%E5%AD%A6/1.htm">数学</a><a class="tag" taget="_blank" href="/search/%E6%A6%82%E7%8E%87%E8%AE%BA/1.htm">概率论</a>
                        <div>前言本文隶属于专栏《机器学习数学通关指南》,该专栏为笔者原创,引用请注明来源,不足和错误之处请在评论区帮忙指出,谢谢!本专栏目录结构和参考文献请见《机器学习数学通关指南》正文1.似然函数:直观理解与数学定义核心概念似然函数是机器学习中参数估计的基石,它从数据与模型之间的关系出发,提供了一种优化参数的数学框架。直观理解:假设你正在调整相机参数以拍摄最清晰的照片。似然函数就像是一个"清晰度指标",告诉</div>
                    </li>
                    <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/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>