小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/1940489139090681856.htm"
                           title="<电子幽灵>前端第一件:HTML基础笔记下" target="_blank"><电子幽灵>前端第一件:HTML基础笔记下</a>
                        <span class="text-muted">靈镌sama</span>
<a class="tag" taget="_blank" href="/search/%E7%94%B5%E5%AD%90%E5%B9%BD%E7%81%B5%E9%9A%8F%E6%89%8B%E8%AE%B0/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/html/1.htm">html</a><a class="tag" taget="_blank" href="/search/%E7%AC%94%E8%AE%B0/1.htm">笔记</a>
                        <div>HTML基础笔记(下)介绍费曼学习法最重要的部分,即把知识教给一个完全不懂的孩子——或者小白。为了更好的自我学习,也为了让第一次接触某个知识范畴的同学快速入门,我会把我的学习笔记整理成电子幽灵系列。提示:文章的是以解释-代码块-解释的结构呈现的。当你看到代码块并准备复制复现的时候,最好先保证自己看过了代码块前后的解释。<电子幽灵>前端第一件:HTML基础笔记上中,最基础的一部分HTML标签和已经以</div>
                    </li>
                    <li><a href="/article/1940488256630091776.htm"
                           title="基于 Three.js 与 WebGL 的商场全景 VR 导航系统源码级解析" target="_blank">基于 Three.js 与 WebGL 的商场全景 VR 导航系统源码级解析</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/vr/1.htm">vr</a><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/%E5%9C%BA%E6%99%AF%E4%BC%98%E5%8C%96/1.htm">场景优化</a><a class="tag" taget="_blank" href="/search/WebGL/1.htm">WebGL</a><a class="tag" taget="_blank" href="/search/%E7%89%A9%E8%81%94%E7%BD%91/1.htm">物联网</a><a class="tag" taget="_blank" href="/search/%E6%99%BA%E6%85%A7%E5%95%86%E5%9C%BA/1.htm">智慧商场</a>
                        <div>本文面向Web前端开发者、WebGL/Three.js爱好者、对VR/AR应用开发感兴趣的技术人员、智慧商场解决方案开发者。详细介绍如何利用WebGL(Three.js框架)构建高性能的商场全景VR环境,并实现精准的室内定位与3D路径规划导航功能。如需获取商场全景VR导航系统解决方案请前往文章最下方获取,如有项目合作及技术交流欢迎私信作者。一、商场全景VR导航的核心技术概述商场全景VR导航融合了全</div>
                    </li>
                    <li><a href="/article/1940485359297163264.htm"
                           title="基于 Vue + RuoYi 架构设计的商城Web/小程序实训课程" target="_blank">基于 Vue + RuoYi 架构设计的商城Web/小程序实训课程</a>
                        <span class="text-muted">速易达网络</span>
<a class="tag" taget="_blank" href="/search/spring/1.htm">spring</a><a class="tag" taget="_blank" href="/search/boot/1.htm">boot</a><a class="tag" taget="_blank" href="/search/uni-app/1.htm">uni-app</a><a class="tag" taget="_blank" href="/search/vue.js/1.htm">vue.js</a>
                        <div>以下是基于Vue+RuoYi架构设计的商城Web/小程序实训课程方案,结合企业级开发需求与教学实践,涵盖全栈技术栈与实战模块:一、课程概述目标:通过Vue前端+RuoYi后端(SpringBoot)开发企业级电商系统,实现多终端(Web/H5/小程序)适配,覆盖从架构设计到部署上线的全流程。周期:8周(建议每日3小时)适合人群:具备基础Java/Vue知识的开发者,熟悉HTML/CSS/JavaS</div>
                    </li>
                    <li><a href="/article/1940485106791673856.htm"
                           title="微信小程序实现websocket及单人聊天功能" target="_blank">微信小程序实现websocket及单人聊天功能</a>
                        <span class="text-muted">蝶妹妹</span>
