网页端debugger反调试的几种对抗方式

简单总结下目前我掌握的几种对抗debugger反调试的方法,也欢迎大佬们有新的好用的方式补充。

首先写一个简单的html演示:
看下下面的这段JS,很简单,运行时做了一下验证,对比test方法的文本,如果不一样就通过setInterval无限调用debugger。
    function test(x,y){
            z=x+y;
            return z;
        }
        setInterval(function()
        {test+""=="function test(x,y){z=x+y;return z;}" ? console.log("未修改") 
:setInterval(
        function(){
            debugger;
            },1000);}
            ,1000);
        test(100,200);

然后我们添加这一句,也就是对源代码进行破坏,让他验证不通过。

浏览器打开HTML文件,打开F12开发者工具。可以看到已经进入无限debugger模式了。

方法一:通过停用断点

应该是各位见过最多的方法了,就是开发者工具的这个按钮:

点击切换成这个样子后,已经停用了断点调试,无限debugger将消失:
如果只是从干掉debugger的层面上讲,那么我们的目的已经达到了。但是这种方法不好用,干掉debugger的同时,也无法再对该网页进行任何调试。然而往往我们打开F12就是为了调试,你把调试给禁了,我开F12干嘛。。

方法二:条件断点

想必各位对如下打断点的方式并不陌生:

点击代码行数就会添加断点。这是普通断点的快捷添加方法。在浏览器中还有一种条件断点。

条件断点与打常规断点的方法类似,在要添加的行号上右键,选择Add conditional breakpoint:
然后输入false,回车:
代码变成了这个样子:

再按下F9,你会发现debugger已经消失了。

方法三:离老子远点!(Never Pause Here)

字面意思,不从这行代码经过。

依旧是右键点击行号,选择Never pause here。

以上是常规操作,接下来介绍比较骚操作的方法。
首先是用fiddler&charles&multiproxy之类的工具。接下来我会用fiddler演示,其他的工具类似。

方法四:替换文件

我们既然已经知道代码里有反调试,那么用以上工具替换response内容不就行了吗?这里演示有点蛋疼,服务器到期了,我又不想去专门找个有反调试的网站。。于是自己注入一个吧。

使用到Fiddler的Fiddler Script功能,Fiddler Script使用的语言是JScript.NET。语法和JS类似,我是当做JS来写的,细微差别注意一下就好了,反正用到这个功能一般也不会写太多代码。。

首先,百度主页是没有任何debugger的,我们接下来要做的是在百度中注入一段反调试代码,让他进入到debugger中。打开Fiddler,在右边可以找到Fiddler Script选项卡。

下面这些是Fiddler提供给我们的一些生命周期钩子,做过前端或者安卓开发很容易就会理解。
简单说,OnBeforeRequest会在拦截请求之前执行,属于拦截到了,但是还没有发出去的状态,在这里你可以修改一些请求头等内容。
OnBeforeResponse是在拦截响应前执行,比如我们在网页中打开了百度,百度的代码已经返回来了,但被Fiddler拦截在了这里,还没有到达浏览器!我们可以在这个阶段劫持响应内容。

其他的可以去查找相关资料或者阅读官方文档,Fiddler Script是Fiddler强大之处之一。

我们可以在这里写代码扩展一些自己想要的东西。这个的应用其实很广,比如有时候不得不用selenium抓数据,但是又不想通过selenium读数据,因为要等网页渲染,实在太慢了。这时候就可以使用Fiddler Script,在里面写一段脚本,让响应回来的时候直接解析,然后把数据保存在数据库里。

咳咳,扯远了。先来注入:选择OnBeforeResponse,会自动跳到这个函数的位置:

然后我们添加注入的代码:
比较简单,我将上面例子中的那段debugger代码添加到百度页面中的标签前面。保存,打开百度主页,按下F12: <div class="image-package"> <div class="image-container" style="max-width: 700px; max-height: 428px;"> <div class="image-view"> </div> </div> <div class="image-caption"></div> </div>已经把debugger注入到网页中了。 <p>接下来我们要干掉他。AutoResponser:</p> <div class="image-package"> <div class="image-container" style="max-width: 700px; max-height: 120px;"> <div class="image-view"> </div> </div> <div class="image-caption"></div> </div> <br> 先右键点击查看网页源代码,把源代码拷贝下来一份,放到我们写好的html中。 <div class="image-package"> <div class="image-container" style="max-width: 700px; max-height: 494px;"> <div class="image-view"> </div> </div> <div class="image-caption"></div> </div>然后修改代码,把debugger置为false: <div class="image-package"> <div class="image-container" style="max-width: 700px; max-height: 234px;"> <div class="image-view"> </div> </div> <div class="image-caption"></div> </div>Fiddler中找到要替换的请求:把他拖进AutoResponser中: <div class="image-package"> <div class="image-container" style="max-width: 700px; max-height: 674px;"> <div class="image-view"> </div> </div> <div class="image-caption"></div> </div>选择Find a file,并在里面选择我们准备好的html文件。 <div class="image-package"> <div class="image-container" style="max-width: 700px; max-height: 454px;"> <div class="image-view"> </div> </div> <div class="image-caption"></div> </div> <div class="image-package"> <div class="image-container" style="max-width: 700px; max-height: 137px;"> <div class="image-view"> </div> </div> <div class="image-caption"></div> </div>刷新页面。 <div class="image-package"> <div class="image-container" style="max-width: 700px; max-height: 128px;"> <div class="image-view"> </div> </div> <div class="image-caption"></div> </div>我们发现已经不会停在我们注入的地方了。也就是debugger失效了。 <br> <br> PS:万万没想到网页里还是出现了debugger,是因为Fiddler Script注入的地方没有关。。也验证了,Fiddler Script的优先级 > AutoResponser。AutoResponser执行后才会走Fiddler Script <p></p> <h2>方法五:脚本注入</h2> <p>方法四是比较方便的,但是有时候你会发现要修改的JS代码是动态的,每次加载都不一样,这时候如果盲目替换文件,很可能导致网页的逻辑无法使用。我们仅仅需要把debugger的地方干掉就可以了。</p> <p>也就是,通过注入,修改指定代码。细心的你可能已经发现了,这不就是上面我们注入debugger做的事吗?是的。。。所以,没有看上面方法四的建议回去看一下。。。方法类似,指定Host,用正则替换掉debugger代码。<br> 这里不再讲了。</p> <h2>方法六:JS Hook劫持方法</h2> <p>首先要装一个油猴插件,这个程序员应该都装了吧。。。实现各种骚操作。<br> js的hook和Frida中的很像,或者说比Frida的hook更简单。我们现在知道了debugger是在setInterval中执行的,那我们尝试劫持setInterval。点击这里,新建一个油猴脚本:</p> <br> <div class="image-package"> <div class="image-container" style="max-width: 200px; max-height: 355px;"> <div class="image-view"> </div> </div> <div class="image-caption"></div> </div> <p></p> 编辑内容如下: <div class="image-package"> <div class="image-container" style="max-width: 592px; max-height: 385px;"> <div class="image-view"> </div> </div> <div class="image-caption"></div> </div>简单解释下,match代表应用的网址,也可以用正则配成*。require引入了jquery...这行不看也罢,以前写的模板,直接带过来了。run-at document-start在加载的时候运行。 <br> 然后就是主要代码了: <pre><code>var new_setInterval=setInterval; window.setInterval=function(a,b){ if(a.toString().indexOf("debugger")!=-1) { return null; } new_setInterval(a,b); } </code></pre> <p>首先用new_setInterval接收了原生的setInterval。然后hook原生setInterval,如果在参数a,也就是定时器结束时调用的函数中出现debugger的话,就让函数返回null,什么都不做,再继续运行定时器。<br> </p> <p></p> 效果: <div class="image-package"> <div class="image-container" style="max-width: 700px; max-height: 415px;"> <div class="image-view"> </div> </div> <div class="image-caption"></div> </div> <h1>总结</h1> <p>以前遇到debugger,没有处理的经验,真的是一脸懵逼,慢慢也积累下来一些对抗的方法,希望能抛砖引玉,各位如果有其他方法也可以交流一下。</p> <p>其实通过这些,学到的不仅仅是针对反调试,这些方法在其他的地方也有相当多的应用场景。比如Hook,这么好用的方法难道仅仅用来对付反调试?不不不,他还可以hook任意JS加密方法,hook Cookie的生成,hook一个搜索不到的入口等等等。。留给大家自己研究了。</p> <p>如果后续我找到新的对付无限debugger的方法,也会更新在这里。</p> </article> </div> </div> </div> <!--PC和WAP自适应版--> <div id="SOHUCS" sid="1714358130013450240"></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">你可能感兴趣的:(网页端debugger反调试的几种对抗方式)</h4> <div id="paradigm-article-related"> <div class="recommend-post mb30"> <ul class="widget-links"> <li><a href="/article/1890875521668018176.htm" title="滴滴开源新项目Unify:聚焦Flutter与原生通信难题,助力跨端应用落地" target="_blank">滴滴开源新项目Unify:聚焦Flutter与原生通信难题,助力跨端应用落地</a> <span class="text-muted">滴滴技术</span> <a class="tag" taget="_blank" href="/search/%E5%BC%80%E6%BA%90/1.htm">开源</a><a class="tag" taget="_blank" href="/search/flutter/1.htm">flutter</a> <div>引言在移动开发领域,移动跨端技术因其提效收益,逐渐成为业界趋势之一。Flutter作为近年来热门的跨端技术,以高性能、自渲染、泛跨端著称,得到广泛应用。在滴滴国际化业务中,我们大量应用Flutter。目前已在滴滴国际化外卖、滴滴国际化出行司机端等业务中大规模落地,整体交付提效50%+,收益显著。在大规模Flutter跨端场景下,存量的原生业务与增量Flutter业务间的双向通信成为痛点问题。为此,</div> </li> <li><a href="/article/1890875143861891072.htm" title="开工有礼|400+页技术实践干货合集,助你开启新旅程" target="_blank">开工有礼|400+页技术实践干货合集,助你开启新旅程</a> <span class="text-muted">滴滴技术</span> <div>技术的世界,从来不是孤独的。在这个充满挑战与机遇的领域,没有闭关修炼多年的绝世高手,只有无数怀着愚公移山精神的探索者,他们一步一个脚印,在未知的荒原上修桥补路,共同编织着技术的传奇。随着春节假期的结束,我们迎来了新的一年和新的开始。在这个充满希望和挑战的时刻,滴滴技术公众号特别推出《滴滴技术实践2023年度合集》,本册合集汇聚了过去一年我们所发表的技术实践内容。你将了解滴滴如何运用算法优化决策,如</div> </li> <li><a href="/article/1890874514066173952.htm" title="Timeline 时间线基础用法" target="_blank">Timeline 时间线基础用法</a> <span class="text-muted">AiGarry</span> <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><a class="tag" taget="_blank" href="/search/elementui/1.htm">elementui</a> <div>1、html内容Timeline可拆分成多个按照时间戳排列的活动,时间戳是其区分于其他控件的重要特征{{activity.updateBy}}{{activity.updateTime}}<divstyle="color:#999;display:flex"v-for=</div> </li> <li><a href="/article/1890874135777701888.htm" title="PAT乙级真题 — 1085 PAT单位排行(java)【20/25—测试点4、5超时】" target="_blank">PAT乙级真题 — 1085 PAT单位排行(java)【20/25—测试点4、5超时】</a> <span class="text-muted">黄昏岭</span> <a class="tag" taget="_blank" href="/search/%E7%AE%97%E6%B3%95/1.htm">算法</a> <div>每次PAT考试结束后,考试中心都会发布一个考生单位排行榜。本题就请你实现这个功能。输入格式:输入第一行给出一个正整数N(≤105),即考生人数。随后N行,每行按下列格式给出一个考生的信息:准考证号得分学校其中准考证号是由6个字符组成的字符串,其首字母表示考试的级别:B代表乙级,A代表甲级,T代表顶级;得分是[0,100]区间内的整数;学校是由不超过6个英文字母组成的单位码(大小写无关)。注意:题目</div> </li> <li><a href="/article/1890874008946143232.htm" title="C++循环结构:原理剖析与工程实践优化策略" target="_blank">C++循环结构:原理剖析与工程实践优化策略</a> <span class="text-muted">溟海.</span> <a class="tag" taget="_blank" href="/search/c%2B%2B/1.htm">c++</a><a class="tag" taget="_blank" href="/search/%E5%BC%80%E5%8F%91%E8%AF%AD%E8%A8%80/1.htm">开发语言</a> <div>以下是一篇关于C++循环结构的原创技术论文框架及内容示例,包含理论解析与工程实践结合的分析C++循环结构:原理剖析与工程实践优化策略**摘要**本文系统探讨C++语言中循环结构的实现机制、应用场景及优化方法。通过分析for、while、do-while三种基本循环结构在编译器层面的实现差异,结合现代C++11/17标准新增特性,提出面向性能优化和代码可维护性的工程实践方案。实验表明,合理选择循环结</div> </li> <li><a href="/article/1890874009449459712.htm" title="fread\fwrite、fseek /tell/rewind和缓冲区(20250215)" target="_blank">fread\fwrite、fseek /tell/rewind和缓冲区(20250215)</a> <span class="text-muted">写代码的猫眼石</span> <a class="tag" taget="_blank" href="/search/%E7%AE%97%E6%B3%95/1.htm">算法</a> <div>fread\fwrite1.freadsize_tfread(void*ptr,size_tsize,size_tnmemb,FILE*stream)ptr--这是指向带有最小尺寸size*nmemb字节的内存块的指针。size--这是要读取的每个元素的大小,以字节为单位。nmemb--这是元素的个数,每个元素的大小为size字节。stream--这是指向FILE对象的指针,该FILE对象指定了一</div> </li> <li><a href="/article/1890873253459718144.htm" title="CTFShow-WEB入门篇命令执行详细Wp(29-40)_ctfshow-web入门篇详细wp" target="_blank">CTFShow-WEB入门篇命令执行详细Wp(29-40)_ctfshow-web入门篇详细wp</a> <span class="text-muted">2401_84281698</span> <a class="tag" taget="_blank" href="/search/%E7%A8%8B%E5%BA%8F%E5%91%98/1.htm">程序员</a><a class="tag" taget="_blank" href="/search/%E7%BD%91%E7%BB%9C%E5%AE%89%E5%85%A8/1.htm">网络安全</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%9D%A2%E8%AF%95/1.htm">面试</a> <div>给大家的福利零基础入门对于从来没有接触过网络安全的同学,我们帮你准备了详细的学习成长路线图。可以说是最科学最系统的学习路线,大家跟着这个大的方向学习准没问题。同时每个成长路线对应的板块都有配套的视频提供:因篇幅有限,仅展示部分资料网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。需要这份系统化资料的朋友,可以点击这里获取一个人可以走的很</div> </li> <li><a href="/article/1890873126598799360.htm" title="软考高级《系统架构设计师》知识点(三)" target="_blank">软考高级《系统架构设计师》知识点(三)</a> <span class="text-muted">Ritchie里其</span> <a class="tag" taget="_blank" href="/search/%E7%B3%BB%E7%BB%9F%E6%9E%B6%E6%9E%84/1.htm">系统架构</a> <div>数据库系统数据库系统概念数据库系统DBS的组成:数据库、硬件、软件、人员。数据库管理系统DBMS的功能:数据定义、数据库操作、数据库运行管理、数据的存储管理、数据库的建立和维护等。DBMS的分类:关系数据库系统RDBS、面向对象的数据库系统OODBS、对象关系数据库系统ORDBS。数据库系统的体系结构:集中式数据库系统(所有东西集中在DBMS电脑上)、客户端/服务器体系结构(客户端负责请求和数据表</div> </li> <li><a href="/article/1890873126984675328.htm" title="软考高级《系统架构设计师》知识点(四)" target="_blank">软考高级《系统架构设计师》知识点(四)</a> <span class="text-muted">Ritchie里其</span> <a class="tag" taget="_blank" href="/search/%E7%B3%BB%E7%BB%9F%E6%9E%B6%E6%9E%84/1.htm">系统架构</a> <div>嵌入式技术第二版新增内容嵌入式系统:以应用为中心、以计算机技术为基础,并将可配置与可裁减的软、硬件、集成于一体的专用计算机系统,需要满足应用对功能、可靠性、成本、体积和功耗等方面的严格要求。一般嵌入式系统由嵌入式处理器、相关支撑硬件、嵌入式操作系统、支撑软件以及应用软件组成。嵌入式处理器:由于嵌入式系统一般是在恶劣的环境条件下工作,与一般处理器相比,嵌入式处理器应可抵抗恶劣环境的影响,比如高温、寒</div> </li> <li><a href="/article/1890872874017812480.htm" title="初阶C语言:循环语句" target="_blank">初阶C语言:循环语句</a> <span class="text-muted">小小月xiao</span> <a class="tag" taget="_blank" href="/search/c%E8%AF%AD%E8%A8%80/1.htm">c语言</a><a class="tag" taget="_blank" href="/search/%E5%BC%80%E5%8F%91%E8%AF%AD%E8%A8%80/1.htm">开发语言</a> <div>1.while语句(1)while循环的格式while(表达式)循环语句;//while循环中//break是用于永久的终止循环//continue是跳过本次循环后面的代码,直接去判断部分,进行下一次循环的判断///循环打印1-10的数:intmain(){inti=1;//初始化while(iintmain(){inti=1;while(i1234continue:i++在后:while循环执行</div> </li> <li><a href="/article/1890872621805924352.htm" title="Webpack相关优化总结" target="_blank">Webpack相关优化总结</a> <span class="text-muted">问白</span> <a class="tag" taget="_blank" href="/search/%E5%89%8D%E7%AB%AF%E5%B7%A5%E7%A8%8B%E5%8C%96/1.htm">前端工程化</a><a class="tag" taget="_blank" href="/search/webpack/1.htm">webpack</a><a class="tag" taget="_blank" href="/search/webpack/1.htm">webpack</a><a class="tag" taget="_blank" href="/search/%E5%89%8D%E7%AB%AF/1.htm">前端</a><a class="tag" taget="_blank" href="/search/%E5%89%8D%E7%AB%AF%E5%B7%A5%E7%A8%8B%E5%8C%96/1.htm">前端工程化</a> <div>在使用webpack时提供了各种配置,这里结合在业务中常用的配置汇总一下可以进行的一系列的webpack优化缩小文件搜索范围其原理是在构建时,会以用户配置的Entry为开始依次递归遍历每个Module,在遍历每个Module时会调用相应合适的Loader对原模块代码进行“翻译”。优化Loader配置Loader对文件的转换是比较耗时的,我们可以在loader中通过test、include、excl</div> </li> <li><a href="/article/1890872369505955840.htm" title="理解 WebGPU 中的 GPUQueue:GPU 的命令队列" target="_blank">理解 WebGPU 中的 GPUQueue:GPU 的命令队列</a> <span class="text-muted">ttod_qzstudio</span> <a class="tag" taget="_blank" href="/search/WebGPU/1.htm">WebGPU</a><a class="tag" taget="_blank" href="/search/WebGPU/1.htm">WebGPU</a> <div>在现代图形编程中,与GPU的交互变得越来越高效和灵活,而WebGPUAPI的出现更是为Web开发者带来了强大的图形处理能力。其中,GPUQueue作为WebGPU的核心接口之一,扮演着至关重要的角色。本文将详细介绍GPUQueue的概念、功能、使用方法以及其在WebGPU架构中的地位。一、什么是GPUQueue?在WebGPU中,GPUQueue是一个命令队列接口,用于控制GPU上命令的执行。它类</div> </li> <li><a href="/article/1890872117218570240.htm" title="自己部署 DeepSeek 助力 Vue 开发:打造丝滑的时间线(Timeline )" target="_blank">自己部署 DeepSeek 助力 Vue 开发:打造丝滑的时间线(Timeline )</a> <span class="text-muted">宝码香车</span> <a class="tag" taget="_blank" href="/search/%23/1.htm">#</a><a class="tag" taget="_blank" href="/search/DeepSeek/1.htm">DeepSeek</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/javascript/1.htm">javascript</a><a class="tag" taget="_blank" href="/search/DeepSeek/1.htm">DeepSeek</a> <div>前言:哈喽,大家好,今天给大家分享一篇文章!并提供具体代码帮助大家深入理解,彻底掌握!创作不易,如果能帮助到大家或者给大家一些灵感和启发,欢迎收藏+关注哦目录自己部署DeepSeek助力Vue开发:打造丝滑的时间线(Timeline)前言进入安装好的DeepSeek页面效果指令输入think代码解释使用示例组件代码代码测试整理后主要代码定义组件Timeline.vue页面效果自己部署DeepSee</div> </li> <li><a href="/article/1890871990701584384.htm" title="初阶c语言(循环语句习题,完结)" target="_blank">初阶c语言(循环语句习题,完结)</a> <span class="text-muted">不灭锦鲤</span> <a class="tag" taget="_blank" href="/search/c%E8%AF%AD%E8%A8%80/1.htm">c语言</a><a class="tag" taget="_blank" href="/search/%E7%AE%97%E6%B3%95/1.htm">算法</a><a class="tag" taget="_blank" href="/search/%E6%95%B0%E6%8D%AE%E7%BB%93%E6%9E%84/1.htm">数据结构</a> <div>前言:c语言为b站鹏哥,嗯对应视频37集昨天做的c语言,今天在来做一遍,发现做错了今天改了平均值的计算,就是说最大值加上最小值,如果说这个数值非常大的话,两个值加上会超过int类型的最大值,从而导致数值的重新计算,导致结果不稳定,所以换一种计算方法第二题,折半查找法环境介绍,就是devc++软件运行编译就是说最大值减去最小值,然后中间有个差值,将他分成一半给最小值,那两个就都是平均值了#inclu</div> </li> <li><a href="/article/1890871612723490816.htm" title="云创智城充电系统:基于 SpringCloud 的高可用、可扩展架构详解-多租户、多协议兼容、分账与互联互通功能实现" target="_blank">云创智城充电系统:基于 SpringCloud 的高可用、可扩展架构详解-多租户、多协议兼容、分账与互联互通功能实现</a> <span class="text-muted">云创智城-yuncitys</span> <a class="tag" taget="_blank" href="/search/%E6%99%BA%E8%83%BD%E5%85%85%E7%94%B5%E6%A1%A9/1.htm">智能充电桩</a><a class="tag" taget="_blank" href="/search/%E7%94%B5%E5%8A%A8%E8%BD%A6%E5%85%85%E7%94%B5%E7%B3%BB%E7%BB%9F/1.htm">电动车充电系统</a><a class="tag" taget="_blank" href="/search/%E8%99%9A%E6%8B%9F%E5%85%85%E7%94%B5%E6%A1%A9/1.htm">虚拟充电桩</a><a class="tag" taget="_blank" href="/search/%E7%B3%BB%E7%BB%9F%E6%9E%B6%E6%9E%84/1.htm">系统架构</a><a class="tag" taget="_blank" href="/search/%E6%99%BA%E6%85%A7%E5%9F%8E%E5%B8%82/1.htm">智慧城市</a><a class="tag" taget="_blank" href="/search/%E6%B1%BD%E8%BD%A6/1.htm">汽车</a> <div>在新能源汽车越来越普及的今天,充电基础设施的管理和运营变得越来越重要。云创智城充电系统,就像一个超级智能管家,为新能源充电带来了全新的解决方案,让充电这件事变得更方便、更高效、更安全。一、厉害的技术架构,让系统稳稳当当云创智城充电系统用了很厉害的技术,搭建出一个又稳又能不断变大变强的架构。它就像一个大商场,每个区域都有自己的功能,还能随时根据需求扩建。这个系统用SpringCloud和Spring</div> </li> <li><a href="/article/1890869850167898112.htm" title="三大主流开源硬件对比:Arduino vs BeagleBone vs Raspberry Pi" target="_blank">三大主流开源硬件对比:Arduino vs BeagleBone vs Raspberry Pi</a> <span class="text-muted">带着梦想流浪</span> <a class="tag" taget="_blank" href="/search/%E4%BA%92%E8%81%94%E7%BD%91/1.htm">互联网</a><a class="tag" taget="_blank" href="/search/%E7%A1%AC%E4%BB%B6/1.htm">硬件</a><a class="tag" taget="_blank" href="/search/%E6%99%BA%E8%83%BD%E7%A1%AC%E4%BB%B6/1.htm">智能硬件</a><a class="tag" taget="_blank" href="/search/%E5%BC%80%E6%BA%90%E7%A1%AC%E4%BB%B6/1.htm">开源硬件</a><a class="tag" taget="_blank" href="/search/hardware/1.htm">hardware</a><a class="tag" taget="_blank" href="/search/%E5%B5%8C%E5%85%A5%E5%BC%8F/1.htm">嵌入式</a> <div>摘要:本文对比了三款比较流行的,也是比较具代表意义的开源硬件平台ArduinoUno、BeagleBone和RaspberryPi。从性能以及可扩展性等方面对它们进行对比,帮助开发者了解如何选择适合自己的开源硬件平台。软硬件整合是今年一再被提及的话题,如今我们也可以看到不少硬件创业的成功案例,比如JawboneUp、Pebble手表等可穿戴设备,它们可与用户的手机同步,实现软件与硬件的结合。通过硬</div> </li> <li><a href="/article/1890869849215791104.htm" title="深入浅出 Go 语言:协程(Goroutine)详解" target="_blank">深入浅出 Go 语言:协程(Goroutine)详解</a> <span class="text-muted">软件架构师笔记</span> <a class="tag" taget="_blank" href="/search/golang/1.htm">golang</a><a class="tag" taget="_blank" href="/search/golang/1.htm">golang</a><a class="tag" taget="_blank" href="/search/%E7%BD%91%E7%BB%9C/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%8D%8F%E7%A8%8B/1.htm">协程</a> <div>深入浅出Go语言:协程(Goroutine)详解引言Go语言的协程(goroutine)是其并发模型的核心特性之一。协程允许你轻松地编写并发代码,而不需要复杂的线程管理和锁机制。通过协程,你可以同时执行多个任务,并且这些任务可以共享相同的地址空间,从而简化了内存管理和数据共享。本文将深入浅出地介绍Go语言中的协程编程,涵盖协程的基本概念、如何启动和管理协程、通道(channel)的使用以及常见的并</div> </li> <li><a href="/article/1890869219696898048.htm" title="Java面试宝典(Spring篇)" target="_blank">Java面试宝典(Spring篇)</a> <span class="text-muted">y_Haveme</span> <a class="tag" taget="_blank" href="/search/Spring/1.htm">Spring</a><a class="tag" taget="_blank" href="/search/%E9%9D%A2%E8%AF%95%E9%A2%98/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/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/spring/1.htm">spring</a> <div>目录1.什么是spring?2.Spring框架的优点。3.什么是IOC(控制反转)?4.依赖注入的方式。5.Autowired和Resource关键字的区别?6.什么是AOP(面向切面编程)?7.什么是通知呢?有哪些类型呢?8.springbean的生命周期。9.Spring支持的几种bean的作用域。10.Spring框架中都用到了哪些设计模式?11.事务三要素是什么?12.Spring事务实</div> </li> <li><a href="/article/1890868212111831040.htm" title="Go 语言的优势和学习路线图" target="_blank">Go 语言的优势和学习路线图</a> <span class="text-muted">weixin_jie401214</span> <a class="tag" taget="_blank" href="/search/golang/1.htm">golang</a><a class="tag" taget="_blank" href="/search/%E5%AD%A6%E4%B9%A0/1.htm">学习</a><a class="tag" taget="_blank" href="/search/java/1.htm">java</a> <div>简介Go语言又称Golang,由Google公司于2009年发布,近几年伴随着云计算、微服务、分布式的发展而迅速崛起,跻身主流编程语言之列,和Java类似,它是一门静态的、强类型的、编译型编程语言,为并发而生,所以天生适用于并发编程(网络编程)。目前Go语言支持Windows、Linux等多个平台,也可以直接在Android和iOS等移动端执行,从业务角度来看,Go语言在云计算、微服务、大数据、区</div> </li> <li><a href="/article/1890867960046743552.htm" title="无线瘦AP部署——Capwap隧道原理及故障:Capwap隧道常见问题-11.X版本" target="_blank">无线瘦AP部署——Capwap隧道原理及故障:Capwap隧道常见问题-11.X版本</a> <span class="text-muted">你可知这世上再难遇我</span> <a class="tag" taget="_blank" href="/search/%E9%94%90%E6%8D%B7%E7%BD%91%E7%BB%9C/1.htm">锐捷网络</a><a class="tag" taget="_blank" href="/search/%E7%BD%91%E7%BB%9C/1.htm">网络</a><a class="tag" taget="_blank" href="/search/capwap/1.htm">capwap</a><a class="tag" taget="_blank" href="/search/%E9%9A%A7%E9%81%93/1.htm">隧道</a><a class="tag" taget="_blank" href="/search/wlan/1.htm">wlan</a> <div>目录1、capwap隧道建立不成功2、AP和AC的隧道无法建立--AC查看拒绝原因3、AC无法下发配置给AP4、AP和AC跨公网上线,同一个网点的AP,部分可以上线成功,部分无法上线成功。【故障现象】5、AC、AP版本相同,但却无法在AC上正常上线,卡在join状态6、AP掉线后在ac上还是长时间显示在线7、大部分AP无法上线成功,且已经上线的AP经常出现掉线情况,隧道状态反复8、AP故障无法建立</div> </li> <li><a href="/article/1890867832900612096.htm" title="第2节下:线性表示代码带写【带注释】" target="_blank">第2节下:线性表示代码带写【带注释】</a> <span class="text-muted">人间普通饼饼</span> <a class="tag" taget="_blank" href="/search/%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0%E8%87%AA%E5%AD%A6%E8%AE%B0%E5%BD%95/1.htm">深度学习自学记录</a><a class="tag" taget="_blank" href="/search/%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0/1.htm">深度学习</a><a class="tag" taget="_blank" href="/search/python/1.htm">python</a> <div>importtorchimportmatplotlib.pyplotasplt#画图用的importrandom#随机#生成数据,w表示权重,是一维向量(张量),b表示偏置值,是一个标量defcreate_data(w,b,data_num):#torch.normal是用于生成正态分布随机数的函数,它的作用是从指定的正态分布中生成张量,其中每个元素都是从该正态分布中采样的随机数。#语法:torc</div> </li> <li><a href="/article/1890867833630420992.htm" title="新冠疫情数据分析项目实战 附完整项目代码 实验报告" target="_blank">新冠疫情数据分析项目实战 附完整项目代码 实验报告</a> <span class="text-muted">计算机毕设论文</span> <a class="tag" taget="_blank" href="/search/python%E4%B9%8B%E6%95%B0%E6%8D%AE%E5%88%86%E6%9E%90%E5%8F%AF%E8%A7%86%E5%8C%96/1.htm">python之数据分析可视化</a><a class="tag" taget="_blank" href="/search/%E6%95%B0%E6%8D%AE%E5%88%86%E6%9E%90/1.htm">数据分析</a><a class="tag" taget="_blank" href="/search/%E6%95%B0%E6%8D%AE%E6%8C%96%E6%8E%98/1.htm">数据挖掘</a><a class="tag" taget="_blank" href="/search/python/1.htm">python</a> <div>题目要求1.标明你的数据来源:包括网址和首页截图2.数据分析和展示应包括:a)15天中,全球新冠疫情的总体变化趋势;b)累计确诊数排名前20的国家名称及其数量;c)15天中,每日新增确诊数累计排名前10个国家的每日新增确诊数据的曲线图;d)累计确诊人数占国家总人口比例最高的10个国家;e)死亡率(累计死亡人数/累计确诊人数)最低的10个国家;f)用饼图展示各个国家的累计确诊人数的比例(你爬取的所有</div> </li> <li><a href="/article/1890867580688723968.htm" title="VSCode 光标配置美化" target="_blank">VSCode 光标配置美化</a> <span class="text-muted">Y & Y</span> <a class="tag" taget="_blank" href="/search/vscode/1.htm">vscode</a><a class="tag" taget="_blank" href="/search/ide/1.htm">ide</a><a class="tag" taget="_blank" href="/search/visual/1.htm">visual</a><a class="tag" taget="_blank" href="/search/studio/1.htm">studio</a><a class="tag" taget="_blank" href="/search/code/1.htm">code</a> <div>VSCode光标配置美化01如何设置Ctrl+Shift+P打开控制面板,输入settings打开设置一定要是JSON!然后在最后直接添加就好了02“editor.cursorStyle”光标样式样式描述block实心块▇block-outline空心块line竖线line-thin细的竖线underline▂underline-thin▁03“editor.cursorBlinking”光标待机</div> </li> <li><a href="/article/1890867328602664960.htm" title="2025年AI免费大战:从DeepSeek到GPT-5的商业逻辑与行业变革" target="_blank">2025年AI免费大战:从DeepSeek到GPT-5的商业逻辑与行业变革</a> <span class="text-muted">听吉米讲故事</span> <a class="tag" taget="_blank" href="/search/%E4%BA%BA%E5%B7%A5%E6%99%BA%E8%83%BD/1.htm">人工智能</a><a class="tag" taget="_blank" href="/search/gpt/1.htm">gpt</a><a class="tag" taget="_blank" href="/search/deepseek/1.htm">deepseek</a><a class="tag" taget="_blank" href="/search/%E5%BC%80%E6%BA%90/1.htm">开源</a> <div>引言:人工智能行业的2025年重大转折2025年伊始,人工智能行业的竞争格局发生了深刻变化,尤其是以DeepSeek为代表的新兴力量,通过低成本开源策略迅速崛起,迫使OpenAI、百度文心一言等人工智能巨头纷纷调整策略,甚至开放免费服务。这场"AI免费大战"不仅重新定义了人工智能行业的商业逻辑,也对企业的技术研发和商业化提出了全新的挑战。本文将从DeepSeek的低成本策略入手,剖析AI免费模式背</div> </li> <li><a href="/article/1890866949479526400.htm" title="STM32:迎接汽车与AI时代MCU新挑战" target="_blank">STM32:迎接汽车与AI时代MCU新挑战</a> <span class="text-muted">EEPW电子产品世界</span> <a class="tag" taget="_blank" href="/search/%E5%8D%95%E7%89%87%E6%9C%BA/1.htm">单片机</a><a class="tag" taget="_blank" href="/search/stm32/1.htm">stm32</a><a class="tag" taget="_blank" href="/search/%E6%B1%BD%E8%BD%A6/1.htm">汽车</a> <div>作为通用32位MCU市场最受关注的产品系列,意法半导体(ST)的STM32MCU从2007年问世之后就迎来爆发式增长,成功占据通用32位MCU市占率领头羊的位置,并且不断引领着通用MCU技术与应用的新思维开拓。本文引用地址:https://www.eepw.com.cn/article/202501/466521.htm新能源汽车带动汽车电子架构级革命和AI引领的边缘智能应用浪潮成为2024年最受</div> </li> <li><a href="/article/1890866950104477696.htm" title="Go协程goroutine和管道channel" target="_blank">Go协程goroutine和管道channel</a> <span class="text-muted">始梦的少年</span> <a class="tag" taget="_blank" href="/search/go/1.htm">go</a><a class="tag" taget="_blank" href="/search/go/1.htm">go</a> <div>1、进程:程序在操作系统的一次执行过程,是系统资源分配和调度的基本单位。2、线程:轻量化进程,是系统调度的基本单位。在同一个进程的线程切换不会导致进程切换,不同进程里的切换会导致进程切换。3、协程goroutine:轻量化线程,一个进程可以轻松开启上万个协程。在用户态,有独立的栈空间共享程序堆空间由用户调度简单易懂的代码1:packagemainimport("fmt""strconv""time</div> </li> <li><a href="/article/1890866571493044224.htm" title="【Node-Red】Function节点教学" target="_blank">【Node-Red】Function节点教学</a> <span class="text-muted">零炻大礼包</span> <a class="tag" taget="_blank" href="/search/Node-Red/1.htm">Node-Red</a><a class="tag" taget="_blank" href="/search/%E7%AC%94%E8%AE%B0/1.htm">笔记</a><a class="tag" taget="_blank" href="/search/node.js/1.htm">node.js</a> <div>本篇来讲在Node-Red中编写函数时用到的一个至关重要的节点:function。function节点允许消息运行JavaScript代码。其中部分内容来自官方文档翻译:function节点用户指南。Function节点教学1.变量定义2.返回值1)返回单条数据进阶1进阶22)返回多条数据3.其他变量定义1)数组定义buffer2.Array4.运算符1)算数运算符2)赋值运算符3)字符与运算符4</div> </li> <li><a href="/article/1890866193410093056.htm" title="快速入门 DeepSeek-R1 大模型" target="_blank">快速入门 DeepSeek-R1 大模型</a> <span class="text-muted">米丝梨</span> <div>国内最新的神级人工智能模型已经正式发布,没错,它就是备受瞩目的DeepSeek-R1大模型。今天,我们将对DeepSeek进行一个简单的了解,并探索如何快速使用和部署这个强大的工具。值得一提的是,DeepSeek已经开源,您可以随意下载和使用它。DeepSeek的官方网站地址如下:https://www.deepseek.com/API文档的详细地址请访问:https://api-docs.dee</div> </li> <li><a href="/article/1890866066700169216.htm" title="很多智能手表都用6739芯片_不怕看就怕比:五款智能手表硬件大解析" target="_blank">很多智能手表都用6739芯片_不怕看就怕比:五款智能手表硬件大解析</a> <span class="text-muted">weixin_39875832</span> <a class="tag" taget="_blank" href="/search/%E5%BE%88%E5%A4%9A%E6%99%BA%E8%83%BD%E6%89%8B%E8%A1%A8%E9%83%BD%E7%94%A86739%E8%8A%AF%E7%89%87/1.htm">很多智能手表都用6739芯片</a> <div>驱动之家在智能硬件这块疆域,智能手表已不算是新物了。三星的智能手表已经做到了第二代,但续航、应用场景、工业设计等方面的不足使得它们一直有话题但是没大销路。今年moto360以及AppleWatch的出现更是将智能手表的话题渲染得更热。智能手表其实功能上大家都大同小异,主要作为手机的辅助屏接收信息或通知,或者增加运动检测功能。具体来看看各个智能手表在硬件上有什么不同。SamsungGearFitGe</div> </li> <li><a href="/article/1890866067186708480.htm" title="海鸥表表带太长了怎么拆_海鸥手表表带 海鸥手表怎么换表带" target="_blank">海鸥表表带太长了怎么拆_海鸥手表表带 海鸥手表怎么换表带</a> <span class="text-muted">weixin_39878549</span> <a class="tag" taget="_blank" href="/search/%E6%B5%B7%E9%B8%A5%E8%A1%A8%E8%A1%A8%E5%B8%A6%E5%A4%AA%E9%95%BF%E4%BA%86%E6%80%8E%E4%B9%88%E6%8B%86/1.htm">海鸥表表带太长了怎么拆</a> <div>海鸥手表相信每一个熟悉钟表的朋友,都不会对这个品牌陌生。作为国产最早的钟表品牌之一,海鸥表历经多年的发展,如今掌握多项高级制表技术,被誉为国产手表中的第一品牌!目前佩戴海鸥手表的朋友有很多,大家经常会问海鸥手表怎么换表带?其实这并不是一个困难的问题,下面腕表之家就为大家介绍。海鸥手表怎么换金属表带1.把环状的表带从表扣处暂时拆开,让表带可以平摊在桌面上。以利于下一步的动作。最好下边垫一块绒布,可以</div> </li> <li><a href="/article/22.htm" title="redis学习笔记——不仅仅是存取数据" target="_blank">redis学习笔记——不仅仅是存取数据</a> <span class="text-muted">Everyday都不同</span> <a class="tag" taget="_blank" href="/search/returnSource/1.htm">returnSource</a><a class="tag" taget="_blank" href="/search/expire%2Fdel/1.htm">expire/del</a><a class="tag" taget="_blank" href="/search/incr%2Flpush/1.htm">incr/lpush</a><a class="tag" taget="_blank" href="/search/%E6%95%B0%E6%8D%AE%E5%BA%93%E5%88%86%E5%8C%BA/1.htm">数据库分区</a><a class="tag" taget="_blank" href="/search/redis/1.htm">redis</a> <div>最近项目中用到比较多redis,感觉之前对它一直局限于get/set数据的层面。其实作为一个强大的NoSql数据库产品,如果好好利用它,会带来很多意想不到的效果。(因为我搞java,所以就从jedis的角度来补充一点东西吧。PS:不一定全,只是个人理解,不喜勿喷)   1、关于JedisPool.returnSource(Jedis jeids)   这个方法是从red</div> </li> <li><a href="/article/149.htm" title="SQL性能优化-持续更新中。。。。。。" target="_blank">SQL性能优化-持续更新中。。。。。。</a> <span class="text-muted">atongyeye</span> <a class="tag" taget="_blank" href="/search/oracle/1.htm">oracle</a><a class="tag" taget="_blank" href="/search/sql/1.htm">sql</a> <div>1 通过ROWID访问表--索引 你可以采用基于ROWID的访问方式情况,提高访问表的效率, , ROWID包含了表中记录的物理位置信息..ORACLE采用索引(INDEX)实现了数据和存放数据的物理位置(ROWID)之间的联系. 通常索引提供了快速访问ROWID的方法,因此那些基于索引列的查询就可以得到性能上的提高. 2 共享SQL语句--相同的sql放入缓存 3 选择最有效率的表</div> </li> <li><a href="/article/276.htm" title="[JAVA语言]JAVA虚拟机对底层硬件的操控还不完善" target="_blank">[JAVA语言]JAVA虚拟机对底层硬件的操控还不完善</a> <span class="text-muted">comsci</span> <a class="tag" taget="_blank" href="/search/JAVA%E8%99%9A%E6%8B%9F%E6%9C%BA/1.htm">JAVA虚拟机</a> <div>      如果我们用汇编语言编写一个直接读写CPU寄存器的代码段,然后利用这个代码段去控制被操作系统屏蔽的硬件资源,这对于JVM虚拟机显然是不合法的,对操作系统来讲,这样也是不合法的,但是如果是一个工程项目的确需要这样做,合同已经签了,我们又不能够这样做,怎么办呢? 那么一个精通汇编语言的那种X客,是否在这个时候就会发生某种至关重要的作用呢? &n</div> </li> <li><a href="/article/403.htm" title="lvs- real" target="_blank">lvs- real</a> <span class="text-muted">男人50</span> <a class="tag" taget="_blank" href="/search/LVS/1.htm">LVS</a> <div>#!/bin/bash # # Script to start LVS DR real server. # description: LVS DR real server # #.  /etc/rc.d/init.d/functions VIP=10.10.6.252 host='/bin/hostname' case "$1" in sta</div> </li> <li><a href="/article/530.htm" title="生成公钥和私钥" target="_blank">生成公钥和私钥</a> <span class="text-muted">oloz</span> <a class="tag" taget="_blank" href="/search/DSA/1.htm">DSA</a><a class="tag" taget="_blank" href="/search/%E5%AE%89%E5%85%A8%E5%8A%A0%E5%AF%86/1.htm">安全加密</a> <div>package com.msserver.core.util; import java.security.KeyPair; import java.security.PrivateKey; import java.security.PublicKey; import java.security.SecureRandom; public class SecurityUtil { </div> </li> <li><a href="/article/657.htm" title="UIView 中加入的cocos2d,背景透明" target="_blank">UIView 中加入的cocos2d,背景透明</a> <span class="text-muted">374016526</span> <a class="tag" taget="_blank" href="/search/cocos2d/1.htm">cocos2d</a><a class="tag" taget="_blank" href="/search/glClearColor/1.htm">glClearColor</a> <div>要点是首先pixelFormat:kEAGLColorFormatRGBA8,必须有alpha层才能透明。然后view设置为透明glView.opaque = NO;[director setOpenGLView:glView];[self.viewController.view setBackgroundColor:[UIColor clearColor]];[self.viewControll</div> </li> <li><a href="/article/784.htm" title="mysql常用命令" target="_blank">mysql常用命令</a> <span class="text-muted">香水浓</span> <a class="tag" taget="_blank" href="/search/mysql/1.htm">mysql</a> <div>连接数据库 mysql -u troy -ptroy 备份表 mysqldump -u troy -ptroy mm_database mm_user_tbl > user.sql 恢复表(与恢复数据库命令相同) mysql -u troy -ptroy mm_database < user.sql 备份数据库 mysqldump -u troy -ptroy</div> </li> <li><a href="/article/911.htm" title="我的架构经验系列文章 - 后端架构 - 系统层面" target="_blank">我的架构经验系列文章 - 后端架构 - 系统层面</a> <span class="text-muted">agevs</span> <a class="tag" taget="_blank" href="/search/JavaScript/1.htm">JavaScript</a><a class="tag" taget="_blank" href="/search/jquery/1.htm">jquery</a><a class="tag" taget="_blank" href="/search/css/1.htm">css</a><a class="tag" taget="_blank" href="/search/html5/1.htm">html5</a> <div>系统层面: 高可用性 所谓高可用性也就是通过避免单独故障加上快速故障转移实现一旦某台物理服务器出现故障能实现故障快速恢复。一般来说,可以采用两种方式,如果可以做业务可以做负载均衡则通过负载均衡实现集群,然后针对每一台服务器进行监控,一旦发生故障则从集群中移除;如果业务只能有单点入口那么可以通过实现Standby机加上虚拟IP机制,实现Active机在出现故障之后虚拟IP转移到Standby的快速</div> </li> <li><a href="/article/1038.htm" title="利用ant进行远程tomcat部署" target="_blank">利用ant进行远程tomcat部署</a> <span class="text-muted">aijuans</span> <a class="tag" taget="_blank" href="/search/tomcat/1.htm">tomcat</a> <div>在javaEE项目中,需要将工程部署到远程服务器上,如果部署的频率比较高,手动部署的方式就比较麻烦,可以利用Ant工具实现快捷的部署。这篇博文详细介绍了ant配置的步骤(http://www.cnblogs.com/GloriousOnion/archive/2012/12/18/2822817.html),但是在tomcat7以上不适用,需要修改配置,具体如下: 1.配置tomcat的用户角色</div> </li> <li><a href="/article/1165.htm" title="获取复利总收入" target="_blank">获取复利总收入</a> <span class="text-muted">baalwolf</span> <a class="tag" taget="_blank" href="/search/%E8%8E%B7%E5%8F%96/1.htm">获取</a> <div>       public static void main(String args[]){         int money=200;         int year=1;         double rate=0.1; &</div> </li> <li><a href="/article/1292.htm" title="eclipse.ini解释" target="_blank">eclipse.ini解释</a> <span class="text-muted">BigBird2012</span> <a class="tag" taget="_blank" href="/search/eclipse/1.htm">eclipse</a> <div>大多数java开发者使用的都是eclipse,今天感兴趣去eclipse官网搜了一下eclipse.ini的配置,供大家参考,我会把关键的部分给大家用中文解释一下。还是推荐有问题不会直接搜谷歌,看官方文档,这样我们会知道问题的真面目是什么,对问题也有一个全面清晰的认识。 Overview 1、Eclipse.ini的作用 Eclipse startup is controlled by th</div> </li> <li><a href="/article/1419.htm" title="AngularJS实现分页功能" target="_blank">AngularJS实现分页功能</a> <span class="text-muted">bijian1013</span> <a class="tag" taget="_blank" href="/search/JavaScript/1.htm">JavaScript</a><a class="tag" taget="_blank" href="/search/AngularJS/1.htm">AngularJS</a><a class="tag" taget="_blank" href="/search/%E5%88%86%E9%A1%B5/1.htm">分页</a> <div>        对于大多数web应用来说显示项目列表是一种很常见的任务。通常情况下,我们的数据会比较多,无法很好地显示在单个页面中。在这种情况下,我们需要把数据以页的方式来展示,同时带有转到上一页和下一页的功能。既然在整个应用中这是一种很常见的需求,那么把这一功能抽象成一个通用的、可复用的分页(Paginator)服务是很有意义的。   &nbs</div> </li> <li><a href="/article/1546.htm" title="[Maven学习笔记三]Maven archetype" target="_blank">[Maven学习笔记三]Maven archetype</a> <span class="text-muted">bit1129</span> <a class="tag" taget="_blank" href="/search/ArcheType/1.htm">ArcheType</a> <div>archetype的英文意思是原型,Maven archetype表示创建Maven模块的模版,比如创建web项目,创建Spring项目等等.   mvn archetype提供了一种命令行交互式创建Maven项目或者模块的方式,   mvn archetype   1.在LearnMaven-ch03目录下,执行命令mvn archetype:gener</div> </li> <li><a href="/article/1673.htm" title="【Java命令三】jps" target="_blank">【Java命令三】jps</a> <span class="text-muted">bit1129</span> <a class="tag" taget="_blank" href="/search/Java%E5%91%BD%E4%BB%A4/1.htm">Java命令</a> <div>jps很简单,用于显示当前运行的Java进程,也可以连接到远程服务器去查看   [hadoop@hadoop bin]$ jps -help usage: jps [-help] jps [-q] [-mlvV] [<hostid>] Definitions: <hostid>: <hostname>[:</div> </li> <li><a href="/article/1800.htm" title="ZABBIX2.2 2.4 等各版本之间的兼容性" target="_blank">ZABBIX2.2 2.4 等各版本之间的兼容性</a> <span class="text-muted">ronin47</span> <div>zabbix更新很快,从2009年到现在已经更新多个版本,为了使用更多zabbix的新特性,随之而来的便是升级版本,zabbix版本兼容性是必须优先考虑的一点 客户端AGENT兼容 zabbix1.x到zabbix2.x的所有agent都兼容zabbix server2.4:如果你升级zabbix server,客户端是可以不做任何改变,除非你想使用agent的一些新特性。 Zabbix代理(p</div> </li> <li><a href="/article/1927.htm" title="unity 3d还是cocos2dx哪个适合游戏?" target="_blank">unity 3d还是cocos2dx哪个适合游戏?</a> <span class="text-muted">brotherlamp</span> <a class="tag" taget="_blank" href="/search/unity%E8%87%AA%E5%AD%A6/1.htm">unity自学</a><a class="tag" taget="_blank" href="/search/unity%E6%95%99%E7%A8%8B/1.htm">unity教程</a><a class="tag" taget="_blank" href="/search/unity%E8%A7%86%E9%A2%91/1.htm">unity视频</a><a class="tag" taget="_blank" href="/search/unity%E8%B5%84%E6%96%99/1.htm">unity资料</a><a class="tag" taget="_blank" href="/search/unity/1.htm">unity</a> <div>unity 3d还是cocos2dx哪个适合游戏? 问:unity 3d还是cocos2dx哪个适合游戏? 答:首先目前来看unity视频教程因为是3d引擎,目前对2d支持并不完善,unity 3d 目前做2d普遍两种思路,一种是正交相机,3d画面2d视角,另一种是通过一些插件,动态创建mesh来绘制图形单元目前用的较多的是2d toolkit,ex2d,smooth moves,sm2, </div> </li> <li><a href="/article/2054.htm" title="百度笔试题:一个已经排序好的很大的数组,现在给它划分成m段,每段长度不定,段长最长为k,然后段内打乱顺序,请设计一个算法对其进行重新排序" target="_blank">百度笔试题:一个已经排序好的很大的数组,现在给它划分成m段,每段长度不定,段长最长为k,然后段内打乱顺序,请设计一个算法对其进行重新排序</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/%E9%9D%A2%E8%AF%95/1.htm">面试</a><a class="tag" taget="_blank" href="/search/%E7%99%BE%E5%BA%A6/1.htm">百度</a><a class="tag" taget="_blank" href="/search/%E6%8B%9B%E8%81%98/1.htm">招聘</a> <div> import java.util.Arrays; /** * 最早是在陈利人老师的微博看到这道题: * #面试题#An array with n elements which is K most sorted,就是每个element的初始位置和它最终的排序后的位置的距离不超过常数K * 设计一个排序算法。It should be faster than O(n*lgn)。</div> </li> <li><a href="/article/2181.htm" title="获取checkbox复选框的值" target="_blank">获取checkbox复选框的值</a> <span class="text-muted">chiangfai</span> <a class="tag" taget="_blank" href="/search/checkbox/1.htm">checkbox</a> <div><title>CheckBox</title> <script type = "text/javascript"> doGetVal: function doGetVal() { //var fruitName = document.getElementById("apple").value;//根据</div> </li> <li><a href="/article/2308.htm" title="MySQLdb用户指南" target="_blank">MySQLdb用户指南</a> <span class="text-muted">chenchao051</span> <a class="tag" taget="_blank" href="/search/mysqldb/1.htm">mysqldb</a> <div>原网页被墙,放这里备用。 MySQLdb User's Guide Contents Introduction Installation _mysql MySQL C API translation MySQL C API function mapping Some _mysql examples MySQLdb </div> </li> <li><a href="/article/2435.htm" title="HIVE 窗口及分析函数" target="_blank">HIVE 窗口及分析函数</a> <span class="text-muted">daizj</span> <a class="tag" taget="_blank" href="/search/hive/1.htm">hive</a><a class="tag" taget="_blank" href="/search/%E7%AA%97%E5%8F%A3%E5%87%BD%E6%95%B0/1.htm">窗口函数</a><a class="tag" taget="_blank" href="/search/%E5%88%86%E6%9E%90%E5%87%BD%E6%95%B0/1.htm">分析函数</a> <div>窗口函数应用场景: (1)用于分区排序 (2)动态Group By (3)Top N (4)累计计算 (5)层次查询 一、分析函数 用于等级、百分点、n分片等。 函数             说明 RANK()     &nbs</div> </li> <li><a href="/article/2562.htm" title="PHP ZipArchive 实现压缩解压Zip文件" target="_blank">PHP ZipArchive 实现压缩解压Zip文件</a> <span class="text-muted">dcj3sjt126com</span> <a class="tag" taget="_blank" href="/search/PHP/1.htm">PHP</a><a class="tag" taget="_blank" href="/search/zip/1.htm">zip</a> <div> PHP ZipArchive 是PHP自带的扩展类,可以轻松实现ZIP文件的压缩和解压,使用前首先要确保PHP ZIP 扩展已经开启,具体开启方法就不说了,不同的平台开启PHP扩增的方法网上都有,如有疑问欢迎交流。这里整理一下常用的示例供参考。 一、解压缩zip文件 01 02 03 04 05 06 07 08 09 10 11 </div> </li> <li><a href="/article/2689.htm" title="精彩英语贺词" target="_blank">精彩英语贺词</a> <span class="text-muted">dcj3sjt126com</span> <a class="tag" taget="_blank" href="/search/%E8%8B%B1%E8%AF%AD/1.htm">英语</a> <div>I'm always here              我会一直在这里支持你                &nb</div> </li> <li><a href="/article/2816.htm" title="基于Java注解的Spring的IoC功能" target="_blank">基于Java注解的Spring的IoC功能</a> <span class="text-muted">e200702084</span> <a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/spring/1.htm">spring</a><a class="tag" taget="_blank" href="/search/bean/1.htm">bean</a><a class="tag" taget="_blank" href="/search/IOC/1.htm">IOC</a><a class="tag" taget="_blank" href="/search/Office/1.htm">Office</a> <div>                                  </div> </li> <li><a href="/article/2943.htm" title="java模拟post请求" target="_blank">java模拟post请求</a> <span class="text-muted">geeksun</span> <a class="tag" taget="_blank" href="/search/java/1.htm">java</a> <div>一般API接收客户端(比如网页、APP或其他应用服务)的请求,但在测试时需要模拟来自外界的请求,经探索,使用HttpComponentshttpClient可模拟Post提交请求。 此处用HttpComponents的httpclient来完成使命。 import org.apache.http.HttpEntity ; import org.apache.http.HttpRespon</div> </li> <li><a href="/article/3070.htm" title="Swift语法之 ---- ?和!区别" target="_blank">Swift语法之 ---- ?和!区别</a> <span class="text-muted">hongtoushizi</span> <a class="tag" taget="_blank" href="/search/%3F/1.htm">?</a><a class="tag" taget="_blank" href="/search/swift/1.htm">swift</a><a class="tag" taget="_blank" href="/search/%21/1.htm">!</a> <div>转载自: http://blog.sina.com.cn/s/blog_71715bf80102ux3v.html   Swift语言使用var定义变量,但和别的语言不同,Swift里不会自动给变量赋初始值,也就是说变量不会有默认值,所以要求使用变量之前必须要对其初始化。如果在使用变量之前不进行初始化就会报错: var stringValue : String //</div> </li> <li><a href="/article/3197.htm" title="centos7安装jdk1.7" target="_blank">centos7安装jdk1.7</a> <span class="text-muted">jisonami</span> <a class="tag" taget="_blank" href="/search/jdk/1.htm">jdk</a><a class="tag" taget="_blank" href="/search/centos/1.htm">centos</a> <div>安装JDK1.7 步骤1、解压tar包在当前目录 [root@localhost usr]#tar -xzvf jdk-7u75-linux-x64.tar.gz 步骤2:配置环境变量 在etc/profile文件下添加 export JAVA_HOME=/usr/java/jdk1.7.0_75 export CLASSPATH=/usr/java/jdk1.7.0_75/lib </div> </li> <li><a href="/article/3324.htm" title="数据源架构模式之数据映射器" target="_blank">数据源架构模式之数据映射器</a> <span class="text-muted">home198979</span> <a class="tag" taget="_blank" href="/search/PHP/1.htm">PHP</a><a class="tag" taget="_blank" href="/search/%E6%9E%B6%E6%9E%84/1.htm">架构</a><a class="tag" taget="_blank" href="/search/%E6%95%B0%E6%8D%AE%E6%98%A0%E5%B0%84%E5%99%A8/1.htm">数据映射器</a><a class="tag" taget="_blank" href="/search/datamapper/1.htm">datamapper</a> <div>前面分别介绍了数据源架构模式之表数据入口、数据源架构模式之行和数据入口数据源架构模式之活动记录,相较于这三种数据源架构模式,数据映射器显得更加“高大上”。   一、概念 数据映射器(Data Mapper):在保持对象和数据库(以及映射器本身)彼此独立的情况下,在二者之间移动数据的一个映射器层。概念永远都是抽象的,简单的说,数据映射器就是一个负责将数据映射到对象的类数据。 &nb</div> </li> <li><a href="/article/3451.htm" title="在Python中使用MYSQL" target="_blank">在Python中使用MYSQL</a> <span class="text-muted">pda158</span> <a class="tag" taget="_blank" href="/search/mysql/1.htm">mysql</a><a class="tag" taget="_blank" href="/search/python/1.htm">python</a> <div>缘由   近期在折腾一个小东西须要抓取网上的页面。然后进行解析。将结果放到 数据库中。   了解到 Python在这方面有优势,便选用之。   由于我有台 server上面安装有 mysql,自然使用之。在进行数据库的这个操作过程中遇到了不少问题,这里 记录一下,大家共勉。    python中mysql的调用    百度之后能够通过MySQLdb进行数据库操作。</div> </li> <li><a href="/article/3578.htm" title="单例模式" target="_blank">单例模式</a> <span class="text-muted">hxl1988_0311</span> <a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/%E5%8D%95%E4%BE%8B/1.htm">单例</a><a class="tag" taget="_blank" href="/search/%E8%AE%BE%E8%AE%A1%E6%A8%A1%E5%BC%8F/1.htm">设计模式</a><a class="tag" taget="_blank" href="/search/%E5%8D%95%E4%BB%B6/1.htm">单件</a> <div>package com.sosop.designpattern.singleton; /* * 单件模式:保证一个类必须只有一个实例,并提供全局的访问点 * * 所以单例模式必须有私有的构造器,没有私有构造器根本不用谈单件 * * 必须考虑到并发情况下创建了多个实例对象 * */ /** * 虽然有锁,但是只在第一次创建对象的时候加锁,并发时不会存在效率</div> </li> <li><a href="/article/3705.htm" title="27种迹象显示你应该辞掉程序员的工作" target="_blank">27种迹象显示你应该辞掉程序员的工作</a> <span class="text-muted">vipshichg</span> <a class="tag" taget="_blank" href="/search/%E5%B7%A5%E4%BD%9C/1.htm">工作</a> <div>1、你仍然在等待老板在2010年答应的要提拔你的暗示。 2、你的上级近10年没有开发过任何代码。 3、老板假装懂你说的这些技术,但实际上他完全不知道你在说什么。 4、你干完的项目6个月后才部署到现场服务器上。 5、时不时的,老板在检查你刚刚完成的工作时,要求按新想法重新开发。 6、而最终这个软件只有12个用户。 7、时间全浪费在办公室政治中,而不是用在开发好的软件上。 8、部署前5分钟才开始测试。</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>