小X通m3u8视频流AES加密分析

最近有空研究了下小X通的视频协议,下面记录下研究过程

首先我们要了解下m3u8是什么

m3u8基础

首先我们需要了解什么时HLS,所谓HLS(HTTP Live Streaming)是一个由苹果公司提出的基于 HTTP 的流媒体网络传输协议。而m3u8是HLS协议的一部分,但是在直播,视频网站等用处很广泛。

HLS协议规定,视频的封装格式是TS(Transport Stream),除了TS视频文件本身,还定义了用来控制播放的M3U8文件(文本文件)。HLS协议的工作原理是把整个视频流分割成一个个小的TS格式视频文件来传输,在开始一个流媒体会话时,客户端会先下载一个包含TS文件URL地址的M3U8文件(相当于一个播放列表),给客户端用于下载TS文件。这样可以让用户更方便的选择视频节点播放,给用户更好的体验,其次提供了加密方式,可以更好的保护视频不被窃取。

下面是m3u8的一个基本字段

#EXTM3U:M3U8文件头,必须放在第一行。
EXT-X-MEDIA-SEQUENCE :第一个TS分片的序列号,一般情况下是0,但是在直播场景下,这个序列号标识直播段的起始位置; #EXT-X-MEDIA-SEQUENCE:0。
#EXT-X-TARGETDURATION:每个分片TS的最大的时长; #EXT-X-TARGETDURATION:10 ,表示每个分片的最大时长是10秒。
#EXT-X-ALLOW-CACHE:是否允许cache,#EXT-X-ALLOW-CACHE:YES 、#EXT-X-ALLOW-CACHE:NO,默认情况下是YES。
#EXT-X-ENDLIST:M3U8文件结束符。
#EXTINF:extra info,分片TS的信息,如时长,带宽等;一般情况下是 #EXTINF:,[] 后面可以跟其他的信息,逗号之前是当前分片的TS时长。分片时长要小于 #EXT-X-TARGETDURATION 定义的值。
#EXT-X-VERSION:M3U8版本号。
#EXT-X-DISCONTINUITY:该标签表明其前一个切片与下一个切片之间存在中断。
#EXT-X-PLAYLIST-TYPE :表明流媒体类型。
#EXT-X-KEY:是否加密解析。例如:#EXT-X-KEY:METHOD=AES-128,URI="https://example.com/video.key?token=xxx" 加密算法是AES-128,密钥通过请求 https://example.com/video.key?token=xxx 来获取,密钥请求回来以后存储在本地,并用于解密后续下载的TS视频文件。</code></pre> 
   <h3 style="">请求流程</h3> 
   <ol start="1"> 
    <li style="margin-left:1.4em;list-style-type:decimal;text-indent:0;"><p>客户端发起对m3u8的请求,服务器在校验完成后会下载m3u8文件到本地。</p></li> 
   </ol> 
   <ol start="2"> 
    <li style="margin-left:1.4em;list-style-type:decimal;text-indent:0;"><p>客户端解析m3u8文件,在#EXT-X-KEY中找到密钥key地址,并访问拿到加密的密钥key。</p></li> 
   </ol> 
   <ol start="3"> 
    <li style="margin-left:1.4em;list-style-type:decimal;text-indent:0;"><p>客户端解析m3u8文件拿到分割文件的大小和对应ts文件地址,并访问拿到视频流。</p></li> 
   </ol> 
   <ol start="4"> 
    <li style="margin-left:1.4em;list-style-type:decimal;text-indent:0;"><p>客户端使用拿到的key地址和#EXT-X-KEY中对应的加密算法对视频流进行解密,播放视频。</p></li> 
   </ol> 
   <p style="text-indent:1.4em;">所以我们看到这里真正重要的就几个部分,首先一定要找到m3u8文件的链接地址,然后从中找到#EXTINF和#EXT-X-KEY两个字段</p> 
   <ul> 
    <li style="margin-left:2.8em;list-style-type:circle;text-indent:0;"><p>#EXTIN字段中我们可以拿到ts协议流的分段大小信息,和视频流下载链接信息,并且可以通过start和end参数得到视频的最终大小</p></li> 
   </ul> 
   <ul> 
    <li style="margin-left:2.8em;list-style-type:circle;text-indent:0;"><p>#EXT-X-KEY字段中我们可以拿到ts视频是否加密,如果加密可以拿到对应的加密方式和加密key地址。</p></li> 
   </ul> 
   <ul> 
    <li style="margin-left:2.8em;list-style-type:circle;text-indent:0;"><p>最后用得到的key和VI对ts文件使用openssl解密即可。</p></li> 
   </ul> 
   <h2 style="">实战分析</h2> 
   <p style="text-indent:1.4em;">了解了HLS的加密过程下面我们对小X通进行一个分析,首先我们通过抓包拿到了这个m3u8的链接地址,前面做了很多校验,但是不属于这个视频加解密分析范畴,这里不做分析。拿到以后我们可以对字段进行分析。如下图:</p> 
   <div class="kdocs-line-container" style="display:flex;"> 
    <div class="kdocs-img" style="flex-direction:column;max-width:100%;display:flex;width:1253px;justify-content:center;align-items:center;height:auto;"> 
     <div class="kdocs-img" style="padding-top:42.537907%;height:0;"> <a href="http://img.e-com-net.com/image/info8/a909161ea5124a3f9abac09f4de63247.jpg" target="_blank"><img src="http://img.e-com-net.com/image/info8/a909161ea5124a3f9abac09f4de63247.jpg" style="margin-left:;display:block;width:1253px;margin-top:-42.537907%;height:auto;;border:1px solid black;" width="650" height="276" alt="小X通m3u8视频流AES加密分析_第1张图片"></a> 
     </div> 
    </div> 
   </div> 
   <p style="">下面对m3u8进行分析,我们可以得到如下信息:</p> 
   <ul> 
    <li style="margin-left:1.4em;list-style-type:disc;text-indent:0;"><p>#EXTIN中我们可以发现文件的分割大小,然后到最后可以看到文件的最终大小为141809727</p></li> 
   </ul> 
   <pre class="kdocs-plaintext"><code class="language-plaintext">v.f421220_0.ts?start=0&end=603679&type=mpegts
