cypress进行e2e测试之理论

cypress 进行 e2e 测试之理论

cypress 是目前 e2e 很火的一个测试组件,内部绑定了 macha、chai、chai-jquery 之类的断言,为了让代码代码
更有说服力,减少提交测试错误,进行 e2e 测试显然是非常有必要的。

官网 \
GitHub

借鉴官网一句话来说:

Cypress is a next generation front end testing tool built for the modern web. We address the key
pain points developers and QA engineers face when testing modern applications.

本文环境

node v9.5\
npm v5.5

e2e 简介

e2e 测试端对端测试的简称, e2e 即为end to end,
指任意一个人的社交、交易、休闲都可以直接与另外任意一个人产生关系,去中心化、渠道化.

cypress

cypress 环境搭建

做前端怎么少的多的了 npm 呢

$ npm i -D cypress

然后为了方便起见,咱们在package.json中写入下面脚本:

{
  "scripts": {
    "e2e:open": "cypress open",
    "e2e:run": "cypress run"
  }
}

运行npm run e2e:open,启动一个 cypress 的服务器,如下:

如下图这就完成了一个启动一个 cypress。第一次点开时候,cypress 会帮你创建一个初始化配置目录,这是
cypress 推荐的目录的结构,当然也可以自己创建。

点击 example_spec.js 文件,然后可以看到如下界面,cypress 开始测试:

上面就看到 cypress 的运行过程了。下面看看 example_spec.js(文件的位置
:projectName/cypress/integration)文件中写了啥:

