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

  <span class="hljs-comment">// Get DOM elements by id</span>
  cy.get(<span class="hljs-string">'#query-btn'</span>).should(<span class="hljs-string">'contain'</span>, <span class="hljs-string">'Button'</span>)

  <span class="hljs-comment">// Get DOM elements by class</span>
  cy.get(<span class="hljs-string">'.query-btn'</span>).should(<span class="hljs-string">'contain'</span>, <span class="hljs-string">'Button'</span>)

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

  <span class="hljs-comment">// Let's perform some actions on DOM elements</span>
  <span class="hljs-comment">// https://on.cypress.io/interacting-with-elements</span>

  it(<span class="hljs-string">'.type() - type into a DOM element'</span>, <span class="hljs-function"><span class="hljs-keyword">function</span><span class="hljs-params">()</span> {</span>
    <span class="hljs-comment">// https://on.cypress.io/type</span>
    cy
      .get(<span class="hljs-string">'.action-email'</span>)
      .type(<span class="hljs-string">'fake@email.com'</span>)
      .should(<span class="hljs-string">'have.value'</span>, <span class="hljs-string">'fake@email.com'</span>)

      <span class="hljs-comment">// .type() with special character sequences</span>
      .type(<span class="hljs-string">'{leftarrow}{rightarrow}{uparrow}{downarrow}'</span>)
      .type(<span class="hljs-string">'{del}{selectall}{backspace}'</span>)

      <span class="hljs-comment">// .type() with key modifiers</span>
      .type(<span class="hljs-string">'{alt}{option}'</span>) <span class="hljs-comment">//these are equivalent</span>
      .type(<span class="hljs-string">'{ctrl}{control}'</span>) <span class="hljs-comment">//these are equivalent</span>
      .type(<span class="hljs-string">'{meta}{command}{cmd}'</span>) <span class="hljs-comment">//these are equivalent</span>
      .type(<span class="hljs-string">'{shift}'</span>)

      <span class="hljs-comment">// Delay each keypress by 0.1 sec</span>
      .type(<span class="hljs-string">'slow.typing@email.com'</span>, { delay: <span class="hljs-number">100</span> })
      .should(<span class="hljs-string">'have.value'</span>, <span class="hljs-string">'slow.typing@email.com'</span>)

    cy
      .get(<span class="hljs-string">'.action-disabled'</span>)
      <span class="hljs-comment">// Ignore error checking prior to type</span>
      <span class="hljs-comment">// like whether the input is visible or disabled</span>
      .type(<span class="hljs-string">'disabled error checking'</span>, { force: <span class="hljs-literal">true</span> })
      .should(<span class="hljs-string">'have.value'</span>, <span class="hljs-string">'disabled error checking'</span>)
  })
})</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> 上api 文档</li> 
  </ul> 
  <h2 id="cypress-交互逻辑">cypress 交互逻辑</h2> 
  <p>既然要交互肯定需要点击输入滚动,可以还存在拖拽等等。咱们就暂时从输入开始说起啦</p> 
  <h3 id="cytype">cy.type</h3> 
  <p>这不是一个可以直接使用的方法,要配合<code>cy.get</code>使用的,作用是给空间进行输入。例如:</p> 
  <h4 id="测试输入例如-text-textarea">测试输入例如 text, textarea</h4> 
  <pre class="prettyprint"><code class="language-js hljs ">cy.get(<span class="hljs-string">'input'</span>).type(<span class="hljs-string">'hello world'</span>)</code></pre> 
  <h4 id="测试-tabindex">测试 tabIndex</h4> 
  <pre class="prettyprint"><code class="language-html hljs ">  <span class="hljs-tag"><<span class="hljs-title">div</span> <span class="hljs-attribute">class</span>=<span class="hljs-value">"el"</span> <span class="hljs-attribute">tabIndex</span>=<span class="hljs-value">"1"</span>></span>
    This is TabIndex div.
  <span class="hljs-tag"></<span class="hljs-title">div</span>></span></code></pre> 
  <pre class="prettyprint"><code class="language-js hljs ">cy.get(<span class="hljs-string">'.el'</span>).type(<span class="hljs-string">'laldkadaljdkljasf'</span>) <span class="hljs-comment">// 这个里面是随机字符串</span></code></pre> 
  <h4 id="测试-input-为日期的">测试 input 为日期的</h4> 
  <pre class="prettyprint"><code class="language-js hljs ">cy.get(<span class="hljs-string">'input[type=date]'</span>).type(<span class="hljs-string">'2008-8-9'</span>)</code></pre> 
  <h4 id="键盘绑定">键盘绑定</h4> 
  <p>下面直接是对 input 进行组合键盘操作</p> 
  <pre class="prettyprint"><code class="language-js hljs ">cy.get(<span class="hljs-string">'input'</span>).type(<span class="hljs-string">'{shift}{alt}Q'</span>)</code></pre> 
  <p>按住键盘操作</p> 
  <pre class="prettyprint"><code class="language-js hljs ">cy.get(<span class="hljs-string">'input'</span>).type(<span class="hljs-string">'{alt}这里是按了一下alt后输入的内容'</span>)</code></pre> 
  <p>还有长按键盘之类的操作,详细就看官网了这里之类奉上链 <br> 接https://docs.cypress.io/api/commands/type.html#Key-Combinations</p> 
  <p>这里就是关于键盘的组合操作。</p> 
  <h4 id="对于选择例如-radio-checkbox">对于选择例如 radio, checkbox</h4> 
  <p>这些就只需要利用点击事件即可,如下:</p> 
  <pre class="prettyprint"><code class="language-js hljs ">cy
  .get(<span class="hljs-string">'input[type=radio]'</span>)
  .as(<span class="hljs-string">'radio'</span>)
  .click()
cy.get(<span class="hljs-string">'@radio'</span>).should(<span class="hljs-string">'be.checked'</span>)</code></pre> 
  <h3 id="定时">定时</h3> 
  <h4 id="cywait">cy.wait</h4> 
  <p>下面是等待 1s</p> 
  <pre class="prettyprint"><code class="language-js hljs ">cy.wait(<span class="hljs-number">1000</span>)</code></pre> 
  <h4 id="cyclock-和-cytick">cy.clock 和 cy.tick</h4> 
  <p>自己的代码:</p> 
  <pre class="prettyprint"><code class="language-js hljs "><span class="hljs-keyword">var</span> seconds = <span class="hljs-number">0</span>
setInterval(() => {
  $(<span class="hljs-string">'#seconds-elapsed'</span>).text(++seconds + <span class="hljs-string">' seconds'</span>)
}, <span class="hljs-number">1000</span>)</code></pre> 
  <p>测试代码</p> 
  <pre class="prettyprint"><code class="language-js hljs ">cy.clock()