<a class="tag" taget="_blank" href="/search/%E5%BE%AE%E4%BF%A1%E5%B0%8F%E7%A8%8B%E5%BA%8F/1.htm">微信小程序</a><a class="tag" taget="_blank" href="/search/websocket/1.htm">websocket</a><a class="tag" taget="_blank" href="/search/%E5%B0%8F%E7%A8%8B%E5%BA%8F/1.htm">小程序</a>
                        <div>一、什么是websocket:WebSocket是HTML5下一种新的协议(websocket协议本质上是一个基于tcp的协议)它实现了浏览器与服务器全双工通信,能更好的节省服务器资源和带宽并达到实时通讯的目的Websocket是一个持久化的协议二、websocket的原理:websocket约定了一个通信的规范,通过一个握手的机制,客户端和服务器之间能建立一个类似tcp的连接,从而方便它们之间的</div>
                    </li>
                    <li><a href="/article/1940479302260813824.htm"
                           title="tauri v2 开源项目学习(二)" target="_blank">tauri v2 开源项目学习(二)</a>
                        <span class="text-muted"></span>

                        <div>前言:tauri2编程,前端部分和electron差不多,框架部分差别大,资料少,官网乱,AI又骗我所以在gitee上,寻找tauriv2开源项目,通过记录框架部分与rust部分的写法,对照确定编程方式tarui2插件,可以查看:https://github.com/tauri-apps/plugins-workspace1.EcoPastehttps://gitee.com/ayangweb/E</div>
                    </li>
                    <li><a href="/article/1940479301208043520.htm"
                           title="tauri v2 开源项目学习(一)" target="_blank">tauri v2 开源项目学习(一)</a>
                        <span class="text-muted"></span>

                        <div>前言:tauri2编程,前端部分和electron差不多,框架部分差别大,资料少,官网乱,AI又骗我所以在gitee上,寻找tauriv2开源项目,通过记录框架部分与rust部分的写法,对照确定编程方式提示:不要在VSCode里自动运行Cargo,在powershell里运行Cargobuild,不会卡住1.tauri-desktophttps://gitee.com/MapleKing/taur</div>
                    </li>
                    <li><a href="/article/1940477916278222848.htm"
                           title="前端与UI如何联手,让数字孪生走进现实生活?" target="_blank">前端与UI如何联手,让数字孪生走进现实生活?</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/ui/1.htm">ui</a>
                        <div>数字孪生(DigitalTwin)作为工业互联网的核心技术,正在通过前端技术与用户界面设计的深度协同,从实验室走向大规模应用场景。这种虚实映射系统要求前端框架突破传统二维界面限制,与UI设计思维共同构建三维可视化、实时交互的新型人机界面。本文将从技术融合、系统挑战、交互创新、场景实践和团队协作五个维度,解析数字孪生落地的关键路径。一、技术融合:可视化框架与UI设计工具链的协同进化现代数字孪生系统需</div>
                    </li>
                    <li><a href="/article/1940475137061089280.htm"
                           title="22-4 SQL注入攻击 - post 基于报错的注入" target="_blank">22-4 SQL注入攻击 - post 基于报错的注入</a>
                        <span class="text-muted">技术探索</span>
<a class="tag" taget="_blank" href="/search/Web%E5%AE%89%E5%85%A8%E6%94%BB%E9%98%B2%E5%85%A8%E8%A7%A3%E6%9E%90/1.htm">Web安全攻防全解析</a><a class="tag" taget="_blank" href="/search/sql/1.htm">sql</a><a class="tag" taget="_blank" href="/search/%E6%95%B0%E6%8D%AE%E5%BA%93/1.htm">数据库</a>
                        <div>1、post基于错误单引号注入回显分析注入点位置已经发生变化。在浏览器中,无法直接查看和修改注入点。不过,可以通过使用相应的插件来完成修改任务。修改方法:(一般是网站前端做了限制,我们才需要用到bp绕开限制)要修改Less11注入点的请求,可以使用BurpSuite工具来捕获请求包,并使用其中的"Repeater"功能来进行修改。具体操作步骤如下:首先打开BurpSuite并设置代理,然后在浏览器</div>
                    </li>
                    <li><a href="/article/1940471602143621120.htm"
                           title="SpringBoot返回文件让前端下载的几种方式" target="_blank">SpringBoot返回文件让前端下载的几种方式</a>
                        <span class="text-muted">一朵梨花压海棠go</span>