v.f421220_0.ts?start=141595968&end=141809727&type=mpegts</code></pre> 
   <ul> 
    <li style="margin-left:1.4em;list-style-type:disc;text-indent:0;"><p>#EXT-X-KEY中我们可以发现文件的加密方式为AES-128的加密方式,对应得到下载key链接,并知道加密IV为0.</p></li> 
   </ul> 
   <p style="text-indent:1.4em;">首先访问key地址,发现报错,提示缺少uid。</p> 
   <div class="kdocs-line-container" style="display:flex;"> 
    <div class="kdocs-img" style="flex-direction:column;max-width:100%;display:flex;width:788px;justify-content:center;align-items:center;height:auto;"> 
     <div class="kdocs-img" style="padding-top:12.817259%;height:0;"> <a href="http://img.e-com-net.com/image/info8/61e060b5f6b54c458c5deae17050983f.png" target="_blank"><img src="http://img.e-com-net.com/image/info8/61e060b5f6b54c458c5deae17050983f.png" style="margin-left:;display:block;width:788px;margin-top:-12.817259%;height:auto;;border:1px solid black;" width="788" height="101" alt="小X通m3u8视频流AES加密分析_第2张图片"></a> 
     </div> 
    </div> 
   </div> 
   <p style="text-indent:1.4em;">可以看到这里需要校验对应的uid,js代码中也可以看到,那通过自有验证抓取uid。</p> 
   <div class="kdocs-line-container" style="display:flex;"> 
    <div class="kdocs-img" style="flex-direction:column;max-width:100%;display:flex;width:1318px;justify-content:center;align-items:center;height:auto;"> 
     <div class="kdocs-img" style="padding-top:27.996965%;height:0;"> <a href="http://img.e-com-net.com/image/info8/4263c5def9154d4cbbab622ae2c03827.jpg" target="_blank"><img src="http://img.e-com-net.com/image/info8/4263c5def9154d4cbbab622ae2c03827.jpg" style="margin-left:;display:block;width:1318px;margin-top:-27.996965%;height:auto;;border:1px solid black;" width="650" height="182" alt="小X通m3u8视频流AES加密分析_第3张图片"></a> 
     </div> 
    </div> 
   </div> 
   <p style="text-indent:1.4em;">通过得到的uid信息得到对应的key文件</p> 
   <div class="kdocs-line-container" style="display:flex;"> 
    <div class="kdocs-img" style="flex-direction:column;max-width:100%;display:flex;width:1231px;justify-content:center;align-items:center;height:auto;"> 
     <div class="kdocs-img" style="padding-top:46.872463%;height:0;"> <a href="http://img.e-com-net.com/image/info8/0af540f2f4c945fa8660fb1638d5522a.jpg" target="_blank"><img src="http://img.e-com-net.com/image/info8/0af540f2f4c945fa8660fb1638d5522a.jpg" style="margin-left:;display:block;width:1231px;margin-top:-46.872463%;height:auto;;border:1px solid black;" width="650" height="305" alt="小X通m3u8视频流AES加密分析_第4张图片"></a> 
     </div> 
    </div> 
   </div> 
   <p style=""></p> 
   <p style="">然后拼接拿到整个是视频流</p> 
   <pre class="kdocs-plaintext"><code class="language-plaintext">https://encrypt-k-vod.xet.tech/*****/****/drm/v.f421220_0.ts?start=0&end=141809727&type=mpegts&sign=*****&t=***&us=***</code></pre> 
   <p style="">使用openssl解密</p> 
   <pre class="kdocs-plaintext"><code class="language-plaintext">openssl aes-128-cbc -d -in 001.ts -out 001_dec.ts  -iv 00000000000000000000000000000000 -K ********************************</code></pre> 
   <div class="kdocs-line-container" style="display:flex;"> 
    <div class="kdocs-img" style="flex-direction:column;max-width:100%;display:flex;width:1209px;justify-content:center;align-items:center;height:auto;"> 
     <div class="kdocs-img" style="padding-top:12.158809%;height:0;"> <a href="http://img.e-com-net.com/image/info8/73cafc41ebb149ec96618dc1caf71a71.jpg" target="_blank"><img src="http://img.e-com-net.com/image/info8/73cafc41ebb149ec96618dc1caf71a71.jpg" style="margin-left:;display:block;width:1209px;margin-top:-12.158809%;height:auto;" width="650" height="79"></a> 
     </div> 
    </div> 
   </div> 
   <p style="">但是发现报错,解密失败。哈哈我猜也不会这么简单</p> 
   <h3 style="">报错分析</h3> 
   <p style="">既然报错了,那由可能是这个几个地方存在问题</p> 
   <ol start="1"> 
    <li style="margin-left:2.8em;list-style-type:lower-alpha;text-indent:0;"><p>选择的加密工具openssl工具解密出错</p></li> 
   </ol> 
   <ol start="2"> 
    <li style="margin-left:2.8em;list-style-type:lower-alpha;text-indent:0;"><p>加密所用的key或IV出错</p></li> 
   </ol> 
   <ol start="3"> 
    <li style="margin-left:2.8em;list-style-type:lower-alpha;text-indent:0;"><p>视频原始文件出错</p></li> 
   </ol> 
   <p style="">具体分析尝试三个点可以发现</p> 
   <ol start="1"> 
    <li style="margin-left:2.8em;list-style-type:lower-alpha;text-indent:0;"><p>我尝试了自己使用AES加密文件后使用openssl解密,发现没有问题,证明不是openssl的问题</p></li> 
   </ol> 
   <ol start="2"> 
    <li style="margin-left:2.8em;list-style-type:lower-alpha;text-indent:0;"><p>视频文件在页面可以播放,证明不是视频的问题</p></li> 
   </ol> 
   <p style="">那么问题就出在key或iv上了,继续分析。如果我是写系统的人,为了加密视频通常会选择如下方式:</p> 
   <ol start="1"> 
    <li style="margin-left:2.8em;list-style-type:lower-alpha;text-indent:0;"><p>对key的二次加密,再来解密视频</p></li> 
   </ol> 
   <ol start="2"> 
    <li style="margin-left:2.8em;list-style-type:lower-alpha;text-indent:0;"><p>实现一个自己的加密解密算法,来解密视频</p></li> 
   </ol> 
   <p style="text-indent:1.4em;">逻辑推导一下可以看到对key的二次加密最简单快速,且最终可以调用公共的解密库执行,如果自己实现难度高而且bug多,估计多数不会选择。</p> 
   <p style="text-indent:1.4em;">那么我们从二次解密出发,首先再js中找关键字encrypted关键字,找到如下关键点:</p> 
   <div class="kdocs-line-container" style="display:flex;"> 
    <div class="kdocs-img" style="flex-direction:column;max-width:100%;display:flex;width:1100px;justify-content:center;align-items:center;height:auto;"> 
     <div class="kdocs-img" style="padding-top:31.818182%;height:0;"> <a href="http://img.e-com-net.com/image/info8/10d603e9639e4045a431e449022a86ff.jpg" target="_blank"><img src="http://img.e-com-net.com/image/info8/10d603e9639e4045a431e449022a86ff.jpg" style="margin-left:;display:block;width:1100px;margin-top:-31.818182%;height:auto;;border:1px solid black;" width="650" height="207" alt="小X通m3u8视频流AES加密分析_第5张图片"></a> 
     </div> 
    </div> 
   </div> 
   <p style="text-indent:1.4em;">替换js并打印log尽然发现数组数据正好16位,可能是key文件</p> 
   <div class="kdocs-line-container" style="display:flex;"> 
    <div class="kdocs-img" style="flex-direction:column;max-width:100%;display:flex;width:939px;justify-content:center;align-items:center;height:auto;"> 
     <div class="kdocs-img" style="padding-top:51.4377%;height:0;"> <a href="http://img.e-com-net.com/image/info8/b7f146a87a6d4d388cd8c8d962bb4c88.jpg" target="_blank"><img src="http://img.e-com-net.com/image/info8/b7f146a87a6d4d388cd8c8d962bb4c88.jpg" style="margin-left:;display:block;width:939px;margin-top:-51.4377%;height:auto;;border:1px solid black;" width="650" height="334" alt="小X通m3u8视频流AES加密分析_第6张图片"></a> 
     </div> 
    </div> 
   </div> 
   <p style=""></p> 
   <p style="">但是抓到的是十进制数据,转换为十六进制</p> 
   <pre class="kdocs-plaintext"><code class="language-plaintext">printf '%x\n' 84 43 *******</code></pre> 
   <p style="">然后用得到的十六进制key进行解密操作</p> 
   <pre class="kdocs-plaintext"><code class="language-plaintext">openssl aes-128-cbc -d -in uu.ts -out uu_out.ts -K ********************* -iv 00000000000000000000000000000000</code></pre> 
   <p style="">发现并无报错,证明解密成功</p> 
   <div class="kdocs-line-container" style="display:flex;"> 
    <div class="kdocs-img" style="flex-direction:column;max-width:100%;display:flex;width:1191px;justify-content:center;align-items:center;height:auto;"> 
     <div class="kdocs-img" style="padding-top:7.97649%;height:0;"> <a href="http://img.e-com-net.com/image/info8/31584b68d5aa472a828e7a5d5d3e2776.jpg" target="_blank"><img src="http://img.e-com-net.com/image/info8/31584b68d5aa472a828e7a5d5d3e2776.jpg" style="margin-left:;display:block;width:1191px;margin-top:-7.97649%;height:auto;" width="650" height="52"></a> 
     </div> 
    </div> 
   </div> 
   <p style="">播放也没有问题,视频解密流程搞定。</p> 
   <div class="kdocs-line-container" style="display:flex;"> 
    <div class="kdocs-img" style="flex-direction:column;max-width:100%;display:flex;width:504px;justify-content:center;align-items:center;height:auto;"> 
     <div class="kdocs-img" style="padding-top:73.412704%;height:0;"> <a href="http://img.e-com-net.com/image/info8/9a2dec3d34a34fb7a1eba21dcbe7c580.jpg" target="_blank"><img src="http://img.e-com-net.com/image/info8/9a2dec3d34a34fb7a1eba21dcbe7c580.jpg" style="margin-left:;display:block;width:504px;margin-top:-73.412704%;height:auto;;border:1px solid black;" width="650" height="478" alt="小X通m3u8视频流AES加密分析_第7张图片"></a> 
     </div> 
    </div> 
   </div> 
   <p style="">为了避免不必要的麻烦,对key等关键部分做了处理,本文只做研究分析,不想带来不必要的麻烦。</p> 
   <h2 style="">小结</h2> 
   <p style="">最后来个小结,对整个流程分析下来还是很顺畅,难点也不多,真正难的算是对js的分析,js已经做了混淆,很多代码中找到对应的解密地址还是很麻烦,花了不少时间。</p> 
   <p style="">最后对视频加防下载的一些思考</p> 
   <ol start="1"> 
    <li style="margin-left:1.4em;list-style-type:decimal;text-indent:0;"><p>目前大部分视频网站都采用的是HLS来进行视频流的获取和播放,因为首先对应的资源很丰富,各个云平台厂商均有对应的接口,方便开发者快速的搭建,但是对应的加密方式还是由很多问题</p></li> 
   </ol> 
   <ol start="2"> 
    <li style="margin-left:1.4em;list-style-type:decimal;text-indent:0;"><p>首先是加密方式,有些小厂商也不会对视频进行加密处理,直接可以进行下载播放,这种破解很简单就不提了。</p></li> 
   </ol> 
   <ol start="3"> 
    <li style="margin-left:1.4em;list-style-type:decimal;text-indent:0;"><p>有些选择了对m3u8文件进行加密,但是个人感觉这个和对key二次加密是一样的,均可以在js中找到对应的解密方法和最终的key或m3u8文件,这个只是时间问题,毕竟js文件在客户端,服务器不可控。</p></li> 
   </ol> 
   <ol start="4"> 
    <li style="margin-left:1.4em;list-style-type:decimal;text-indent:0;"><p>即便解密对应的key很费时间,但是如果采用对浏览器hook可以解决所有的加密方法,毕竟最终还是要在网页进行播放,只要抓取最终的数据流并dump就可以拿到最终解密完成的视频。</p></li> 
   </ol> 
   <ol start="5"> 
    <li style="margin-left:1.4em;list-style-type:decimal;text-indent:0;"><p>个人感觉加水印等防止小白录屏是可以,但是对懂一点技术的其实整个破解只是时间和熟练问题,我测试有些监控是自己通过c实现了一个加密解密算法,对视频进行加密保存,解密读取流程,虽然很安全,但是对.dll进行逆向还是可以找到对应的key和加密算法,只是时间问题。</p></li> 
   </ol> 
   <ol start="6"> 
    <li style="margin-left:1.4em;list-style-type:decimal;text-indent:0;"><p>说了这么多感觉什么都不安全,都可以被破解,事实也确实是这样,但是我们可以经常更新加密算法和加密key,来增加破解者的时间成本,也是可行的,让攻击者自己放弃,哈哈差不多就这样。</p></li> 
   </ol> 
  </div> 
 </div> 