cy.visit(<span class="hljs-string">'/index.html'</span>)
cy.tick(<span class="hljs-number">1000</span>)
cy.get(<span class="hljs-string">'#seconds-elapsed'</span>).should(<span class="hljs-string">'have.text'</span>, <span class="hljs-string">'1 seconds'</span>)
cy.tick(<span class="hljs-number">1000</span>)
cy.get(<span class="hljs-string">'#seconds-elapsed'</span>).should(<span class="hljs-string">'have.text'</span>, <span class="hljs-string">'2 seconds'</span>)</code></pre> 
  <p> 这里就会出现关于 clock 和 tick <br> 的用法,更多用法看文档,我也有部分迷惑的。待后来再解决。老规矩文档地址: <br> 地址</p> 
  <h3 id="关于-cypress-的配置">关于 cypress 的配置</h3> 
  <p>先复制一段出来:</p> 
  <pre class="prettyprint"><code class="language-json hljs ">{
  "<span class="hljs-attribute">baseUrl</span>": <span class="hljs-value"><span class="hljs-string">"http://localhost:8080"</span></span>,
  "<span class="hljs-attribute">pageLoadTimeout</span>": <span class="hljs-value"><span class="hljs-number">3000</span></span>,
  "<span class="hljs-attribute">viewportHeight</span>": <span class="hljs-value"><span class="hljs-number">667</span></span>,
  "<span class="hljs-attribute">viewportWidth</span>": <span class="hljs-value"><span class="hljs-number">375</span>
</span>}</code></pre> 
  <p>这是一个非常精简的配置了:</p> 
  <ul> 
   <li>baseUrl 基础链接,之后在是使用 cy.visit 的时候,只需要访问具体路由例如: cy.visit(‘/Hello’)</li> 
   <li>viewport 两个属性 <br> 
    <ul> 
     <li>viewportHeight 测试窗口的高度</li> 
     <li>viewportWidth 测试窗口的宽度</li> 
    </ul></li> 
   <li>pageLoadTimeout 页面家安在超过 3000ms 即为超时。</li> 
  </ul> 
  <h2 id="总结">总结</h2> 
  <p>上面是 cypress 的基本用法,cypress 是基于 electron 的一个测试框架,提供 web 环境进行点对点的测试,在 <br> programer 思维下,进行自动化的交互操作,必要点检测说明,这是一个非常棒的用处。例如之后拥有数据埋点, <br> 可以在固定的位置检测是否有埋点。测试想要的地方是否匹配的数据。模拟用户的点击操作,这都是非常棒的。在 <br> jquery 操作年代,各种 id 和 class 奇怪命名下,这些都可以容易找到,在 vue 和 react 大行其道的年代,但 <br> 是却可以通过文本寻找节点。这也是非常棒的体验,更多秘密需要去体验,奉上官方地址 <br> :官网 cypress</p> 
 </div> 
</div>
                            </div>
                        </div>
                    </div>
                    <!--PC和WAP自适应版-->
                    <div id="SOHUCS" sid="1175214259039186944"></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,工具)</h4>
        <div id="paradigm-article-related">
            <div class="recommend-post mb30">
                <ul class="widget-links">
                    <li><a href="/article/1890064408730726400.htm"
                           title="JavaScript 中内存泄漏的几种情况是什么,如何避免?" target="_blank">JavaScript 中内存泄漏的几种情况是什么,如何避免?</a>
                        <span class="text-muted">程序员黄同学</span>
<a class="tag" taget="_blank" href="/search/%E5%89%8D%E7%AB%AF%E5%BC%80%E5%8F%91/1.htm">前端开发</a><a class="tag" taget="_blank" href="/search/JavaScript/1.htm">JavaScript</a><a class="tag" taget="_blank" href="/search/Java%E9%9D%A2%E8%AF%95%E9%A2%98/1.htm">Java面试题</a><a class="tag" taget="_blank" href="/search/javascript/1.htm">javascript</a><a class="tag" taget="_blank" href="/search/%E5%89%8D%E7%AB%AF/1.htm">前端</a><a class="tag" taget="_blank" href="/search/%E5%BC%80%E5%8F%91%E8%AF%AD%E8%A8%80/1.htm">开发语言</a>
                        <div>一、全局变量泄漏(高频考点)问题场景:未使用var/let/const声明变量,或意外挂载到window对象//错误示例(创建全局变量)functioninitData(){cache=newArray(1000000)//隐式全局变量}//正确方案(严格模式+局部变量)'usestrict'functionsafeInit(){constlocalCache=[]//局部变量自动回收}防御建议:</div>
                    </li>
                    <li><a href="/article/1890062140832804864.htm"
                           title="自定义公式校验规则、常用的JavaScript正则公式合法校验、自定义公式合集、前端校验规则、字符串校验" target="_blank">自定义公式校验规则、常用的JavaScript正则公式合法校验、自定义公式合集、前端校验规则、字符串校验</a>
                        <span class="text-muted">a_dream(前端)</span>