<a class="tag" taget="_blank" href="/search/spring/1.htm">spring</a><a class="tag" taget="_blank" href="/search/boot/1.htm">boot</a><a class="tag" taget="_blank" href="/search/%E5%89%8D%E7%AB%AF/1.htm">前端</a><a class="tag" taget="_blank" href="/search/%E5%90%8E%E7%AB%AF/1.htm">后端</a>
                        <div>01背景在后端开发中,通常会有文件下载的需求,常用的解决方案有两种:不通过后端应用,直接使用nginx直接转发文件地址下载(适用于一些公开的文件,因为这里不需要授权)通过后端进行下载,同时进行一些业务处理本篇主要以方法2进行介绍,方法2的原理步骤如下:读取文件,得到文件的字节流将字节流写入到响应输出流中02一次性读取到内存,通过响应输出流输出到前端@GetMapping("/file/downlo</div>
                    </li>
                    <li><a href="/article/1940437940157083648.htm"
                           title="window.accountCenterFeedback详细解析" target="_blank">window.accountCenterFeedback详细解析</a>
                        <span class="text-muted">前端页面仔</span>
<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/javascript/1.htm">javascript</a><a class="tag" taget="_blank" href="/search/html/1.htm">html</a><a class="tag" taget="_blank" href="/search/windows/1.htm">windows</a><a class="tag" taget="_blank" href="/search/vue/1.htm">vue</a><a class="tag" taget="_blank" href="/search/react/1.htm">react</a>
                        <div>window.accountCenterFeedback表示访问浏览器全局对象window上的一个属性,通常用于管理账户中心(AccountCenter)的反馈功能。以下是详细解析:1.这是什么?定义:window.accountCenterFeedback是挂载在浏览器全局作用域(window)上的一个对象或方法,通常由前端代码或第三方SDK注入,用于控制账户中心的用户反馈功能(如弹窗、问卷、帮</div>
                    </li>
                    <li><a href="/article/1940429869984837632.htm"
                           title="PHP后台代码解决跨域问题" target="_blank">PHP后台代码解决跨域问题</a>
                        <span class="text-muted">Happiness&Rich</span>
<a class="tag" taget="_blank" href="/search/php/1.htm">php</a><a class="tag" taget="_blank" href="/search/%E8%B7%A8%E5%9F%9F/1.htm">跨域</a>
                        <div>在前端里面,解决跨域的时候总显得那么的恶心,什么jsonp啊,ajax啊,CORS啊什么的,总觉得是在钻空子进行跨域,其实在PHP文件里面只需要加一段代码就可以跨域了,前端你该怎么写还是怎么写,post,get随便用:header("Access-Control-Allow-Origin:*");header('Access-Control-Allow-Methods:POST');header(</div>
                    </li>
                    <li><a href="/article/1940427340739833856.htm"
                           title="前端代码规范 及 最佳实践" target="_blank">前端代码规范 及 最佳实践</a>
                        <span class="text-muted">forlong401</span>
<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>
                        <div>http://coderlmn.github.io/code-standards/概述本文档包含了Isobar公司的创意技术部(前端工程)开发web应用的规范。现在我们把它开放给任何希望了解我们迭代过程最佳实践的人。编写本文档的主要驱动力是两方面:1)代码一致性以及2)最佳实践。通过保持代码风格和传统的一致性,我们可以减少遗留系统维护的负担,并降低未来系统崩溃的风险。而通过遵照最佳实践,我们能确保</div>
                    </li>
                    <li><a href="/article/1940426204578377728.htm"
                           title="前端领域:jQuery UI组件的使用指南_副本" target="_blank">前端领域:jQuery UI组件的使用指南_副本</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%E5%AE%9E%E6%88%98/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/jquery/1.htm">jquery</a><a class="tag" taget="_blank" href="/search/ui/1.htm">ui</a><a class="tag" taget="_blank" href="/search/ai/1.htm">ai</a>
                        <div>前端领域:jQueryUI组件的使用指南关键词:jQueryUI、前端组件、交互效果、用户界面、使用指南摘要:本文旨在为前端开发者提供一份全面的jQueryUI组件使用指南。首先介绍了jQueryUI的背景,包括其目的、适用读者、文档结构和相关术语。接着详细阐述了jQueryUI的核心概念与联系,通过文本示意图和Mermaid流程图展示其架构。然后深入讲解了核心算法原理,并给出具体操作步骤和Pyt</div>
                    </li>
                    <li><a href="/article/1940421287197339648.htm"
                           title="【Django开发】前后端分离django美多商城项目第3篇:用户注册业务实现,用户注册前端逻辑【附代码文档】" target="_blank">【Django开发】前后端分离django美多商城项目第3篇:用户注册业务实现,用户注册前端逻辑【附代码文档】</a>
                        <span class="text-muted"></span>

                        <div>教程总体简介:欢迎来到美多商城!项目需求分析1.项目主要页面介绍2.归纳项目主要模块3.知识要点项目架构设计1.项目开发模式2.项目运行机制项目介绍创建工程1.准备项目代码仓库3.创建美多商城工程配置开发环境1.新建配置文件2.指定开发环境配置文件配置Jinja2模板引擎1.安装Jinja2扩展包配置MySQL数据库3.安装PyMySQL扩展包配置Redis数据库1.安装django-redis扩</div>
                    </li>
                    <li><a href="/article/1940416751212752896.htm"
                           title="Qt 图像显示" target="_blank">Qt 图像显示</a>
                        <span class="text-muted">没学上了</span>
<a class="tag" taget="_blank" href="/search/qt/1.htm">qt</a><a class="tag" taget="_blank" href="/search/%E5%BC%80%E5%8F%91%E8%AF%AD%E8%A8%80/1.htm">开发语言</a>
                        <div>根据Qt前端开发-CSDN博客前文可以知道Qt部署界面的思路和复杂嵌套的核心,接下来为了实现在前端点击按钮触发信号显示图像的功能我们需要做几点工作首先触发信号,显示界面;触发信号我们用按钮来实现;其次显示界面,上一章我们右侧留有空白可以用作显示,我们先建立Qlabel用作显示图像,将他嵌套进右侧留白的Widge中,代码如下之后通过按钮来触发相关事件connect(Photo,&QPushButto</div>
                    </li>
                    <li><a href="/article/1940409313172451328.htm"
                           title="Vue-16-前端框架Vue之应用基础集中式状态管理pinia(一)" target="_blank">Vue-16-前端框架Vue之应用基础集中式状态管理pinia(一)</a>
                        <span class="text-muted">皮皮冰燃</span>
<a class="tag" taget="_blank" href="/search/Vue/1.htm">Vue</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/vue.js/1.htm">vue.js</a><a class="tag" taget="_blank" href="/search/javascript/1.htm">javascript</a>
                        <div>文章目录1Pinia2示例效果2.1App.vue(根组件)2.2Count.vue2.3LoveTalk.vue(使用axios)3搭建pinia环境3.1main.ts3.2开发者工具4存储和读取数据4.1Count.ts4.2Count.vue4.3loveTalk.ts4.4LoveTalk.vue5修改数据的三种方式5.1第一种和第二种修改方式5.1.1Count.ts5.1.2Coun</div>
                    </li>
                    <li><a href="/article/1940405403305177088.htm"
                           title="鸿蒙(影音娱乐类)APP开发——在线短视频流畅切换" target="_blank">鸿蒙(影音娱乐类)APP开发——在线短视频流畅切换</a>
                        <span class="text-muted">CTrup</span>
<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/%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/%E5%A8%B1%E4%B9%90/1.htm">娱乐</a><a class="tag" taget="_blank" href="/search/%E9%9F%B3%E8%A7%86%E9%A2%91/1.htm">音视频</a><a class="tag" taget="_blank" href="/search/%E7%A7%BB%E5%8A%A8%E5%BC%80%E5%8F%91/1.htm">移动开发</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/%E7%BB%84%E4%BB%B6%E5%8C%96/1.htm">组件化</a><a class="tag" taget="_blank" href="/search/ArkUI/1.htm">ArkUI</a>
                        <div>往期推文全新看点鸿蒙(HarmonyOS)北向开发知识点记录~鸿蒙(OpenHarmony)南向开发保姆级知识点汇总~鸿蒙应用开发与鸿蒙系统开发哪个更有前景?嵌入式开发适不适合做鸿蒙南向开发?看完这篇你就了解了~对于大前端开发来说,转鸿蒙开发究竟是福还是祸?鸿蒙岗位需求突增!移动端、PC端、IoT到底该怎么选?记录一场鸿蒙开发岗位面试经历~持续更新中……简介为了帮助开发者解决在应用中在线短视频快速</div>
                    </li>
                    <li><a href="/article/1940376779571130368.htm"
                           title="CST微波工作室学习笔记2 主要特点" target="_blank">CST微波工作室学习笔记2 主要特点</a>
                        <span class="text-muted">raininforest</span>
<a class="tag" taget="_blank" href="/search/CST%E5%AD%A6%E4%B9%A0/1.htm">CST学习</a><a class="tag" taget="_blank" href="/search/%E7%A1%AC%E4%BB%B6%E5%B7%A5%E7%A8%8B/1.htm">硬件工程</a>
                        <div>概要基于Windows98/Me、WindowsNT4、Windows2000和WindowsXP的图形用户界面快速并能有效使用内存的有限积分(FI)算法由于理想边界拟合技术和薄片技术的采用,性能更加卓越结构建模基于先进ACIS内核的参量化实体建模前端,并附带优异的结构可视化功能。内含多种建模技术,可快速进行结构变换。可通过SAT(如AutoCAD)、IGES、STEP、ProE、CATIA4、C</div>
                    </li>
                    <li><a href="/article/1940356610761224192.htm"
                           title="前端领域 Vite 与 Webpack 的深度对比" target="_blank">前端领域 Vite 与 Webpack 的深度对比</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/webpack/1.htm">webpack</a><a class="tag" taget="_blank" href="/search/node.js/1.htm">node.js</a><a class="tag" taget="_blank" href="/search/ai/1.htm">ai</a>
                        <div>前端领域Vite与Webpack的深度对比关键词:Vite、Webpack、前端构建工具、模块打包、开发体验、性能优化、ESModules摘要:本文深入对比前端领域两大构建工具Vite和Webpack的核心原理、架构设计和使用场景。通过分析它们的底层机制、开发体验、构建流程和性能表现,帮助开发者理解如何在不同项目需求下做出合理选择。文章包含详细的技术原理图解、实际项目对比示例和未来发展趋势分析。背</div>
                    </li>
                    <li><a href="/article/1940340471142346752.htm"
                           title="纯前端本地文件管理器(VSCode风格)(浏览器对本地文件增删改查)" target="_blank">纯前端本地文件管理器(VSCode风格)(浏览器对本地文件增删改查)</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/vscode/1.htm">vscode</a><a class="tag" taget="_blank" href="/search/ide/1.htm">ide</a>
                        <div>纯前端本地文件管理器(VSCode风格)(浏览器对本地文件增删改查)简介本项目为一个纯前端实现的本地文件管理器网页(index.html),可在Chrome/Edge浏览器中直接打开,具备类似VSCode的本地文件夹操作体验。无需后端,所有功能均在浏览器端实现。主要功能选择本地文件夹用户点击左上角文件夹按钮,授权后可浏览和操作本地文件夹内容。文件树展示以树形结构展示所选文件夹下的所有文件和子文件夹</div>
                    </li>
                    <li><a href="/article/1940329998741204992.htm"
                           title="WHAT - TTF 和 OTF 字体格式" target="_blank">WHAT - TTF 和 OTF 字体格式</a>
                        <span class="text-muted">@PHARAOH</span>
<a class="tag" taget="_blank" href="/search/%E5%89%8D%E7%AB%AF/1.htm">前端</a><a class="tag" taget="_blank" href="/search/javascript/1.htm">javascript</a><a class="tag" taget="_blank" href="/search/%E5%AD%97%E4%BD%93/1.htm">字体</a>
                        <div>文章目录基础定义核心区别轮廓技术(绘制字体的“骨架”)功能扩展兼容性文件大小如何选择?一个小贴士更多关于前端开发中字体介绍请阅读:WHAT-前端开发中的字体基础定义格式全称简介TTFTrueTypeFont由苹果和微软在1980年代联合开发的字体格式。OTFOpenTypeFontAdobe和微软开发的更现代的字体格式,基于TTF或PostScript。核心区别轮廓技术(绘制字体的“骨架”)TTF</div>
                    </li>
                    <li><a href="/article/1940329364134621184.htm"
                           title="Vue3 - 详解播放m3u8视频流+HLS拉流推流完整方案,vue3如何播放m3u8格式文件实时视频播放教程(流媒体播放、直播视频流、实时摄像头监控视频流对接、后端服务器切片分片传输视频流边下边播)" target="_blank">Vue3 - 详解播放m3u8视频流+HLS拉流推流完整方案,vue3如何播放m3u8格式文件实时视频播放教程(流媒体播放、直播视频流、实时摄像头监控视频流对接、后端服务器切片分片传输视频流边下边播)</a>
                        <span class="text-muted">王二红</span>
<a class="tag" taget="_blank" href="/search/%2B/1.htm">+</a><a class="tag" taget="_blank" href="/search/Vue3/1.htm">Vue3</a><a class="tag" taget="_blank" href="/search/%E5%BC%80%E5%8F%91%E9%97%AE%E9%A2%98%E6%B1%87%E6%80%BB/1.htm">开发问题汇总</a><a class="tag" taget="_blank" href="/search/vue3/1.htm">vue3</a><a class="tag" taget="_blank" href="/search/m3u8/1.htm">m3u8</a><a class="tag" taget="_blank" href="/search/hls/1.htm">hls</a><a class="tag" taget="_blank" href="/search/vue3%E6%92%AD%E6%94%BEm3u8%E8%A7%86%E9%A2%91%E6%B5%81%E6%95%99%E7%A8%8B/1.htm">vue3播放m3u8视频流教程</a><a class="tag" taget="_blank" href="/search/vue%E6%92%AD%E6%94%BEm3u8%E6%96%87%E4%BB%B6/1.htm">vue播放m3u8文件</a><a class="tag" taget="_blank" href="/search/vue3%E7%9B%B4%E6%92%AD%E8%A7%86%E9%A2%91%E6%B5%81%E6%92%AD%E6%94%BE/1.htm">vue3直播视频流播放</a><a class="tag" taget="_blank" href="/search/%E6%91%84%E5%83%8F%E5%A4%B4%E5%AE%9E%E6%97%B6%E7%9B%91%E6%8E%A7%E7%94%BB%E9%9D%A2%E8%A7%86%E9%A2%91%E6%B5%81/1.htm">摄像头实时监控画面视频流</a>
                        <div>前言如果您需要Vue2版本,请访问这篇文章。在vue3(PC端+移动端H5)项目开发中,实现m3u8+hls视频流播放、实时流媒体播放高性能无延迟方案及源码,vue3播放3mu8文件/直播视频流,实时流媒体播放需求、做直播实时传输播放、摄像头监控画面视频流、服务器后端视频切片分段返给前端+边下边播等需求,解决前端网页播放视频流卡顿加载慢、无法载入黑屏、播放不流畅、CORS跨域、安卓苹果浏览器兼容等</div>
                    </li>
                    <li><a href="/article/1940302644992077824.htm"
                           title="JavaScript-异步编程" target="_blank">JavaScript-异步编程</a>
                        <span class="text-muted">斜杠青年C</span>
<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><a class="tag" taget="_blank" href="/search/%E5%89%8D%E7%AB%AF/1.htm">前端</a>
                        <div>一、日常前端开发使用的异步编程方法回调函数事件监听PromiseGeneratorasync/await二、同步编程和异步编程的区别1、什么是同步同步是执行某段代码时,在该代码没有得到返回结果前,其他代码是无法执行的,但是一旦拿到返回值,就可以执行其他的代码2、什么是异步异步就是当某段代码执行异步过程调用发出后,这段代码不会立刻得到返回结果,而是在异步调用发出之后,一般通过回调函数处理这个调用之后</div>
                    </li>
                    <li><a href="/article/1940297853901533184.htm"
                           title="前端计算机视觉:使用 OpenCV.js 在浏览器中实现图像处理" target="_blank">前端计算机视觉:使用 OpenCV.js 在浏览器中实现图像处理</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/OpenCV/1.htm">OpenCV</a><a class="tag" taget="_blank" href="/search/%E5%89%8D%E7%AB%AF/1.htm">前端</a><a class="tag" taget="_blank" href="/search/%E8%AE%A1%E7%AE%97%E6%9C%BA%E8%A7%86%E8%A7%89/1.htm">计算机视觉</a><a class="tag" taget="_blank" href="/search/opencv/1.htm">opencv</a>
                        <div>一、OpenCV.js简介与环境搭建OpenCV(OpenSourceComputerVisionLibrary)是一个强大的计算机视觉库,广泛应用于图像和视频处理领域。传统上,OpenCV主要在后端使用Python或C++等语言。但随着WebAssembly(Wasm)技术的发展,OpenCV也有了JavaScript版本——OpenCV.js,它可以直接在浏览器中高效运行,为前端开发者提供了前</div>
                    </li>
                    <li><a href="/article/1940293063326887936.htm"
                           title="数据库设计体系化知识(后端+前端+AI+三高场景+大厂面试+简历包装)" target="_blank">数据库设计体系化知识(后端+前端+AI+三高场景+大厂面试+简历包装)</a>
                        <span class="text-muted">@一叶之秋</span>
<a class="tag" taget="_blank" href="/search/Java%E6%9E%B6%E6%9E%84%E5%B8%88%E5%AD%A6%E4%B9%A0%E8%B7%AF%E7%BA%BF/1.htm">Java架构师学习路线</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/%E5%89%8D%E7%AB%AF/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/java/1.htm">java</a>
                        <div>数据库设计体系化知识(AI融合版:后端+前端+AI+三高场景+大厂面试+简历包装)一、数据库设计基础:范式理论+AI辅助建模1.核心知识(AI赋能表结构设计)(1)三大范式+AI校验规则落地:用AI代码生成工具(如Copilot)自动校验表结构是否符合范式。→示例:输入“设计学生-班级表”,AI生成符合3NF的表结构,并标注冗余字段风险。后端协同:Java后端通过SchemaValidator工具</div>
                    </li>
                    <li><a href="/article/1940289279825604608.htm"
                           title="推荐使用:webpack的高效EJS模板加载器 —— ejs-compiled-loader" target="_blank">推荐使用:webpack的高效EJS模板加载器 —— ejs-compiled-loader</a>
                        <span class="text-muted">雷柏烁</span>

                        <div>推荐使用:webpack的高效EJS模板加载器——ejs-compiled-loaderejs-compiled-loaderEJSloaderforwebpack(withoutfrontenddependencies)项目地址:https://gitcode.com/gh_mirrors/ej/ejs-compiled-loader在前端开发的浩瀚星空中,高效的模板引擎和构建工具是构建高性能应</div>
                    </li>
                    <li><a href="/article/1940287390807552000.htm"
                           title="前端面试题整理-场景设计题" target="_blank">前端面试题整理-场景设计题</a>
                        <span class="text-muted">C_greenbird</span>
<a class="tag" taget="_blank" href="/search/%E5%89%8D%E7%AB%AF%E5%AD%A6%E4%B9%A0/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/javascript/1.htm">javascript</a><a class="tag" taget="_blank" href="/search/css/1.htm">css</a>
                        <div>1.如何使用css画一个三角形借助border实现,在width和height都为0时,设置border,便会呈现三角形。想要哪个方向的三角形,设置其他三边为透明即可。同时,可以通过调整不同边的宽度,来调整三角形的高度和宽度。三角符号/*记忆口诀:盒子宽高均为零,三面边框皆透明。*/div:after{position:absolute;width:0;height:0;content:"";bo</div>
                    </li>
                    <li><a href="/article/1940284111117676544.htm"
                           title="微信小程序|流浪动物救助小程序的设计与实现" target="_blank">微信小程序|流浪动物救助小程序的设计与实现</a>
                        <span class="text-muted">qq_469603589</span>
<a class="tag" taget="_blank" href="/search/%E5%BE%AE%E4%BF%A1%E5%B0%8F%E7%A8%8B%E5%BA%8F/1.htm">微信小程序</a><a class="tag" taget="_blank" href="/search/%E5%B0%8F%E7%A8%8B%E5%BA%8F/1.htm">小程序</a><a class="tag" taget="_blank" href="/search/%E5%BE%AE%E4%BF%A1%E5%B0%8F%E7%A8%8B%E5%BA%8F/1.htm">微信小程序</a>
                        <div>作者主页:编程指南针作者简介:Java领域优质创作者、CSDN博客专家、CSDN内容合伙人、掘金特邀作者、阿里云博客专家、51CTO特邀作者、多年架构师设计经验、腾讯课堂常驻讲师主要内容:Java项目、Python项目、前端项目、人工智能与大数据、简历模板、学习资料、面试题库、技术互助收藏点赞不迷路关注作者有好处文末获取源码项目编号:L-BS-XZBS-30一,环境介绍语言环境:Java:jdk1</div>
                    </li>
                    <li><a href="/article/1940270870127767552.htm"
                           title="前端 React.js 项目的性能优化的成功案例分析" target="_blank">前端 React.js 项目的性能优化的成功案例分析</a>
                        <span class="text-muted">前端视界</span>
<a class="tag" taget="_blank" href="/search/%E5%89%8D%E7%AB%AF%E8%89%BA%E5%8C%A0%E9%A6%86/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/react.js/1.htm">react.js</a><a class="tag" taget="_blank" href="/search/%E6%80%A7%E8%83%BD%E4%BC%98%E5%8C%96/1.htm">性能优化</a><a class="tag" taget="_blank" href="/search/ai/1.htm">ai</a>
                        <div>前端React.js项目的性能优化的成功案例分析关键词:React.js性能优化、代码拆分与懒加载、虚拟列表与长列表优化、Webpack深度调优、Fiber架构实践、SSR与SSG落地、React.memo与useCallback最佳实践摘要:本文通过三个真实企业级React项目的性能优化案例,系统解析从性能瓶颈诊断到优化策略落地的完整流程。结合React核心原理(如Fiber架构、虚拟DOMdi</div>
                    </li>
                    <li><a href="/article/1940264316984946688.htm"
                           title="【手写前端面试题01】防抖和节流" target="_blank">【手写前端面试题01】防抖和节流</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%89%8D%E7%AB%AF/1.htm">前端</a><a class="tag" taget="_blank" href="/search/javascript/1.htm">javascript</a><a class="tag" taget="_blank" href="/search/%E5%AD%A6%E4%B9%A0/1.htm">学习</a><a class="tag" taget="_blank" href="/search/%E9%98%B2%E6%8A%96/1.htm">防抖</a><a class="tag" taget="_blank" href="/search/%E8%8A%82%E6%B5%81/1.htm">节流</a>
                        <div>《手写防抖和节流:从“打工人”到“时间管理大师”》一、本质理解(别被术语吓到)防抖(debounce)是什么?玩游戏看60秒广告只需要完整看一次就行了,退出去一次重新60秒,别一直退✅核心思想:在事件被触发后,等待一段时间,如果这段时间内没有再次触发,才执行。节流(throttle)又是什么?闪现CD:不管多急,都要等冷却好才能再次使用✅核心思想:多次触发→只按固定频率执行,在一定时间内只允许执行</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>