</div>
                            </div>
                        </div>
                    </div>
                    <!--PC和WAP自适应版-->
                    <div id="SOHUCS" sid="1707464335284056064"></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">你可能感兴趣的:(前端,html5)</h4>
        <div id="paradigm-article-related">
            <div class="recommend-post mb30">
                <ul class="widget-links">
                    <li><a href="/article/1892225886195871744.htm"
                           title="鸿蒙5.0实战案例:关于图像撕裂、掉帧等异常现象的原理以及优化方案" target="_blank">鸿蒙5.0实战案例:关于图像撕裂、掉帧等异常现象的原理以及优化方案</a>
                        <span class="text-muted">敢嗣先锋</span>
<a class="tag" taget="_blank" href="/search/%E9%B8%BF%E8%92%99%E5%BC%80%E5%8F%91/1.htm">鸿蒙开发</a><a class="tag" taget="_blank" href="/search/HarmonyOS/1.htm">HarmonyOS</a><a class="tag" taget="_blank" href="/search/%E7%A7%BB%E5%8A%A8%E5%BC%80%E5%8F%91/1.htm">移动开发</a><a class="tag" taget="_blank" href="/search/harmonyos/1.htm">harmonyos</a><a class="tag" taget="_blank" href="/search/%E9%B8%BF%E8%92%99%E5%BC%80%E5%8F%91/1.htm">鸿蒙开发</a><a class="tag" taget="_blank" href="/search/openharmony/1.htm">openharmony</a><a class="tag" taget="_blank" href="/search/%E7%A7%BB%E5%8A%A8%E5%BC%80%E5%8F%91/1.htm">移动开发</a><a class="tag" taget="_blank" href="/search/ArkUI/1.htm">ArkUI</a><a class="tag" taget="_blank" href="/search/%E6%80%A7%E8%83%BD%E4%BC%98%E5%8C%96/1.htm">性能优化</a>
                        <div>往期推文全新看点(文中附带全新鸿蒙5.0全栈学习笔录)✏️鸿蒙(HarmonyOS)北向开发知识点记录~✏️鸿蒙(OpenHarmony)南向开发保姆级知识点汇总~✏️鸿蒙应用开发与鸿蒙系统开发哪个更有前景?✏️嵌入式开发适不适合做鸿蒙南向开发?看完这篇你就了解了~✏️对于大前端开发来说,转鸿蒙开发究竟是福还是祸?✏️鸿蒙岗位需求突增!移动端、PC端、IoT到底该怎么选?✏️记录一场鸿蒙开发岗位面</div>
                    </li>
                    <li><a href="/article/1892219834280767488.htm"
                           title="【如何实现 JavaScript 的防抖和节流?】" target="_blank">【如何实现 JavaScript 的防抖和节流?】</a>
                        <span class="text-muted">程序员远仔</span>
<a class="tag" taget="_blank" href="/search/%E5%89%8D%E7%AB%AF%E9%9D%A2%E8%AF%95%E9%AB%98%E9%A2%91%E9%97%AE%E9%A2%98%E5%AE%9D%E5%85%B8/1.htm">前端面试高频问题宝典</a><a class="tag" taget="_blank" href="/search/javascript/1.htm">javascript</a><a class="tag" taget="_blank" href="/search/vue.js/1.htm">vue.js</a><a class="tag" taget="_blank" href="/search/%E5%89%8D%E7%AB%AF%E6%A1%86%E6%9E%B6/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/html5/1.htm">html5</a><a class="tag" taget="_blank" href="/search/%E5%BC%80%E5%8F%91%E8%AF%AD%E8%A8%80/1.htm">开发语言</a>
                        <div>如何实现JavaScript的防抖和节流?前言防抖(Debounce)和节流(Throttle)是JavaScript中优化高频事件处理的两种常用技术。它们可以有效减少事件处理函数的调用次数,提升性能并改善用户体验。本文将详细介绍防抖和节流的实现原理及其应用场景。关键词JavaScript、防抖、节流、高频事件、性能优化、事件处理、前端开发、前端面试、前端基础、前端进阶、前端工程化、前端开发最佳实</div>
                    </li>
                    <li><a href="/article/1892214793360699392.htm"
                           title="Web开发中的可专利性分析:透过一个案例学习" target="_blank">Web开发中的可专利性分析:透过一个案例学习</a>
                        <span class="text-muted">CodePatentMaster</span>
<a class="tag" taget="_blank" href="/search/%E5%89%8D%E7%AB%AF/1.htm">前端</a><a class="tag" taget="_blank" href="/search/%E5%AD%A6%E4%B9%A0/1.htm">学习</a>
                        <div>Web开发工程师在创新过程中经常面临是否能申请专利并获得专利权的问题。本文通过一个详细的Web开发领域案例来阐释可专利性的分析过程。案例分析假设您是一名Web开发工程师,您开发了一种名为“动态响应式前端框架”(DynamicResponsiveFrontendFramework,DRFF)的新型前端框架。与传统前端框架相比,DRFF通过引入一种基于AI的组件化设计方法和实时数据流处理机制,显著提高</div>
                    </li>
                    <li><a href="/article/1892209750993596416.htm"
                           title="前端实现防抖功能的详细解读" target="_blank">前端实现防抖功能的详细解读</a>
                        <span class="text-muted">黑码小帅</span>
<a class="tag" taget="_blank" href="/search/%E5%89%8D%E7%AB%AF%E7%9F%A5%E8%AF%86%E6%80%BB%E7%BB%93/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><a class="tag" taget="_blank" href="/search/vue/1.htm">vue</a><a class="tag" taget="_blank" href="/search/javascript/1.htm">javascript</a><a class="tag" taget="_blank" href="/search/ajax/1.htm">ajax</a><a class="tag" taget="_blank" href="/search/easyui/1.htm">easyui</a><a class="tag" taget="_blank" href="/search/bootstrap/1.htm">bootstrap</a>
                        <div>在前端开发中,防抖(Debounce)是一种优化技术,用于限制某个函数在短时间内被频繁调用的次数。它的核心思想是:在一定时间内,无论触发多少次事件,只执行最后一次操作。防抖通常用于处理用户输入、窗口调整、滚动事件等高频触发的场景,以减少不必要的计算或请求,提升性能。1.防抖的应用场景常见场景搜索框输入:当用户在搜索框中输入内容时,每次按键都会触发搜索请求。如果不做防抖处理,可能会导致大量不必要的请</div>
                    </li>
                    <li><a href="/article/1892206853664862208.htm"
                           title="前端 window.print() 打印图片" target="_blank">前端 window.print() 打印图片</a>
                        <span class="text-muted">BillKu</span>