<a class="tag" taget="_blank" href="/search/%E5%89%8D%E7%AB%AF/1.htm">前端</a><a class="tag" taget="_blank" href="/search/javascript/1.htm">javascript</a><a class="tag" taget="_blank" href="/search/%E6%AD%A3%E5%88%99%E8%A1%A8%E8%BE%BE%E5%BC%8F/1.htm">正则表达式</a>
                        <div>vue开发中,会使用到自定义公式校验合法性,判断公式是否符合逻辑,整理个人使用过的自定义公式页面保存时对输入的字符串进行校验的一套规则(文章最后有完整代码)目录1.正则判断2.校验数字(输入数字不超过十位数,不超过两位小数)3.校验括号(嵌套括号是否符合要求)4.(完整代码文件)1.正则判断constre=/[^0-9\(\)\+\-\×\÷\.\#\{\}]{1,}///判断输入字符合法性的正则</div>
                    </li>
                    <li><a href="/article/1890053565217566720.htm"
                           title="MVC和react" target="_blank">MVC和react</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/css/1.htm">css</a><a class="tag" taget="_blank" href="/search/node.js/1.htm">node.js</a><a class="tag" taget="_blank" href="/search/html/1.htm">html</a>
                        <div>MVC1.MVC是一种使用MVC(ModelViewController模型-视图-控制器)设计创建Web应用程序的模式.(1)Model(模型)表示应用程序核心(比如数据库记录列表).(2)View(视图)显示数据(数据库记录).(3)Controller(控制器)处理输入(写入数据库记录).2.MVC模式同时提供了对HTML、CSS和JavaScript的完全控制.(1)Model(模式)是应</div>
                    </li>
                    <li><a href="/article/1890053058742775808.htm"
                           title="appium环境搭建" target="_blank">appium环境搭建</a>
                        <span class="text-muted">weixin_43516809</span>
<a class="tag" taget="_blank" href="/search/appium/1.htm">appium</a><a class="tag" taget="_blank" href="/search/appuim/1.htm">appuim</a>
                        <div>提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录前言记录手机自动化环境搭建学习过程一、jdk安装配置(省略)二、AndroidSDK安装配置三、python环境安装配置四、pycharm开发工具安装五、安装node.js六、appium安装1.安装2.检查appium环境是否搭建成功七、appium工作原理总结前言记录手机自动化环境搭建学习过程一、jdk安装配置(省略)cm</div>
                    </li>
                    <li><a href="/article/1890050030186852352.htm"
                           title="定了,2025年数据库运维就这样干" target="_blank">定了,2025年数据库运维就这样干</a>
                        <span class="text-muted">我科绝伦(Huanhuan Zhou)</span>
<a class="tag" taget="_blank" href="/search/mysql/1.htm">mysql</a><a class="tag" taget="_blank" href="/search/oracle/1.htm">oracle</a><a class="tag" taget="_blank" href="/search/%E6%95%B0%E6%8D%AE%E5%BA%93/1.htm">数据库</a><a class="tag" taget="_blank" href="/search/%E8%BF%90%E7%BB%B4/1.htm">运维</a><a class="tag" taget="_blank" href="/search/oracle/1.htm">oracle</a>
                        <div>在数字化浪潮中,数据库作为企业数据资产的核心载体,其稳定运行与高效管理至关重要。新的一年,为应对日益增长的数据量和业务复杂度,我们为数据库运维制定了一系列全面且细致的计划,旨在提升数据库性能、保障数据安全,为企业业务发展筑牢坚实基础。一、强化巡检,防患未然数据库的稳定运行离不开日常的精心呵护。2025年,我们将进一步加强巡检工作,利用专业工具和自主研发的系统,对数据库进行全面“体检”。不仅关注数据</div>
                    </li>
                    <li><a href="/article/1890049777240961024.htm"
                           title="利用IDEA将Java.class文件反编译为Java文件:原理、实践与深度解析" target="_blank">利用IDEA将Java.class文件反编译为Java文件:原理、实践与深度解析</a>
                        <span class="text-muted">.猫的树</span>
<a class="tag" taget="_blank" href="/search/Java%E5%8F%8D%E7%BC%96%E8%AF%91/1.htm">Java反编译</a><a class="tag" taget="_blank" href="/search/IDEA%E6%8A%80%E5%B7%A7/1.htm">IDEA技巧</a><a class="tag" taget="_blank" href="/search/%E9%80%86%E5%90%91%E5%B7%A5%E7%A8%8B/1.htm">逆向工程</a>
                        <div>文章目录引言:当.class文件遇到源代码缺失第一章:反编译技术基础认知1.1Java编译执行原理1.2反编译的本质1.3法律与道德边界第二章:IDEA内置反编译工具详解2.1环境准备2.2三步完成基础反编译2.3高级反编译技巧2.3.1调试模式反编译2.3.2Lambda表达式处理2.3.3泛型类型恢复第三章:Fernflower反编译引擎深度配置3.1引擎参数调优3.2多文件批量反编译3.3结</div>
                    </li>
                    <li><a href="/article/1890049777987547136.htm"
                           title="Python网络请求详解" target="_blank">Python网络请求详解</a>
                        <span class="text-muted">wespten</span>
<a class="tag" taget="_blank" href="/search/%E5%85%A8%E6%A0%88%E8%BD%AF%E4%BB%B6%E6%B5%8B%E8%AF%95/1.htm">全栈软件测试</a><a class="tag" taget="_blank" href="/search/%E4%BA%BA%E5%B7%A5%E6%99%BA%E8%83%BD%E6%B5%8B%E8%AF%95%E5%BC%80%E5%8F%91/1.htm">人工智能测试开发</a><a class="tag" taget="_blank" href="/search/%E8%87%AA%E5%8A%A8%E5%8C%96%E6%B5%8B%E8%AF%95/1.htm">自动化测试</a><a class="tag" taget="_blank" href="/search/%E6%80%A7%E8%83%BD%E6%B5%8B%E8%AF%95/1.htm">性能测试</a><a class="tag" taget="_blank" href="/search/%E8%BD%AF%E4%BB%B6%E6%B5%8B%E8%AF%95/1.htm">软件测试</a>
                        <div>一、网络请求测试人员对于接口测试的理解总是停留在工具使用层面。很多情况下,测试人员会花很大的代价去学习一个工具。而测试工具本身的局限性,又导致测试人员陷入想直接用现成的测试框架却又无法进行扩展的僵局。最后由于项目的特殊性等客观因素,测试人员只能放弃工具,脱离了工具的可视化界面友好操作,发现自己连接口是什么都不明白,更不要说自行完成接口自动化测试了。随即接口自动化测试由于项目成本及人员能力问题宣告失</div>
                    </li>
                    <li><a href="/article/1890048263835414528.htm"
                           title="deepseek和chatgpt对比" target="_blank">deepseek和chatgpt对比</a>
                        <span class="text-muted">dev.null</span>
<a class="tag" taget="_blank" href="/search/AI/1.htm">AI</a><a class="tag" taget="_blank" href="/search/%23/1.htm">#</a><a class="tag" taget="_blank" href="/search/NLP/1.htm">NLP</a><a class="tag" taget="_blank" href="/search/chatgpt/1.htm">chatgpt</a>
                        <div>DeepSeek和ChatGPT都是自然语言处理领域的工具,但它们的设计目标和功能有所不同。功能定位:ChatGPT是一个基于OpenAIGPT-3或GPT-4的聊天机器人,旨在进行人机对话、文本生成、问题解答等,广泛应用于教育、客服、创意写作等领域。它的核心功能是生成自然、流畅的对话内容,并能够处理各种复杂的语言任务。DeepSeek(假设你是指某种搜索引擎工具或者特定的语义分析工具)通常聚焦于</div>
                    </li>
                    <li><a href="/article/1890046246928838656.htm"
                           title="Sealos的k8s高可用集群搭建" target="_blank">Sealos的k8s高可用集群搭建</a>
                        <span class="text-muted">da pai ge</span>
<a class="tag" taget="_blank" href="/search/kubernetes/1.htm">kubernetes</a><a class="tag" taget="_blank" href="/search/%E5%AE%B9%E5%99%A8/1.htm">容器</a><a class="tag" taget="_blank" href="/search/%E4%BA%91%E5%8E%9F%E7%94%9F/1.htm">云原生</a>
                        <div>Sealos介绍](https://sealos.io/zh-Hans/docs/Intro)Sealos是一个Go语言开发的简单干净且轻量的Kubernetes集群部署工具,能很好的支持在生产环境中部署高可用的Kubernetes集群。Sealos特性与优势支持离线安装,工具与部署资源包分离,方便不同版本间快速升级。证书有效期默认延期至99年。工具使用非常简单。支持使用自定义配置文件,可灵活完成</div>
                    </li>
                    <li><a href="/article/1890045868359348224.htm"
                           title="新手必看:TikTok卖家中心实用指南,附2025最新TikTok入驻教程" target="_blank">新手必看:TikTok卖家中心实用指南,附2025最新TikTok入驻教程</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/%E7%BD%91%E7%BB%9C/1.htm">网络</a><a class="tag" taget="_blank" href="/search/%E5%A4%A7%E6%95%B0%E6%8D%AE/1.htm">大数据</a>
                        <div>对于跨境电商来说,TikTok卖家中心是一个强大的工具,它能够帮助卖家轻松管理产品、订单、数据和广告。然而,对于初次接触这个平台的卖家来说,如何入驻并高效使用,成为了一大难题。本篇文章将为您详细讲解TikTok卖家中心的使用方法及最新的入驻教程。一、入驻教程1.入驻前准备(1)TikTok的商业账号。(2)入驻材料:营业执照(或身份证明)、国际收款账户(如Payoneer)、物流和退货地址、产品清</div>
                    </li>
                    <li><a href="/article/1890042842684911616.htm"
                           title="Yocto 项目:嵌入式 Linux 生态的大统之战" target="_blank">Yocto 项目:嵌入式 Linux 生态的大统之战</a>
                        <span class="text-muted">嵌入式Jerry</span>
<a class="tag" taget="_blank" href="/search/Yocto/1.htm">Yocto</a><a class="tag" taget="_blank" href="/search/linux/1.htm">linux</a><a class="tag" taget="_blank" href="/search/%E8%BF%90%E7%BB%B4/1.htm">运维</a><a class="tag" taget="_blank" href="/search/%E6%9C%8D%E5%8A%A1%E5%99%A8/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%9E%B6%E6%9E%84/1.htm">架构</a><a class="tag" taget="_blank" href="/search/%E5%B5%8C%E5%85%A5%E5%BC%8F%E7%A1%AC%E4%BB%B6/1.htm">嵌入式硬件</a>
                        <div>一、引言嵌入式Linux生态一直以来呈现出高度碎片化的状态。不同厂商和行业根据各自的需求,采用不同的Linux发行版,导致软件兼容性问题、开发维护成本高企,以及生态难以整合。作为一款高度可定制化的嵌入式Linux构建工具,Yocto项目(YoctoProject)被认为是统一嵌入式Linux领域的潜在解决方案。然而,Yocto是否真的能够成为未来嵌入式Linux的主流标准?它目前面临哪些竞争对手?</div>
                    </li>
                    <li><a href="/article/1890023706491678720.htm"
                           title="软件工程中的认知负载管理:AI减负策略" target="_blank">软件工程中的认知负载管理:AI减负策略</a>
                        <span class="text-muted"></span>
<a class="tag" taget="_blank" href="/search/%E5%89%8D%E7%AB%AF/1.htm">前端</a>
                        <div>软件工程师的工作常常被描述为高压、高强度,这并非夸大其词。繁琐的重复性工作、陡峭的学习曲线、复杂的项目管理以及持续的技术迭代,都给开发者带来了巨大的认知负载。这种超负荷的状态不仅影响开发效率,更严重损害开发者的身心健康。幸运的是,AI写代码工具的兴起为我们提供了一种减轻认知负载,提升开发效率的有效途径。认知负载的来源与类型在软件开发过程中,认知负载的来源广泛且复杂。从需求分析阶段的理解偏差,到代码</div>
                    </li>
                    <li><a href="/article/1890023200637644800.htm"
                           title="AI前端开发对未来职业规划的影响:拥抱变化,迎接挑战" target="_blank">AI前端开发对未来职业规划的影响:拥抱变化,迎接挑战</a>
                        <span class="text-muted"></span>
<a class="tag" taget="_blank" href="/search/%E5%89%8D%E7%AB%AF/1.htm">前端</a>
                        <div>随着人工智能技术的飞速发展,AI写代码工具(以及其他AI代码生成工具)的兴起正在深刻地改变着前端开发领域。从简单的代码片段生成到复杂的页面布局设计,AI已经开始扮演越来越重要的角色。这不仅给前端开发带来了前所未有的效率提升,也对前端开发者的职业规划提出了新的挑战和机遇。本文将探讨AI前端开发的未来趋势,以及如何利用AI工具,例如ScriptEcho,来帮助前端开发者适应未来,在竞争激烈的市场中保持</div>
                    </li>
                    <li><a href="/article/1890023197999427584.htm"
                           title="AI前端开发与个人品牌打造:乘风破浪会有时,直挂云帆济沧海" target="_blank">AI前端开发与个人品牌打造:乘风破浪会有时,直挂云帆济沧海</a>
                        <span class="text-muted"></span>
<a class="tag" taget="_blank" href="/search/%E5%89%8D%E7%AB%AF/1.htm">前端</a>
                        <div>在数字化浪潮席卷全球的今天,前端开发领域正经历着前所未有的变革。得益于人工智能技术的快速发展,越来越多的AI写代码工具涌现,深刻地改变着前端开发的模式和效率。掌握AI前端开发技能,不仅能提升个人竞争力,更能助力个人品牌的打造,让你的职业生涯乘风破浪。AI前端开发技能如何提升个人竞争力在竞争日益激烈的IT行业,高效的开发能力是建立个人品牌的基础。而AI赋能的前端开发,正为开发者提供了前所未有的效率提</div>
                    </li>
                    <li><a href="/article/1890023199261913088.htm"
                           title="AI时代前端开发的学习能力:与时俱进的挑战与机遇" target="_blank">AI时代前端开发的学习能力:与时俱进的挑战与机遇</a>
                        <span class="text-muted"></span>
<a class="tag" taget="_blank" href="/search/%E5%89%8D%E7%AB%AF/1.htm">前端</a>
                        <div>在飞速发展的科技浪潮中,前端开发领域正经历着翻天覆地的变化。得益于AI写代码工具的兴起,低代码/无代码开发模式日益普及,各种新技术、新框架、新工具层出不穷,这无疑对前端工程师的学习能力提出了更高的要求。本文将探讨AI时代前端工程师所需的学习能力,以及如何应对这些挑战与机遇,最终在AI浪潮中立于不败之地。AI如何改变前端开发模式传统的软件开发流程往往需要大量的代码编写和调试,耗时费力。而AI的介入,</div>
                    </li>
                    <li><a href="/article/1890023184695095296.htm"
                           title="【2024年华为OD机试】 (C卷,200分)- 亲子游戏(JavaScript&Java & Python&C/C++)" target="_blank">【2024年华为OD机试】 (C卷,200分)- 亲子游戏(JavaScript&Java & Python&C/C++)</a>
                        <span class="text-muted">妄北y</span>
<a class="tag" taget="_blank" href="/search/%E7%AE%97%E6%B3%95%E6%B1%87%E9%9B%86%E7%AC%94%E8%AE%B0%E6%80%BB%E7%BB%93%28%E4%BF%9D%E5%A7%86%E7%BA%A7%29/1.htm">算法汇集笔记总结(保姆级)</a><a class="tag" taget="_blank" href="/search/%E5%8D%8E%E4%B8%BAod/1.htm">华为od</a><a class="tag" taget="_blank" href="/search/c%E8%AF%AD%E8%A8%80/1.htm">c语言</a><a class="tag" taget="_blank" href="/search/%E6%B8%B8%E6%88%8F/1.htm">游戏</a><a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/javascript/1.htm">javascript</a><a class="tag" taget="_blank" href="/search/%E7%9F%A9%E9%98%B5/1.htm">矩阵</a>
                        <div>一、问题描述宝宝和妈妈的糖果游戏问题题目描述在一个N×N的二维矩阵中,宝宝和妈妈分别用抽签决定自己的初始位置。每个格子可能有不同的糖果数量,同时部分格子有障碍物,妈妈需要遵循以下规则:妈妈必须在最短的时间内到达宝宝的位置(每单位时间只能移动一步)。妈妈沿路可以拾取格子上的糖果,糖果数量会累加。妈妈不能走障碍物的格子,只能上下左右移动。如果妈妈无法到达宝宝,则输出-1。输入格式:第一行输入为N,表示</div>
                    </li>
                    <li><a href="/article/1890023069599199232.htm"
                           title="AI时代前端开发:团队协作与AI代码生成工具的完美结合" target="_blank">AI时代前端开发:团队协作与AI代码生成工具的完美结合</a>
                        <span class="text-muted"></span>
<a class="tag" taget="_blank" href="/search/%E5%89%8D%E7%AB%AF/1.htm">前端</a>
                        <div>在AI时代,前端开发面临着前所未有的挑战。项目复杂度不断提升,交付速度要求越来越快,这给团队协作带来了巨大的压力。高效的团队协作不再是锦上添花,而是应对这些挑战的关键。而AI写代码工具的出现,正为前端团队带来一场效率革命,重塑着团队协作的新模式。AI时代前端开发的团队协作新模式传统的前端开发团队协作模式常常面临诸多痛点。沟通成本高是其中一个主要问题,开发人员、设计师和产品经理之间需要花费大量时间进</div>
                    </li>
                    <li><a href="/article/1890021925179158528.htm"
                           title="html+Canvas+js 实现 图片的剪裁效果" target="_blank">html+Canvas+js 实现 图片的剪裁效果</a>
                        <span class="text-muted">慕容屠苏</span>
<a class="tag" taget="_blank" href="/search/%E5%A4%A7%E5%89%8D%E7%AB%AF%E7%88%AC%E5%9D%91%E4%B9%8B%E8%B7%AF/1.htm">大前端爬坑之路</a>
                        <div>html+Canvas实现图片的剪裁效果开发过程中我们上传图片的时候,有时需要保证图片尺寸的统一,以避免以固定尺寸显示图片时会出现拉伸问题。这是就需要在上传之前对图片进行裁剪后再上传图片。我们裁剪图片将会用到canvas:canvas是HTML5中的一个新元素,这个元素可以通过JavaScript用来绘制图形。例如可以用它来画图、合成图象、做一些动画等。通常呢,我们在canvas上画图的方法是使用</div>
                    </li>
                    <li><a href="/article/1890021168061149184.htm"
                           title="XUnity.AutoTranslator 项目下载及安装教程" target="_blank">XUnity.AutoTranslator 项目下载及安装教程</a>
                        <span class="text-muted">奚龙韦Rhoda</span>

                        <div>XUnity.AutoTranslator项目下载及安装教程XUnity.AutoTranslator项目地址:https://gitcode.com/gh_mirrors/xu/XUnity.AutoTranslator1.项目介绍XUnity.AutoTranslator是一个用于自动翻译Unity游戏内容的插件。它支持多种翻译服务,并提供了手动翻译的工具。该插件适用于多种Unity游戏,并且</div>
                    </li>
                    <li><a href="/article/1890020915480162304.htm"
                           title="XUnity Auto Translator:游戏翻译的终极解决方案" target="_blank">XUnity Auto Translator:游戏翻译的终极解决方案</a>
                        <span class="text-muted">林泽炯</span>

                        <div>XUnityAutoTranslator:游戏翻译的终极解决方案XUnity.AutoTranslator项目地址:https://gitcode.com/gh_mirrors/xu/XUnity.AutoTranslator项目介绍XUnityAutoTranslator是一款专为Unity游戏设计的先进翻译插件,旨在自动翻译基于Unity引擎的游戏内容,同时也提供了手动翻译所需的工具。该插件能</div>
                    </li>
                    <li><a href="/article/1890020284363239424.htm"
                           title="DeepSeek使用手册,其中一份是清华大学出品" target="_blank">DeepSeek使用手册,其中一份是清华大学出品</a>
                        <span class="text-muted">cpa007</span>
<a class="tag" taget="_blank" href="/search/%E4%BA%91%E8%AE%A1%E7%AE%97/1.htm">云计算</a>
                        <div>自娶,。https://pan.quark.cn/s/d174471b17c0深入了解DeepSeek:从技术到应用一、DeepSeek是什么?DeepSeek(深度求索)是一款由杭州深度求索人工智能基础技术研究有限公司开发的人工智能平台,专注于提供高效易用的AI模型训练与推理能力。它既包含预训练大语言模型(如DeepSeek-R1系列),也提供配套工具链,助力开发者快速实现AI应用落地。二、De</div>
                    </li>
                    <li><a href="/article/1890017902313140224.htm"
                           title="获取 OpenAI o1-preview/o1-Mini API key 进行 API 调用的详细教程" target="_blank">获取 OpenAI o1-preview/o1-Mini API key 进行 API 调用的详细教程</a>
                        <span class="text-muted"></span>
<a class="tag" taget="_blank" href="/search/openaiapikey/1.htm">openaiapikey</a>
                        <div>如何使用OpenAI推理模型:o1-preview/o1-Mini模型的API调用在快速发展的人工智能领域,OpenAI推出了o1系列模型(草莓),包括o1-preview和o1-Mini。这些模型旨在执行复杂的推理任务,成为开发人员和研究人员的强大工具。本文将介绍如何使用这些模型进行API调用。1.openaiapikey获取首先,您需要一个OpenAIAPI密钥。您可以在OpenAI的官方网站</div>
                    </li>
                    <li><a href="/article/1890016757616275456.htm"
                           title="【Linux】cron计划任务定时执行命令" target="_blank">【Linux】cron计划任务定时执行命令</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><a class="tag" taget="_blank" href="/search/%E8%BF%90%E7%BB%B4/1.htm">运维</a><a class="tag" taget="_blank" href="/search/%E6%9C%8D%E5%8A%A1%E5%99%A8/1.htm">服务器</a>
                        <div>在Linux系统中,crontab是一种用于设置周期性执行任务的工具,通过编辑crontab文件,用户可以指定在特定时间自动运行命令或脚本。以下是关于crontab的详细介绍:1.crontab基本结构每个crontab任务由一行配置组成,格式为:*****command-to-execute五个时间字段依次表示:分钟(0-59)小时(0-23)日期(1-31)月份(1-12)星期(0-7,0和7</div>
                    </li>
                    <li><a href="/article/1890015875197628416.htm"
                           title="【Unity射击插件】Third Person Cover Shooter Template 快速制作带有掩体射击机制的第三人称射击游戏。" target="_blank">【Unity射击插件】Third Person Cover Shooter Template 快速制作带有掩体射击机制的第三人称射击游戏。</a>
                        <span class="text-muted">Unity游戏资源学习屋</span>
<a class="tag" taget="_blank" href="/search/Unity%E6%8F%92%E4%BB%B6/1.htm">Unity插件</a><a class="tag" taget="_blank" href="/search/Unity%E5%B0%84%E5%87%BB%E6%8F%92%E4%BB%B6/1.htm">Unity射击插件</a>
                        <div>ThirdPersonCoverShooterTemplate是一个用于Unity的插件,旨在帮助开发者快速制作带有掩体射击机制的第三人称射击游戏。这个模板为开发者提供了基础的系统和工具,便于实现游戏中的角色控制、战斗、掩体机制以及敌人AI行为。主要特点:第三人称角色控制器提供了基础的第三人称角色控制功能,包括角色移动、跳跃、旋转等。玩家可以流畅地操作角色。掩体系统玩家可以在游戏中自动与环境中的掩</div>
                    </li>
                    <li><a href="/article/1890015117844738048.htm"
                           title="python爬虫6个经典常用案例(完整代码)" target="_blank">python爬虫6个经典常用案例(完整代码)</a>
                        <span class="text-muted">小北画画</span>
<a class="tag" taget="_blank" href="/search/python/1.htm">python</a><a class="tag" taget="_blank" href="/search/%E7%88%AC%E8%99%AB/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/%E4%BA%BA%E5%B7%A5%E6%99%BA%E8%83%BD/1.htm">人工智能</a><a class="tag" taget="_blank" href="/search/pycharm/1.htm">pycharm</a>
                        <div>文章目录1.抓取静态网页内容2.抓取多个网页(分页)3.使用正则表达式提取数据4.处理动态内容(使用Selenium)5.抓取带有登录认证的网页6.使用Scrapy框架Python爬虫是一种强大的工具,可以用来从网页中提取数据。以下是六个常用的Python爬虫案例,涵盖了从简单的网页抓取到更复杂的动态内容抓取。1.抓取静态网页内容目标:抓取一个静态网页的内容,并提取其中的特定信息。示例:抓取一个新</div>
                    </li>
                    <li><a href="/article/1890012975088070656.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/c%E8%AF%AD%E8%A8%80/1.htm">c语言</a>
                        <div>在编程的世界里,代码的执行流程就像一场精心编排的舞蹈,而控制语句则是这场舞蹈的指挥棒。C语言提供了多种控制语句,帮助我们灵活地控制程序的执行路径。今天,就让我们深入探索这些强大的工具,包括条件判断语句、循环执行语句和转向语句,让它们成为你编程中的得力助手。一、条件判断语句:分岔路口的抉择1.1if语句if语句是最基本的条件判断语句,它根据条件的真假来决定是否执行某段代码。它的语法结构如下:cif(</div>
                    </li>
                    <li><a href="/article/1890010954939297792.htm"
                           title="【附源码】108个Python实战项目,练完能力飙升" target="_blank">【附源码】108个Python实战项目,练完能力飙升</a>
                        <span class="text-muted">小北画画</span>
<a class="tag" taget="_blank" href="/search/python/1.htm">python</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/pycharm/1.htm">pycharm</a><a class="tag" taget="_blank" href="/search/windows/1.htm">windows</a><a class="tag" taget="_blank" href="/search/%E4%BA%BA%E5%B7%A5%E6%99%BA%E8%83%BD/1.htm">人工智能</a>
                        <div>学Python不实战是万万不能的,在这里整理了108个Python实战项目列表,都有完整且详细的教程,分享给大家。1.Python图片转字符画2.200行Python代码实现204813.Python3实现火车票查询工具4.高德API+Python解决租房问题5.IPython3色情图片识别6.Python破解验证码7.Python实现简单的web服务器8.Ipygame开发打飞机游戏9.Djan</div>
                    </li>
                    <li><a href="/article/1890006545211650048.htm"
                           title="【一看就会】Autoware.universe的“规划”部分源码梳理【三十五】(motion_velocity_planner第四部分)" target="_blank">【一看就会】Autoware.universe的“规划”部分源码梳理【三十五】(motion_velocity_planner第四部分)</a>
                        <span class="text-muted">不断学习加努力</span>
<a class="tag" taget="_blank" href="/search/%E7%AE%97%E6%B3%95/1.htm">算法</a><a class="tag" taget="_blank" href="/search/%E8%87%AA%E5%8A%A8%E9%A9%BE%E9%A9%B6/1.htm">自动驾驶</a>
                        <div>文章目录前言四、autoware_motion_velocity_out_of_lane_module功能概述处理流程图输入输出关键算法实现主要参数配置安全参数速度参数检测参数工作流程各文件主要功能核心功能文件:工具类文件:源码注释calculate_slowdown_points.cppfilter_predicted_objects.cppfootprint.cppdebug.cpp总结前言书</div>
                    </li>
                    <li><a href="/article/1890004904680943616.htm"
                           title="javascript中Object对象常用方法总结" target="_blank">javascript中Object对象常用方法总结</a>
                        <span class="text-muted">善良的农场主</span>
<a class="tag" taget="_blank" href="/search/javascript/1.htm">javascript</a>
                        <div>1.Object.createObject.create的语法:Object.create(proto,[propertiesObject]),创建一个对象,新创建的对象的prototype指向第一个参数,第二个参数是为新创建对象添加属性proto是原型对象propertiesObject是属性的配置在详解Object.create之前,我们先回忆一下常用的创建对象的方法:1.{},2.newOb</div>
                    </li>
                    <li><a href="/article/1890003263378485248.htm"
                           title="机器人学(五):机器人工具坐标系标定" target="_blank">机器人学(五):机器人工具坐标系标定</a>
                        <span class="text-muted">巴普蒂斯塔</span>
<a class="tag" taget="_blank" href="/search/%E6%9C%BA%E5%99%A8%E4%BA%BA%E5%AD%A6/1.htm">机器人学</a><a class="tag" taget="_blank" href="/search/%E6%9C%BA%E5%99%A8%E4%BA%BA/1.htm">机器人</a><a class="tag" taget="_blank" href="/search/%E4%BA%BA%E5%B7%A5%E6%99%BA%E8%83%BD/1.htm">人工智能</a><a class="tag" taget="_blank" href="/search/%E6%A0%87%E5%AE%9A/1.htm">标定</a><a class="tag" taget="_blank" href="/search/%E5%9D%90%E6%A0%87%E7%B3%BB%E6%A0%87%E5%AE%9A/1.htm">坐标系标定</a><a class="tag" taget="_blank" href="/search/%E6%9C%BA%E6%A2%B0%E8%87%82/1.htm">机械臂</a>
                        <div>一、问题1.1工具坐标系的位置标定已知机械臂末端坐标系End相对于机械臂基坐标系Base的位姿关系可以实时测量得到,求机械臂末端连接的工具TCP相对于End坐标系的平移变换。1.2工具坐标系的姿态标定已知机械臂末端坐标系End相对于机械臂基坐标系Base的位姿关系</div>
                    </li>
                                <li><a href="/article/123.htm"
                                       title="js动画html标签(持续更新中)" target="_blank">js动画html标签(持续更新中)</a>
                                    <span class="text-muted">843977358</span>
<a class="tag" taget="_blank" href="/search/html/1.htm">html</a><a class="tag" taget="_blank" href="/search/js/1.htm">js</a><a class="tag" taget="_blank" href="/search/%E5%8A%A8%E7%94%BB/1.htm">动画</a><a class="tag" taget="_blank" href="/search/media/1.htm">media</a><a class="tag" taget="_blank" href="/search/opacity/1.htm">opacity</a>
                                    <div>1.jQuery 效果 - animate() 方法    改变 "div" 元素的高度:    $(".btn1").click(function(){      $("#box").animate({height:"300px</div>
                                </li>
                                <li><a href="/article/250.htm"
                                       title="springMVC学习笔记" target="_blank">springMVC学习笔记</a>
                                    <span class="text-muted">caoyong</span>
<a class="tag" taget="_blank" href="/search/springMVC/1.htm">springMVC</a>
                                    <div>1、搭建开发环境 
   a>、添加jar文件,在ioc所需jar包的基础上添加spring-web.jar,spring-webmvc.jar 
   b>、在web.xml中配置前端控制器 
      <servlet> 
    &nbs</div>
                                </li>
                                <li><a href="/article/377.htm"
                                       title="POI中设置Excel单元格格式" target="_blank">POI中设置Excel单元格格式</a>
                                    <span class="text-muted">107x</span>
<a class="tag" taget="_blank" href="/search/poi/1.htm">poi</a><a class="tag" taget="_blank" href="/search/style/1.htm">style</a><a class="tag" taget="_blank" href="/search/%E5%88%97%E5%AE%BD/1.htm">列宽</a><a class="tag" taget="_blank" href="/search/%E5%90%88%E5%B9%B6%E5%8D%95%E5%85%83%E6%A0%BC/1.htm">合并单元格</a><a class="tag" taget="_blank" href="/search/%E8%87%AA%E5%8A%A8%E6%8D%A2%E8%A1%8C/1.htm">自动换行</a>
                                    <div>引用:http://apps.hi.baidu.com/share/detail/17249059 
POI中可能会用到一些需要设置EXCEL单元格格式的操作小结: 
先获取工作薄对象: 
HSSFWorkbook wb = new HSSFWorkbook(); 
HSSFSheet sheet = wb.createSheet(); 
HSSFCellStyle setBorder = wb.</div>
                                </li>
                                <li><a href="/article/504.htm"
                                       title="jquery 获取A href 触发js方法的this参数 无效的情况" target="_blank">jquery 获取A href 触发js方法的this参数 无效的情况</a>
                                    <span class="text-muted">一炮送你回车库</span>
<a class="tag" taget="_blank" href="/search/jquery/1.htm">jquery</a>
                                    <div>html如下:  
<td class=\"bord-r-n bord-l-n c-333\"> 
<a class=\"table-icon edit\" onclick=\"editTrValues(this);\">修改</a> 
</td>" 
  
j</div>
                                </li>
                                <li><a href="/article/631.htm"
                                       title="md5" target="_blank">md5</a>
                                    <span class="text-muted">3213213333332132</span>
<a class="tag" taget="_blank" href="/search/MD5/1.htm">MD5</a>
                                    <div>
import java.security.MessageDigest;  
import java.security.NoSuchAlgorithmException;  
  
public class MDFive {  
    public static void main(String[] args) {  
        String md5Str = "cq</div>
                                </li>
                                <li><a href="/article/758.htm"
                                       title="完全卸载干净Oracle11g" target="_blank">完全卸载干净Oracle11g</a>
                                    <span class="text-muted">sophia天雪</span>
<a class="tag" taget="_blank" href="/search/orale%E6%95%B0%E6%8D%AE%E5%BA%93/1.htm">orale数据库</a><a class="tag" taget="_blank" href="/search/%E5%8D%B8%E8%BD%BD%E5%B9%B2%E5%87%80/1.htm">卸载干净</a><a class="tag" taget="_blank" href="/search/%E6%B8%85%E7%90%86%E6%B3%A8%E5%86%8C%E8%A1%A8/1.htm">清理注册表</a>
                                    <div>完全卸载干净Oracle11g 
A、存在OUI卸载工具的情况下: 
    第一步:停用所有Oracle相关的已启动的服务; 
    第二步:找到OUI卸载工具:在“开始”菜单中找到“oracle_OraDb11g_home”文件夹中 
        &</div>
                                </li>
                                <li><a href="/article/885.htm"
                                       title="apache 的access.log 日志文件太大如何解决" target="_blank">apache 的access.log 日志文件太大如何解决</a>
                                    <span class="text-muted">darkranger</span>
<a class="tag" taget="_blank" href="/search/apache/1.htm">apache</a>
                                    <div>CustomLog logs/access.log common  此写法导致日志数据一致自增变大。 
直接注释上面的语法 
#CustomLog logs/access.log common 
增加: 
CustomLog "|bin/rotatelogs.exe -l logs/access-%Y-%m-d.log </div>
                                </li>
                                <li><a href="/article/1012.htm"
                                       title="Hadoop单机模式环境搭建关键步骤" target="_blank">Hadoop单机模式环境搭建关键步骤</a>
                                    <span class="text-muted">aijuans</span>
<a class="tag" taget="_blank" href="/search/%E5%88%86%E5%B8%83%E5%BC%8F/1.htm">分布式</a>
                                    <div>        Hadoop环境需要sshd服务一直开启,故,在服务器上需要按照ssh服务,以Ubuntu Linux为例,按照ssh服务如下: 
sudo apt-get install ssh 
sudo apt-get install rsync 
编辑HADOOP_HOME/conf/hadoop-env.sh文件,将JAVA_HOME设置为Java</div>
                                </li>
                                <li><a href="/article/1139.htm"
                                       title="PL/SQL DEVELOPER 使用的一些技巧" target="_blank">PL/SQL DEVELOPER 使用的一些技巧</a>
                                    <span class="text-muted">atongyeye</span>
<a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/sql/1.htm">sql</a>
                                    <div>1 记住密码  
 
这是个有争议的功能,因为记住密码会给带来数据安全的问题。 但假如是开发用的库,密码甚至可以和用户名相同,每次输入密码实在没什么意义,可以考虑让PLSQL Developer记住密码。 位置:Tools菜单--Preferences--Oracle--Logon HIstory--Store with password 
 
 
2 特殊Copy  
 
在SQL Window</div>
                                </li>
                                <li><a href="/article/1266.htm"
                                       title="PHP:在对象上动态添加一个新的方法" target="_blank">PHP:在对象上动态添加一个新的方法</a>
                                    <span class="text-muted">bardo</span>
<a class="tag" taget="_blank" href="/search/%E6%96%B9%E6%B3%95/1.htm">方法</a><a class="tag" taget="_blank" href="/search/%E5%8A%A8%E6%80%81%E6%B7%BB%E5%8A%A0/1.htm">动态添加</a><a class="tag" taget="_blank" href="/search/%E9%97%AD%E5%8C%85/1.htm">闭包</a>
                                    <div>有关在一个对象上动态添加方法,如果你来自Ruby语言或您熟悉这门语言,你已经知道它是什么...... Ruby提供给你一种方式来获得一个instancied对象,并给这个对象添加一个额外的方法。 
  
好!不说Ruby了,让我们来谈谈PHP 
  
PHP未提供一个“标准的方式”做这样的事情,这也是没有核心的一部分... 
  
但无论如何,它并没有说我们不能做这样</div>
                                </li>
                                <li><a href="/article/1393.htm"
                                       title="ThreadLocal与线程安全" target="_blank">ThreadLocal与线程安全</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/java%E5%A4%9A%E7%BA%BF%E7%A8%8B/1.htm">java多线程</a><a class="tag" taget="_blank" href="/search/threadLocal/1.htm">threadLocal</a>
                                    <div>首先来看一下线程安全问题产生的两个前提条件:  
1.数据共享,多个线程访问同样的数据。  
2.共享数据是可变的,多个线程对访问的共享数据作出了修改。  
  
实例: 
        定义一个共享数据: 
public static int a = 0; 
        </div>
                                </li>
                                <li><a href="/article/1520.htm"
                                       title="Tomcat 架包冲突解决" target="_blank">Tomcat 架包冲突解决</a>
                                    <span class="text-muted">征客丶</span>
<a class="tag" taget="_blank" href="/search/tomcat/1.htm">tomcat</a><a class="tag" taget="_blank" href="/search/Web/1.htm">Web</a>
                                    <div>环境: 
Tomcat 7.0.6 
win7 x64 
 
错误表象:【我的冲突的架包是:catalina.jar 与 tomcat-catalina-7.0.61.jar 冲突,不知道其他架包冲突时是不是也报这个错误】 
严重: End event threw exception 
java.lang.NoSuchMethodException: org.apache.catalina.dep</div>
                                </li>
                                <li><a href="/article/1647.htm"
                                       title="【Scala三】分析Spark源代码总结的Scala语法一" target="_blank">【Scala三】分析Spark源代码总结的Scala语法一</a>
                                    <span class="text-muted">bit1129</span>
<a class="tag" taget="_blank" href="/search/scala/1.htm">scala</a>
                                    <div>Scala语法 1. classOf运算符 
Scala中的classOf[T]是一个class对象,等价于Java的T.class,比如classOf[TextInputFormat]等价于TextInputFormat.class 
   2. 方法默认值 
defaultMinPartitions就是一个默认值,类似C++的方法默认值 
  
  
 </div>
                                </li>
                                <li><a href="/article/1774.htm"
                                       title="java 线程池管理机制" target="_blank">java 线程池管理机制</a>
                                    <span class="text-muted">BlueSkator</span>
<a class="tag" taget="_blank" href="/search/java%E7%BA%BF%E7%A8%8B%E6%B1%A0/1.htm">java线程池</a><a class="tag" taget="_blank" href="/search/%E7%AE%A1%E7%90%86%E6%9C%BA%E5%88%B6/1.htm">管理机制</a>
                                    <div>编辑 
Add 
Tools 
  jdk线程池 
  
一、引言 
第一:降低资源消耗。通过重复利用已创建的线程降低线程创建和销毁造成的消耗。第二:提高响应速度。当任务到达时,任务可以不需要等到线程创建就能立即执行。第三:提高线程的可管理性。线程是稀缺资源,如果无限制的创建,不仅会消耗系统资源,还会降低系统的稳定性,使用线程池可以进行统一的分配,调优和监控。 
  </div>
                                </li>
                                <li><a href="/article/1901.htm"
                                       title="关于hql中使用本地sql函数的问题(问-答)" target="_blank">关于hql中使用本地sql函数的问题(问-答)</a>
                                    <span class="text-muted">BreakingBad</span>
<a class="tag" taget="_blank" href="/search/HQL/1.htm">HQL</a><a class="tag" taget="_blank" href="/search/%E5%AD%98%E5%82%A8%E5%87%BD%E6%95%B0/1.htm">存储函数</a>
                                    <div>转自于:http://www.iteye.com/problems/23775 
问: 
我在开发过程中,使用hql进行查询(mysql5)使用到了mysql自带的函数find_in_set()这个函数作为匹配字符串的来讲效率非常好,但是我直接把它写在hql语句里面(from ForumMemberInfo fm,ForumArea fa where find_in_set(fm.userId,f</div>
                                </li>
                                <li><a href="/article/2028.htm"
                                       title="读《研磨设计模式》-代码笔记-迭代器模式-Iterator" target="_blank">读《研磨设计模式》-代码笔记-迭代器模式-Iterator</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/%E8%AE%BE%E8%AE%A1%E6%A8%A1%E5%BC%8F/1.htm">设计模式</a>
                                    <div>声明: 本文只为方便我个人查阅和理解,详细的分析以及源代码请移步 原作者的博客http://chjavach.iteye.com/ 
 



import java.util.Arrays;
import java.util.List;

/**
 * Iterator模式提供一种方法顺序访问一个聚合对象中各个元素,而又不暴露该对象内部表示
 * 
 * 个人觉得,为了不暴露该</div>
                                </li>
                                <li><a href="/article/2155.htm"
                                       title="常用SQL" target="_blank">常用SQL</a>
                                    <span class="text-muted">chenjunt3</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><a class="tag" taget="_blank" href="/search/C%2B%2B/1.htm">C++</a><a class="tag" taget="_blank" href="/search/c/1.htm">c</a><a class="tag" taget="_blank" href="/search/C%23/1.htm">C#</a>
                                    <div>  
  
--NC建库
CREATE TABLESPACE NNC_DATA01 DATAFILE 'E:\oracle\product\10.2.0\oradata\orcl\nnc_data01.dbf' SIZE 500M AUTOEXTEND ON NEXT 50M EXTENT MANAGEMENT LOCAL UNIFORM SIZE 256K ;
CREATE TABLESPA</div>
                                </li>
                                <li><a href="/article/2282.htm"
                                       title="数学是科学技术的语言" target="_blank">数学是科学技术的语言</a>
                                    <span class="text-muted">comsci</span>
<a class="tag" taget="_blank" href="/search/%E5%B7%A5%E4%BD%9C/1.htm">工作</a><a class="tag" taget="_blank" href="/search/%E6%B4%BB%E5%8A%A8/1.htm">活动</a><a class="tag" taget="_blank" href="/search/%E9%A2%86%E5%9F%9F%E6%A8%A1%E5%9E%8B/1.htm">领域模型</a>
                                    <div>  从小学到大学都在学习数学,从小学开始了解数字的概念和背诵九九表到大学学习复变函数和离散数学,看起来好像掌握了这些数学知识,但是在工作中却很少真正用到这些知识,为什么? 
 
   最近在研究一种开源软件-CARROT2的源代码的时候,又一次感觉到数学在计算机技术中的不可动摇的基础作用,CARROT2是一种用于自动语言分类(聚类)的工具性软件,用JAVA语言编写,它</div>
                                </li>
                                <li><a href="/article/2409.htm"
                                       title="Linux系统手动安装rzsz 软件包" target="_blank">Linux系统手动安装rzsz 软件包</a>
                                    <span class="text-muted">daizj</span>
<a class="tag" taget="_blank" href="/search/linux/1.htm">linux</a><a class="tag" taget="_blank" href="/search/sz/1.htm">sz</a><a class="tag" taget="_blank" href="/search/rz/1.htm">rz</a>
                                    <div>1、下载软件 rzsz-3.34.tar.gz。登录linux,用命令 
 
wget http://freeware.sgi.com/source/rzsz/rzsz-3.48.tar.gz下载。 
 
2、解压 tar zxvf  rzsz-3.34.tar.gz 
 
3、安装  cd rzsz-3.34 ; make posix 。注意:这个软件安装与常规的GNU软件不</div>
                                </li>
                                <li><a href="/article/2536.htm"
                                       title="读源码之:ArrayBlockingQueue" target="_blank">读源码之:ArrayBlockingQueue</a>
                                    <span class="text-muted">dieslrae</span>
<a class="tag" taget="_blank" href="/search/java/1.htm">java</a>
                                    <div>    ArrayBlockingQueue是concurrent包提供的一个线程安全的队列,由一个数组来保存队列元素.通过 
takeIndex和 
putIndex来分别记录出队列和入队列的下标,以保证在出队列时 
不进行元素移动. 
 
 

//在出队列或者入队列的时候对takeIndex或者putIndex进行累加,如果已经到了数组末尾就又从0开始,保证数</div>
                                </li>
                                <li><a href="/article/2663.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>
                                    <div>枚举的定义 
# include <stdio.h>

enum WeekDay
{
	MonDay, TuesDay, WednesDay, ThursDay, FriDay, SaturDay, SunDay	
};

int main(void)
{	
	//int day;	//day定义成int类型不合适
	enum WeekDay day = Wedne</div>
                                </li>
                                <li><a href="/article/2790.htm"
                                       title="Vagrant 三种网络配置详解" target="_blank">Vagrant 三种网络配置详解</a>
                                    <span class="text-muted">dcj3sjt126com</span>
<a class="tag" taget="_blank" href="/search/vagrant/1.htm">vagrant</a>
                                    <div> 
 Forwarded port 
 Private network 
 Public network 
 
Vagrant 中一共有三种网络配置,下面我们将会详解三种网络配置各自优缺点。 
端口映射(Forwarded port),顾名思义是指把宿主计算机的端口映射到虚拟机的某一个端口上,访问宿主计算机端口时,请求实际是被转发到虚拟机上指定端口的。Vagrantfile中设定语法为:   
c</div>
                                </li>
                                <li><a href="/article/2917.htm"
                                       title="16.性能优化-完结" target="_blank">16.性能优化-完结</a>
                                    <span class="text-muted">frank1234</span>
<a class="tag" taget="_blank" href="/search/%E6%80%A7%E8%83%BD%E4%BC%98%E5%8C%96/1.htm">性能优化</a>
                                    <div>性能调优是一个宏大的工程,需要从宏观架构(比如拆分,冗余,读写分离,集群,缓存等), 软件设计(比如多线程并行化,选择合适的数据结构), 数据库设计层面(合理的表设计,汇总表,索引,分区,拆分,冗余等) 以及微观(软件的配置,SQL语句的编写,操作系统配置等)根据软件的应用场景做综合的考虑和权衡,并经验实际测试验证才能达到最优。 
 
性能水很深, 笔者经验尚浅 ,赶脚也就了解了点皮毛而已,我觉得</div>
                                </li>
                                <li><a href="/article/3044.htm"
                                       title="Word Search" target="_blank">Word Search</a>
                                    <span class="text-muted">hcx2013</span>
<a class="tag" taget="_blank" href="/search/search/1.htm">search</a>
                                    <div>Given a 2D board and a word, find if the word exists in the grid. 
The word can be constructed from letters of sequentially adjacent cell, where "adjacent" cells are those horizontally or ve</div>
                                </li>
                                <li><a href="/article/3171.htm"
                                       title="Spring4新特性——Web开发的增强" target="_blank">Spring4新特性——Web开发的增强</a>
                                    <span class="text-muted">jinnianshilongnian</span>
<a class="tag" taget="_blank" href="/search/spring/1.htm">spring</a><a class="tag" taget="_blank" href="/search/spring+mvc/1.htm">spring mvc</a><a class="tag" taget="_blank" href="/search/spring4/1.htm">spring4</a>
                                    <div>Spring4新特性——泛型限定式依赖注入 
Spring4新特性——核心容器的其他改进 
Spring4新特性——Web开发的增强 
Spring4新特性——集成Bean Validation 1.1(JSR-349)到SpringMVC  
Spring4新特性——Groovy Bean定义DSL 
Spring4新特性——更好的Java泛型操作API  
Spring4新</div>
                                </li>
                                <li><a href="/article/3298.htm"
                                       title="CentOS安装配置tengine并设置开机启动" target="_blank">CentOS安装配置tengine并设置开机启动</a>
                                    <span class="text-muted">liuxingguome</span>
<a class="tag" taget="_blank" href="/search/centos/1.htm">centos</a>
                                    <div>yum install gcc-c++  
yum install pcre pcre-devel  
yum install zlib zlib-devel  
yum install openssl openssl-devel 
 
Ubuntu上可以这样安装 
sudo aptitude install libdmalloc-dev libcurl4-opens</div>
                                </li>
                                <li><a href="/article/3425.htm"
                                       title="第14章 工具函数(上)" target="_blank">第14章 工具函数(上)</a>
                                    <span class="text-muted">onestopweb</span>
<a class="tag" taget="_blank" href="/search/%E5%87%BD%E6%95%B0/1.htm">函数</a>
                                    <div>index.html 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/</div>
                                </li>
                                <li><a href="/article/3552.htm"
                                       title="Xelsius 2008 and SAP BW at a glance" target="_blank">Xelsius 2008 and SAP BW at a glance</a>
                                    <span class="text-muted">blueoxygen</span>
<a class="tag" taget="_blank" href="/search/BO/1.htm">BO</a><a class="tag" taget="_blank" href="/search/Xelsius/1.htm">Xelsius</a>
                                    <div>Xelsius提供了丰富多样的数据连接方式,其中为SAP BW专属提供的是BICS。那么Xelsius的各种连接的优缺点比较以及Xelsius是如何直接连接到BEx Query的呢? 以下Wiki文章应该提供了全面的概览。 
  
http://wiki.sdn.sap.com/wiki/display/BOBJ/Xcelsius+2008+and+SAP+NetWeaver+BW+Co</div>
                                </li>
                                <li><a href="/article/3679.htm"
                                       title="oracle表空间相关" target="_blank">oracle表空间相关</a>
                                    <span class="text-muted">tongsh6</span>
<a class="tag" taget="_blank" href="/search/oracle/1.htm">oracle</a>
                                    <div>在oracle数据库中,一个用户对应一个表空间,当表空间不足时,可以采用增加表空间的数据文件容量,也可以增加数据文件,方法有如下几种: 
 
1.给表空间增加数据文件 
   ALTER TABLESPACE "表空间的名字" ADD DATAFILE 
   '表空间的数据文件路径' SIZE 50M; 
  &nb</div>
                                </li>
                                <li><a href="/article/3806.htm"
                                       title=".Net framework4.0安装失败" target="_blank">.Net framework4.0安装失败</a>
                                    <span class="text-muted">yangjuanjava</span>
<a class="tag" taget="_blank" href="/search/.net/1.htm">.net</a><a class="tag" taget="_blank" href="/search/windows/1.htm">windows</a>
                                    <div>上午的.net framework 4.0,各种失败,查了好多答案,各种不靠谱,最后终于找到答案了 
和Windows Update有关系,给目录名重命名一下再次安装,即安装成功了! 
下载地址:http://www.microsoft.com/en-us/download/details.aspx?id=17113 
方法: 
1.运行cmd,输入net stop WuAuServ 
2.点击开</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>