ASP+ 中的用户输入验证

下载 PDC_userinput.exe 示例文件 (44 KB)。

内容:

  • 简介
  • 问题
  • 目标
  • 解决方案概述
  • 客户机特性
  • 什么是验证器
  • 验证器演示
  • 并非自愿
  • 规则化
  • 逐一比较
  • 符合习惯
  • 尾声

简介

对用户输入进行验证是基于 Web 的应用程序中常见的情况。为了开发应用程序,开发人员经常在这项工作中花费大量的时间和编辑大量的代码,比我们希望的多得多。在 ASP+ 页面架构的构建过程中,努力使输入验证这一任务比以前更容易是很重要的。

问题

在 HTML 3.2中,验证数据是一个困难的过程。每次得到请求后,您需要编写代码来检查输入并向页面返回用户的错误,帮助用户正确填写验证窗体。对于最终用户、开发人员和服务器来说,这实在是一个繁杂的过程。

DTHML 和脚本语言使这一局面有所改善。它们在出现输入错误时可以立即反馈到用户,并在未改正前阻止用户发布页面。但是,这几乎不可能保证站点的每一个用户都拥有所需的脚本设计环境。这通常意味着,如果您要使用脚本改善网页的界面,就必须分别在客户机和服务器编写两次同样的验证逻辑,以防止无法执行客户机代码。

目标

对于验证,我们的目标是:

  • 为数据输入页面提供可以完成 90% 或更多典型验证任务的组件。

  • 让这些组件在新型浏览器上执行充分的基于脚本的验证,在需要时,这些浏览器可以有效地退回到纯 HTML 3.2 基于服务器的验证。

  • 提供一个灵活的 API,以便轻松完成组件未包括的任何验证任务。

我们访问了大量实际的网页来确定这些组件应该能够处理的场景。我们的目标是在今后的应用程序中极大地减少验证代码。

解决方案概述

验证器控件是此解决方案的主要部分。验证器是一个可视的 ASP+ 控件,它用来检查另一个控件的特定验证条件。它通常以一段文字的形式出现在用户面前,根据它正在检查的控件是否发生错误来显示或隐藏。它也可以是一幅图像,甚至也可以不可见,但仍然做有用的工作。有五种可以执行不同类型检查任务的验证器控件。

解决方案的另一个元素是 ValidationSummary 控件。大的数据输入页面通常有一块列出所有错误的区域。ValidationSummary 通过从页面上的验证器控件自动收集并生成其中的内容。

解决方案的最后一个元素是页面对象自身。它显示最重要的“IsValid”属性,可以在服务器代码中检查并确定用户输入是否正确。

客户机特性

大多数网站在服务器上执行验证检查,您无论如何都要为无脚本的客户机编写基于服务器的检查,因此很难判断是否要为所有胖客户机重写所有检查。

验证控件改变了这一切,因为几乎所有重复的逻辑都封装在控件中。如果一个使用 IE 4.0 或更新版本的客户机使用了您的页面,那么它可以执行与在服务器上相同的验证,而无需编写任何特殊的客户机脚本。

客户机端验证过程包括以下几个特性:

  • 错误信息会随着非法输入的键入或改正而立即出现或消失。这种即时反馈使改正错误输入变得更加容易。

  • 在客户机上有可检测到的错误时发生的“退回”可以得到避免,这节省了用户时间并减少了服务器上的点击次数。

  • 如果 ValidationSummary 检测到错误,它只是更新自己而不退回。

  • 如果有错误,ValidationSummary 可以选择向用户显示一个消息框。

  • 客户机逻辑完全包含在一个 JScript 库中, 因此不使用 ActiveX 组件或 Java 小程序。

  • 也可以选用 VBScript 来执行涉及本地化日期的检查和数字比较。

  • 在客户机上展示一个对象模型,以增强客户机端的验证和行为。

什么是验证器?

为了有效地使用验证器,给出其严格的定义是很有帮助的,让我们提炼一下以前给出的定义:

“验证是一个控件,它在一个输入控件中检查某种特定类型的错误条件,并显示该问题的说明。”

这是一个重要的定义,因为它意味着您经常需要为每个输入控件使用多个验证器控件。

例如,如果您要检查文本框中的用户输入是否为 (a) 非空,(b) 在特定范围中的合法日期,或 (c) 小于在另一文本输入控件中的日期,那么您可能要使用三个验证器。这也许显得有些繁琐,但请记住这对用户是有帮助的,对所有这些情况您可能要使用三种不同的文本说明。

下面列出几种不同的验证器:

RequiredFieldValidator 检查用户是否输入或选择了任何内容
RegularExpressionValidator 根据规则表达式检查用户输入。该过程允许进行许多种类的检查,可以用于邮政编码和电话号码等的检查。
CompareValidator 将输入控件与一个固定值或另一个输入控件进行比较。例如,它可以用在口令验证字段中。也可以用来比较输入的日期和数字。
RangeValidator 与 CompareValidator 非常相似, 只是它用来检查输入是否在两个值或其它输入控件的值之间。
CustomValidator 允许用户编写自己的代码以加入到验证框架中。

验证器演示

为了示范验证任务,我们将概要介绍向现有页面添加验证的过程。以下是一些必需条件的示例:

编写一个 Web 页面来收集新的用户 id 和口令。用户 id 必须包含 6-10 个字母字符,且必须是未使用的。口令必须包括 4-12 个字母,其中至少有一个数字和一个“@#$%^&*/”中的字符。用户必须再次输入口令以确保输入无误。

我将从一个 HTML 页面开始,该页面已做了最小程度的转换以适用于 ASP+ 页面框架。

转换页面的过程包括下述步骤:

  1. 将扩展后缀从“.html” 或“.asp” 转换为“.aspx”。

  2. 将窗体模板和所有输入标签改为“runat=server”。

  3. 使用“ID” 而不是“name”。

起始代码:



验证示例;/title>
</head>
<body>

<p>请输入新的用户 ID 和口令</p>
<form runat=server>
<table>
  <tr>
    <td>用户 ID </td>
    <td><input type=text runat=server id=txtName></td>
  </tr>
  <tr>
    <td>口令 </td>
    <td><input type=password runat=server id=txtPWord></td>
  </tr>
  <tr>
    <td>请重新输入口令 </td>
    <td><input type=password runat=server id=txtRePWord></td>
  </tr>
<table><br>
<input type=submit runat=server id=cmdSubmit value=Submit>
</form>

</body>
</html></code></pre> 
  <p>起始页:</p> 
  <p></p> 
  <h2>并非自愿</h2> 
  <p>我们首先要强制使所有字段都已填充。</p> 
  <p>在每一个字段前添加 RequiredFieldValidator。若输入字段为空,我们要在字段前显示一个星号(*),并在摘要区域报告文本错误。以下是向 User ID 字段添加 RequiredFieldValidator 控件的方法:</p> 
  <pre><code>   <tr>
    <td>
        <asp:RequiredFieldValidator runat=server 
            ControlToValidate=txtName
            ErrorMessage="需要用户 ID。"> *
        </asp:RequiredFieldValidator>
    </td>
    <td>User ID:</td>
    <td><input type=text runat=server id=txtName></td>
  </tr></code></pre> 
  <p>若输入为空,则在标签旁边显示 *。出错消息在摘要中报告。“ControlToValidate”属性指定了需要验证的控件 ID。最后一步是向页面顶部添加验证总结,如下所示:</p> 
  <pre><code><asp:ValidationSummary runat=server 