<a class="tag" taget="_blank" href="/search/%E5%89%8D%E7%AB%AF/1.htm">前端</a>
                        <div>在使用document.write时,确保内容加载完成后再执行其他操作(如print),可以通过以下方法实现:1.使用window.onload事件window.onload事件会在页面所有资源(包括图片、脚本等)加载完成后触发。javascript复制window.onload=function(){document.write("页面已加载完成");window.print();//确保内容加</div>
                    </li>
                    <li><a href="/article/1892163473534676992.htm"
                           title="Svelte 5 框架加速实时应用开发, 或引领未来前端编译式框架大爆发?" target="_blank">Svelte 5 框架加速实时应用开发, 或引领未来前端编译式框架大爆发?</a>
                        <span class="text-muted">寒鸦xxx</span>
<a class="tag" taget="_blank" href="/search/%E5%89%8D%E7%AB%AF%E5%89%8D%E6%B2%BF%E6%8A%80%E6%9C%AF/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/%E5%89%8D%E7%AB%AF%E6%A1%86%E6%9E%B6/1.htm">前端框架</a>
                        <div>自从去年Svelte团队发布了Svelte5稳定版,同样也是该项目历史上最重要的版本,目前start已经上升到了80K+,也有越来越多的企业和项目投入了该生态.下面我们来看看它与众不同的几大点一、为何Svelte5能加速实时应用?响应式系统的革命细粒度更新:通过$state和$derived实现精准依赖追踪,仅更新受影响的UI部分(而非虚拟DOM全量比对)。性能对比:在实时数据流场景(如股票行情)</div>
                    </li>
                    <li><a href="/article/1892159186607861760.htm"
                           title="TypeScript 中的 type 和 interface:你真的了解它们的不同吗?" target="_blank">TypeScript 中的 type 和 interface:你真的了解它们的不同吗?</a>
                        <span class="text-muted">液态不合群</span>
<a class="tag" taget="_blank" href="/search/typescript/1.htm">typescript</a><a class="tag" taget="_blank" href="/search/javascript/1.htm">javascript</a><a class="tag" taget="_blank" href="/search/%E5%89%8D%E7%AB%AF/1.htm">前端</a>
                        <div>如果你有写过Vue3的项目,那么对TypeScript肯定不会陌生。不管是公司新项目技术选型还是个人学习开发新的前端项目,Vue3+TypeScript已经成为首选技术方案之一在TypeScript这个强大的静态类型系统中,type和interface是两个重要的关键字,用于定义和描述数据类型。然而,这两者之间的区别是什么,在实际开发过程中我们要怎么用呢?废话不说,直接进入正题,就让我们一起深入探</div>
                    </li>
                    <li><a href="/article/1892140785311215616.htm"
                           title="ollama-chat-ui-vue,一个可以用vue对接ollama的开源项目,可接入deepSeek" target="_blank">ollama-chat-ui-vue,一个可以用vue对接ollama的开源项目,可接入deepSeek</a>
                        <span class="text-muted">是你的小熊啊</span>
<a class="tag" taget="_blank" href="/search/ui/1.htm">ui</a><a class="tag" taget="_blank" href="/search/vue.js/1.htm">vue.js</a><a class="tag" taget="_blank" href="/search/%E5%89%8D%E7%AB%AF/1.htm">前端</a><a class="tag" taget="_blank" href="/search/ai/1.htm">ai</a>
                        <div>ollama-chat-ui-vue使用vue3+vite+elementUi搭建的前端chat,通过ollama可与模型对话,目前支持独立思考,切换模型(联网查询后续支持)github地址:ollama-chat-ui-vue制作不易github点点star,谢谢前置工作安装ollama,ollama官网地址安装完ollama后,打开cmd,下载模型(我选了个最小的模型,模型地址)ollamar</div>
                    </li>
                    <li><a href="/article/1892139021031763968.htm"
                           title="HTML5的新增标签有哪些?" target="_blank">HTML5的新增标签有哪些?</a>
                        <span class="text-muted">「已注销」</span>
<a class="tag" taget="_blank" href="/search/HTML5/1.htm">HTML5</a>
                        <div>2019-07-3009:46我们都知道,想要成为一名合格的前端开发人员,掌握好HTML5是一个重要的先决条件,相比较于HTML,HTML5中新增了许多功能标签,那么这么标签都有哪些呢?格式:定义文本的文本方向,使其脱离其周围文本的方向设置。定义有记号的文本。定义预定义范围内的度量。定义任何类型的任务的进度。定义若浏览器不支持ruby元素显示的内容。定义ruby注释的解释。定义ruby注释。定义日</div>
                    </li>
                    <li><a href="/article/1892138264207355904.htm"
                           title="1 html5-新标签" target="_blank">1 html5-新标签</a>
                        <span class="text-muted">xiaolongyu3</span>
<a class="tag" taget="_blank" href="/search/%E5%89%8D%E7%AB%AF%E6%96%B0%E5%AD%A6/1.htm">前端新学</a><a class="tag" taget="_blank" href="/search/html5/1.htm">html5</a><a class="tag" taget="_blank" href="/search/%E5%89%8D%E7%AB%AF/1.htm">前端</a><a class="tag" taget="_blank" href="/search/html/1.htm">html</a>
                        <div>年龄稍大一点的码农可能见证了html的发展,亲历了头声明的变化,但是现在起步就是html5,那么html有哪些不为大家常用的新东西呢,这一章我先来谈谈这个问题。1dialog标签——弹窗标签。弹窗可能前端一路走来,见过很多。甚至现在我们在用各种UI库的时候这个弹窗也是必须的一个功能。这个标签支持的api:show:展示弹窗框,采用决定定位,showModal:展示弹窗,并带有遮罩,采用了一个特殊的</div>
                    </li>
                    <li><a href="/article/1892136749694513152.htm"
                           title="HTMl5新增特性有哪些?" target="_blank">HTMl5新增特性有哪些?</a>
                        <span class="text-muted">番茄牛腩汤</span>
<a class="tag" taget="_blank" href="/search/%E5%A4%A7%E6%95%B0%E6%8D%AE/1.htm">大数据</a>
                        <div>(1)新增了语义化标签(2)新增了音频视频标签(3)新增了canvas和svg绘图(4)新增了地理定位(navigator.geolocation)(5)新增了拖拽API(drapable)(6)新增了多线程技术webworker(7)新增了即时通讯websocket</div>
                    </li>
                    <li><a href="/article/1892135487041236992.htm"
                           title="HTML5 新特性有哪些?" target="_blank">HTML5 新特性有哪些?</a>
                        <span class="text-muted">IT木昜</span>
<a class="tag" taget="_blank" href="/search/%E5%A4%A7%E7%99%BD%E8%AF%9D%E5%89%8D%E7%AB%AF%E9%9D%A2%E8%AF%95%E9%A2%98/1.htm">大白话前端面试题</a><a class="tag" taget="_blank" href="/search/html5/1.htm">html5</a><a class="tag" taget="_blank" href="/search/%E5%89%8D%E7%AB%AF/1.htm">前端</a><a class="tag" taget="_blank" href="/search/html/1.htm">html</a>
                        <div>HTML5新特性,你知道几个?语义化标签:HTML5引入了一系列语义化标签,比如代表网页的头部,就像是一本书的封面和目录部分,包含网站标志、导航栏等重要信息;用于导航链接,是网页的“交通指示牌”,方便用户快速找到不同页面;表示独立的文章内容,每一篇新闻报道、博客文章都可以放在这里;用来划分页面的不同区域,像一个商场里不同的楼层分区;代表网页底部,一般放版权信息、联系方式等。这些标签让网页结构更清晰</div>
                    </li>
                    <li><a href="/article/1892134225621086208.htm"
                           title="Spring WebSocket 快速示例" target="_blank">Spring WebSocket 快速示例</a>
                        <span class="text-muted">oscar999</span>
<a class="tag" taget="_blank" href="/search/Spring/1.htm">Spring</a><a class="tag" taget="_blank" href="/search/Boot%E5%AE%9E%E6%88%98%E5%BC%80%E5%8F%91%E5%A4%A7%E5%85%A8/1.htm">Boot实战开发大全</a><a class="tag" taget="_blank" href="/search/spring/1.htm">spring</a><a class="tag" taget="_blank" href="/search/websocket/1.htm">websocket</a><a class="tag" taget="_blank" href="/search/java/1.htm">java</a>
                        <div>WebSocket是什么?WebSocket是HTML5下一种新的协议(websocket协议本质上是一个基于TCP的协议),它实现了浏览器与服务器之间的全双工通信,能够更好地节省服务器资源和带宽,并达到实时通讯的目的。WebSocket是一个持久化的协议,一旦建立连接,双方可以持续进行数据传输,直到连接被关闭。Spring中如何实现WebSocketSpringWebSocket提供了一种在Sp</div>
                    </li>
                    <li><a href="/article/1892132588710064128.htm"
                           title="HTML5+CSS3【容器元素、 HTML5新增布局标签、视频和音频 、HTML5新增标签】(五)-全面详解(学习总结---从入门到深化)" target="_blank">HTML5+CSS3【容器元素、 HTML5新增布局标签、视频和音频 、HTML5新增标签】(五)-全面详解(学习总结---从入门到深化)</a>
                        <span class="text-muted">童小纯</span>
<a class="tag" taget="_blank" href="/search/%E5%89%8D%E7%AB%AF%E7%B3%BB%E5%88%97---%E4%BB%8E%E5%85%A5%E9%97%A8%E5%88%B0%E6%B7%B1%E5%8C%96/1.htm">前端系列---从入门到深化</a><a class="tag" taget="_blank" href="/search/css3/1.htm">css3</a><a class="tag" taget="_blank" href="/search/html5/1.htm">html5</a>
                        <div>作者简介:大家好,我是小童,Java开发工程师,CSDN博客博主,Java领域新星创作者系列专栏:前端、Java、Java中间件大全、微信小程序、微信支付、若依框架、Spring全家桶如果文章知识点有错误的地方,请指正!和大家一起学习,一起进步如果感觉博主的文章还不错的话,请三连支持一下博主哦博主正在努力完成2023计划中:以梦为马,扬帆起航,2023追梦人目录容器元素(div)学习效果反馈HTM</div>
                    </li>
                    <li><a href="/article/1892131196150804480.htm"
                           title="Bootstrap CSS 概览" target="_blank">Bootstrap CSS 概览</a>
                        <span class="text-muted">froginwe11</span>
<a class="tag" taget="_blank" href="/search/%E5%BC%80%E5%8F%91%E8%AF%AD%E8%A8%80/1.htm">开发语言</a>
                        <div>BootstrapCSS概览引言Bootstrap是一个流行的前端框架,它可以帮助开发者快速构建响应式、移动优先的网站和应用程序。Bootstrap使用CSS、HTML和JavaScript来构建界面,其中CSS部分提供了丰富的样式和组件,使得开发者可以轻松实现各种设计效果。本文将为您提供一个关于BootstrapCSS的概览,帮助您了解其核心功能和用法。BootstrapCSS简介Bootstr</div>
                    </li>
                    <li><a href="/article/1892131196566040576.htm"
                           title="html5新增的标签有哪些" target="_blank">html5新增的标签有哪些</a>
                        <span class="text-muted">北原_春希</span>
<a class="tag" taget="_blank" href="/search/html5/1.htm">html5</a><a class="tag" taget="_blank" href="/search/%E5%89%8D%E7%AB%AF/1.htm">前端</a><a class="tag" taget="_blank" href="/search/html/1.htm">html</a>
                        <div>HTML5新增的标签主要可以分为几类,以下是按照类别进行分点表示和归纳的HTML5新增标签:结构性标签::定义文档或节的头部。:定义导航链接。:定义文档中的独立节。:定义文档、页面、应用或网站中独立的内容区域。:定义页面的侧边栏内容。:定义文档或节的页脚。:定义文档的主体内容。多媒体标签::定义视频或电影。:定义音频内容。:为和元素定义媒体资源。:为和元素定义文本轨道。:定义嵌入的内容,比如插件。</div>
                    </li>
                    <li><a href="/article/1892131069923225600.htm"
                           title="jQuery AJAX 方法详解" target="_blank">jQuery AJAX 方法详解</a>
                        <span class="text-muted">froginwe11</span>
<a class="tag" taget="_blank" href="/search/%E5%BC%80%E5%8F%91%E8%AF%AD%E8%A8%80/1.htm">开发语言</a>
                        <div>jQueryAJAX方法详解引言随着互联网技术的不断发展,前端开发领域的技术也在不断更新迭代。jQuery作为一种广泛使用的前端JavaScript库,极大地简化了DOM操作和事件处理。在众多jQuery功能中,AJAX(AsynchronousJavaScriptandXML)方法尤为突出,它允许我们在不重新加载整个页面的情况下与服务器进行异步通信。本文将详细介绍jQueryAJAX方法的使用,</div>
                    </li>
                    <li><a href="/article/1892130690397433856.htm"
                           title="html5节点元素" target="_blank">html5节点元素</a>
                        <span class="text-muted">augenstern416</span>
<a class="tag" taget="_blank" href="/search/html5/1.htm">html5</a><a class="tag" taget="_blank" href="/search/%E5%89%8D%E7%AB%AF/1.htm">前端</a><a class="tag" taget="_blank" href="/search/html/1.htm">html</a>
                        <div>HTML5引入了许多新的节点元素,这些元素使得开发者能够更清晰地定义和结构化网页内容。以下是一些主要的HTML5节点元素及其使用场景:1.描述:用于标记文档中的区段或段落,如文档的章节、页眉、页脚等。使用场景:当需要将内容分段或分区时,可以使用元素。每个元素应该有其独立的标题,这个标题通常使用到元素来定义。2.描述:表示页面中的导航链接部分。使用场景:当需要将具有导航性质的链接归纳在一个区域时,可</div>
                    </li>
                    <li><a href="/article/1892121230220259328.htm"
                           title="观望=没有!" target="_blank">观望=没有!</a>
                        <span class="text-muted">郭顺发_</span>
<a class="tag" taget="_blank" href="/search/%E5%8D%9A%E5%AE%A2/1.htm">博客</a><a class="tag" taget="_blank" href="/search/%E7%BB%8F%E9%AA%8C%E5%88%86%E4%BA%AB/1.htm">经验分享</a>
                        <div>“兄弟,Java现在学还有前途吗?”“前端是不是饱和了?”——每天打开私信,这类问题能占大半。我的回复永远只有一句:“如果你非要等我说‘行’才敢行动,那答案已经不重要了。”#技术人总在纠结“能不能”一直在等权威认证有人私信问“学Java还能找到工作吗”,自己却从来没打开过招聘网站——实际上,2024年Java岗位仍占后端需求的百分之四五十。考虑技术风向新手在Vue/React/Svelte之间反复</div>
                    </li>
                    <li><a href="/article/1892106705853018112.htm"
                           title="Vue3 循环语句" target="_blank">Vue3 循环语句</a>
                        <span class="text-muted">wjs2024</span>
<a class="tag" taget="_blank" href="/search/%E5%BC%80%E5%8F%91%E8%AF%AD%E8%A8%80/1.htm">开发语言</a>
                        <div>Vue3循环语句引言在Web开发中,循环语句是处理数据集合的常用手段。Vue3作为当下流行的前端框架,提供了丰富的循环语句,以帮助我们更高效地处理数据。本文将详细介绍Vue3中的循环语句,包括其使用方法、优缺点以及在实际项目中的应用。一、Vue3中的循环语句Vue3提供了三种循环语句,分别是v-for、v-if和v-else-if。下面将逐一介绍。1.1v-forv-for是Vue3中最常用的循环</div>
                    </li>
                    <li><a href="/article/1892098764743700480.htm"
                           title="前端必知必会-Vue ‘beforeMount‘ 生命周期钩子" target="_blank">前端必知必会-Vue ‘beforeMount‘ 生命周期钩子</a>
                        <span class="text-muted">编程岁月</span>
<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><a class="tag" taget="_blank" href="/search/javascript/1.htm">javascript</a>
                        <div>文章目录'beforeMount'钩子总结‘beforeMount’钩子beforeMount生命周期钩子在组件挂载之前发生,也就是在组件添加到DOM之前。我们应该避免尝试从beforeMount生命周期钩子访问DOM元素,因为在组件挂载之前DOM元素是不可访问的。下面的示例显示我们目前无法访问组件中的DOM元素,CompOne.vue中的第11行不起作用,并在浏览器控制台中生成错误:示例Comp</div>
                    </li>
                    <li><a href="/article/1892045160422895616.htm"
                           title="第三章:前端技术栈与性能关联" target="_blank">第三章:前端技术栈与性能关联</a>
                        <span class="text-muted">Young soul2</span>
<a class="tag" taget="_blank" href="/search/%E5%89%8D%E7%AB%AF%E5%9F%BA%E7%A1%80/1.htm">前端基础</a><a class="tag" taget="_blank" href="/search/%E6%80%A7%E8%83%BD%E4%BC%98%E5%8C%96/1.htm">性能优化</a>
                        <div>前端开发技术栈主要由HTML、CSS和JavaScript构成,它们相互协作,共同决定了网页的呈现效果和性能表现。了解它们与性能的关联,能帮助开发者更有针对性地进行优化。3.1HTML与性能3.1.1语义化标签的重要性HTML语义化标签,如、、、、、等,不仅能让代码结构更清晰,便于维护和团队协作,还对性能优化有积极作用。语义化标签可以帮助浏览器更好地理解页面结构,从而更高效地进行渲染。例如,一个新</div>
                    </li>
                    <li><a href="/article/1892044908231979008.htm"
                           title="Vue.js 组件开发" target="_blank">Vue.js 组件开发</a>
                        <span class="text-muted">周盛欢</span>
<a class="tag" taget="_blank" href="/search/vue.js/1.htm">vue.js</a>
                        <div>嘿,小伙伴们!今天咱们来聊聊Vue.js组件开发。如果你是零基础,别怕,跟着我一步一步来,保证你能轻松上手。Vue.js是一个很厉害的前端框架,它能帮我们快速开发出酷炫的网页应用。而组件开发,是Vue.js的核心技能之一,学会了它,你就能像搭积木一样,拼凑出复杂的页面啦!第一步:了解什么是Vue.js组件在Vue.js里,组件就像是一个个小零件。你可以把它们想象成乐高积木,每个积木都有自己的功能和</div>
                    </li>
                    <li><a href="/article/1892025628476108800.htm"
                           title="【fastapi】WEB框架内实现SSE服务,后端主动推送消息到前端" target="_blank">【fastapi】WEB框架内实现SSE服务,后端主动推送消息到前端</a>
                        <span class="text-muted">Biggee Lucloner</span>
<a class="tag" taget="_blank" href="/search/fastapi/1.htm">fastapi</a><a class="tag" taget="_blank" href="/search/%E5%89%8D%E7%AB%AF/1.htm">前端</a>
                        <div>sse技术简介SSE(Server-SentEvents)是一种允许服务器向客户端浏览器推送信息的技术。它是HTML5的一部分,专门用于建立一个单向的从服务器到客户端的通信连接。SSE的使用场景非常广泛,包括实时消息推送、实时通知更新等。严格地说,HTTP无法做到服务器主动推送信息。但是,有一种变通方法,就是服务器向客户端声明,接下来要发送的是流信息(streaming)。也就是说,发送的不是一次</div>
                    </li>
                    <li><a href="/article/1892019823433543680.htm"
                           title="2025年前端工程师职业发展的系统性应聘规划" target="_blank">2025年前端工程师职业发展的系统性应聘规划</a>
                        <span class="text-muted">IT木昜</span>
<a class="tag" taget="_blank" href="/search/%E5%89%8D%E7%AB%AF/1.htm">前端</a>
                        <div>2025年前端工程师职业发展的系统性应聘规划,结合技术趋势、企业需求和竞争力提升策略,分为技术栈学习、项目实战、求职策略三部分:一、2025年前端技术趋势与核心技能1.必学技术栈(基础+进阶)层级技术方向具体技能基础核心语言-HTML6新特性(预测)、CSS容器查询、TypeScript5.0+主流框架React22+(ServerComponents)、Vue4.0(VaporMode)、Sve</div>
                    </li>
                    <li><a href="/article/1892007338563399680.htm"
                           title="高级 Python Web 开发:利用 FastAPI 构建高效的服务端事件(SSE)实时数据推送" target="_blank">高级 Python Web 开发:利用 FastAPI 构建高效的服务端事件(SSE)实时数据推送</a>
                        <span class="text-muted">Switch616</span>
<a class="tag" taget="_blank" href="/search/Python/1.htm">Python</a><a class="tag" taget="_blank" href="/search/Web/1.htm">Web</a><a class="tag" taget="_blank" href="/search/javascript/1.htm">javascript</a><a class="tag" taget="_blank" href="/search/%E8%B4%9F%E8%BD%BD%E5%9D%87%E8%A1%A1/1.htm">负载均衡</a><a class="tag" taget="_blank" href="/search/python/1.htm">python</a><a class="tag" taget="_blank" href="/search/fastapi/1.htm">fastapi</a><a class="tag" taget="_blank" href="/search/%E5%89%8D%E7%AB%AF/1.htm">前端</a><a class="tag" taget="_blank" href="/search/%E5%BC%80%E5%8F%91%E8%AF%AD%E8%A8%80/1.htm">开发语言</a><a class="tag" taget="_blank" href="/search/%E8%BF%90%E7%BB%B4/1.htm">运维</a>
                        <div>高级PythonWeb开发:利用FastAPI构建高效的服务端事件(SSE)实时数据推送目录服务端事件(SSE)概述与原理FastAPI实现SSE数据推送实时更新前端界面SSE的性能优化与并发控制SSE的安全性与认证机制1.服务端事件(SSE)概述与原理服务端事件(Server-SentEvents,简称SSE)是一种基于HTTP协议的技术,允许服务器通过单向通道向客户端推送实时更新。与WebSo</div>
                    </li>
                    <li><a href="/article/1891990153770102784.htm"
                           title="《DNK210使用指南 -CanMV版 V1.0》第四十七章 MNIST实验" target="_blank">《DNK210使用指南 -CanMV版 V1.0》第四十七章 MNIST实验</a>
                        <span class="text-muted"></span>
<a class="tag" taget="_blank" href="/search/%E5%B5%8C%E5%85%A5%E5%BC%8F%E7%BC%96%E7%A8%8B%E5%BC%80%E6%BA%90%E4%BA%A7%E5%93%81%E7%A8%8B%E5%BA%8F%E5%91%98/1.htm">嵌入式编程开源产品程序员</a>
                        <div>第四十七章MNIST实验1)实验平台:正点原子DNK210开发板2)章节摘自【正点原子】DNK210使用指南-CanMV版V1.03)购买链接:https://detail.tmall.com/item.htm?&id=7828013987504)全套实验源码+手册+视频下载地址:http://www.openedv.com/docs/boards/k210/ATK-DNK210.html5)正点</div>
                    </li>
                    <li><a href="/article/1891979733613211648.htm"
                           title="深度求索-DeepSeek-R1本地部署指南" target="_blank">深度求索-DeepSeek-R1本地部署指南</a>
                        <span class="text-muted">0小和尚化缘12</span>