describe('Kitchen Sink', function() {
  it('.should() - assert that  is correct', function() {
    // ...
  }
})</code></pre> 
 <p>这是主要结构的,下面大部分都是在一个<code>it</code>函数内部,是测试里面的回调函数。详细可以查看 TDD 和 BDD 测试<br>框架,cypress 绑定了这些测试框架。</p> 
 <h2>cy.visit</h2> 
 <p>这是 cypress 里面一个很重要的方法,可以访问一个链接,列入 example.js 文件如下:</p> 
 <pre><code class="js">beforeEach(function() {
  // Visiting our app before each test removes any state build up from
  // previous tests. Visiting acts as if we closed a tab and opened a fresh one
  cy.visit('https://example.cypress.io/commands/querying')
})</code></pre> 
 <p>这里就是在前置钩子函数里面访问了<code>https://...../querying</code>这个链接。如果代码需要浏览器调试,比如用户交<br>互点击,用户输入之类的。第一步就是访问:cy.visit</p> 
 <h2>cy.get</h2> 
 <p>还是从 example_spec.js 问中说起:</p> 
 <pre><code class="js">it('cy.get() - query DOM elements', function() {
  // https://on.cypress.io/get

  // Get DOM elements by id
  cy.get('#query-btn').should('contain', 'Button')

  // Get DOM elements by class
  cy.get('.query-btn').should('contain', 'Button')

  cy.get('#querying .well>button:first').should('contain', 'Button')
  //              ↲
  // Use CSS selectors just like jQuery
})</code></pre> 
 <p>这里定义了一个测试单元,在这个里面做了啥呢?第一步获取 id 为 query-btn 这个按钮。接下来 should 操作<br>,奉上一张表自行查看: <span class="img-wrap"><img alt="" title="" src="http://img.e-com-net.com/image/info9/94fd67618f0c42268fdf959961fca421.jpg" width="0" height="0"></span></p> 
 <p>cy.get 还有一个玩法就是 cy.get('@app')这种,意思说之前你已经<code>cy.get('.app').as('app')</code>,不需要再次获<br>取了,直接使用别名就好了</p> 
 <p>从官网截图的表格,详<br>细<a href="https://docs.cypress.io/guides/references/assertions.html#Chai-jQuery" rel="nofollow noreferrer">jquery-chai 文档表格</a></p> 
 <p>这里看到<code>cy.get()</code>和<code>jquery.$</code>是不是很像,在官网这里说了这样一句话:</p> 
 <blockquote>
   The querying behavior of this command matches exactly how $(…) works in jQuery. 
 </blockquote> 
 <p>所以可以将 cy.get()当$一样来用即可,不过这里返回的不过 jquery 对象罢了,这里返回的事通过 cypress 包<br>装过的对象可以在控制台看到这样的东西,见下图:<br><span class="img-wrap"><img alt="" title="" src="http://img.e-com-net.com/image/info9/dad1171441cf47c182ffd1444787e966.jpg" width="0" height="0"></span></p> 
 <p>是一个用于 cypress 所有方法的对象。然后可以操作他的 api 了。</p> 
 <p>第一部分,主要是查询,查询页面元素是否按照我们开发想要的存在,下面看第二部分:</p> 
 <pre><code class="js">context('Actions', function() {
  beforeEach(function() {
    cy.visit('https://example.cypress.io/commands/actions')
  })

  // Let's perform some actions on DOM elements
  // https://on.cypress.io/interacting-with-elements

  it('.type() - type into a DOM element', function() {
    // https://on.cypress.io/type
    cy
      .get('.action-email')
      .type('fake@email.com')
      .should('have.value', 'fake@email.com')

      // .type() with special character sequences
      .type('{leftarrow}{rightarrow}{uparrow}{downarrow}')
      .type('{del}{selectall}{backspace}')

      // .type() with key modifiers
      .type('{alt}{option}') //these are equivalent
      .type('{ctrl}{control}') //these are equivalent
      .type('{meta}{command}{cmd}') //these are equivalent
      .type('{shift}')

      // Delay each keypress by 0.1 sec
      .type('slow.typing@email.com', { delay: 100 })
      .should('have.value', 'slow.typing@email.com')

    cy
      .get('.action-disabled')
      // Ignore error checking prior to type
      // like whether the input is visible or disabled
      .type('disabled error checking', { force: true })
      .should('have.value', 'disabled error checking')
  })
})</code></pre> 
 <p>这一部分主要是进行获取元素交互, 下面来说交互是如何搞得。 与 cy.get 相似还有:</p> 
 <ul> 
  <li>cy.contains 通过文本获取元素</li> 
  <li>cy.closet 见 jqery</li> 
  <li>cy.next/cy.nextAll 可以和 cy.contains 联合使用获取该节点的下一个节点</li> 
  <li>cy.prev/cy.prevAll 同上</li> 
  <li>cy.children/cy.parents/cy.parent 获取子节点/ 所有的父节点 / 父节点</li> 
  <li>cy.first/cy.last</li> 
  <li>cy.url 获取当前页面 url</li> 
  <li>cy.title 获取当前页面标题</li> 
  <li>... API 挺多的,同样奉<br>上<a href="https://docs.cypress.io/api/commands/type.html#Key-Combinations" rel="nofollow noreferrer">api 文档</a> </li> 
 </ul> 
 <h2>cypress 交互逻辑</h2> 
 <p>既然要交互肯定需要点击输入滚动,可以还存在拖拽等等。咱们就暂时从输入开始说起啦</p> 
 <h3>cy.type</h3> 
 <p>这不是一个可以直接使用的方法,要配合<code>cy.get</code>使用的,作用是给空间进行输入。例如:</p> 
 <h4>测试输入例如 text, textarea</h4> 
 <pre><code class="js">cy.get('input').type('hello world')</code></pre> 
 <h4>测试 tabIndex</h4> 
 <pre><code class="html">  <div class="el" tabIndex="1">
    This is TabIndex div.
  </div></code></pre> 
 <pre><code class="js">cy.get('.el').type('laldkadaljdkljasf') // 这个里面是随机字符串</code></pre> 
 <h4>测试 input 为日期的</h4> 
 <pre><code class="js">cy.get('input[type=date]').type('2008-8-9')</code></pre> 
 <h4>键盘绑定</h4> 
 <p>下面直接是对 input 进行组合键盘操作</p> 
 <pre><code class="js">cy.get('input').type('{shift}{alt}Q')</code></pre> 
 <p>按住键盘操作</p> 
 <pre><code class="js">cy.get('input').type('{alt}这里是按了一下alt后输入的内容')</code></pre> 
 <p>还有长按键盘之类的操作,详细就看官网了这里之类奉上链<br>接<a href="https://docs.cypress.io/api/commands/type.html#Key-Combinations" rel="nofollow noreferrer">https://docs.cypress.io/api/commands/type.html#Key-Combinations</a></p> 
 <p>这里就是关于键盘的组合操作。</p> 
 <h4>对于选择例如 radio, checkbox</h4> 
 <p>这些就只需要利用点击事件即可,如下:</p> 
 <pre><code class="js">cy
  .get('input[type=radio]')
  .as('radio')
  .click()
cy.get('@radio').should('be.checked')</code></pre> 
 <h3>定时</h3> 
 <h4>cy.wait</h4> 
 <p>下面是等待 1s</p> 
 <pre><code class="js">cy.wait(1000)</code></pre> 
 <h4>cy.clock 和 cy.tick</h4> 
 <p>自己的代码:</p> 
 <pre><code class="js">var seconds = 0
setInterval(() => {
  $('#seconds-elapsed').text(++seconds + ' seconds')
}, 1000)</code></pre> 
 <p>测试代码</p> 
 <pre><code class="js">cy.clock()
cy.visit('/index.html')
cy.tick(1000)
cy.get('#seconds-elapsed').should('have.text', '1 seconds')
cy.tick(1000)
cy.get('#seconds-elapsed').should('have.text', '2 seconds')</code></pre> 
 <p><span class="img-wrap"><img alt="" title="" src="http://img.e-com-net.com/image/info9/c8c5ef555edf404db42fd78dc6a5d670.jpg" width="0" height="0"></span> 这里就会出现关于 clock 和 tick<br>的用法,更多用法看文档,我也有部分迷惑的。待后来再解决。老规矩文档地址:<br><a href="https://docs.cypress.io/api/commands/clock.html#Now" rel="nofollow noreferrer">地址</a></p> 
 <h3>关于 cypress 的配置</h3> 
 <p>先复制一段出来:</p> 
 <pre><code class="json">{
  "baseUrl": "http://localhost:8080",
  "pageLoadTimeout": 3000,
  "viewportHeight": 667,
  "viewportWidth": 375
}</code></pre> 
 <p>这是一个非常精简的配置了:</p> 
 <ul> 
  <li>baseUrl 基础链接,之后在是使用 cy.visit 的时候,只需要访问具体路由例如: cy.visit('/Hello')</li> 
  <li> <p>viewport 两个属性</p> 
   <ul> 
    <li>viewportHeight 测试窗口的高度</li> 
    <li>viewportWidth 测试窗口的宽度</li> 
   </ul> </li> 
  <li>pageLoadTimeout 页面家安在超过 3000ms 即为超时。</li> 
 </ul> 
 <h2>总结</h2> 
 <p>上面是 cypress 的基本用法,cypress 是基于 electron 的一个测试框架,提供 web 环境进行点对点的测试,在<br>programer 思维下,进行自动化的交互操作,必要点检测说明,这是一个非常棒的用处。例如之后拥有数据埋点,<br>可以在固定的位置检测是否有埋点。测试想要的地方是否匹配的数据。模拟用户的点击操作,这都是非常棒的。在<br>jquery 操作年代,各种 id 和 class 奇怪命名下,这些都可以容易找到,在 vue 和 react 大行其道的年代,但<br>是却可以通过文本寻找节点。这也是非常棒的体验,更多秘密需要去体验,奉上官方地址<br>:<a href="https://docs.cypress.io/" rel="nofollow noreferrer">官网 cypress</a></p> 
</article>
                            </div>
                        </div>
                    </div>
                    <!--PC和WAP自适应版-->
                    <div id="SOHUCS" sid="1297782662370500608"></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">你可能感兴趣的:(javascript,test,e2e)</h4>
        <div id="paradigm-article-related">
            <div class="recommend-post mb30">
                <ul class="widget-links">
                    <li><a href="/article/1950232820773351424.htm"
                           title="移动端城市区县二级联动选择功能实现包" target="_blank">移动端城市区县二级联动选择功能实现包</a>
                        <span class="text-muted">good2know</span>

                        <div>本文还有配套的精品资源,点击获取简介:本项目是一套为移动端设计的jQuery实现方案,用于简化用户在选择城市和区县时的流程。它包括所有必需文件:HTML、JavaScript、CSS及图片资源。通过动态更新下拉菜单选项,实现城市到区县的联动效果,支持数据异步加载。开发者可以轻松集成此功能到移动网站或应用,并可基于需求进行扩展和优化。1.jQuery移动端解决方案概述jQuery技术简介jQuery</div>
                    </li>
                    <li><a href="/article/1950202054706262016.htm"
                           title="centos7安装配置 Anaconda3" target="_blank">centos7安装配置 Anaconda3</a>
                        <span class="text-muted"></span>

                        <div>Anaconda是一个用于科学计算的Python发行版,Anaconda于Python,相当于centos于linux。下载[root@testsrc]#mwgethttps://mirrors.tuna.tsinghua.edu.cn/anaconda/archive/Anaconda3-5.2.0-Linux-x86_64.shBegintodownload:Anaconda3-5.2.0-L</div>
                    </li>
                    <li><a href="/article/1950200162810916864.htm"
                           title="Selenium基础教程" target="_blank">Selenium基础教程</a>
                        <span class="text-muted">lemontree1945</span>
<a class="tag" taget="_blank" href="/search/selenium/1.htm">selenium</a><a class="tag" taget="_blank" href="/search/python/1.htm">python</a><a class="tag" taget="_blank" href="/search/%E6%B5%8B%E8%AF%95%E5%B7%A5%E5%85%B7/1.htm">测试工具</a>
                        <div>1.Selenium环境安装1.1浏览器安装Chrome和ChromeDriver下载地址:https://googlechromelabs.github.io/chrome-for-testing/注意:驱动版本号要和浏览器版本号一致;安装后关闭浏览器自动更新:services.msc:打开系统服务找到和google相关的服务,全部修改为禁用1.2安装第三方库seleniumpipinstall</div>
                    </li>
                    <li><a href="/article/1950198522972270592.htm"
                           title="Java8 Stream流的sorted()的排序【正序、倒序、多字段排序】" target="_blank">Java8 Stream流的sorted()的排序【正序、倒序、多字段排序】</a>
                        <span class="text-muted">Tony666688888</span>
<a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/windows/1.htm">windows</a><a class="tag" taget="_blank" href="/search/%E5%BC%80%E5%8F%91%E8%AF%AD%E8%A8%80/1.htm">开发语言</a>
                        <div>针对集合排序,java8可以用Stream流的sorted()进行排序。示例Bean以下我们会使用这个Bean来做示例。publicclassOrder{privateStringweight;privateDoubleprice;privateStringdateStr;//忽略getter、setter、构造方法、toString}字段排序首先是比较器Comparator,形式如下:Compa</div>
                    </li>
                    <li><a href="/article/1950194742100815872.htm"
                           title="用代码生成艺术字:设计个性化海报的秘密" target="_blank">用代码生成艺术字:设计个性化海报的秘密</a>
                        <span class="text-muted"></span>

                        <div>本文围绕“用代码生成艺术字:设计个性化海报的秘密”展开,先概述代码生成艺术字在海报设计中的独特价值,接着介绍常用的代码工具(如HTML、CSS、JavaScript等),详细阐述从构思到实现的完整流程,包括字体样式设计、动态效果添加等,还分享了提升艺术字质感的技巧及实际案例。最后总结代码生成艺术字的优势,为设计师提供打造个性化海报的实用指南,助力提升海报设计的独特性与吸引力,符合搜索引擎SEO标准</div>
                    </li>
                    <li><a href="/article/1950170156898512896.htm"
                           title="登录功能详解" target="_blank">登录功能详解</a>
                        <span class="text-muted">开往1982</span>
<a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/%E7%99%BB%E5%BD%95/1.htm">登录</a><a class="tag" taget="_blank" href="/search/spring/1.htm">spring</a><a class="tag" taget="_blank" href="/search/boot/1.htm">boot</a>
                        <div>本项目由maven项目改造springboot项目导入依赖org.springframework.bootspring-boot-starter-parent2.7.6org.springframework.bootspring-boot-starter-web2.7.6org.springframework.bootspring-boot-starter-test2.7.5org.springf</div>
                    </li>
                    <li><a href="/article/1950151747829821440.htm"
                           title="2025最新Mybatis-plus教程(三)" target="_blank">2025最新Mybatis-plus教程(三)</a>
                        <span class="text-muted"></span>

                        <div>四、MyBatis-Plus条件构造器(一)条件构造器介绍在MyBatis-Plus中提了构造条件的类Wrapper,它可以根据自己的意图定义我们需要的条件。Wrapper是一个抽象类,一般情况下我们用它的子类QueryWrapper来实现自定义条件查询。(二)selectOne方法@TestpublicvoidtestSelectOne(){ QueryWrapperqueryWrapper=n</div>
                    </li>
                    <li><a href="/article/1950144218282389504.htm"
                           title="为什么学习Web前端一定要掌握JavaScript?" target="_blank">为什么学习Web前端一定要掌握JavaScript?</a>
                        <span class="text-muted">web前端学习指南</span>

                        <div>为什么学习Web前端一定要掌握JavaScript?在前端的世界里,没有什么是JavaScript实现不了的,关于JS有一句话:凡是可以用JavaScript来写的应用,最终都会用JavaScript,JavaScript可运行在所有主要平台的所有主流浏览器上,也可运行在每一个主流操作系统的服务器端上。现如今我们在为网站写任何一个主要功能的时候都需要有懂能够用JavaScript写前端的开发人员。</div>
                    </li>
                    <li><a href="/article/1950135734396579840.htm"
                           title="国产测试用例管理工具横向评测:DevOps时代如何选择最适合的协作平台?" target="_blank">国产测试用例管理工具横向评测:DevOps时代如何选择最适合的协作平台?</a>
                        <span class="text-muted">不念霉运</span>
<a class="tag" taget="_blank" href="/search/%E6%B5%8B%E8%AF%95%E7%94%A8%E4%BE%8B/1.htm">测试用例</a><a class="tag" taget="_blank" href="/search/devops/1.htm">devops</a><a class="tag" taget="_blank" href="/search/%E8%BF%90%E7%BB%B4/1.htm">运维</a>
                        <div>国产测试用例管理工具横向评测:DevOps时代如何选择最适合的协作平台?在数字化转型浪潮下,软件研发效能已成为企业核心竞争力。作为DevOps流程中的关键环节,测试用例管理工具的选择直接影响着团队的协作效率和产品质量。面对市场上琳琅满目的国产解决方案,研发团队该如何做出明智选择?GiteeTest:为敏捷团队打造的工程化测试管理利器GiteeTest凭借其"工程化"的用例管理理念,在敏捷开发场景中</div>
                    </li>
                    <li><a href="/article/1950130692448907264.htm"
                           title="Vue CSR 到 Nuxt 3 SSR 迁移:技术实现与问题解决实录" target="_blank">Vue CSR 到 Nuxt 3 SSR 迁移:技术实现与问题解决实录</a>
                        <span class="text-muted">二倍速播放</span>
<a class="tag" taget="_blank" href="/search/%E5%89%8D%E7%AB%AF/1.htm">前端</a><a class="tag" taget="_blank" href="/search/vue.js/1.htm">vue.js</a>
                        <div>1.迁移动机与技术选型1.1CSR架构的局限性基于Vue3和Vite构建的客户端渲染(CSR)单页应用(SPA)提供了良好的开发体验和用户交互流畅性。但是其核心局限在于:搜索引擎优化(SEO):初始HTML响应仅包含一个根div元素,实际内容由JavaScript在浏览器端动态生成。虽然主流搜索引擎(如Google)能够执行部分JavaScript,但其抓取效率和稳定性不如直接获取完整HTML。非</div>
                    </li>
                    <li><a href="/article/1950114810557427712.htm"
                           title="12. 什么是事件委托" target="_blank">12. 什么是事件委托</a>
                        <span class="text-muted">yqcoder</span>
<a class="tag" taget="_blank" href="/search/%E5%89%8D%E7%AB%AF%E9%9D%A2%E8%AF%95-CSS/1.htm">前端面试-CSS</a><a class="tag" taget="_blank" href="/search/css/1.htm">css</a><a class="tag" taget="_blank" href="/search/%E9%9D%A2%E8%AF%95/1.htm">面试</a>
                        <div>总结事件委托(EventDelegation)是JavaScript中一种重要的事件处理机制,它利用了事件冒泡的特性,将事件的处理程序绑定到父元素或祖先元素上,而不是直接绑定到具体的子元素上。什么是事件委托?事件冒泡:在DOM中,事件通常会从触发元素开始,然后逐级向上冒泡到其父元素、祖先元素,直到window对象。核心思想:事件委托的核心思想是利用事件冒泡机制,在父元素上监听事件,而不是在每个子元</div>
                    </li>
                    <li><a href="/article/1950114054009843712.htm"
                           title="三种接口实现增删改查" target="_blank">三种接口实现增删改查</a>
                        <span class="text-muted">灬爱码士灬</span>
<a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/java/1.htm">java</a>
                        <div>目录ArrayListHashSetHashMapArrayListArrayList实现增删改查packagetest;importjava.util.ArrayList;importjava.util.Iterator;/***@Author:Mo*@Date:2020/12/611:11*/publicclasslist{ArrayListlist1=newArrayList();publi</div>
                    </li>
                    <li><a href="/article/1950075480849838080.htm"
                           title="关于前端的性能优化" target="_blank">关于前端的性能优化</a>
                        <span class="text-muted"></span>

                        <div>性能优化主要涵盖了以下四个方面:(tip:仅代表个人总结,如有不当,还希望看到的大佬多多指示)减少网络请求:合并文件、使用CDN、启用缓存。优化资源加载:代码分割、懒加载、图片压缩。提升渲染性能:减少重绘回流、防抖节流、使用WebWorker。监控和迭代:定期使用工具检测性能,持续优化。一、网络层面优化减少HTTP请求合并文件:将多个CSS或JavaScript文件合并成一个,减少请求次数。使用C</div>
                    </li>
                    <li><a href="/article/1950074093608955904.htm"
                           title="时间组件库Day.js那些事" target="_blank">时间组件库Day.js那些事</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%BC%80%E5%8F%91%E8%AF%AD%E8%A8%80/1.htm">开发语言</a><a class="tag" taget="_blank" href="/search/ecmascript/1.htm">ecmascript</a>
                        <div>一、简介1.什么是Day.jsDay.js是一个轻量级,易于使用的JavaScript日期库,提供了强大的日期和时间处理功能,与Moment.js的API设计相似,但具有更高的性能和更小的体积。Day.js官网https://day.js.org/docs/zh-CN/installation/installation2.优势a.特点轻量级:Dayjs的压缩后大小只有2KB左右,远小于Moment</div>
                    </li>
                    <li><a href="/article/1950071066281963520.htm"
                           title="JavaScript正则表达式去除括号但保留内容与去除括号与内容" target="_blank">JavaScript正则表达式去除括号但保留内容与去除括号与内容</a>
                        <span class="text-muted">Selicens</span>
<a class="tag" taget="_blank" href="/search/javascript/1.htm">javascript</a><a class="tag" taget="_blank" href="/search/%E6%AD%A3%E5%88%99%E8%A1%A8%E8%BE%BE%E5%BC%8F/1.htm">正则表达式</a>
                        <div>项目上碰到一个需求,是取多个递增文件的文件名,类似于test(1).txt、test(2).txt,但是不需要括号,只要test1、test2这种格式,最开始想到的办法就是js里的replace替换,先上一个比较笨但是也能实现效果的例子letname="test(1).txt"letdata=name.split('.')[0].replace('(','').replace(')','')con</div>
                    </li>
                    <li><a href="/article/1950061236175564800.htm"
                           title="Spring学习笔记07——SpringBoot中关于接口文档管理的注解" target="_blank">Spring学习笔记07——SpringBoot中关于接口文档管理的注解</a>
                        <span class="text-muted">Shaoxi Zhang</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/%E5%AD%A6%E4%B9%A0/1.htm">学习</a><a class="tag" taget="_blank" href="/search/%E7%AC%94%E8%AE%B0/1.htm">笔记</a>
                        <div>一、Lombok注解@Data:生成所有字段的getter/setter、toString()、equals()和hashCode()。@Getter/@Setter:单独为所有字段或指定字段生成getter/setter。importlombok.Data;@DatapublicclassUser{privateLongid;privateStringname;}编译后,Lombok会为id和n</div>
                    </li>
                    <li><a href="/article/1950049760807284736.htm"
                           title="尚庭公寓-学习跟敲笔记(二)" target="_blank">尚庭公寓-学习跟敲笔记(二)</a>
                        <span class="text-muted">wenbinglin66</span>
<a class="tag" taget="_blank" href="/search/%E5%AD%A6%E4%B9%A0/1.htm">学习</a><a class="tag" taget="_blank" href="/search/%E7%AC%94%E8%AE%B0/1.htm">笔记</a><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/java/1.htm">java</a>
                        <div>管理端后端开发-租赁管理模块1.看房预约管理1.1根据ID更新预约状态在ViewAppointmenController中增加内容@Operation(summary="根据id更新预约状态")@PostMapping("updateStatusById")publicResultupdateStatusById(@RequestParamLongid,@RequestParamAppointme</div>
                    </li>
                    <li><a href="/article/1950049130671828992.htm"
                           title="目前有哪些好用的测试管理工具?" target="_blank">目前有哪些好用的测试管理工具?</a>
                        <span class="text-muted"></span>

                        <div>写好测试用例是做好测试的前提,写测试用例需要一个有用的测试管理工具。外国有几款不错的测试管理工具,因为服务器部署在国外,国内访问会比较卡,还有就是语言不是中文大家用起来比较困难,这里就不推荐大家使用。以下为大家推荐几款比较好用的国内测试管理工具。1.TestcenterTestCenter是一种面向测试流程的测试生命周期管理工具,它符合TMMI标准,可以快速建立完善的测试体系,规范测试流程,测试用</div>
                    </li>
                    <li><a href="/article/1950042324155297792.htm"
                           title="网络安全第14集" target="_blank">网络安全第14集</a>
                        <span class="text-muted">不灭锦鲤</span>
<a class="tag" taget="_blank" href="/search/web%E5%AE%89%E5%85%A8/1.htm">web安全</a><a class="tag" taget="_blank" href="/search/%E5%AE%89%E5%85%A8/1.htm">安全</a>
                        <div>前言:小迪安全14集,这集重点内容:0、什么是js渗透测试?在javascript中也存在变量和函数,存在可控变量和函数就有可能存在在漏洞,js开发的web应用和php、java开发的区别是,js能看得到的源代码,php看不到,但是风险就是未授权访问、配置信息泄露(加密算法、key秘钥等),源代码看得到,存在更多的url泄露,从而可能会出现未授权访问,从url,前提:web应用可以采用前端语言或后</div>
                    </li>
                    <li><a href="/article/1950040812469415936.htm"
                           title="25年不倒的“犀牛书“:为什么《JavaScript权威指南第7版》仍是程序员的案头圣经?" target="_blank">25年不倒的“犀牛书“:为什么《JavaScript权威指南第7版》仍是程序员的案头圣经?</a>
                        <span class="text-muted">阿蒙Armon</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/ecmascript/1.htm">ecmascript</a>
                        <div>25年不倒的"犀牛书":为什么《JavaScript权威指南第7版》仍是程序员的案头圣经?当一本技术书能连续畅销25年,历经7次迭代仍稳坐领域第一梯队,它必然藏着超越时代的硬实力。《JavaScript权威指南(原书第7版)》就是这样一部传奇——豆瓣9.4分的封神之作,程序员口中的"犀牛书",从网景时代到ES2020,它始终是JavaScript开发者的终极参考书。如果你还在为原型链、闭包、异步编</div>
                    </li>
                    <li><a href="/article/1950040686275391488.htm"
                           title="9种缺陷管理工具对比Bugzilla、testRail、TestLink、redmine、禅道、CODING、jira、TAPD、PingCode" target="_blank">9种缺陷管理工具对比Bugzilla、testRail、TestLink、redmine、禅道、CODING、jira、TAPD、PingCode</a>
                        <span class="text-muted">南方大媛子</span>
<a class="tag" taget="_blank" href="/search/%E6%B5%8B%E8%AF%95/1.htm">测试</a><a class="tag" taget="_blank" href="/search/%E6%B5%8B%E8%AF%95%E5%B7%A5%E5%85%B7/1.htm">测试工具</a><a class="tag" taget="_blank" href="/search/testlink/1.htm">testlink</a><a class="tag" taget="_blank" href="/search/redmine/1.htm">redmine</a><a class="tag" taget="_blank" href="/search/jira/1.htm">jira</a><a class="tag" taget="_blank" href="/search/pingcode/1.htm">pingcode</a>
                        <div>目录一、专业缺陷管理软件1.1Bugzilla1.2testRail1.3TestLink1.4redmine二、缺陷、项目、需求、研发代码综合管理软件2.1CODING2.2禅道2.3TAPD2.4jira2.5、pingCode##顺便提一嘴工具神不神,还得靠人。使用工具而不依赖工具,巴拉拉巴啦啦。。。。。本文对比了9种常用的缺陷管理软件,希望对你有帮助!一、专业缺陷管理软件1.1Bugzil</div>
                    </li>
                    <li><a href="/article/1950036519733489664.htm"
                           title="docker-基础入门" target="_blank">docker-基础入门</a>
                        <span class="text-muted"></span>

                        <div>docker入门dockers安装1.首先如果系统中已经存在旧的Docker,则先卸载:yumremovedocker\docker-client\docker-client-latest\docker-common\docker-latest\docker-latest-logrotate\docker-logrotate\docker-engine\docker-selinux2.配置Dock</div>
                    </li>
                    <li><a href="/article/1950023149726789632.htm"
                           title="oldguo-MySQL 8.0 OCP 原题解析-Q23" target="_blank">oldguo-MySQL 8.0 OCP 原题解析-Q23</a>
                        <span class="text-muted">MySQL_oldguo</span>

                        <div>Question23:Examinethecommand,whichexecutesuccessfully:shell>mysqld--initialize-insecureWhichstatementistrue?A)Theinstallationcreatesatemporarytestenvironmentwithdatainthe/tmpdirectory.B)Theinstallatio</div>
                    </li>
                    <li><a href="/article/1950013574671822848.htm"
                           title="在 Windows 系统 下直接使用了 Linux/macOS 的环境变量设置语法 PLATFORM=android" target="_blank">在 Windows 系统 下直接使用了 Linux/macOS 的环境变量设置语法 PLATFORM=android</a>
                        <span class="text-muted"></span>

                        <div>一、报错原因由于开发这个项目的同事,使用电脑的操作系统是macOS。所以才会出现这个错误,因为我是在Windows系统下直接使用了Linux/macOS的环境变量设置语法PLATFORM=android(项目根目录下的package.json文件,找到scripts部分,检查test:android的定义),而Windows不支持这种语法。二、解决方案cross-env是一个解决跨平台环境变量设置</div>
                    </li>
                    <li><a href="/article/1950011558918680576.htm"
                           title="Linux Shell 中~流程控制" target="_blank">Linux Shell 中~流程控制</a>
                        <span class="text-muted">光年像素</span>
<a class="tag" taget="_blank" href="/search/linux/1.htm">linux</a><a class="tag" taget="_blank" href="/search/linux/1.htm">linux</a>
                        <div>在LinuxShell中,流程控制是编写脚本的核心能力,用于根据条件执行不同操作(条件判断)、重复执行代码块(循环)或封装可复用功能(函数)。以下是详细讲解及示例:一、条件判断条件判断用于根据表达式的真假(0为真,非0为假)决定代码执行路径。Shell支持多种条件判断语法,适用场景不同。1.if[条件]与test命令if语句的基本结构,[条件]等价于test条件([是test的同义符号,需注意[后</div>
                    </li>
                    <li><a href="/article/1950004872845783040.htm"
                           title="[JAVAEE] Thymeleaf 基本语法: form相关标签" target="_blank">[JAVAEE] Thymeleaf 基本语法: form相关标签</a>
                        <span class="text-muted">CN-Dust</span>
<a class="tag" taget="_blank" href="/search/JAVA/1.htm">JAVA</a><a class="tag" taget="_blank" href="/search/EE/1.htm">EE</a><a class="tag" taget="_blank" href="/search/spring/1.htm">spring</a><a class="tag" taget="_blank" href="/search/java-ee/1.htm">java-ee</a>
                        <div>th:action指定表单提交地址th:value给value属性赋值th:field能自动生成id、name和value属性form表单示例运行结果更改数据点击保存控制器代码:TestController.javapackagecom.example.demo.controller;importcom.example.demo.bean.Student;importorg.springframe</div>
                    </li>
                    <li><a href="/article/1949996040778215424.htm"
                           title="Java设计模式-通俗举例" target="_blank">Java设计模式-通俗举例</a>
                        <span class="text-muted"></span>

                        <div>设计模式就像做菜的食谱,告诉我们遇到常见问题时该用什么"烹饪方法"。今天我就用最生活化的例子,带大家轻松掌握23种设计模式的精髓。一、创建型模式(5种):怎么"造东西"1.单例模式:公司的CEO问题:一个公司只需要一个CEO解决:publicclassCEO{privatestaticCEOinstance;privateCEO(){}//防止外部newpublicstaticCEOgetInst</div>
                    </li>
                    <li><a href="/article/1949995914462556160.htm"
                           title="什么是JSON,如何与Java对象转化" target="_blank">什么是JSON,如何与Java对象转化</a>
                        <span class="text-muted">doublez234</span>
<a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/json/1.htm">json</a><a class="tag" taget="_blank" href="/search/spring/1.htm">spring</a><a class="tag" taget="_blank" href="/search/spring/1.htm">spring</a><a class="tag" taget="_blank" href="/search/boot/1.htm">boot</a>
                        <div>JSON概念JSON(JavaScriptObjectNotation)是一种轻量级的数据交换格式。它易于人阅读和编写,同时也易于机器解析和生成。JSON基于JavaScript(ECMAScript(欧洲计算机协会制定的js规范))编程语言的一个子集,但它是一种独立于语言的数据格式,被广泛应用于各种编程语言和平台之间的数据交换。JSON的主要特点:轻量级:JSON格式非常简洁,只包含必要的数据信</div>
                    </li>
                    <li><a href="/article/1949975737893187584.htm"
                           title="MySQL--基础--1.2--命令--mysqldump" target="_blank">MySQL--基础--1.2--命令--mysqldump</a>
                        <span class="text-muted">勤径苦舟</span>
<a class="tag" taget="_blank" href="/search/mysql/1.htm">mysql</a><a class="tag" taget="_blank" href="/search/shell/1.htm">shell</a><a class="tag" taget="_blank" href="/search/linux/1.htm">linux</a><a class="tag" taget="_blank" href="/search/bash/1.htm">bash</a>
                        <div>MySQL–基础–1.2–命令–mysqldump1、数据库信息数据库地址:127.0.0.1数据库用户名:root数据库密码:1234数据库名称:test1数据库名称:test2数据库名称:test3mysqldump目录:/usr/bin/mysqldump备份目录:/root/db_back/2、命令mysqldump-h主机名-P端口-u用户名-p密码参数1,参数2....>备份文件.sq</div>
                    </li>
                    <li><a href="/article/1949975484238458880.htm"
                           title="APP开发入门:了解主流的编程语言" target="_blank">APP开发入门:了解主流的编程语言</a>
                        <span class="text-muted">agi大模型</span>
<a class="tag" taget="_blank" href="/search/Python/1.htm">Python</a><a class="tag" taget="_blank" href="/search/%E8%81%8C%E4%B8%9A%E4%B8%8E%E8%81%8C%E5%9C%BA/1.htm">职业与职场</a><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/%E5%BC%80%E5%8F%91%E8%AF%AD%E8%A8%80/1.htm">开发语言</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/%E7%BC%96%E7%A8%8B%E8%AF%AD%E8%A8%80/1.htm">编程语言</a>
                        <div>前言在过去的几年里,有许多程序员开始学习和使用编程语言。这其中包括C、C++、Java和Python。尽管有许多语言可供选择,但大多数程序员都会选择最容易学习的编程语言。如今,有很多编程语言供选择。程序员们在学习这些语言时可以自由地选择他们喜欢的方式,因为他们的目标是构建任何软件,而不仅仅是创建一个应用程序。你可以在Linux上学习C/C++、Java、Python、C#或JavaScript,你</div>
                    </li>
                                <li><a href="/article/107.htm"
                                       title="web报表工具FineReport常见的数据集报错错误代码和解释" target="_blank">web报表工具FineReport常见的数据集报错错误代码和解释</a>
                                    <span class="text-muted">老A不折腾</span>
<a class="tag" taget="_blank" href="/search/web%E6%8A%A5%E8%A1%A8/1.htm">web报表</a><a class="tag" taget="_blank" href="/search/finereport/1.htm">finereport</a><a class="tag" taget="_blank" href="/search/%E4%BB%A3%E7%A0%81/1.htm">代码</a><a class="tag" taget="_blank" href="/search/%E5%8F%AF%E8%A7%86%E5%8C%96%E5%B7%A5%E5%85%B7/1.htm">可视化工具</a>
                                    <div>在使用finereport制作报表,若预览发生错误,很多朋友便手忙脚乱不知所措了,其实没什么,只要看懂报错代码和含义,可以很快的排除错误,这里我就分享一下finereport的数据集报错错误代码和解释,如果有说的不准确的地方,也请各位小伙伴纠正一下。 
  
NS-war-remote=错误代码\:1117 压缩部署不支持远程设计 
NS_LayerReport_MultiDs=错误代码</div>
                                </li>
                                <li><a href="/article/234.htm"
                                       title="Java的WeakReference与WeakHashMap" target="_blank">Java的WeakReference与WeakHashMap</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/%E5%BC%B1%E5%BC%95%E7%94%A8/1.htm">弱引用</a>
                                    <div>首先看看 WeakReference 
 
wiki 上 Weak reference 的一个例子: 
 
 

	public class ReferenceTest {
	public static void main(String[] args) throws InterruptedException {
 
            WeakReference r = new Wea</div>
                                </li>
                                <li><a href="/article/361.htm"
                                       title="Linux——(hostname)主机名与ip的映射" target="_blank">Linux——(hostname)主机名与ip的映射</a>
                                    <span class="text-muted">eksliang</span>
<a class="tag" taget="_blank" href="/search/linux/1.htm">linux</a><a class="tag" taget="_blank" href="/search/hostname/1.htm">hostname</a>
                                    <div>一、 什么是主机名 
无论在局域网还是INTERNET上,每台主机都有一个IP地址,是为了区分此台主机和彼台主机,也就是说IP地址就是主机的门牌号。但IP地址不方便记忆,所以又有了域名。域名只是在公网(INtERNET)中存在,每个域名都对应一个IP地址,但一个IP地址可有对应多个域名。域名类型 linuxsir.org 这样的; 
主机名是用于什么的呢? 
答:在一个局域网中,每台机器都有一个主</div>
                                </li>
                                <li><a href="/article/488.htm"
                                       title="oracle 常用技巧" target="_blank">oracle 常用技巧</a>
                                    <span class="text-muted">18289753290</span>

                                    <div>oracle常用技巧   ①复制表结构和数据     create table  temp_clientloginUser   as     select distinct userid from tbusrtloginlog   ②仅复制数据   如果表结构一样   insert into  mytable  select  * &nb</div>
                                </li>
                                <li><a href="/article/615.htm"
                                       title="使用c3p0数据库连接池时出现com.mchange.v2.resourcepool.TimeoutException" target="_blank">使用c3p0数据库连接池时出现com.mchange.v2.resourcepool.TimeoutException</a>
                                    <span class="text-muted">酷的飞上天空</span>
<a class="tag" taget="_blank" href="/search/exception/1.htm">exception</a>
                                    <div>有一个线上环境使用的是c3p0数据库,为外部提供接口服务。最近访问压力增大后台tomcat的日志里面频繁出现 
com.mchange.v2.resourcepool.TimeoutException: A client timed out while waiting to acquire a resource from com.mchange.v2.resourcepool.BasicResou</div>
                                </li>
                                <li><a href="/article/742.htm"
                                       title="IT系统分析师如何学习大数据" target="_blank">IT系统分析师如何学习大数据</a>
                                    <span class="text-muted">蓝儿唯美</span>
<a class="tag" taget="_blank" href="/search/%E5%A4%A7%E6%95%B0%E6%8D%AE/1.htm">大数据</a>
                                    <div>我是一名从事大数据项目的IT系统分析师。在深入这个项目前需要了解些什么呢?学习大数据的最佳方法就是先从了解信息系统是如何工作着手,尤其是数据库和基础设施。同样在开始前还需要了解大数据工具,如Cloudera、Hadoop、Spark、Hive、Pig、Flume、Sqoop与Mesos。系 统分析师需要明白如何组织、管理和保护数据。在市面上有几十款数据管理产品可以用于管理数据。你的大数据数据库可能</div>
                                </li>
                                <li><a href="/article/869.htm"
                                       title="spring学习——简介" target="_blank">spring学习——简介</a>
                                    <span class="text-muted">a-john</span>
<a class="tag" taget="_blank" href="/search/spring/1.htm">spring</a>
                                    <div>Spring是一个开源框架,是为了解决企业应用开发的复杂性而创建的。Spring使用基本的JavaBean来完成以前只能由EJB完成的事情。然而Spring的用途不仅限于服务器端的开发,从简单性,可测试性和松耦合的角度而言,任何Java应用都可以从Spring中受益。其主要特征是依赖注入、AOP、持久化、事务、SpringMVC以及Acegi Security 
 
为了降低Java开发的复杂性,</div>
                                </li>
                                <li><a href="/article/996.htm"
                                       title="自定义颜色的xml文件" target="_blank">自定义颜色的xml文件</a>
                                    <span class="text-muted">aijuans</span>
<a class="tag" taget="_blank" href="/search/xml/1.htm">xml</a>
                                    <div><?xml version="1.0" encoding="utf-8"?> <resources> <color name="white">#FFFFFF</color> <color name="black">#000000</color> &</div>
                                </li>
                                <li><a href="/article/1123.htm"
                                       title="运营到底是做什么的?" target="_blank">运营到底是做什么的?</a>
                                    <span class="text-muted">aoyouzi</span>
<a class="tag" taget="_blank" href="/search/%E8%BF%90%E8%90%A5%E5%88%B0%E5%BA%95%E6%98%AF%E5%81%9A%E4%BB%80%E4%B9%88%E7%9A%84%EF%BC%9F/1.htm">运营到底是做什么的?</a>
                                    <div>文章来源:夏叔叔(微信号:woshixiashushu),欢迎大家关注!很久没有动笔写点东西,近些日子,由于爱狗团产品上线,不断面试,经常会被问道一个问题。问:爱狗团的运营主要做什么?答:带着用户一起嗨。为什么是带着用户玩起来呢?究竟什么是运营?运营到底是做什么的?那么,我们先来回答一个更简单的问题——互联网公司对运营考核什么?以爱狗团为例,绝大部分的移动互联网公司,对运营部门的考核分为三块——用</div>
                                </li>
                                <li><a href="/article/1250.htm"
                                       title="js面向对象类和对象" target="_blank">js面向对象类和对象</a>
                                    <span class="text-muted">百合不是茶</span>
<a class="tag" taget="_blank" href="/search/js/1.htm">js</a><a class="tag" taget="_blank" href="/search/%E9%9D%A2%E5%90%91%E5%AF%B9%E8%B1%A1/1.htm">面向对象</a><a class="tag" taget="_blank" href="/search/%E5%87%BD%E6%95%B0%E5%88%9B%E5%BB%BA%E7%B1%BB%E5%92%8C%E5%AF%B9%E8%B1%A1/1.htm">函数创建类和对象</a>
                                    <div>接触js已经有几个月了,但是对js的面向对象的一些概念根本就是模糊的,js是一种面向对象的语言 但又不像java一样有class,js不是严格的面向对象语言 ,js在java web开发的地位和java不相上下  ,其中web的数据的反馈现在主流的使用json,json的语法和js的类和属性的创建相似 
  
下面介绍一些js的类和对象的创建的技术 
  
一:类和对</div>
                                </li>
                                <li><a href="/article/1377.htm"
                                       title="web.xml之资源管理对象配置 resource-env-ref" target="_blank">web.xml之资源管理对象配置 resource-env-ref</a>
                                    <span class="text-muted">bijian1013</span>
<a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/web.xml/1.htm">web.xml</a><a class="tag" taget="_blank" href="/search/servlet/1.htm">servlet</a>
                                    <div>resource-env-ref元素来指定对管理对象的servlet引用的声明,该对象与servlet环境中的资源相关联 
<resource-env-ref>
    <resource-env-ref-name>资源名</resource-env-ref-name>
    <resource-env-ref-type>查找资源时返回的资源类</div>
                                </li>
                                <li><a href="/article/1504.htm"
                                       title="Create a composite component with a custom namespace" target="_blank">Create a composite component with a custom namespace</a>
                                    <span class="text-muted">sunjing</span>

                                    <div>https://weblogs.java.net/blog/mriem/archive/2013/11/22/jsf-tip-45-create-composite-component-custom-namespace 
  
When you developed a composite component the namespace you would be seeing would </div>
                                </li>
                                <li><a href="/article/1631.htm"
                                       title="【MongoDB学习笔记十二】Mongo副本集服务器角色之Arbiter" target="_blank">【MongoDB学习笔记十二】Mongo副本集服务器角色之Arbiter</a>
                                    <span class="text-muted">bit1129</span>
<a class="tag" taget="_blank" href="/search/mongodb/1.htm">mongodb</a>
                                    <div> 一、复本集为什么要加入Arbiter这个角色   回答这个问题,要从复本集的存活条件和Aribter服务器的特性两方面来说。   什么是Artiber?   An arbiter does 
not have a copy of data set and 
cannot become a primary. Replica sets may have arbiters to add a </div>
                                </li>
                                <li><a href="/article/1758.htm"
                                       title="Javascript开发笔记" target="_blank">Javascript开发笔记</a>
                                    <span class="text-muted">白糖_</span>
<a class="tag" taget="_blank" href="/search/JavaScript/1.htm">JavaScript</a>
                                    <div> 
 获取iframe内的元素 
 
通常我们使用window.frames["frameId"].document.getElementById("divId").innerHTML这样的形式来获取iframe内的元素,这种写法在IE、safari、chrome下都是通过的,唯独在fireforx下不通过。其实jquery的contents方法提供了对if</div>
                                </li>
                                <li><a href="/article/1885.htm"
                                       title="Web浏览器Chrome打开一段时间后,运行alert无效" target="_blank">Web浏览器Chrome打开一段时间后,运行alert无效</a>
                                    <span class="text-muted">bozch</span>
<a class="tag" taget="_blank" href="/search/Web/1.htm">Web</a><a class="tag" taget="_blank" href="/search/chorme/1.htm">chorme</a><a class="tag" taget="_blank" href="/search/alert/1.htm">alert</a><a class="tag" taget="_blank" href="/search/%E6%97%A0%E6%95%88/1.htm">无效</a>
                                    <div>今天在开发的时候,突然间发现alert在chrome浏览器就没法弹出了,很是怪异。 
试了试其他浏览器,发现都是没有问题的。 
开始想以为是chorme浏览器有啥机制导致的,就开始尝试各种代码让alert出来。尝试结果是仍然没有显示出来。 
这样开发的结果,如果客户在使用的时候没有提示,那会带来致命的体验。哎,没啥办法了 就关闭浏览器重启。 
  
结果就好了,这也太怪异了。难道是cho</div>
                                </li>
                                <li><a href="/article/2012.htm"
                                       title="编程之美-高效地安排会议 图着色问题 贪心算法" target="_blank">编程之美-高效地安排会议 图着色问题 贪心算法</a>
                                    <span class="text-muted">bylijinnan</span>
<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.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Random;

public class GraphColoringProblem {

	/**编程之美 高效地安排会议 图着色问题 贪心算法
	 * 假设要用很多个教室对一组</div>
                                </li>
                                <li><a href="/article/2139.htm"
                                       title="机器学习相关概念和开发工具" target="_blank">机器学习相关概念和开发工具</a>
                                    <span class="text-muted">chenbowen00</span>
<a class="tag" taget="_blank" href="/search/%E7%AE%97%E6%B3%95/1.htm">算法</a><a class="tag" taget="_blank" href="/search/matlab/1.htm">matlab</a><a class="tag" taget="_blank" href="/search/%E6%9C%BA%E5%99%A8%E5%AD%A6%E4%B9%A0/1.htm">机器学习</a>
                                    <div>基本概念: 
机器学习(Machine Learning, ML)是一门多领域交叉学科,涉及概率论、统计学、逼近论、凸分析、算法复杂度理论等多门学科。专门研究计算机怎样模拟或实现人类的学习行为,以获取新的知识或技能,重新组织已有的知识结构使之不断改善自身的性能。 
它是人工智能的核心,是使计算机具有智能的根本途径,其应用遍及人工智能的各个领域,它主要使用归纳、综合而不是演绎。 
 
开发工具 
M</div>
                                </li>
                                <li><a href="/article/2266.htm"
                                       title="[宇宙经济学]关于在太空建立永久定居点的可能性" target="_blank">[宇宙经济学]关于在太空建立永久定居点的可能性</a>
                                    <span class="text-muted">comsci</span>
<a class="tag" taget="_blank" href="/search/%E7%BB%8F%E6%B5%8E/1.htm">经济</a>
                                    <div> 
       大家都知道,地球上的房地产都比较昂贵,而且土地证经常会因为新的政府的意志而变幻文本格式........ 
 
       所以,在地球议会尚不具有在太空行使法律和权力的力量之前,我们外太阳系统的友好联盟可以考虑在地月系的某些引力平衡点上面,修建规模较大的定居点</div>
                                </li>
                                <li><a href="/article/2393.htm"
                                       title="oracle 11g database control 证书错误" target="_blank">oracle 11g database control 证书错误</a>
                                    <span class="text-muted">daizj</span>
<a class="tag" taget="_blank" href="/search/oracle/1.htm">oracle</a><a class="tag" taget="_blank" href="/search/%E8%AF%81%E4%B9%A6%E9%94%99%E8%AF%AF/1.htm">证书错误</a><a class="tag" taget="_blank" href="/search/oracle+11G+%E5%AE%89%E8%A3%85/1.htm">oracle 11G 安装</a>
                                    <div>oracle 11g database control 证书错误  
 
win7 安装完oracle11后打开 Database control 后,会打开em管理页面,提示证书错误,点“继续浏览此网站”,还是会继续停留在证书错误页面 
 
解决办法: 
 
是 KB2661254 这个更新补丁引起的,它限制了 RSA 密钥位长度少于 1024 位的证书的使用。具体可以看微软官方公告:</div>
                                </li>
                                <li><a href="/article/2520.htm"
                                       title="Java I/O之用FilenameFilter实现根据文件扩展名删除文件" target="_blank">Java I/O之用FilenameFilter实现根据文件扩展名删除文件</a>
                                    <span class="text-muted">游其是你</span>
<a class="tag" taget="_blank" href="/search/FilenameFilter/1.htm">FilenameFilter</a>
                                    <div>在Java中,你可以通过实现FilenameFilter类并重写accept(File dir, String name) 方法实现文件过滤功能。 
在这个例子中,我们向你展示在“c:\\folder”路径下列出所有“.txt”格式的文件并删除。        1   2   3   4   5   6   7   8   9   10   11   12   13   14   15   16 </div>
                                </li>
                                <li><a href="/article/2647.htm"
                                       title="C语言数组的简单以及一维数组的简单排序算法示例,二维数组简单示例" target="_blank">C语言数组的简单以及一维数组的简单排序算法示例,二维数组简单示例</a>
                                    <span class="text-muted">dcj3sjt126com</span>
<a class="tag" taget="_blank" href="/search/c/1.htm">c</a><a class="tag" taget="_blank" href="/search/array/1.htm">array</a>
                                    <div># include <stdio.h>

int main(void)
{
	
	int a[5] = {1, 2, 3, 4, 5};
		//a 是数组的名字 5是表示数组元素的个数,并且这五个元素分别用a[0], a[1]...a[4]
	
	int i;

	for (i=0; i<5; ++i)
		printf("%d\n",</div>
                                </li>
                                <li><a href="/article/2774.htm"
                                       title="PRIMARY, INDEX, UNIQUE 这3种是一类 PRIMARY 主键。 就是 唯一 且 不能为空。 INDEX 索引,普通的 UNIQUE 唯一索引" target="_blank">PRIMARY, INDEX, UNIQUE 这3种是一类 PRIMARY 主键。 就是 唯一 且 不能为空。 INDEX 索引,普通的 UNIQUE 唯一索引</a>
                                    <span class="text-muted">dcj3sjt126com</span>
<a class="tag" taget="_blank" href="/search/primary/1.htm">primary</a>
                                    <div>PRIMARY, INDEX, UNIQUE 这3种是一类PRIMARY 主键。 就是 唯一 且 不能为空。INDEX 索引,普通的UNIQUE 唯一索引。 不允许有重复。FULLTEXT 是全文索引,用于在一篇文章中,检索文本信息的。举个例子来说,比如你在为某商场做一个会员卡的系统。这个系统有一个会员表有下列字段:会员编号   INT会员姓名  </div>
                                </li>
                                <li><a href="/article/2901.htm"
                                       title="java集合辅助类 Collections、Arrays" target="_blank">java集合辅助类 Collections、Arrays</a>
                                    <span class="text-muted">shuizhaosi888</span>
<a class="tag" taget="_blank" href="/search/Collections/1.htm">Collections</a><a class="tag" taget="_blank" href="/search/Arrays/1.htm">Arrays</a><a class="tag" taget="_blank" href="/search/HashCode/1.htm">HashCode</a>
                                    <div>  
Arrays、Collections 
  
1 )数组集合之间转换 
    public static <T> List<T> asList(T... a) {
        return new ArrayList<>(a);
    } 
     a)Arrays.asL</div>
                                </li>
                                <li><a href="/article/3028.htm"
                                       title="Spring Security(10)——退出登录logout" target="_blank">Spring Security(10)——退出登录logout</a>
                                    <span class="text-muted">234390216</span>
<a class="tag" taget="_blank" href="/search/logout/1.htm">logout</a><a class="tag" taget="_blank" href="/search/Spring+Security/1.htm">Spring Security</a><a class="tag" taget="_blank" href="/search/%E9%80%80%E5%87%BA%E7%99%BB%E5%BD%95/1.htm">退出登录</a><a class="tag" taget="_blank" href="/search/logout-url/1.htm">logout-url</a><a class="tag" taget="_blank" href="/search/LogoutFilter/1.htm">LogoutFilter</a>
                                    <div>       要实现退出登录的功能我们需要在http元素下定义logout元素,这样Spring Security将自动为我们添加用于处理退出登录的过滤器LogoutFilter到FilterChain。当我们指定了http元素的auto-config属性为true时logout定义是会自动配置的,此时我们默认退出登录的URL为“/j_spring_secu</div>
                                </li>
                                <li><a href="/article/3155.htm"
                                       title="透过源码学前端 之 Backbone 三 Model" target="_blank">透过源码学前端 之 Backbone 三 Model</a>
                                    <span class="text-muted">逐行分析JS源代码</span>
<a class="tag" taget="_blank" href="/search/backbone/1.htm">backbone</a><a class="tag" taget="_blank" href="/search/%E6%BA%90%E7%A0%81%E5%88%86%E6%9E%90/1.htm">源码分析</a><a class="tag" taget="_blank" href="/search/js%E5%AD%A6%E4%B9%A0/1.htm">js学习</a>
                                    <div>Backbone 分析第三部分  Model 
概述: Model 提供了数据存储,将数据以JSON的形式保存在 Model的 attributes里, 
但重点功能在于其提供了一套功能强大,使用简单的存、取、删、改数据方法,并在不同的操作里加了相应的监听事件, 
如每次修改添加里都会触发 change,这在据模型变动来修改视图时很常用,并且与collection建立了关联。 </div>
                                </li>
                                <li><a href="/article/3282.htm"
                                       title="SpringMVC源码总结(七)mvc:annotation-driven中的HttpMessageConverter" target="_blank">SpringMVC源码总结(七)mvc:annotation-driven中的HttpMessageConverter</a>
                                    <span class="text-muted">乒乓狂魔</span>
<a class="tag" taget="_blank" href="/search/springMVC/1.htm">springMVC</a>
                                    <div>这一篇文章主要介绍下HttpMessageConverter整个注册过程包含自定义的HttpMessageConverter,然后对一些HttpMessageConverter进行具体介绍。 
 
HttpMessageConverter接口介绍: 
 

public interface HttpMessageConverter<T> {

	/**
	 * Indicate</div>
                                </li>
                                <li><a href="/article/3409.htm"
                                       title="分布式基础知识和算法理论" target="_blank">分布式基础知识和算法理论</a>
                                    <span class="text-muted">bluky999</span>
<a class="tag" taget="_blank" href="/search/%E7%AE%97%E6%B3%95/1.htm">算法</a><a class="tag" taget="_blank" href="/search/zookeeper/1.htm">zookeeper</a><a class="tag" taget="_blank" href="/search/%E5%88%86%E5%B8%83%E5%BC%8F/1.htm">分布式</a><a class="tag" taget="_blank" href="/search/%E4%B8%80%E8%87%B4%E6%80%A7%E5%93%88%E5%B8%8C/1.htm">一致性哈希</a><a class="tag" taget="_blank" href="/search/paxos/1.htm">paxos</a>
                                    <div>   
分布式基础知识和算法理论 
BY NODEXY@2014.8.12 
本文永久链接:http://nodex.iteye.com/blog/2103218 
  
在大数据的背景下,不管是做存储,做搜索,做数据分析,或者做产品或服务本身,面向互联网和移动互联网用户,已经不可避免地要面对分布式环境。笔者在此收录一些分布式相关的基础知识和算法理论介绍,在完善自我知识体系的同</div>
                                </li>
                                <li><a href="/article/3536.htm"
                                       title="Android Studio的.gitignore以及gitignore无效的解决" target="_blank">Android Studio的.gitignore以及gitignore无效的解决</a>
                                    <span class="text-muted">bell0901</span>
<a class="tag" taget="_blank" href="/search/android/1.htm">android</a><a class="tag" taget="_blank" href="/search/gitignore/1.htm">gitignore</a>
                                    <div>  github上.gitignore模板合集,里面有各种.gitignore : https://github.com/github/gitignore 
  自己用的Android Studio下项目的.gitignore文件,对github上的android.gitignore添加了 
      # OSX files      //mac os下      .DS_Store </div>
                                </li>
                                <li><a href="/article/3663.htm"
                                       title="成为高级程序员的10个步骤" target="_blank">成为高级程序员的10个步骤</a>
                                    <span class="text-muted">tomcat_oracle</span>
<a class="tag" taget="_blank" href="/search/%E7%BC%96%E7%A8%8B/1.htm">编程</a>
                                    <div>What 
软件工程师的职业生涯要历经以下几个阶段:初级、中级,最后才是高级。这篇文章主要是讲如何通过 10 个步骤助你成为一名高级软件工程师。 
  
Why 
 
  得到更多的报酬!因为你的薪水会随着你水平的提高而增加  
  提升你的职业生涯。成为了高级软件工程师之后,就可以朝着架构师、团队负责人、CTO 等职位前进  
  历经更大的挑战。随着你的成长,各种影响力也会提高。  </div>
                                </li>
                                <li><a href="/article/3790.htm"
                                       title="mongdb在linux下的安装" target="_blank">mongdb在linux下的安装</a>
                                    <span class="text-muted">xtuhcy</span>
<a class="tag" taget="_blank" href="/search/mongodb/1.htm">mongodb</a><a class="tag" taget="_blank" href="/search/linux/1.htm">linux</a>
                                    <div>一、查询linux版本号: 
lsb_release -a  
LSB Version:    :base-4.0-amd64:base-4.0-noarch:core-4.0-amd64:core-4.0-noarch:graphics-4.0-amd64:graphics-4.0-noarch:printing-4.0-amd64:printing-4.0-noa</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>