headerText=此页有错误:/>
</code></pre> 
  <p>该页面如下所示:</p> 
  <p></p> 
  <h2>规则化</h2> 
  <p>下一步我们需要强调用户 ID 和口令字段的要求。对这些字段,要使用 RegularExpressionValidator 控件。规则表达式在此类信息的简明表达检查中非常有效,这些信息还包括邮政编码、电话号码和电子邮件地址。</p> 
  <p>下面显示了如何指定对用户 ID 的限制: </p> 
  <pre><code>    <td>
      <input type=text runat=server id=txtName>
      <asp:RegularExpressionValidator runat=server 
            ControlToValidate="txtName" 
            ErrorMesage="口令必须由 6-10 个字母组成。"
            ValidationExpression="[a-zA-Z]{6,10}" />
    </td></code></pre> 
  <p>注意在本示例中,我们并没有指定标记内的任何内部内容。内部文本等同于控件的“文本属性”。如果它为空,出错信息将显示在控件所在的位置,同样它也出现在摘要中。</p> 
  <p>可以用下面两个验证器来检查口令。如果您使用了多个验证器,则只有它们全都匹配时,才可以认为输入是有效的。</p> 
  <pre><code>      <asp:RegularExpressionValidator runat=server display=dynamic
            ControlToValidate="txtPWord" 
            ErrorMessage="口令必须包含 @#$%^&*/ 中的一个。"
            ValidationExpression=".*[@#$%^&*/].*" />
      <asp:RegularExpressionValidator runat=server display=dynamic
            ControlToValidate="txtPWord" 
            ErrorMessage="口令必须是 4-12 个非空白字母。" 
            ValidationExpression="[/S{4,12}" /></code></pre> 
  <p>这是操作中带有表达式的窗体。</p> 
  <p></p> 
  <h2>逐一比较</h2> 
  <p>我们需要确认口令的重新输入字段与口令匹配。需要使用 CompareValidator 控件完成此操作。因为它能够同时处理两个输入控件。</p> 
  <pre><code>      <asp:CompareValidator runat=server
            ControlToValidate=txtRePWord
            ControlToCompare=txtPWord 
            ErrorMessage="口令不匹配。" /></code></pre> 
  <p>默认情况下,CompareValidator 只做简单的字符串匹配比较。如果需要,它可进行涉及日期和数字的更复杂的比较。</p> 
  <h2>符合习惯</h2> 
  <p>我们需要检查的最后一件事是名称尚未在假想的站点中使用。这要继续在服务器上查找一些数据。为了模拟此操作,我在服务器端的代码段中创建一个哑函数来检查第一个字符是否不是“a”。下面的 Visual Basic 函数在页面上定义:</p> 
  <pre><code>public function CheckID(source as Object, value as String) as Boolean
    return value.substring(0, 1).tolower() <> "a"
end function</code></pre> 
  <p>要调用这一函数,我将添加一个 CustomValidator,它用于调用开发者的代码来执行检查。以下是它的声明:</p> 
  <pre><code>      <asp:CustomValidator runat=server
            controltovalidate="txtName" 
            errormessage="ID 已经在使用。" 
            OnServerValidationFunction="CheckID" /></code></pre> 
  <p>它也可以调用客户机脚本中的定制函数,尽管如果它必须在数据库中查找值时这会不太实用。在有脚本的客户机上,在其它所有验证器先在客户机上执行检查后才允许提交。如果只在服务器上进行的检查检测到这样的错误,则会向用户返回页面指出这些错误。</p> 
  <h2>尾声</h2> 
  <p>现在,唯一剩下的事就是使用经过精细验证后的数据了。您需要做的只是检查页面的 IsValid 属性,判定是否可以进行数据库的更新。您提交的处理程序可能类似下面的形式:</p> 
  <pre><code>public sub OnSubmit(source as Object, e as EventArgs)
    if Page.IsValid then
        '现在我们可以执行事务。
    end if
end sub</code></pre> 
  <p>正如您所看到的那样, 该处理程序允许数据输入页包含特定于您应用程序的代码,而不是通篇代码都来处理一般的输入检查。</p> 
  <p>以下是关于最终活动页面的其它一些信息:</p> 
  <p></p> 
  <br> 
  <br> 
  <br>   
 </div> 
</div>
                            </div>
                        </div>
                    </div>
                    <!--PC和WAP自适应版-->
                    <div id="SOHUCS" sid="1274946769247027200"></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">你可能感兴趣的:(编程技术,asp,server,服务器,脚本,vbscript,任务)</h4>
        <div id="paradigm-article-related">
            <div class="recommend-post mb30">
                <ul class="widget-links">
                    <li><a href="/article/1891980743073132544.htm"
                           title="flink反压详解" target="_blank">flink反压详解</a>
                        <span class="text-muted">24k小善</span>
<a class="tag" taget="_blank" href="/search/flink/1.htm">flink</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%A4%A7%E6%95%B0%E6%8D%AE/1.htm">大数据</a><a class="tag" taget="_blank" href="/search/AI%E7%BC%96%E7%A8%8B/1.htm">AI编程</a>
                        <div>Flink背压/反压(Backpressure)详解在ApacheFlink中,背压(Backpressure)是一个常见的性能问题,通常表现为数据流在某些节点处积压,导致整体处理速度下降甚至停滞。背压的发生可能源于硬件资源限制、任务逻辑复杂性、数据分布不均或外部系统瓶颈等因素。本文将从多个角度详细讲解Flink的背压问题,包括其成因、影响以及解决方案。一、什么是Flink背压?背压是指在数据流处</div>
                    </li>
                    <li><a href="/article/1891979481380352000.htm"
                           title="十四、Flink源码阅读--JobGraph生成过程" target="_blank">十四、Flink源码阅读--JobGraph生成过程</a>
                        <span class="text-muted">灰二和杉菜</span>