<a class="tag" taget="_blank" href="/search/%E4%B8%AA%E4%BA%BA%E5%BC%80%E5%8F%91/1.htm">个人开发</a>
                        <div>1、参考:部署指南2、参考:deepseek本地部署只需三步DeepSeek本地部署只需三步:1、安装运行环境:安装Ollama:Ollama官网:官网2、下载模型:参数越大,需要物里硬件越多3、安装部署前端交互程序:都是现成的开源架构</div>
                    </li>
                    <li><a href="/article/1891959043426152448.htm"
                           title="请解释设备像素、CSS 像素、设备独立像素、DPR、PPI 之间的区别 ?" target="_blank">请解释设备像素、CSS 像素、设备独立像素、DPR、PPI 之间的区别 ?</a>
                        <span class="text-muted">程序员黄同学</span>
<a class="tag" taget="_blank" href="/search/%E5%89%8D%E7%AB%AF%E5%BC%80%E5%8F%91/1.htm">前端开发</a><a class="tag" taget="_blank" href="/search/Java%E9%9D%A2%E8%AF%95%E9%A2%98/1.htm">Java面试题</a><a class="tag" taget="_blank" href="/search/JavaScript/1.htm">JavaScript</a><a class="tag" taget="_blank" href="/search/javascript/1.htm">javascript</a><a class="tag" taget="_blank" href="/search/%E5%BC%80%E5%8F%91%E8%AF%AD%E8%A8%80/1.htm">开发语言</a>
                        <div>一、核心概念解释1.设备像素(PhysicalPixel)定义:屏幕物理发光点的最小单位,硬件决定不可变。例如iPhone12的屏幕分辨率2532×1170表示横向2532个物理像素点。特点:不同设备物理像素密度不同,高密度屏幕(如Retina)单位面积像素更多。2.CSS像素(CSSPixel)定义:前端开发中使用的逻辑像素单位,如width:300px。浏览器根据DPR自动换算为物理像素。特点</div>
                    </li>
                    <li><a href="/article/1891942406304100352.htm"
                           title="防重复提交思路" target="_blank">防重复提交思路</a>
                        <span class="text-muted">harmful_sheep</span>
<a class="tag" taget="_blank" href="/search/springboot/1.htm">springboot</a><a class="tag" taget="_blank" href="/search/java/1.htm">java</a>
                        <div>本文将从以下几个方面展开:(1)重复提交产生的原因(2)什么是幂等性(3)针对重复提交,前后端的解决方案(4)如果实现一个防重复提交工具产生原因由于重复点击或者网络重发eg:点击提交按钮两次;点击刷新按钮;使用浏览器后退按钮重复之前的操作,导致重复提交表单;使用浏览器历史记录重复提交表单;浏览器重复的HTTP请求;nginx重发等情况;分布式RPC的try重发等;主要有2个部分:(1)前端用户操作</div>
                    </li>
                                <li><a href="/article/115.htm"
                                       title="C/C++Win32编程基础详解视频下载" target="_blank">C/C++Win32编程基础详解视频下载</a>
                                    <span class="text-muted">择善Zach</span>
<a class="tag" taget="_blank" href="/search/%E7%BC%96%E7%A8%8B/1.htm">编程</a><a class="tag" taget="_blank" href="/search/C%2B%2B/1.htm">C++</a><a class="tag" taget="_blank" href="/search/Win32/1.htm">Win32</a>
                                    <div>课题视频:C/C++Win32编程基础详解 
视频知识:win32窗口的创建 
                  windows事件机制 
主讲:择善Uncle老师 
学习交流群:386620625 
验证码:625 
 
--</div>
                                </li>
                                <li><a href="/article/242.htm"
                                       title="Guava Cache使用笔记" target="_blank">Guava Cache使用笔记</a>
                                    <span class="text-muted">bylijinnan</span>
<a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/guava/1.htm">guava</a><a class="tag" taget="_blank" href="/search/cache/1.htm">cache</a>
                                    <div>1.Guava Cache的get/getIfPresent方法当参数为null时会抛空指针异常 
 
我刚开始使用时还以为Guava Cache跟HashMap一样,get(null)返回null。 
实际上Guava整体设计思想就是拒绝null的,很多地方都会执行com.google.common.base.Preconditions.checkNotNull的检查。 
 
 
2.Guava</div>
                                </li>
                                <li><a href="/article/369.htm"
                                       title="解决ora-01652无法通过128(在temp表空间中)" target="_blank">解决ora-01652无法通过128(在temp表空间中)</a>
                                    <span class="text-muted">0624chenhong</span>
<a class="tag" taget="_blank" href="/search/oracle/1.htm">oracle</a>
                                    <div>解决ora-01652无法通过128(在temp表空间中)扩展temp段的过程 
 
一个sql语句后,大约花了10分钟,好不容易有一个结果,但是报了一个ora-01652错误,查阅了oracle的错误代码说明:意思是指temp表空间无法自动扩展temp段。这种问题一般有两种原因:一是临时表空间空间太小,二是不能自动扩展。 
分析过程: 
   既然是temp表空间有问题,那当</div>
                                </li>
                                <li><a href="/article/496.htm"
                                       title="Struct在jsp标签" target="_blank">Struct在jsp标签</a>
                                    <span class="text-muted">不懂事的小屁孩</span>
<a class="tag" taget="_blank" href="/search/struct/1.htm">struct</a>
                                    <div>非UI标签介绍: 
控制类标签: 
1:程序流程控制标签   if   elseif    else 
<s:if test="isUsed"> 
 <span class="label label-success">True</span> 
</</div>
                                </li>
                                <li><a href="/article/623.htm"
                                       title="按对象属性排序" target="_blank">按对象属性排序</a>
                                    <span class="text-muted">换个号韩国红果果</span>
<a class="tag" taget="_blank" href="/search/JavaScript/1.htm">JavaScript</a><a class="tag" taget="_blank" href="/search/%E5%AF%B9%E8%B1%A1%E6%8E%92%E5%BA%8F/1.htm">对象排序</a>
                                    <div>利用JavaScript进行对象排序,根据用户的年龄排序展示 
 