<a class="tag" taget="_blank" href="/search/Apache/1.htm">Apache</a><a class="tag" taget="_blank" href="/search/Flink/1.htm">Flink</a><a class="tag" taget="_blank" href="/search/Flink/1.htm">Flink</a><a class="tag" taget="_blank" href="/search/JobGraph%E7%94%9F%E6%88%90%E6%BA%90%E7%A0%81%E5%88%86%E6%9E%90/1.htm">JobGraph生成源码分析</a>
                        <div>上篇分析了client整个提交任务过程,最终提交的是一个JobGraph对象,那么是如何从jar或sql任务转为JobGraph的呢,这篇我们仔细研究一下,版本为1.6.3源码分析上篇我们介绍client端提交任务最终会到到ClusterClient.run()方法,就在这个方法中封装了JobGraph的步骤。publicJobSubmissionResultrun(FlinkPlancompil</div>
                    </li>
                    <li><a href="/article/1891975952641093632.htm"
                           title="md2pptx 项目教程" target="_blank">md2pptx 项目教程</a>
                        <span class="text-muted">宣勇磊Tanya</span>

                        <div>md2pptx项目教程md2pptxMarkdownToPowerPointconverter项目地址:https://gitcode.com/gh_mirrors/md/md2pptx项目介绍md2pptx是一个用于将Markdown格式的幻灯片转换为PowerPoint文件的脚本。该项目旨在帮助用户恢复旧的教学材料,尽管目前功能较为基础,但仍有潜力进行进一步开发以提高实用性。项目快速启动安装首</div>
                    </li>
                    <li><a href="/article/1891973558817583104.htm"
                           title="小白也能安装:Ubuntu20.04 安装 RabbitMQ" target="_blank">小白也能安装:Ubuntu20.04 安装 RabbitMQ</a>
                        <span class="text-muted">Valishment</span>
<a class="tag" taget="_blank" href="/search/RabbitMQ/1.htm">RabbitMQ</a><a class="tag" taget="_blank" href="/search/ubuntu/1.htm">ubuntu</a><a class="tag" taget="_blank" href="/search/rabbitmq/1.htm">rabbitmq</a><a class="tag" taget="_blank" href="/search/linux/1.htm">linux</a><a class="tag" taget="_blank" href="/search/%E9%98%BF%E9%87%8C%E4%BA%91/1.htm">阿里云</a><a class="tag" taget="_blank" href="/search/java/1.htm">java</a>
                        <div>开始我使用的是阿里云的轻量级服务器Ubuntu20.04系统镜像作为平台因为要使用RabbitMQ,想着步骤有点繁琐,写篇记一记安装基本依赖项更新源sudoapt-getupdate-y下载签名密钥和软件包所需的先决条件sudoapt-getinstallcurlgnupgdebian-keyringdebian-archive-keyring-y添加存储库签名密钥(指示易于信任由该密钥签名的软件</div>
                    </li>
                    <li><a href="/article/1891973430962614272.htm"
                           title="ubuntu 安装rabbitmq" target="_blank">ubuntu 安装rabbitmq</a>
                        <span class="text-muted">Spmal</span>
<a class="tag" taget="_blank" href="/search/ubuntu/1.htm">ubuntu</a><a class="tag" taget="_blank" href="/search/linux/1.htm">linux</a><a class="tag" taget="_blank" href="/search/ruby/1.htm">ruby</a>
                        <div>1、更新系统包sudoapt-update2、安装sudoapt-getinstallrabbitmq-server3、启动sudosystemctlstartrabbitmq-server4、查看状态sudosystemctlstatusrabbitmq-server5、启动管理界面sudorabbitmq-pluginsenablerabbitmq_management6、创建用户sudora</div>
                    </li>
                    <li><a href="/article/1891972165155221504.htm"
                           title="ubuntu安装rabbitmq" target="_blank">ubuntu安装rabbitmq</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/%E5%AE%89%E8%A3%85%E6%95%99%E7%A8%8B/1.htm">安装教程</a><a class="tag" taget="_blank" href="/search/rabbitmq/1.htm">rabbitmq</a><a class="tag" taget="_blank" href="/search/ubuntu/1.htm">ubuntu</a><a class="tag" taget="_blank" href="/search/linux/1.htm">linux</a>
                        <div>1、安装erlang由于rabbitMq需要erlang语言的支持,在安装rabbitMq之前需要安装erlangsudoapt-getinstallerlang-nox2、安装Rabbitmq更新源sudoapt-getupdate安装sudoapt-getinstallrabbitmq-server启动、停止、重启、状态rabbitMq命令sudorabbitmq-serverstartsud</div>
                    </li>
                    <li><a href="/article/1891968639247118336.htm"
                           title="springcloud的组件及作用" target="_blank">springcloud的组件及作用</a>
                        <span class="text-muted">zzyh123456</span>
<a class="tag" taget="_blank" href="/search/spring/1.htm">spring</a><a class="tag" taget="_blank" href="/search/cloud/1.htm">cloud</a><a class="tag" taget="_blank" href="/search/spring/1.htm">spring</a><a class="tag" taget="_blank" href="/search/%E5%90%8E%E7%AB%AF/1.htm">后端</a>
                        <div>SpringCloud是一个用于构建分布式系统的工具集,它提供了一系列组件来简化微服务架构的开发和部署。以下是一些关键的SpringCloud组件及其作用:1.服务注册与发现Eureka:Eureka是SpringCloud中的核心组件之一,用于实现服务注册与发现。服务实例通过EurekaServer进行注册,消费者通过EurekaServer查询服务实例的地址,实现服务的自动发现和调用。Eure</div>
                    </li>
                    <li><a href="/article/1891967375822090240.htm"
                           title="微服务架构中的负载均衡与服务注册中心(Nacos)" target="_blank">微服务架构中的负载均衡与服务注册中心(Nacos)</a>
                        <span class="text-muted">ღ᭄ꦿ࿐Never say never꧂</span>
<a class="tag" taget="_blank" href="/search/%E5%BE%AE%E6%9C%8D%E5%8A%A1/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%BE%AE%E6%9C%8D%E5%8A%A1/1.htm">微服务</a><a class="tag" taget="_blank" href="/search/%E8%B4%9F%E8%BD%BD%E5%9D%87%E8%A1%A1/1.htm">负载均衡</a><a class="tag" taget="_blank" href="/search/spring/1.htm">spring</a><a class="tag" taget="_blank" href="/search/cloud/1.htm">cloud</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/%E5%90%8E%E7%AB%AF/1.htm">后端</a><a class="tag" taget="_blank" href="/search/java/1.htm">java</a>
                        <div>1.负载均衡:解决实际业务问题1.1业务场景思考想象一个电子商务平台的微服务架构。我们有一个订单服务和多个用户服务实例。当订单服务需要调用用户服务时,它如何选择具体调用哪一台用户服务器?这就是负载均衡要解决的核心问题。1.2常用负载均衡算法及其业务影响1.2.1轮询(RoundRobin)原理:请求依次分配给每个服务器。业务影响:优点:实现简单,在服务器性能相近的情况下能达到较好的负载平衡。缺点:</div>
                    </li>
                    <li><a href="/article/1891964093204590592.htm"
                           title="【rknn】onnx转rknn脚本解读以及函数解读(版本V1.7.3)" target="_blank">【rknn】onnx转rknn脚本解读以及函数解读(版本V1.7.3)</a>
                        <span class="text-muted">阿颖&阿伟</span>
<a class="tag" taget="_blank" href="/search/%E3%80%9011-1%E3%80%91rknn%E5%BC%80%E5%8F%91%E6%9D%BF/1.htm">【11-1】rknn开发板</a><a class="tag" taget="_blank" href="/search/rknn/1.htm">rknn</a><a class="tag" taget="_blank" href="/search/%E6%A8%A1%E5%9E%8B%E8%BD%AC%E6%8D%A2/1.htm">模型转换</a>
                        <div>目录1.RKNN()示例:2.rknn.config()batch_size:mean_values:std_values:channel_mean_value:epochs:reorder_channel:force_builtin_permneed_horizontal_merge:quantized_dtype:quantized_algorithmmmse_epoch:optimizati</div>
                    </li>
                    <li><a href="/article/1891961061465190400.htm"
                           title="RocketMQ七、rocketMQ的网络通信模块" target="_blank">RocketMQ七、rocketMQ的网络通信模块</a>
                        <span class="text-muted">vinylon1022</span>
<a class="tag" taget="_blank" href="/search/RocketMQ/1.htm">RocketMQ</a><a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/spring/1.htm">spring</a><a class="tag" taget="_blank" href="/search/cloud/1.htm">cloud</a><a class="tag" taget="_blank" href="/search/alibaba/1.htm">alibaba</a><a class="tag" taget="_blank" href="/search/RocketMQ/1.htm">RocketMQ</a>
                        <div>关于rocketMQ的netty消息处理,实际上都在一个rocketmq-remoting模块中。不管是nameserver还是broker,从netty的handler开始是统一的结构。我们先以nameserver部分的跟踪一下。前一篇看到过netty的启动,我们回过来再看一下:@Overridepublicvoidstart(){...prepareSharableHandlers();Ser</div>
                    </li>
                    <li><a href="/article/1891960555619545088.htm"
                           title="LVS 负载均衡-DR模式" target="_blank">LVS 负载均衡-DR模式</a>
                        <span class="text-muted">敢敢936</span>
<a class="tag" taget="_blank" href="/search/lvs/1.htm">lvs</a><a class="tag" taget="_blank" href="/search/%E8%B4%9F%E8%BD%BD%E5%9D%87%E8%A1%A1/1.htm">负载均衡</a><a class="tag" taget="_blank" href="/search/%E6%9C%8D%E5%8A%A1%E5%99%A8/1.htm">服务器</a>
                        <div>一.DR模式直接路由:1.介绍:直接路由(DirectRouting):简称DR模式,采用半开放式的网络结构,与TUN模式的结构类似,但各节点并不是分散在各地,而是与调度器位于同一个物理网络。负载调度器与各节点服务器通过本地网络连接,不需要建立专用的IP隧道。直接路由,LVS默认模式,应用最广泛,通过请求报文重新封装一个MAC首部进行转发,源MAC是DIP所在的接口的MAC,目标MAC是某挑选出的</div>
                    </li>
                    <li><a href="/article/1891959044302761984.htm"
                           title="微服务网关springcloud gateway整合nacos实现服务名负载均衡" target="_blank">微服务网关springcloud gateway整合nacos实现服务名负载均衡</a>
                        <span class="text-muted">程序猿20</span>
<a class="tag" taget="_blank" href="/search/%E5%BC%80%E5%8F%91%E6%A1%86%E6%9E%B6/1.htm">开发框架</a><a class="tag" taget="_blank" href="/search/%E5%BE%AE%E6%9C%8D%E5%8A%A1/1.htm">微服务</a><a class="tag" taget="_blank" href="/search/gateway/1.htm">gateway</a><a class="tag" taget="_blank" href="/search/%E8%B4%9F%E8%BD%BD%E5%9D%87%E8%A1%A1/1.htm">负载均衡</a><a class="tag" taget="_blank" href="/search/nacos/1.htm">nacos</a>
                        <div>1.添加依赖com.alibaba.cloudspring-cloud-starter-alibaba-nacos-discovery2.2.5.RELEASE2.添加配置spring:cloud:nacos:discovery:#服务注册地址server-addr:192.168.17.94:88483.将路由配置中的uri采用lb://服务名的形式进行配置spring:cloud:gatewa</div>
                    </li>
                    <li><a href="/article/1891958284798193664.htm"
                           title="AppData\Local\JetBrains\IntelliJIdea2023.1\compile-server“): CreateProcess error=2, 系统找不到指定的文件。" target="_blank">AppData\Local\JetBrains\IntelliJIdea2023.1\compile-server“): CreateProcess error=2, 系统找不到指定的文件。</a>
                        <span class="text-muted">fengdongnan</span>
<a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/python/1.htm">python</a><a class="tag" taget="_blank" href="/search/%E6%9C%8D%E5%8A%A1%E5%99%A8/1.htm">服务器</a>
                        <div>1.报错详情Cannotrunprogram"D:\Develop\JDK17\bin\java.exe"(indirectory"C:\Users\86137\AppData\Local\JetBrains\IntelliJIdea2023.1\compile-server"):CreateProcesserror=2,系统找不到指定的文件。更换idea版本后原来使用jdk1.8的项目在项目配置</div>
                    </li>
                    <li><a href="/article/1891957024644722688.htm"
                           title="线程池的相关问题解答 - 基于c老师" target="_blank">线程池的相关问题解答 - 基于c老师</a>
                        <span class="text-muted">amber66666!</span>
<a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/%E5%BC%80%E5%8F%91%E8%AF%AD%E8%A8%80/1.htm">开发语言</a>
                        <div>问题一:线程池的最大线程数包括在排队队列中的线程数量吗?还是只是指在运行的线程数答案是:不包括。线程池的最大线程数通常只包括正在运行的线程数,而不包括排队队列中的线程。线程池的基本工作原理•核心线程数(corepoolsize):线程池中维持的最小线程数,线程池启动时会创建这些线程。如果有任务提交,线程池会尽量使用这些线程来处理任务。•最大线程数(maximumpoolsize):线程池中最多允许</div>
                    </li>
                    <li><a href="/article/1891934961057984512.htm"
                           title="PaddleOCR面板恢复python脚本--针对pdf的面板恢复" target="_blank">PaddleOCR面板恢复python脚本--针对pdf的面板恢复</a>
                        <span class="text-muted">zsh669</span>
<a class="tag" taget="_blank" href="/search/paddlepaddle/1.htm">paddlepaddle</a><a class="tag" taget="_blank" href="/search/ocr/1.htm">ocr</a><a class="tag" taget="_blank" href="/search/%E7%99%BE%E5%BA%A6/1.htm">百度</a><a class="tag" taget="_blank" href="/search/python/1.htm">python</a><a class="tag" taget="_blank" href="/search/pdf/1.htm">pdf</a>
                        <div>问题在做一个项目的时候,使用PaddleOCR提供的模型,实现对图片或者pdf进行面板恢复,并保存为.docx文档。但是,官方的文档只提供了针对图片进行面板恢复的python脚本,没有提供pdf进行面板恢复的python脚本,官方只提供了pdf面板恢复的命令行使用方法,因此,我去看了PaddleOCR的源码,将命令行方法转换为python脚本准备工作环境配置和文档请参考:\ppstructure/</div>
                    </li>
                    <li><a href="/article/1891933698761224192.htm"
                           title="Postman接口测试工具详解" target="_blank">Postman接口测试工具详解</a>
                        <span class="text-muted">洛秋_</span>
<a class="tag" taget="_blank" href="/search/%E8%BD%AF%E4%BB%B6%E6%B5%8B%E8%AF%95/1.htm">软件测试</a><a class="tag" taget="_blank" href="/search/postman/1.htm">postman</a>
                        <div>文章目录Postman接口测试工具详解一、Postman简介二、安装与配置1.安装Postman2.配置Postman三、创建和管理请求1.创建请求2.配置请求3.添加请求参数四、发送请求与查看响应1.发送请求2.查看响应五、使用环境变量1.创建环境变量2.使用环境变量3.切换环境六、测试脚本和断言1.编写测试脚本2.使用Chai断言库七、集合与运行集合1.创建集合2.运行集合3.使用数据驱动测试</div>
                    </li>
                    <li><a href="/article/1891932310857641984.htm"
                           title="Python库 - transformers" target="_blank">Python库 - transformers</a>
                        <span class="text-muted">司南锤</span>
<a class="tag" taget="_blank" href="/search/PYTHON%E5%BA%93/1.htm">PYTHON库</a><a class="tag" taget="_blank" href="/search/python%E6%9C%BA%E5%99%A8%E5%AD%A6%E4%B9%A0/1.htm">python机器学习</a><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>
                        <div>transformers库是由HuggingFace开发的一个非常流行的Python库,用于自然语言处理(NLP)任务。它提供了大量的预训练模型,这些模型可以用于各种NLP任务,如文本分类、问答、翻译、摘要生成等。以下是关于transformers库的详细介绍:1.主要特点预训练模型:transformers库包含了多种预训练的语言模型,如BERT、GPT、T5、XLNet等。这些模型在大规模文本</div>
                    </li>
                    <li><a href="/article/1891931552636530688.htm"
                           title="线程池处理异常" target="_blank">线程池处理异常</a>
                        <span class="text-muted">NaughtyBo</span>
<a class="tag" taget="_blank" href="/search/%23/1.htm">#</a><a class="tag" taget="_blank" href="/search/%E5%B9%B6%E5%8F%91/1.htm">并发</a><a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/android/1.htm">android</a><a class="tag" taget="_blank" href="/search/%E5%BC%80%E5%8F%91%E8%AF%AD%E8%A8%80/1.htm">开发语言</a>
                        <div>线程池在提交的任务在处理过程中发生了异常,却没有捕获到,导致异常只是输出在控制台,这通常需要把异常记录下来1、通过观察ThreadGroup的构造方法知道,当调用线程组的构造方法时,会获取当前线程所属的线程组,作为当前正在创建的线程组的parent线程组。2、通过在main方法中获取线程组信息可知,当前main线程所属的线程组是main线程组,而main线程组的parent线程组是system线程</div>
                    </li>
                    <li><a href="/article/1891930671186767872.htm"
                           title="利用 OpenCV 进行棋盘检测与透视变换" target="_blank">利用 OpenCV 进行棋盘检测与透视变换</a>
                        <span class="text-muted">萧鼎</span>
<a class="tag" taget="_blank" href="/search/python%E5%9F%BA%E7%A1%80%E5%88%B0%E8%BF%9B%E9%98%B6%E6%95%99%E7%A8%8B/1.htm">python基础到进阶教程</a><a class="tag" taget="_blank" href="/search/opencv/1.htm">opencv</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/%E8%AE%A1%E7%AE%97%E6%9C%BA%E8%A7%86%E8%A7%89/1.htm">计算机视觉</a>
                        <div>利用OpenCV进行棋盘检测与透视变换1.引言在计算机视觉领域,棋盘检测与透视变换是一个常见的任务,广泛应用于摄像机标定、文档扫描、增强现实(AR)等场景。本篇文章将详细介绍如何使用OpenCV进行棋盘检测,并通过透视变换将棋盘区域转换为一个标准的矩形图像。我们将基于一段Python代码进行分析,代码的主要任务包括:读取图像并进行预处理(灰度转换、自适应直方图均衡化、去噪)检测边缘并提取棋盘区域计</div>
                    </li>
                    <li><a href="/article/1891928648550772736.htm"
                           title="对换脸、动嘴生成的视频做初筛" target="_blank">对换脸、动嘴生成的视频做初筛</a>
                        <span class="text-muted">之群害马</span>
<a class="tag" taget="_blank" href="/search/%E9%9F%B3%E8%A7%86%E9%A2%91/1.htm">音视频</a><a class="tag" taget="_blank" href="/search/%E8%AE%A1%E7%AE%97%E6%9C%BA%E8%A7%86%E8%A7%89/1.htm">计算机视觉</a><a class="tag" taget="_blank" href="/search/opencv/1.htm">opencv</a>
                        <div>首尾帧人脸差异检测代码概述本脚本实现了一个简单的视频筛查系统,主要功能是通过比较视频首帧和尾帧中的人脸差异来判断视频是否合格。如果视频中没有人脸或存在其他异常情况,视频将被移动到错误目录中。具体来说,系统包含以下几个主要步骤:加载视频文件:尝试打开视频文件,并读取首帧和尾帧。人脸检测:使用OpenCV的Haar级联分类器检测视频首帧和尾帧中的人脸。人脸提取与标准化:从检测到的人脸区域中提取并标准化</div>
                    </li>
                    <li><a href="/article/1891928650585010176.htm"
                           title="从awesome xxx类型的GitHub项目的README.md文件中检索所有GitHub代码库链接,并将它们克隆到本地" target="_blank">从awesome xxx类型的GitHub项目的README.md文件中检索所有GitHub代码库链接,并将它们克隆到本地</a>
                        <span class="text-muted">之群害马</span>
<a class="tag" taget="_blank" href="/search/github/1.htm">github</a>
                        <div>脚本优化亮点:智能编码处理-新增URL解码功能,完美处理含中文等特殊字符的仓库名深度镜像支持-更新国内高校镜像源,提升克隆速度(新增清华、中科大镜像)智能重试机制-增加自动重试功能,网络波动时自动重试3次进度可视化-添加彩色进度条显示,实时掌握克隆进度深度错误追踪-增强错误日志记录,包含时间戳和错误类型#!/bin/bash#彩色输出设置RED='\033[0;31m'GREEN='\033[0;</div>
                    </li>
                    <li><a href="/article/1891928522205753344.htm"
                           title="FunASR服务器部署(CPU+GPU)" target="_blank">FunASR服务器部署(CPU+GPU)</a>
                        <span class="text-muted">之群害马</span>
<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/eureka/1.htm">eureka</a><a class="tag" taget="_blank" href="/search/%E8%BF%90%E7%BB%B4/1.htm">运维</a>
                        <div>自行下载funasr-cpu/gpu和asrmodel-deploy-cpu/gpu压缩包,官方都有cpu版运行:cd/home/user/data/AIModels/FunASR_docker/deploy_resourcessudodockerload-ifunasr-runtime-sdk-cpu-0.4.4_w_models_v0.2.1.tarcdasrmodel-deploy-cpus</div>
                    </li>
                    <li><a href="/article/1891928269519908864.htm"
                           title="Python 用pytorch从头写Transformer源码,一行一解释;机器翻译实例代码;Transformer源码解读与实战" target="_blank">Python 用pytorch从头写Transformer源码,一行一解释;机器翻译实例代码;Transformer源码解读与实战</a>
                        <span class="text-muted">医学小达人</span>
<a class="tag" taget="_blank" href="/search/NLP/1.htm">NLP</a><a class="tag" taget="_blank" href="/search/LLMs/1.htm">LLMs</a><a class="tag" taget="_blank" href="/search/GPT/1.htm">GPT</a><a class="tag" taget="_blank" href="/search/%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0/1.htm">深度学习</a><a class="tag" taget="_blank" href="/search/%E4%BA%BA%E5%B7%A5%E6%99%BA%E8%83%BD/1.htm">人工智能</a><a class="tag" taget="_blank" href="/search/transformer/1.htm">transformer</a><a class="tag" taget="_blank" href="/search/python/1.htm">python</a><a class="tag" taget="_blank" href="/search/%E6%9C%BA%E5%99%A8%E5%AD%A6%E4%B9%A0/1.htm">机器学习</a>
                        <div>1.Transformer简介Transformer模型被提出的主要动机是解决序列处理任务的长距离依赖问题。传统的RNN和LSTM虽然能够处理序列任务,但因为它们在处理序列时需要一步步前进,因此其他信息无法立即对其产生影响,当序列变长时,长距离依赖的信息很可能会被丢失。为了解决这个问题,Transformer模型被设计出来,内核思想是利用自注意力机制,这样模型可以直接对输入序列的任意两个位置建立直</div>
                    </li>
                    <li><a href="/article/1891924234142281728.htm"
                           title="csghub安装(docker方式)" target="_blank">csghub安装(docker方式)</a>
                        <span class="text-muted">AR_xsy</span>
<a class="tag" taget="_blank" href="/search/docker/1.htm">docker</a><a class="tag" taget="_blank" href="/search/%E5%AE%B9%E5%99%A8/1.htm">容器</a><a class="tag" taget="_blank" href="/search/%E8%BF%90%E7%BB%B4/1.htm">运维</a>
                        <div>简单介绍:CSGHub是一个开源、可信的大模型资产管理平台,可帮助用户治理LLM和LLM应用生命周期中涉及到的资产官网部署安装exportSERVER_DOMAIN=$(ipaddrshow$(iprouteshowdefault|awk'/default/{print$5}')|grep'inet'|awk'{print$2}'|cut-d/-f1)exportSERVER_PORT=80doc</div>
                    </li>
                    <li><a href="/article/1891922186214633472.htm"
                           title="C#编程的技术难点有什么" target="_blank">C#编程的技术难点有什么</a>
                        <span class="text-muted"></span>
<a class="tag" taget="_blank" href="/search/%E7%BC%96%E7%A8%8B/1.htm">编程</a>
                        <div>在C#编程的过程中,开发者会面临许多技术难点,尤其是在深入理解和应用C#的高级特性时。C#编程的技术难点主要体现在内存管理、并发编程、反射机制、LINQ(语言集成查询)、以及异步编程等方面。这些难点往往需要开发者对C#的底层原理和高级功能有较为深入的理解,并且在实际项目中逐步积累经验。其中,异步编程与并发编程是C#开发中常见且具挑战性的难点,特别是在多线程和任务并行的处理上,需要合理运用相关的工具</div>
                    </li>
                    <li><a href="/article/1891916284354949120.htm"
                           title="LLM论文笔记 9: Neural Networks and the Chomsky Hierarchy" target="_blank">LLM论文笔记 9: Neural Networks and the Chomsky Hierarchy</a>
                        <span class="text-muted">Zhouqi_Hua</span>
<a class="tag" taget="_blank" href="/search/%E5%A4%A7%E6%A8%A1%E5%9E%8B%E8%AE%BA%E6%96%87%E9%98%85%E8%AF%BB/1.htm">大模型论文阅读</a><a class="tag" taget="_blank" href="/search/%E8%AE%BA%E6%96%87%E9%98%85%E8%AF%BB/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%B7%B1%E5%BA%A6%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/%E8%AF%AD%E8%A8%80%E6%A8%A1%E5%9E%8B/1.htm">语言模型</a>
                        <div>Arxiv日期:2022.9.29机构:GoogleDeepMind/Stanford关键词transformer架构原理乔姆斯基体系长度泛化核心结论1.虽然Transformer理论上具有图灵完备性,但在实践中能力受到位置不变性和有限记忆的限制2.Transformer在一些任务中表现较差,例如正则语言任务(如ParityCheck),表明其与Chomsky层级的对齐性不佳3.Transform</div>
                    </li>
                    <li><a href="/article/1891916156185407488.htm"
                           title="实现Shell免密登录的详细指南" target="_blank">实现Shell免密登录的详细指南</a>
                        <span class="text-muted">醉心编码</span>
<a class="tag" taget="_blank" href="/search/%E8%84%9A%E6%9C%AC%E5%9F%BA%E7%A1%80/1.htm">脚本基础</a><a class="tag" taget="_blank" href="/search/shell/1.htm">shell</a><a class="tag" taget="_blank" href="/search/%E8%84%9A%E6%9C%AC/1.htm">脚本</a>
                        <div>实现Shell免密登录的详细指南前提条件步骤一:生成SSH密钥对步骤二:将公钥复制到远程服务器步骤三:配置SSH客户端(可选)步骤四:测试免密登录常见问题排查在使用Linux或Unix系统时,我们经常需要通过Shell访问远程服务器。通常,这种访问需要通过SSH(SecureShell)进行,每次连接时都需要输入用户名和密码,这不仅繁琐,而且在某些自动化场景下显得尤为不便。为了实现免密登录,我们可</div>
                    </li>
                    <li><a href="/article/1891913886802702336.htm"
                           title="基于 Debian 的系统(如 Ubuntu)上安装、启动和配置 SSH 服务的指令流" target="_blank">基于 Debian 的系统(如 Ubuntu)上安装、启动和配置 SSH 服务的指令流</a>
                        <span class="text-muted">fanxbl957</span>
<a class="tag" taget="_blank" href="/search/linux/1.htm">linux</a><a class="tag" taget="_blank" href="/search/debian/1.htm">debian</a><a class="tag" taget="_blank" href="/search/ubuntu/1.htm">ubuntu</a><a class="tag" taget="_blank" href="/search/ssh/1.htm">ssh</a><a class="tag" taget="_blank" href="/search/linux/1.htm">linux</a>
                        <div>主要指令流和步骤简述:安装SSHdpkg-l|grepssh检查SSH服务是否已安装,如果输出中包含`openssh-server`,则说明SSH服务已经安装sudoapt-getinstallopenssh-server安装SSH服务ps-e|grepssh检查SSH服务是否已经启动,如果输出中包含`sshd`,则说明SSH服务已经启动sudoservicesshstart启动SSH服务sudo</div>
                    </li>
                    <li><a href="/article/1891913254796587008.htm"
                           title="SQL注入技术详解与过滤绕过方法" target="_blank">SQL注入技术详解与过滤绕过方法</a>
                        <span class="text-muted">Cyc1e</span>
<a class="tag" taget="_blank" href="/search/sql/1.htm">sql</a><a class="tag" taget="_blank" href="/search/%E6%95%B0%E6%8D%AE%E5%BA%93/1.htm">数据库</a><a class="tag" taget="_blank" href="/search/web/1.htm">web</a><a class="tag" taget="_blank" href="/search/%E5%AE%89%E5%85%A8/1.htm">安全</a><a class="tag" taget="_blank" href="/search/%E7%BD%91%E7%BB%9C/1.htm">网络</a>
                        <div>SQL注入技术详解与过滤绕过方法1.什么是SQL注入?SQL注入(SQLInjection)是一种常见的Web安全漏洞,指攻击者将恶意的SQL代码插入到应用程序的输入字段中,并通过应用程序发送到数据库进行执行,进而对数据库进行未授权操作。其可能导致敏感数据泄露、篡改、删除等严重后果。1.1SQL注入的工作原理SQL注入的核心在于,攻击者通过操控输入字段,使服务器端的SQL查询语句发生意料之外的变化</div>
                    </li>
                    <li><a href="/article/1891913002605670400.htm"
                           title="Linux安全与密钥登录指南,零基础入门到精通,收藏这篇就够了" target="_blank">Linux安全与密钥登录指南,零基础入门到精通,收藏这篇就够了</a>
                        <span class="text-muted">网安导师小李</span>
<a class="tag" taget="_blank" href="/search/%E7%A8%8B%E5%BA%8F%E5%91%98/1.htm">程序员</a><a class="tag" taget="_blank" href="/search/%E7%BC%96%E7%A8%8B/1.htm">编程</a><a class="tag" taget="_blank" href="/search/%E7%BD%91%E7%BB%9C%E5%AE%89%E5%85%A8/1.htm">网络安全</a><a class="tag" taget="_blank" href="/search/linux/1.htm">linux</a><a class="tag" taget="_blank" href="/search/%E5%AE%89%E5%85%A8/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/web%E5%AE%89%E5%85%A8/1.htm">web安全</a><a class="tag" taget="_blank" href="/search/%E7%BD%91%E7%BB%9C/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/%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%BD%91%E7%BB%9C/1.htm">计算机网络</a>
                        <div>在使用Linux服务器时,确保服务器的安全至关重要。本文将为你介绍一些关键的Linux安全措施,包括开启密钥登录、查看登录日志、限制登录IP以及查看系统中能够登录的账号。以下内容适合小白用户,通过简单的操作就能有效提升服务器的安全性。目录Linux安全概述密钥登录的配置生成密钥对配置SSH密钥登录查看登录日志限制IP访问设置IP封禁允许特定IP访问查看系统可登录的账号1.Linux安全概述Linu</div>
                    </li>
                                <li><a href="/article/10.htm"
                                       title="jsonp 常用util方法" target="_blank">jsonp 常用util方法</a>
                                    <span class="text-muted">hw1287789687</span>
<a class="tag" taget="_blank" href="/search/jsonp/1.htm">jsonp</a><a class="tag" taget="_blank" href="/search/jsonp%E5%B8%B8%E7%94%A8%E6%96%B9%E6%B3%95/1.htm">jsonp常用方法</a><a class="tag" taget="_blank" href="/search/jsonp+callback/1.htm">jsonp callback</a>
                                    <div>jsonp 常用java方法 
(1)以jsonp的形式返回:函数名(json字符串) 
/***
	 * 用于jsonp调用
	 * @param map : 用于构造json数据
	 * @param callback : 回调的javascript方法名
	 * @param filters : <code>SimpleBeanPropertyFilter theFilt</div>
                                </li>
                                <li><a href="/article/137.htm"
                                       title="多线程场景" target="_blank">多线程场景</a>
                                    <span class="text-muted">alafqq</span>
<a class="tag" taget="_blank" href="/search/%E5%A4%9A%E7%BA%BF%E7%A8%8B/1.htm">多线程</a>
                                    <div>0 
能不能简单描述一下你在java web开发中需要用到多线程编程的场景?0 
对多线程有些了解,但是不太清楚具体的应用场景,能简单说一下你遇到的多线程编程的场景吗? 
Java多线程 
2012年11月23日 15:41 Young9007 Young9007 
4 
0 0 4 
 
Comment添加评论关注(2) 
3个答案 按时间排序 按投票排序 
 
0 
0 
最典型的如: 
1、</div>
                                </li>
                                <li><a href="/article/264.htm"
                                       title="Maven学习——修改Maven的本地仓库路径" target="_blank">Maven学习——修改Maven的本地仓库路径</a>
                                    <span class="text-muted">Kai_Ge</span>
<a class="tag" taget="_blank" href="/search/maven/1.htm">maven</a>
                                    <div>      安装Maven后我们会在用户目录下发现.m2 文件夹。默认情况下,该文件夹下放置了Maven本地仓库.m2/repository。所有的Maven构件(artifact)都被存储到该仓库中,以方便重用。但是windows用户的操作系统都安装在C盘,把Maven仓库放到C盘是很危险的,为此我们需要修改Maven的本地仓库路径。 
  
 </div>
                                </li>
                                <li><a href="/article/391.htm"
                                       title="placeholder的浏览器兼容" target="_blank">placeholder的浏览器兼容</a>
                                    <span class="text-muted">120153216</span>
<a class="tag" taget="_blank" href="/search/placeholder/1.htm">placeholder</a>
                                    <div>【前言】 
自从html5引入placeholder后,问题就来了, 
不支持html5的浏览器也先有这样的效果, 
各种兼容,之前考虑,今天测试人员逮住不放, 
想了个解决办法,看样子还行,记录一下。 
  
【原理】 
不使用placeholder,而是模拟placeholder的效果, 
大概就是用focus和focusout效果。 
  
【代码】 
<scrip</div>
                                </li>
                                <li><a href="/article/518.htm"
                                       title="debian_用iso文件创建本地apt源" target="_blank">debian_用iso文件创建本地apt源</a>
                                    <span class="text-muted">2002wmj</span>
<a class="tag" taget="_blank" href="/search/Debian/1.htm">Debian</a>
                                    <div>1.将N个debian-506-amd64-DVD-N.iso存放于本地或其他媒介内,本例是放在本机/iso/目录下

2.创建N个挂载点目录  
如下: 
debian:~#mkdir –r /media/dvd1 
debian:~#mkdir –r /media/dvd2 
debian:~#mkdir –r /media/dvd3 
…. 
debian:~#mkdir –r /media</div>
                                </li>
                                <li><a href="/article/645.htm"
                                       title="SQLSERVER耗时最长的SQL" target="_blank">SQLSERVER耗时最长的SQL</a>
                                    <span class="text-muted">357029540</span>
<a class="tag" taget="_blank" href="/search/SQL+Server/1.htm">SQL Server</a>
                                    <div>对于DBA来说,经常要知道存储过程的某些信息: 
 
1.   执行了多少次 
 
2.   执行的执行计划如何 
 
3.   执行的平均读写如何 
 
4.   执行平均需要多少时间 
 
列名          &</div>
                                </li>
                                <li><a href="/article/772.htm"
                                       title="com/genuitec/eclipse/j2eedt/core/J2EEProjectUtil" target="_blank">com/genuitec/eclipse/j2eedt/core/J2EEProjectUtil</a>
                                    <span class="text-muted">7454103</span>
<a class="tag" taget="_blank" href="/search/eclipse/1.htm">eclipse</a>
                                    <div>今天eclipse突然报了com/genuitec/eclipse/j2eedt/core/J2EEProjectUtil 错误,并且工程文件打不开了,在网上找了一下资料,然后按照方法操作了一遍,好了,解决方法如下: 
 
错误提示信息: 
 
An error has occurred.See error log for more details. 
Reason: 
com/genuitec/</div>
                                </li>
                                <li><a href="/article/899.htm"
                                       title="用正则删除文本中的html标签" target="_blank">用正则删除文本中的html标签</a>
                                    <span class="text-muted">adminjun</span>
<a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/html/1.htm">html</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><a class="tag" taget="_blank" href="/search/%E5%8E%BB%E6%8E%89html%E6%A0%87%E7%AD%BE/1.htm">去掉html标签</a>
                                    <div>使用文本编辑器录入文章存入数据中的文本是HTML标签格式,由于业务需要对HTML标签进行去除只保留纯净的文本内容,于是乎Java实现自动过滤。 
如下: 
public static String Html2Text(String inputString) {  
String htmlStr = inputString; // 含html标签的字符串
  String textSt</div>
                                </li>
                                <li><a href="/article/1026.htm"
                                       title="嵌入式系统设计中常用总线和接口" target="_blank">嵌入式系统设计中常用总线和接口</a>
                                    <span class="text-muted">aijuans</span>
<a class="tag" taget="_blank" href="/search/linux+%E5%9F%BA%E7%A1%80/1.htm">linux 基础</a>
                                    <div>               嵌入式系统设计中常用总线和接口 
  
        任何一个微处理器都要与一定数量的部件和外围设备连接,但如果将各部件和每一种外围设备都分别用一组线路与CPU直接连接,那么连线</div>
                                </li>
                                <li><a href="/article/1153.htm"
                                       title="Java函数调用方式——按值传递" target="_blank">Java函数调用方式——按值传递</a>
                                    <span class="text-muted">ayaoxinchao</span>
<a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/%E6%8C%89%E5%80%BC%E4%BC%A0%E9%80%92/1.htm">按值传递</a><a class="tag" taget="_blank" href="/search/%E5%AF%B9%E8%B1%A1/1.htm">对象</a><a class="tag" taget="_blank" href="/search/%E5%9F%BA%E7%A1%80%E6%95%B0%E6%8D%AE%E7%B1%BB%E5%9E%8B/1.htm">基础数据类型</a>
                                    <div>Java使用按值传递的函数调用方式,这往往使我感到迷惑。因为在基础数据类型和对象的传递上,我就会纠结于到底是按值传递,还是按引用传递。其实经过学习,Java在任何地方,都一直发挥着按值传递的本色。 
  
首先,让我们看一看基础数据类型是如何按值传递的。 
  
public static void main(String[] args) {
		
	int a = 2;
</div>
                                </li>
                                <li><a href="/article/1280.htm"
                                       title="ios音量线性下降" target="_blank">ios音量线性下降</a>
                                    <span class="text-muted">bewithme</span>
<a class="tag" taget="_blank" href="/search/ios%E9%9F%B3%E9%87%8F/1.htm">ios音量</a>
                                    <div>直接上代码吧 
  
//second 几秒内下降为0
- (void)reduceVolume:(int)second {
    KGVoicePlayer *player = [KGVoicePlayer defaultPlayer];
    
    if (!_flag) {
        _tempVolume = player.volume;
       </div>
                                </li>
                                <li><a href="/article/1407.htm"
                                       title="与其怨它不如爱它" target="_blank">与其怨它不如爱它</a>
                                    <span class="text-muted">bijian1013</span>
<a class="tag" taget="_blank" href="/search/%E9%80%89%E6%8B%A9/1.htm">选择</a><a class="tag" taget="_blank" href="/search/%E7%90%86%E6%83%B3/1.htm">理想</a><a class="tag" taget="_blank" href="/search/%E8%81%8C%E4%B8%9A/1.htm">职业</a><a class="tag" taget="_blank" href="/search/%E8%A7%84%E5%88%92/1.htm">规划</a>
                                    <div>        抱怨工作是年轻人的常态,但爱工作才是积极的心态,与其怨它不如爱它。 
        一般来说,在公司干了一两年后,不少年轻人容易产生怨言,除了具体的埋怨公司“扭门”,埋怨上司无能以外,也有许多人是因为根本不爱自已的那份工作,工作完全成了谋生的手段,跟自已的性格、专业、爱好都相差甚远。 
  </div>
                                </li>
                                <li><a href="/article/1534.htm"
                                       title="一边时间不够用一边浪费时间" target="_blank">一边时间不够用一边浪费时间</a>
                                    <span class="text-muted">bingyingao</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%97%B6%E9%97%B4/1.htm">时间</a><a class="tag" taget="_blank" href="/search/%E6%B5%AA%E8%B4%B9/1.htm">浪费</a>
                                    <div>一方面感觉时间严重不够用,另一方面又在不停的浪费时间。 
 
每一个周末,晚上熬夜看电影到凌晨一点,早上起不来一直睡到10点钟,10点钟起床,吃饭后玩手机到下午一点。 
精神还是很差,下午像一直野鬼在城市里晃荡。 
 
 
为何不尝试晚上10点钟就睡,早上7点就起,时间完全是一样的,把看电影的时间换到早上,精神好,气色好,一天好状态。 
控制让自己周末早睡早起,你就成功了一半。 
 
有多少个工作</div>
                                </li>
                                <li><a href="/article/1661.htm"
                                       title="【Scala八】Scala核心二:隐式转换" target="_blank">【Scala八】Scala核心二:隐式转换</a>
                                    <span class="text-muted">bit1129</span>
<a class="tag" taget="_blank" href="/search/scala/1.htm">scala</a>
                                    <div>Implicits work like this: if you call a method on a Scala object, and the Scala compiler does not see a definition for that method in the class definition for that object, the compiler will try to con</div>
                                </li>
                                <li><a href="/article/1788.htm"
                                       title="sudoku slover in Haskell (2)" target="_blank">sudoku slover in Haskell (2)</a>
                                    <span class="text-muted">bookjovi</span>
<a class="tag" taget="_blank" href="/search/haskell/1.htm">haskell</a><a class="tag" taget="_blank" href="/search/sudoku/1.htm">sudoku</a>
                                    <div>继续精简haskell版的sudoku程序,稍微改了一下,这次用了8行,同时性能也提高了很多,对每个空格的所有解不是通过尝试算出来的,而是直接得出。 
  
board = [0,3,4,1,7,0,5,0,0,
         0,6,0,0,0,8,3,0,1,
         7,0,0,3,0,0,0,0,6,
         5,0,0,6,4,0,8,0,7,
</div>
                                </li>
                                <li><a href="/article/1915.htm"
                                       title="Java-Collections Framework学习与总结-HashSet和LinkedHashSet" target="_blank">Java-Collections Framework学习与总结-HashSet和LinkedHashSet</a>
                                    <span class="text-muted">BrokenDreams</span>
<a class="tag" taget="_blank" href="/search/linkedhashset/1.htm">linkedhashset</a>
                                    <div>        本篇总结一下两个常用的集合类HashSet和LinkedHashSet。 
        它们都实现了相同接口java.util.Set。Set表示一种元素无序且不可重复的集合;之前总结过的java.util.List表示一种元素可重复且有序</div>
                                </li>
                                <li><a href="/article/2042.htm"
                                       title="读《研磨设计模式》-代码笔记-备忘录模式-Memento" target="_blank">读《研磨设计模式》-代码笔记-备忘录模式-Memento</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.ArrayList;
import java.util.List;



/*
 * 备忘录模式的功能是,在不破坏封装性的前提下,捕获一个对象的内部状态,并在对象之外保存这个状态,为以后的状态恢复作“备忘”
</div>
                                </li>
                                <li><a href="/article/2169.htm"
                                       title="《RAW格式照片处理专业技法》笔记" target="_blank">《RAW格式照片处理专业技法》笔记</a>
                                    <span class="text-muted">cherishLC</span>
<a class="tag" taget="_blank" href="/search/PS/1.htm">PS</a>
                                    <div>注意,这不是教程!仅记录楼主之前不太了解的 
 
 一、色彩(空间)管理 
作者建议采用ProRGB(色域最广),但camera raw中设为ProRGB,而PS中则在ProRGB的基础上,将gamma值设为了1.8(更符合人眼) 
注意:bridge、camera raw怎么设置显示、输出的颜色都是正确的(会读取文件内的颜色配置文件),但用PS输出jpg文件时,必须先用Edit->conv</div>
                                </li>
                                <li><a href="/article/2296.htm"
                                       title="使用 Git 下载 Spring 源码 编译 for Eclipse" target="_blank">使用 Git 下载 Spring 源码 编译 for Eclipse</a>
                                    <span class="text-muted">crabdave</span>
<a class="tag" taget="_blank" href="/search/eclipse/1.htm">eclipse</a>
                                    <div>使用 Git 下载 Spring 源码 编译 for Eclipse 
  
1、安装gradle,下载 http://www.gradle.org/downloads 
配置环境变量GRADLE_HOME,配置PATH  %GRADLE_HOME%/bin,cmd,gradle -v 
  
2、spring4 用jdk8 下载 https://jdk8.java.</div>
                                </li>
                                <li><a href="/article/2423.htm"
                                       title="mysql连接拒绝问题" target="_blank">mysql连接拒绝问题</a>
                                    <span class="text-muted">daizj</span>
<a class="tag" taget="_blank" href="/search/mysql/1.htm">mysql</a><a class="tag" taget="_blank" href="/search/%E7%99%BB%E5%BD%95%E6%9D%83%E9%99%90/1.htm">登录权限</a>
                                    <div>mysql中在其它机器连接mysql服务器时报错问题汇总 
 
一、[running]root@192.168.9.136:~$mysql -uroot -h 192.168.9.108 -p   //带-p参数,在下一步进行密码输入 
Enter password:    //无字符串输入 
ERROR 1045 (28000): Access </div>
                                </li>
                                <li><a href="/article/2550.htm"
                                       title="Google Chrome 为何打压 H.264" target="_blank">Google Chrome 为何打压 H.264</a>
                                    <span class="text-muted">dsjt</span>
<a class="tag" taget="_blank" href="/search/apple/1.htm">apple</a><a class="tag" taget="_blank" href="/search/html5/1.htm">html5</a><a class="tag" taget="_blank" href="/search/chrome/1.htm">chrome</a><a class="tag" taget="_blank" href="/search/Google/1.htm">Google</a>
                                    <div>Google 今天在 Chromium 官方博客宣布由于 H.264 编解码器并非开放标准,Chrome 将在几个月后正式停止对 H.264 视频解码的支持,全面采用开放的 WebM 和 Theora 格式。 
 
Google 在博客上表示,自从 WebM 视频编解码器推出以后,在性能、厂商支持以及独立性方面已经取得了很大的进步,为了与 Chromium 现有支持的編解码器保持一致,Chrome</div>
                                </li>
                                <li><a href="/article/2677.htm"
                                       title="yii 获取控制器名 和方法名" target="_blank">yii 获取控制器名 和方法名</a>
                                    <span class="text-muted">dcj3sjt126com</span>
<a class="tag" taget="_blank" href="/search/yii/1.htm">yii</a><a class="tag" taget="_blank" href="/search/framework/1.htm">framework</a>
                                    <div>1. 获取控制器名 
在控制器中获取控制器名:  $name = $this->getId(); 
在视图中获取控制器名:    $name = Yii::app()->controller->id;  
  
2. 获取动作名  
在控制器beforeAction()回调函数中获取动作名:  $name = </div>
                                </li>
                                <li><a href="/article/2804.htm"
                                       title="Android知识总结(二)" target="_blank">Android知识总结(二)</a>
                                    <span class="text-muted">come_for_dream</span>
<a class="tag" taget="_blank" href="/search/android/1.htm">android</a>
                                    <div>明天要考试了,速速总结如下 
  
1、Activity的启动模式 
       standard:每次调用Activity的时候都创建一个(可以有多个相同的实例,也允许多个相同Activity叠加。) 
       singleTop:可以有多个实例,但是不允许多个相同Activity叠加。即,如果Ac</div>
                                </li>
                                <li><a href="/article/2931.htm"
                                       title="高洛峰收徒第二期:寻找未来的“技术大牛” ——折腾一年,奖励20万元" target="_blank">高洛峰收徒第二期:寻找未来的“技术大牛” ——折腾一年,奖励20万元</a>
                                    <span class="text-muted">gcq511120594</span>
<a class="tag" taget="_blank" href="/search/%E5%B7%A5%E4%BD%9C/1.htm">工作</a><a class="tag" taget="_blank" href="/search/%E9%A1%B9%E7%9B%AE%E7%AE%A1%E7%90%86/1.htm">项目管理</a>
                                    <div>高洛峰,兄弟连IT教育合伙人、猿代码创始人、PHP培训第一人、《细说PHP》作者、软件开发工程师、《IT峰播》主创人、PHP讲师的鼻祖! 
首期现在的进程刚刚过半,徒弟们真的很棒,人品都没的说,团结互助,学习刻苦,工作认真积极,灵活上进。我几乎会把他们全部留下来,现在已有一多半安排了实际的工作,并取得了很好的成绩。等他们出徒之日,凭他们的能力一定能够拿到高薪,而且我还承诺过一个徒弟,当他拿到大学毕</div>
                                </li>
                                <li><a href="/article/3058.htm"
                                       title="linux expect" target="_blank">linux expect</a>
                                    <span class="text-muted">heipark</span>
<a class="tag" taget="_blank" href="/search/expect/1.htm">expect</a>
                                    <div>1. 创建、编辑文件go.sh 
  
#!/usr/bin/expect

spawn sudo su admin

expect  "*password*" { send "13456\r\n" }

interact  
   2. 设置权限 
   chmod u+x go.sh   3.</div>
                                </li>
                                <li><a href="/article/3185.htm"
                                       title="Spring4.1新特性——静态资源处理增强" target="_blank">Spring4.1新特性——静态资源处理增强</a>
                                    <span class="text-muted">jinnianshilongnian</span>
<a class="tag" taget="_blank" href="/search/spring+4.1/1.htm">spring 4.1</a>
                                    <div>目录 
Spring4.1新特性——综述 
Spring4.1新特性——Spring核心部分及其他 
Spring4.1新特性——Spring缓存框架增强 
Spring4.1新特性——异步调用和事件机制的异常处理 
Spring4.1新特性——数据库集成测试脚本初始化 
Spring4.1新特性——Spring MVC增强 
Spring4.1新特性——页面自动化测试框架Spring MVC T</div>
                                </li>
                                <li><a href="/article/3312.htm"
                                       title="idea ubuntuxia 乱码" target="_blank">idea ubuntuxia 乱码</a>
                                    <span class="text-muted">liyonghui160com</span>

                                    <div>    
1.首先需要在windows字体目录下或者其它地方找到simsun.ttf 这个 字体文件。 
2.在ubuntu 下可以执行下面操作安装该字体: 
sudo mkdir /usr/share/fonts/truetype/simsun
sudo cp simsun.ttf  /usr/share/fonts/truetype/simsun
fc-cache -f -v 
</div>
                                </li>
                                <li><a href="/article/3439.htm"
                                       title="改良程序的11技巧" target="_blank">改良程序的11技巧</a>
                                    <span class="text-muted">pda158</span>
<a class="tag" taget="_blank" href="/search/%E6%8A%80%E5%B7%A7/1.htm">技巧</a>
                                    <div>有很多理由都能说明为什么我们应该写出清晰、可读性好的程序。最重要的一点,程序你只写一次,但以后会无数次的阅读。当你第二天回头来看你的代码 时,你就要开始阅读它了。当你把代码拿给其他人看时,他必须阅读你的代码。因此,在编写时多花一点时间,你会在阅读它时节省大量的时间。 
  
让我们看一些基本的编程技巧: 
  
 
 尽量保持方法简短 
 永远永远不要把同一个变量用于多个不同的</div>
                                </li>
                                <li><a href="/article/3566.htm"
                                       title="300个涵盖IT各方面的免费资源(下)——工作与学习篇" target="_blank">300个涵盖IT各方面的免费资源(下)——工作与学习篇</a>
                                    <span class="text-muted">shoothao</span>
<a class="tag" taget="_blank" href="/search/%E5%88%9B%E4%B8%9A/1.htm">创业</a><a class="tag" taget="_blank" href="/search/%E5%85%8D%E8%B4%B9%E8%B5%84%E6%BA%90/1.htm">免费资源</a><a class="tag" taget="_blank" href="/search/%E5%AD%A6%E4%B9%A0%E8%AF%BE%E7%A8%8B/1.htm">学习课程</a><a class="tag" taget="_blank" href="/search/%E8%BF%9C%E7%A8%8B%E5%B7%A5%E4%BD%9C/1.htm">远程工作</a>
                                    <div>工作与生产效率: 
  
 
 A. 背景声音 
 
 
  Noisli:背景噪音与颜色生成器。 
  Noizio:环境声均衡器。 
  Defonic:世界上任何的声响都可混合成美丽的旋律。 
  Designers.mx:设计者为设计者所准备的播放列表。 
  Coffitivity:这里的声音就像咖啡馆里放的一样。 
 
 
 B. 避免注意力分散 
 
 
  Self Co</div>
                                </li>
                                <li><a href="/article/3693.htm"
                                       title="深入浅出RPC" target="_blank">深入浅出RPC</a>
                                    <span class="text-muted">uule</span>
<a class="tag" taget="_blank" href="/search/rpc/1.htm">rpc</a>
                                    <div>深入浅出RPC-浅出篇 
深入浅出RPC-深入篇 
  
RPC 
Remote Procedure Call Protocol 
远程过程调用协议 
  
它是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议。RPC协议假定某些传输协议的存在,如TCP或UDP,为通信程序之间携带信息数据。在OSI网络通信模型中,RPC跨越了传输层和应用层。RPC使得开发</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>