<script>
var bob={
name;bob,
age:30
}
var peter={
name;peter,
age:30
}
var amy={
name;amy,
age:24
}
var mike={
name;mike,
age:29
}
var john={
</div>
                                </li>
                                <li><a href="/article/750.htm"
                                       title="大数据分析让个性化的客户体验不再遥远" target="_blank">大数据分析让个性化的客户体验不再遥远</a>
                                    <span class="text-muted">蓝儿唯美</span>
<a class="tag" taget="_blank" href="/search/%E6%95%B0%E6%8D%AE%E5%88%86%E6%9E%90/1.htm">数据分析</a>
                                    <div>顾客通过多种渠道制造大量数据,企业则热衷于利用这些信息来实现更为个性化的体验。 
分析公司Gartner表示,高级分析会成为客户服务的关键,但是大数据分析的采用目前仅局限于不到一成的企业。 挑战在于企业还在努力适应结构化数据,疲于根据自身的客户关系管理(CRM)系统部署有效的分析框架,以及集成不同的内外部信息源。 
然而,面对顾客通过数字技术参与而产生的快速变化的信息,企业需要及时作出反应。要想实</div>
                                </li>
                                <li><a href="/article/877.htm"
                                       title="java笔记4" target="_blank">java笔记4</a>
                                    <span class="text-muted">a-john</span>
<a class="tag" taget="_blank" href="/search/java/1.htm">java</a>
                                    <div>操作符 
1,使用java操作符 
      操作符接受一个或多个参数,并生成一个新值。参数的形式与普通的方法调用不用,但是效果是相同的。加号和一元的正号(+)、减号和一元的负号(-)、乘号(*)、除号(/)以及赋值号(=)的用法与其他编程语言类似。 
      操作符作用于操作数,生成一个新值。另外,有些操作符可能会改变操作数自身的</div>
                                </li>
                                <li><a href="/article/1004.htm"
                                       title="从裸机编程到嵌入式Linux编程思想的转变------分而治之:驱动和应用程序" target="_blank">从裸机编程到嵌入式Linux编程思想的转变------分而治之:驱动和应用程序</a>
                                    <span class="text-muted">aijuans</span>
<a class="tag" taget="_blank" href="/search/%E5%B5%8C%E5%85%A5%E5%BC%8F%E5%AD%A6%E4%B9%A0/1.htm">嵌入式学习</a>
                                    <div>    笔者学习嵌入式Linux也有一段时间了,很奇怪的是很多书讲驱动编程方面的知识,也有很多书将ARM9方面的知识,但是从以前51形式的(对寄存器直接操作,初始化芯片的功能模块)编程方法,和思维模式,变换为基于Linux操作系统编程,讲这个思想转变的书几乎没有,让初学者走了很多弯路,撞了很多难墙。 
    笔者因此写上自己的学习心得,希望能给和我一样转变</div>
                                </li>
                                <li><a href="/article/1131.htm"
                                       title="在springmvc中解决FastJson循环引用的问题" target="_blank">在springmvc中解决FastJson循环引用的问题</a>
                                    <span class="text-muted">asialee</span>
<a class="tag" taget="_blank" href="/search/%E5%BE%AA%E7%8E%AF%E5%BC%95%E7%94%A8/1.htm">循环引用</a><a class="tag" taget="_blank" href="/search/fastjson/1.htm">fastjson</a>
                                    <div>          我们先来看一个例子: 
          
package com.elong.bms;

import java.io.OutputStream;
import java.util.HashMap;
import java.util.Map;

import co</div>
                                </li>
                                <li><a href="/article/1258.htm"
                                       title="ArrayAdapter和SimpleAdapter技术总结" target="_blank">ArrayAdapter和SimpleAdapter技术总结</a>
                                    <span class="text-muted">百合不是茶</span>
<a class="tag" taget="_blank" href="/search/android/1.htm">android</a><a class="tag" taget="_blank" href="/search/SimpleAdapter/1.htm">SimpleAdapter</a><a class="tag" taget="_blank" href="/search/ArrayAdapter/1.htm">ArrayAdapter</a><a class="tag" taget="_blank" href="/search/%E9%AB%98%E7%BA%A7%E7%BB%84%E4%BB%B6%E5%9F%BA%E7%A1%80/1.htm">高级组件基础</a>
                                    <div>ArrayAdapter比较简单,但它只能用于显示文字。而SimpleAdapter则有很强的扩展性,可以自定义出各种效果 
  
ArrayAdapter;的数据可以是数组或者是队列 
  
     // 获得下拉框对象 
AutoCompleteTextView textview = (AutoCompleteTextView) this
</div>
                                </li>
                                <li><a href="/article/1385.htm"
                                       title="九封信" target="_blank">九封信</a>
                                    <span class="text-muted">bijian1013</span>
<a class="tag" taget="_blank" href="/search/%E4%BA%BA%E7%94%9F/1.htm">人生</a><a class="tag" taget="_blank" href="/search/%E5%8A%B1%E5%BF%97/1.htm">励志</a>
                                    <div>        有时候,莫名的心情不好,不想和任何人说话,只想一个人静静的发呆。有时候,想一个人躲起来脆弱,不愿别人看到自己的伤口。有时候,走过熟悉的街角,看到熟悉的背影,突然想起一个人的脸。有时候,发现自己一夜之间就长大了。         2014,写给人</div>
                                </li>
                                <li><a href="/article/1512.htm"
                                       title="Linux下安装MySQL Web 管理工具phpMyAdmin" target="_blank">Linux下安装MySQL Web 管理工具phpMyAdmin</a>
                                    <span class="text-muted">sunjing</span>
<a class="tag" taget="_blank" href="/search/PHP/1.htm">PHP</a><a class="tag" taget="_blank" href="/search/Install/1.htm">Install</a><a class="tag" taget="_blank" href="/search/phpMyAdmin/1.htm">phpMyAdmin</a>
                                    <div>PHP http://php.net/ 
phpMyAdmin http://www.phpmyadmin.net 
Error compiling PHP on CentOS x64 
  
一、安装Apache 
请参阅http://billben.iteye.com/admin/blogs/1985244 
  
二、安装依赖包 
sudo yum install gd </div>
                                </li>
                                <li><a href="/article/1639.htm"
                                       title="分布式系统理论" target="_blank">分布式系统理论</a>
                                    <span class="text-muted">bit1129</span>
<a class="tag" taget="_blank" href="/search/%E5%88%86%E5%B8%83%E5%BC%8F/1.htm">分布式</a>
                                    <div>FLP 
One famous theory in distributed computing, known as FLP after the authors Fischer, Lynch, and Patterson, proved that in a distributed system with asynchronous communication and process crashes, </div>
                                </li>
                                <li><a href="/article/1766.htm"
                                       title="ssh2整合(spring+struts2+hibernate)-附源码" target="_blank">ssh2整合(spring+struts2+hibernate)-附源码</a>
                                    <span class="text-muted">白糖_</span>
<a class="tag" taget="_blank" href="/search/eclipse/1.htm">eclipse</a><a class="tag" taget="_blank" href="/search/spring/1.htm">spring</a><a class="tag" taget="_blank" href="/search/Hibernate/1.htm">Hibernate</a><a class="tag" taget="_blank" href="/search/mysql/1.htm">mysql</a><a class="tag" taget="_blank" href="/search/%E9%A1%B9%E7%9B%AE%E7%AE%A1%E7%90%86/1.htm">项目管理</a>
                                    <div>最近抽空又整理了一套ssh2框架,主要使用的技术如下: 
spring做容器,管理了三层(dao,service,actioin)的对象 
struts2实现与页面交互(MVC),自己做了一个异常拦截器,能拦截Action层抛出的异常 
hibernate与数据库交互 
BoneCp数据库连接池,据说比其它数据库连接池快20倍,仅仅是据说 
MySql数据库 
  
项目用eclipse</div>
                                </li>
                                <li><a href="/article/1893.htm"
                                       title="treetable bug记录" target="_blank">treetable bug记录</a>
                                    <span class="text-muted">braveCS</span>
<a class="tag" taget="_blank" href="/search/table/1.htm">table</a>
                                    <div>// 插入子节点删除再插入时不能正常显示。修改:
//不知改后有没有错,先做个备忘
 Tree.prototype.removeNode = function(node) {
      // Recursively remove all descendants of +node+
      this.unloadBranch(node);

      // Remove</div>
                                </li>
                                <li><a href="/article/2020.htm"
                                       title="编程之美-电话号码对应英语单词" target="_blank">编程之美-电话号码对应英语单词</a>
                                    <span class="text-muted">bylijinnan</span>
<a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/%E7%AE%97%E6%B3%95/1.htm">算法</a><a class="tag" taget="_blank" href="/search/%E7%BC%96%E7%A8%8B%E4%B9%8B%E7%BE%8E/1.htm">编程之美</a>
                                    <div>

import java.util.Arrays;

public class NumberToWord {

	/**
	 * 编程之美 电话号码对应英语单词
	 * 题目:
     *  手机上的拨号盘,每个数字都对应一些字母,比如2对应ABC,3对应DEF.........,8对应TUV,9对应WXYZ,
     *  要求对一段数字,输出其代表的所有可能的字母组合</div>
                                </li>
                                <li><a href="/article/2147.htm"
                                       title="jquery ajax读书笔记" target="_blank">jquery ajax读书笔记</a>
                                    <span class="text-muted">chengxuyuancsdn</span>
<a class="tag" taget="_blank" href="/search/jQuery+ajax/1.htm">jQuery ajax</a>
                                    <div>1、jsp页面 
 
<%@ page language="java" import="java.util.*" pageEncoding="GBK"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()</div>
                                </li>
                                <li><a href="/article/2274.htm"
                                       title="JWFD工作流拓扑结构解析伪码描述算法" target="_blank">JWFD工作流拓扑结构解析伪码描述算法</a>
                                    <span class="text-muted">comsci</span>
<a class="tag" taget="_blank" href="/search/%E6%95%B0%E6%8D%AE%E7%BB%93%E6%9E%84/1.htm">数据结构</a><a class="tag" taget="_blank" href="/search/%E7%AE%97%E6%B3%95/1.htm">算法</a><a class="tag" taget="_blank" href="/search/%E5%B7%A5%E4%BD%9C/1.htm">工作</a><a class="tag" taget="_blank" href="/search/%E6%B4%BB%E5%8A%A8/1.htm">活动</a><a class="tag" taget="_blank" href="/search/J%23/1.htm">J#</a>
                                    <div>  对工作流拓扑结构解析感兴趣的朋友可以下载附件,或者下载JWFD的全部代码进行分析 
 
 
  /*  流程图拓扑结构解析伪码描述算法 
 
        public java.util.ArrayList DFS(String graphid, String stepid, int j) </div>
                                </li>
                                <li><a href="/article/2401.htm"
                                       title="oracle I/O 从属进程" target="_blank">oracle I/O 从属进程</a>
                                    <span class="text-muted">daizj</span>
<a class="tag" taget="_blank" href="/search/oracle/1.htm">oracle</a>
                                    <div>I/O 从属进程 
 
  I/O从属进程用于为不支持异步I/O的系统或设备模拟异步I/O.例如,磁带设备(相当慢)就不支持异步I/O.通过使用I/O 从属进程,可以让磁带机模仿通常只为磁盘驱动器提供的功能。就好像支持真正的异步I/O 一样,写设备的进程(调用者)会收集大量数据,并交由写入器写出。数据成功地写出时,写入器(此时写入器是I/O 从属进程,而不是操作系统)会通知原来的调用者,调用者则会</div>
                                </li>
                                <li><a href="/article/2528.htm"
                                       title="高级排序:希尔排序" target="_blank">高级排序:希尔排序</a>
                                    <span class="text-muted">dieslrae</span>
<a class="tag" taget="_blank" href="/search/%E5%B8%8C%E5%B0%94%E6%8E%92%E5%BA%8F/1.htm">希尔排序</a>
                                    <div>
    public void shellSort(int[] array){
        int limit = 1;
        int temp;
        int index;
        
        while(limit <= array.length/3){
            limit = limit * 3 + 1;
    </div>
                                </li>
                                <li><a href="/article/2655.htm"
                                       title="初二下学期难记忆单词" target="_blank">初二下学期难记忆单词</a>
                                    <span class="text-muted">dcj3sjt126com</span>
<a class="tag" taget="_blank" href="/search/english/1.htm">english</a><a class="tag" taget="_blank" href="/search/word/1.htm">word</a>
                                    <div>kitchen 厨房 
cupboard 厨柜 
salt 盐 
sugar 糖 
oil 油 
fork 叉;餐叉 
spoon 匙;调羹 
chopsticks 筷子 
cabbage 卷心菜;洋白菜 
soup 汤 
Italian 意大利的 
  
Indian 印度的 
workplace  工作场所 
even 甚至;更 
Italy 意大利 
laugh 笑 
m</div>
                                </li>
                                <li><a href="/article/2782.htm"
                                       title="Go语言使用MySQL数据库进行增删改查" target="_blank">Go语言使用MySQL数据库进行增删改查</a>
                                    <span class="text-muted">dcj3sjt126com</span>
<a class="tag" taget="_blank" href="/search/mysql/1.htm">mysql</a>
                                    <div>目前Internet上流行的网站构架方式是LAMP,其中的M即MySQL, 作为数据库,MySQL以免费、开源、使用方便为优势成为了很多Web开发的后端数据库存储引擎。MySQL驱动Go中支持MySQL的驱动目前比较多,有如下几种,有些是支持database/sql标准,而有些是采用了自己的实现接口,常用的有如下几种: 
 
  http://code.google.c...o-mysql-dri</div>
                                </li>
                                <li><a href="/article/2909.htm"
                                       title="git命令" target="_blank">git命令</a>
                                    <span class="text-muted">shuizhaosi888</span>
<a class="tag" taget="_blank" href="/search/git/1.htm">git</a>
                                    <div>---------------设置全局用户名:
git config --global user.name "HanShuliang" //设置用户名 
git config --global user.email "13241153187@163.com" //设置邮箱

---------------查看环境配置
git config --li</div>
                                </li>
                                <li><a href="/article/3036.htm"
                                       title="qemu-kvm 网络 nat模式 (四)" target="_blank">qemu-kvm 网络 nat模式 (四)</a>
                                    <span class="text-muted">haoningabc</span>
<a class="tag" taget="_blank" href="/search/kvm/1.htm">kvm</a><a class="tag" taget="_blank" href="/search/qemu/1.htm">qemu</a>
                                    <div>qemu-ifup-NAT 
 

#!/bin/bash
BRIDGE=virbr0
NETWORK=192.168.122.0
GATEWAY=192.168.122.1
NETMASK=255.255.255.0
DHCPRANGE=192.168.122.2,192.168.122.254
TFTPROOT=
BOOTP=
function check_bridge()
</div>
                                </li>
                                <li><a href="/article/3163.htm"
                                       title="不要让未来的你,讨厌现在的自己" target="_blank">不要让未来的你,讨厌现在的自己</a>
                                    <span class="text-muted">jingjing0907</span>
<a class="tag" taget="_blank" href="/search/%E7%94%9F%E6%B4%BB+%E5%A5%8B%E6%96%97+%E5%B7%A5%E4%BD%9C+%E6%A2%A6%E6%83%B3/1.htm">生活 奋斗 工作 梦想</a>
                                    <div> 故事one 
 23岁,他大学毕业,放弃了父母安排的稳定工作,独闯京城,在家小公司混个小职位,工作还算顺手,月薪三千,混了混,混走了一年的光阴。    24岁,有了女朋友,从二环12人的集体宿舍搬到香山民居,一间平房,二人世界,爱爱爱。偶然约三朋四友,打扑克搓麻将,日子快乐似神仙;    25岁,出了几次差,调了两次岗,薪水涨了不过百,生猛狂飙的物价让现实血淋淋,无力为心爱银儿购件大牌</div>
                                </li>
                                <li><a href="/article/3290.htm"
                                       title="枚举类型详解" target="_blank">枚举类型详解</a>
                                    <span class="text-muted">一路欢笑一路走</span>
<a class="tag" taget="_blank" href="/search/enum/1.htm">enum</a><a class="tag" taget="_blank" href="/search/%E6%9E%9A%E4%B8%BE%E8%AF%A6%E8%A7%A3/1.htm">枚举详解</a><a class="tag" taget="_blank" href="/search/enumset/1.htm">enumset</a><a class="tag" taget="_blank" href="/search/enumMap/1.htm">enumMap</a>
                                    <div>枚举类型详解 
一.Enum详解 
     1.1枚举类型的介绍 
  
JDK1.5加入了一个全新的类型的”类”—枚举类型,为此JDK1.5引入了一个新的关键字enum,我们可以这样定义一个枚举类型。 
  
   Demo:一个最简单的枚举类 
  
public enum ColorType {
   RED</div>
                                </li>
                                <li><a href="/article/3417.htm"
                                       title="第11章 动画效果(上)" target="_blank">第11章 动画效果(上)</a>
                                    <span class="text-muted">onestopweb</span>
<a class="tag" taget="_blank" href="/search/%E5%8A%A8%E7%94%BB/1.htm">动画</a>
                                    <div>index.html 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/</div>
                                </li>
                                <li><a href="/article/3544.htm"
                                       title="Eclipse中jsp、js文件编辑时,卡死现象解决汇总" target="_blank">Eclipse中jsp、js文件编辑时,卡死现象解决汇总</a>
                                    <span class="text-muted">ljf_home</span>
<a class="tag" taget="_blank" href="/search/eclipse/1.htm">eclipse</a><a class="tag" taget="_blank" href="/search/jsp%E5%8D%A1%E6%AD%BB/1.htm">jsp卡死</a><a class="tag" taget="_blank" href="/search/js%E5%8D%A1%E6%AD%BB/1.htm">js卡死</a>
                                    <div>使用Eclipse编辑jsp、js文件时,经常出现卡死现象,在网上百度了N次,经过N次优化调整后,卡死现象逐步好转,具体那个方法起到作用,不太好讲。将所有用过的方法罗列如下: 
  
1、取消验证 
windows–>perferences–>validation 
把 除了manual 下面的全部点掉,build下只留 classpath dependency Valida</div>
                                </li>
                                <li><a href="/article/3671.htm"
                                       title="MySQL编程中的6个重要的实用技巧" target="_blank">MySQL编程中的6个重要的实用技巧</a>
                                    <span class="text-muted">tomcat_oracle</span>
<a class="tag" taget="_blank" href="/search/mysql/1.htm">mysql</a>
                                    <div>每一行命令都是用分号(;)作为结束 
对于MySQL,第一件你必须牢记的是它的每一行命令都是用分号(;)作为结束的,但当一行MySQL被插入在PHP代码中时,最好把后面的分号省略掉,例如: 
mysql_query("INSERT INTO tablename(first_name,last_name)VALUES('$first_name',$last_name')"); 
</div>
                                </li>
                                <li><a href="/article/3798.htm"
                                       title="zoj 3820 Building Fire Stations(二分+bfs)" target="_blank">zoj 3820 Building Fire Stations(二分+bfs)</a>
                                    <span class="text-muted">阿尔萨斯</span>
<a class="tag" taget="_blank" href="/search/Build/1.htm">Build</a>
                                    <div> 题目链接:zoj 3820 Building Fire Stations 
 题目大意:给定一棵树,选取两个建立加油站,问说所有点距离加油站距离的最大值的最小值是多少,并且任意输出一种建立加油站的方式。 
 解题思路:二分距离判断,判断函数的复杂度是o(n),这样的复杂度应该是o(nlogn),即使常数系数偏大,但是居然跑了4.5s,也是醉了。 判断函数里面做了3次bfs,但是每次bfs节点最多</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>