- 浏览: 1342431 次
- 性别:
- 来自: 湖南澧縣
-
文章分类
最新评论
-
虾米小尹:
不行啊!2.2-0.25=1.9500000000000002 ...
JavaScript浮点数运算 —— 精度问题 -
heluping000000:
引用String a= "abc",首先在 ...
String,到底创建了多少个对象? -
mack:
谢谢分享matcher.appendReplacement(s ...
string.replaceAll()中的特殊字符($ \)与matcher.appendReplacement -
wzt3309:
完全理解,比网上其他资料都要详细
String,到底创建了多少个对象? -
u014771876:
Java中十六进制转换 Integer.toHexString()
使用标准/定制查询串
如此说来,测试运行工具是很强大的,但是每天都得打开这个测试运行工具,并浏览你的测试页或测试集,这可能非常烦人。好在可以使用一些查询串来预置要运行的文件,让测试运行工具自动地运行测试,甚至可以向测试传递参数 !测试运行工具支持testPage 查询串 。在浏览器地址栏中键入以下地址(当然,根据具体环境可能要做相应调整),就会在浏览器中启动测试运行工具,并且预置了给定的测试:
file:///E:/jsunit2.2/jsunit/testRunner.html?testPage=E:/jsunit2.2/testSuit.html
你会看到测试运行工具运行了起来,你传递给testPage的实参会显示在file(文件)框中,如下图所示。注意,现在没有Browse(浏览)按钮了,因为你已经告诉测试运行工具要运行什么,它已经知道了。
当然,聪明的开发人员可能会对经常运行的测试集建立书签。如果你觉得testPage还不错,可能还想让autoRun 试试身手!顾名思义,可以结合autoRun和testPage来加载你最喜欢的测试页或测试集,然后它们会自动地运行,不需要再点上面的那个run按钮了。这样一个示例查询串如下所示:
file:///E:/jsunit2.2/jsunit/testRunner.html?testPage=E:/jsunit2.2/testSuit.html&autoRun=true
你应该能看到一个漂亮的绿条(见下图)。注意这里有Run按钮,因此,你可以很轻松地重新运行你的测试。同样地,能干的程序员很可能在浏览器上为这个查询增加书签。
你可能认为开发人员只需要testPage和autoRun,但实际上还不只如此!在后台,测试运行工具会把各个测试页增加到一个不可见的帧(Frame)。大多数情况下这样是可以的,但是如果有些代码必须在一个可见的帧中运行,而且你使用的是IE ,就可以告诉测试运行工具要在一个可见帧中显示你的页面。如果在查询串中加入了showTestFrame ,JsUnit就会在一个可见的帧中显示你的页面。如果你输入了showTestFrame=true ,测试页会在一个默认高度的帧中显示。如果这个默认值不合适,可以传入一个整数值,将帧高度指定为参数值(以像素为单位)。
有时,你可能想向测试页或测试集传递特定的值。可以在查询串中增加任意的行参/实参对,在测试页或测试集中使用top.jsUnitParmHash.parameterName 或top.jsUnitParmHash['parameterName'] 来获取这些值。假设按以下路径打开测试运行工具:file:/// Users/nate/projects/chapter6/web/jsunit/testRunner.html?key=1,就可以使用top.jsUnitParmHash.key或top.jsUnitParmHash['key']来访问参数key。如果你只想运行某些测试,这就很有用。下面代码清单显示了一个复杂的例子。
customSuit.html代码清单:
<html> <head> <title>Sample Test Suite</title> <script language="JavaScript" src="jsunit/app/jsUnitCore.js"></script> <script language="JavaScript"> function sampleSuite() { var suiteToRun = top.jsUnitParmHash.suite; var sampleSuite = new top.jsUnitTestSuite(); if(suiteToRun == "setUptearDownTest") { sampleSuite.addTestPage("../setUptearDownTest.html"); } sampleSuite.addTestPage("../smimpleTest.html"); sampleSuite.addTestPage("../setUpPageTest.html"); return sampleSuite; } function suite() { var testSuite = new top.jsUnitTestSuite(); testSuite.addTestSuite(sampleSuite()); testSuite.addTestPage("../exposeTest.html"); return testSuite; } </script> </head> <body> This is a simple test suite that uses custom queries. </body> </html>
可以想见,在测试运行工具中为路径追加?suite=setUptearDownTest,这会导致运行setUptearDownTest.html测试页,如果没有,则不会运行。
尽管这显然是一个简单的例子,但是从中可以看出,在不同场合下,使用定制参数来运行测试集或测试页是非常有用的。当然,你可能想为浏览器的书签文件夹增加这些特殊的查询串,以便以后使用。
还有一个有意思的标准参数是debug。不要把这个参数与debug 跟踪级别混为一谈,它们完全不同。debug参数会在使用JsUnit的开发工作中用到。对于这个查询串,你可能不会做太多工作,但是如果你很好奇,可以知道有这样一个参数(如下图)。
file:///E:/jsunit2.2/jsunit/testRunner.html?testPage=E:/jsunit2.2/customSuit.html&autoRun=true&suite=setUptearDownTest&debug
另外还有两个标准参数,只有与JsUnit服务器结合时才有意义:submitResults 和resultId 。我们稍后会讨论JsUnit服务器,到时你会更清楚地了解这两个参数,不过要知道,在测试运行工具的浏览器路径中增加submitResults=true,这会告诉JsUnit:将测试的结果发送到JsUnit的“acceptor” servlet 。这对你意味着什么?使用这个参数的话,测试运行的结果会创建结果的一个XML表示(与JUnit的XML输出有同样的结构),以便以后获取。如果向浏览器输入 file:///E:/jsunit2.2/jsunit/testRunner.html?testPage=E:/jsunit2.2/customSuit.html&autoRun=true&suite=setUptearDownTest&debug&submitResults=true 连接(注:默认会发往本机JsUnit,如果是其他服务器,则把submitResults设置成localhost:8080/jsunit/acceptor的形式即可),则测试完成后会把测试结果发送到JsUnit服务器,然后服务器根据测试传过来的结果生成XML格式的结果,并显示在浏览器中。要想看到以下结果,则还要把JsUnit服务启动起来,我这里是用的Ant命令直接拉起来的,拉起的过程图也在下面:
只有当使用submitResults=true时,resultId查询才有意义。我们只对JsUnit服务器的工作稍提及,根据我们介绍的这一点点内容,你可能可以猜出:提交到JsUnit服务器的各个测试应该有各自惟一的标识符。可以让JsUnit来提供自己的ID,但是如果必须使用你喜欢的编号,也可以通过resultId参数传递这样一个数。如果在地址栏中输入 file:///E:/jsunit2.2/jsunit/testRunner.html?testPage=E:/jsunit2.2/customSuit.html&autoRun=true&suite=setUptearDownTest&debug&submitResults=true&resultId=logfilename ,则生成的XML中id的值为logfilename,如果服务器保存了这个XML文件,则文件名也会包含logfilename。

使用JsUnit服务器
虽然向测试运行工具传递各种参数可以较容易地完成自动化测试,但是你很快就会厌倦这样以常规方式手工地运行测试(我们可以结合 ANT 与 JUnit 来完成全自动化测试 ,以及纳入持续集成管理),特别是要考虑到多个操作系统上的多个浏览器 时,更是如此。你可能想跟踪以前运行的结果 ,以便进行审计或完成质量保证。为解决这些问题,JsUnit服务器会提供测试结果的XML日志 ,从JUnit或Ant脚本运行测试,以及在远程主机上从JUnit或Ant脚本运行测试。
利用JsUnit服务器,你只需点击一个按钮或调用一下命令,就能基于你的操作系统/浏览器运行整个测试集。另外,只需在一个重要步骤中把JavaScript的测试增加到Ant脚本中,就能使之成为构建过程的一部分。JsUnit服务器包括一组Java servlet,它们在可嵌入的Jetty开源Web服务器上运行,这样你就无需在每个主机上都配置一个Web服务器/servlet容器(因为JsUnit本身就与Jetty集成了,运行时只需用Ant启动就行了) 。一旦完成配置,这个过程就很简单了,只是按下一个按钮或调用一下命令而已!
配置服务器
在利用JsUnit服务器之前,需要先进行配置。为此可以修改build.xml文件,这个文件在jsunit文件夹中。这个文件的最前面有一组属性,可以修改这些属性来满足你的需要。这些变量都很好理解,详细内容请见下表。
服务器配置
环境变量 |
内 容 |
browserFileNames |
你想测试的一组浏览器可执行文件,这是一个完全路径列表,各个路径之间用逗号分隔 |
url |
测试运行工具的 URL ,包括适当的查询串来自动运行适当的测试集 |
port |
运行 JsUnit 服务器的端口,如果没有这个变量,会就使用端口 8080 |
resourceBase |
定义 JsUnit 服务器的文档根。如果是空值(一般设置),就会使用 jsunit 安装目录 |
logsdirectory |
运行测试的结果会写到这个目录。如果是空值,则默认为 jsunit/logs |
remoteMachineURLs |
指定你想在哪些远程主机上运行测试,即这些远程主机的 URL 列表,各 URL 之间用逗号分隔。这些远程主机需要已经安装配置了一个 JsUnit 服务器 |
一旦配置了测试集(或测试页)和浏览器组合,只需运行standalone_test 目标。我配置以下三个属性
<property name="browserFileNames" value="C:\Program Files\Internet Explorer\iexplore.exe" description="browserFileNames is the list of browsers in which to run tests when StandaloneTest is invoked on this machine. For a JsUnit Server, this is a mandatory property. For example: 'c:\program files\internet explorer\iexplore.exe,c:\program files\netscape\netscape7.1\netscp.exe'" /> <property id="closeBrowsersAfterTestRuns" name="closeBrowsersAfterTestRuns" value="false" description="closeBrowsersAfterTestRuns determines whether to attempt to close browsers after test runs. This is not a mandatory property. The default is true. For example: 'true'" /> <property id="url" name="url" value="file:///E:/jsunit2.2/jsunit/testRunner.html?testPage=E:/jsunit2.2/customSuit.html" description="url is the URL (HTTP or file protocol) to open in the browser. For a JsUnit Server, this is a mandatory property for a test run if the server is not passed the 'url' parameter. For example: 'file:///c:/jsunit/testRunner.html?testPage=c:/jsunit/tests/jsUnitTestSuite.html'" />
运行这个目标,会在你指定的端口上启动Jetty服务器,而一旦服务器开始运行,就会启动你指定的浏览器,而且会运行你配置的测试。当然,不必特别注意结果,如果出现一个失败或错误,它会显示在Ant任务的输出中,指出任务失败。
在命令行运行结果如下:
E:\jsunit2.2\jsunit>ant standalone_test Buildfile: build.xml standalone_test: [junit] Testsuite: net.jsunit.StandaloneTest [junit] 2009-10-20 21:37:59 org.mortbay.util.FileResource <clinit> [junit] 信息: Checking Resource aliases [junit] 2009-10-20 21:37:59 com.opensymphony.webwork.config.DefaultConfigura tion <init> [junit] 警告: Could not find webwork.properties [junit] 2009-10-20 21:38:01 net.jsunit.AbstractJsUnitServer logStatus [junit] 信息: Starting Standard Server with configuration: [junit] <configuration type="STANDARD"> [junit] <os>x86 - Windows XP</os> [junit] <ipAddress>192.168.1.100</ipAddress> [junit] <hostname>192.168.1.100</hostname> [junit] <browserFileNames> [junit] <browserFileName id="0">C:\Program Files\Internet Explorer\iexpl ore.exe</browserFileName> [junit] </browserFileNames> [junit] <closeBrowsersAfterTestRuns>false</closeBrowsersAfterTestRuns> [junit] <description /> [junit] <logsDirectory>E:\jsunit2.2\jsunit\logs</logsDirectory> [junit] <port>8080</port> [junit] <resourceBase>E:\jsunit2.2\jsunit\.</resourceBase> [junit] <timeoutSeconds>60</timeoutSeconds> [junit] <url>file:/E:/jsunit2.2/jsunit/testRunner.html?testPage=E:/jsunit2 .2/customSuit.html</url> [junit] </configuration> [junit] 2009-10-20 21:38:01 org.mortbay.http.HttpServer doStart [junit] 信息: Version Jetty/5.1.10 [junit] 2009-10-20 21:38:02 org.mortbay.util.Container start [junit] 信息: Started org.mortbay.jetty.servlet.ServletHandler@1d7ad1c [junit] 2009-10-20 21:38:02 org.mortbay.util.Container start [junit] 信息: Started ServletHttpContext[/jsunit,/jsunit] [junit] 2009-10-20 21:38:02 org.mortbay.http.SocketListener start [junit] 信息: Started SocketListener on 0.0.0.0:8080 [junit] 2009-10-20 21:38:02 org.mortbay.util.Container start [junit] 信息: Started org.mortbay.http.HttpServer@1f6f0bf [junit] 2009-10-20 21:38:03 net.jsunit.AbstractJsUnitServer logStatus [junit] 信息: Starting Test Run [junit] 2009-10-20 21:38:03 net.jsunit.AbstractJsUnitServer logStatus [junit] 信息: Launching C:\Program Files\Internet Explorer\iexplore.exe on f ile:/E:/jsunit2.2/jsunit/testRunner.html?testPage=E:/jsunit2.2/customSuit.html&a utoRun=true&submitResults=localhost:8080/jsunit/acceptor [junit] 2009-10-20 21:38:03 net.jsunit.AbstractJsUnitServer logStatus [junit] 信息: Waiting for C:\Program Files\Internet Explorer\iexplore.exe to submit result [junit] 2009-10-20 21:38:11 com.opensymphony.xwork.interceptor.component.Com ponentInterceptor <clinit> [junit] 信息: WebWork's IoC has been deprecated, please use an alternative s uch as Spring [junit] 2009-10-20 21:38:11 net.jsunit.AbstractJsUnitServer logStatus [junit] 信息: Received submission [junit] 2009-10-20 21:38:12 net.jsunit.AbstractJsUnitServer logStatus [junit] 信息: Test Run Completed [junit] 2009-10-20 21:38:12 net.jsunit.AbstractJsUnitServer logStatus [junit] 信息: Stopping server [junit] 2009-10-20 21:38:12 org.mortbay.util.ThreadedServer$Acceptor run [junit] 信息: Stopping Acceptor ServerSocket[addr=0.0.0.0/0.0.0.0,port=0,loc alport=8080] [junit] 2009-10-20 21:38:12 org.mortbay.http.SocketListener stop [junit] 信息: Stopped SocketListener on 0.0.0.0:8080 [junit] 2009-10-20 21:38:12 org.mortbay.util.Container stop [junit] 信息: Stopped org.mortbay.jetty.servlet.ServletHandler@1d7ad1c [junit] 2009-10-20 21:38:13 org.mortbay.util.Container stop [junit] 信息: Stopped ServletHttpContext[/jsunit,/jsunit] [junit] 2009-10-20 21:38:13 org.mortbay.util.Container stop [junit] 信息: Stopped org.mortbay.http.HttpServer@1f6f0bf [junit] Tests run: 1, Failures: 0, Errors: 0, Time elapsed: 13.953 sec [junit] ------------- Standard Error ----------------- [junit] 2009-10-20 21:37:59 org.mortbay.util.FileResource <clinit> [junit] 信息: Checking Resource aliases [junit] 2009-10-20 21:37:59 com.opensymphony.webwork.config.DefaultConfigura tion <init> [junit] 警告: Could not find webwork.properties [junit] 2009-10-20 21:38:01 net.jsunit.AbstractJsUnitServer logStatus [junit] 信息: Starting Standard Server with configuration: [junit] <configuration type="STANDARD"> [junit] <os>x86 - Windows XP</os> [junit] <ipAddress>192.168.1.100</ipAddress> [junit] <hostname>192.168.1.100</hostname> [junit] <browserFileNames> [junit] <browserFileName id="0">C:\Program Files\Internet Explorer\iexpl ore.exe</browserFileName> [junit] </browserFileNames> [junit] <closeBrowsersAfterTestRuns>false</closeBrowsersAfterTestRuns> [junit] <description /> [junit] <logsDirectory>E:\jsunit2.2\jsunit\logs</logsDirectory> [junit] <port>8080</port> [junit] <resourceBase>E:\jsunit2.2\jsunit\.</resourceBase> [junit] <timeoutSeconds>60</timeoutSeconds> [junit] <url>file:/E:/jsunit2.2/jsunit/testRunner.html?testPage=E:/jsunit2 .2/customSuit.html</url> [junit] </configuration> [junit] 2009-10-20 21:38:01 org.mortbay.http.HttpServer doStart [junit] 信息: Version Jetty/5.1.10 [junit] 2009-10-20 21:38:02 org.mortbay.util.Container start [junit] 信息: Started org.mortbay.jetty.servlet.ServletHandler@1d7ad1c [junit] 2009-10-20 21:38:02 org.mortbay.util.Container start [junit] 信息: Started ServletHttpContext[/jsunit,/jsunit] [junit] 2009-10-20 21:38:02 org.mortbay.http.SocketListener start [junit] 信息: Started SocketListener on 0.0.0.0:8080 [junit] 2009-10-20 21:38:02 org.mortbay.util.Container start [junit] 信息: Started org.mortbay.http.HttpServer@1f6f0bf [junit] 2009-10-20 21:38:03 net.jsunit.AbstractJsUnitServer logStatus [junit] 信息: Starting Test Run [junit] 2009-10-20 21:38:03 net.jsunit.AbstractJsUnitServer logStatus [junit] 信息: Launching C:\Program Files\Internet Explorer\iexplore.exe on f ile:/E:/jsunit2.2/jsunit/testRunner.html?testPage=E:/jsunit2.2/customSuit.html&a utoRun=true&submitResults=localhost:8080/jsunit/acceptor [junit] 2009-10-20 21:38:03 net.jsunit.AbstractJsUnitServer logStatus [junit] 信息: Waiting for C:\Program Files\Internet Explorer\iexplore.exe to submit result [junit] 2009-10-20 21:38:11 com.opensymphony.xwork.interceptor.component.Com ponentInterceptor <clinit> [junit] 信息: WebWork's IoC has been deprecated, please use an alternative s uch as Spring [junit] 2009-10-20 21:38:11 net.jsunit.AbstractJsUnitServer logStatus [junit] 信息: Received submission [junit] 2009-10-20 21:38:12 net.jsunit.AbstractJsUnitServer logStatus [junit] 信息: Test Run Completed [junit] 2009-10-20 21:38:12 net.jsunit.AbstractJsUnitServer logStatus [junit] 信息: Stopping server [junit] 2009-10-20 21:38:12 org.mortbay.util.ThreadedServer$Acceptor run [junit] 信息: Stopping Acceptor ServerSocket[addr=0.0.0.0/0.0.0.0,port=0,loc alport=8080] [junit] 2009-10-20 21:38:12 org.mortbay.http.SocketListener stop [junit] 信息: Stopped SocketListener on 0.0.0.0:8080 [junit] 2009-10-20 21:38:12 org.mortbay.util.Container stop [junit] 信息: Stopped org.mortbay.jetty.servlet.ServletHandler@1d7ad1c [junit] 2009-10-20 21:38:13 org.mortbay.util.Container stop [junit] 信息: Stopped ServletHttpContext[/jsunit,/jsunit] [junit] 2009-10-20 21:38:13 org.mortbay.util.Container stop [junit] 信息: Stopped org.mortbay.http.HttpServer@1f6f0bf [junit] ------------- ---------------- --------------- [junit] [junit] Testcase: C:\Program Files\Internet Explorer\iexplore.exe took 13.95 3 sec BUILD SUCCESSFUL Total time: 14 seconds E:\jsunit2.2\jsunit>
运行后会在jsunit/logs目录下生成日志文件,如下图:
上图中的文件名由resultid 与 browserId 组成,前一个红框为resultid,后一个为浏览器ID(比如browserFileNames属性配置了多个浏览器时就会从0开始编号)。
日志文件采用JUnit结果同样的XML格式,所以像自动化JUnit测试集一样,可以用同样的转换很容易地加以处理。可以直接查看XML文件,也可以使用JsUnit内置的“displayer”servlet。
要使用“displayer”servlet,首先确保JsUnit服务器已经运行。如果未运行,只需运行start_server目标。一旦JsUnit服务器开始运行,打开你最喜欢的浏览器,指向localhost:8080/jsunit/displayer?id=×××&browserId=0,这里的×××是你想查看的结果日志的ID,后一个x为浏览器ID。如果你想看上面那个XML文件,可以在地址栏中输入 http://localhost:8080/jsunit/displayer?id=1256046869328&browserId=0 ,你会看到测试运行的结果,如下图所示。
在远程主机上运行测试
如果想在分布式主机上运行测试集,需要使用distributed_test Ant任务。当然,必须在要用的每个远程主机上配置一个JsUnit服务器,并配置适当的测试和浏览器。运行distributed_test Ant任务会调用一个JUnit测试(net.jsunit.DistributedTest),它会进一步在配置中提供的每个远程主机上调用一个servlet。这个servlet运行的基于JUnit的测试与本地运行的测试(net.jsunit.StandaloneTest)是一样的。然后,会在远程主机上配置的浏览器中运行测试,结果发送回发起者。
能过调用远程注机上的测试,这样就可以测试任何操作系统与浏览器的组合,并且可以以命令行方式执行所有的测试用例,然后我们就可以更进一步将对于JS代码的自动测试集成到持续集成工具(CC、AntHill、etc.)之中了。
附上这二节所用到的测试页 jsunitTest.rar ,我是放在与 jsunit同一目录下测试。
- jsunitTest.rar (4.1 KB)
- 下载次数: 21
发表评论
-
HTML、JS、JSON特殊字符
2010-12-13 23:47 25906JS到HTML特殊字符转换 这几天做项目,发现从服务器端以J ... -
HTML — HTTP URL 中的特殊字符
2009-10-31 18:16 33361. + URL中的+号表示空格 ... -
HTML — CSS选择器
2009-10-25 21:11 2213一个样式规则由两部分组成:选择器和样式声明。选择器表明要为哪一 ... -
部分解决JsUnit无法在firefox3、safari 测试的问题
2009-10-25 07:03 1458在上一篇中出现了一个问题,就是用 jsunit2.2alpha ... -
JsUnit——eclipse插件(四)
2009-10-25 06:59 2463这节我们来看看如何通过JsUnit插件来运行前几节所测试过的测 ... -
10、JavaScript跨浏览器需注意的问题——ajax基础笔记
2009-10-21 22:19 1390向表中追加行 创建表格行时,我们要把创建的 tr 追加到 t ... -
JsUnit详解——Web服务方式(三)
2009-10-21 00:21 2474上两节提到过以Web方式来运行JsUnit,不过不是很详细,这 ... -
JsUnit详解——《ajax基础》笔记(一)
2009-10-20 19:57 2649JsUnit与JUnit对比 JsUnit也有setUp() ... -
使用Firefox的Web开发插件
2009-10-18 17:53 1487Firefox的Web开发插件为Firefox浏览器增加了大量 ... -
9、访问WEB服务(REST)——ajax基础笔记
2009-10-18 17:24 4072最其名的WEB服务实现是S ... -
8、读取响应头部——ajax基础笔记
2009-10-18 17:20 6773你有时可能需要从服务器获取一些内容,例如,可能想“ping”一 ... -
7、使用JSON向服务器发送数据——ajax基础笔记
2009-10-18 17:20 5254看过前面的例子后(使用XML向服务器发送复杂的数据结构),你可 ... -
6、请求参数作为XML发送——ajax基础笔记
2009-10-18 17:20 1820如果只是使用一个包含 名/值 对的简单查询串,这可能不够健壮, ... -
4、将使用W3C DOM动态生成页面——ajax基础笔记
2009-10-18 17:19 1476使用W3C DOM动态生成页面 dynamicContent ... -
3、将响应解析为XML——ajax基础笔记
2009-10-18 17:18 1082将响应解析为XML parseXML.xml清单: < ... -
2、使用innerHTML属性创建动态内容——ajax基础笔记
2009-10-18 17:17 1952使用innerHTML属性创建动态内容 如果结合作用HTML ... -
1、使用XMLHttpRequest对象——ajax基础笔记
2009-10-18 17:17 2037XMLHttpRequest最早是在 IE5 中以active ... -
30、JavaScript代码优化
2009-10-16 21:25 1621JavaScript代码的速度被分成两部分:下载时间和执行速度 ... -
JavaScript代码优化(二)
2009-10-16 01:32 1213◆字符串的使用 在IE6和IE7中因字符串级联导致的主要问题 ... -
JavaScript代码优化(一)
2009-10-15 23:47 1271尽可能避免使用全局变量和函数.全局的变量和函数其实等价于 wi ...
相关推荐
55links友情链接网址跟踪器,放在桌面,每次直接打开就可以访问55links友情链接交易平台,方便快捷。
AB PLC例程代码项目案例 【备注】 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用!有问题请及时沟通交流。 2、适用人群:计算机相关专业(如计科、信息安全、数据科学与大数据技术、人工智能、通信、物联网、自动化、电子信息等)在校学生、专业老师或者企业员工下载使用。 3、用途:项目具有较高的学习借鉴价值,不仅适用于小白学习入门进阶。也可作为毕设项目、课程设计、大作业、初期项目立项演示等。 4、如果基础还行,或热爱钻研,亦可在此项目代码基础上进行修改添加,实现其他不同功能。 欢迎下载!欢迎交流学习!不清楚的可以私信问我!
moore_01_0909
FIBR English learning
AB PLC例程代码项目案例 【备注】 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用!有问题请及时沟通交流。 2、适用人群:计算机相关专业(如计科、信息安全、数据科学与大数据技术、人工智能、通信、物联网、自动化、电子信息等)在校学生、专业老师或者企业员工下载使用。 3、用途:项目具有较高的学习借鉴价值,不仅适用于小白学习入门进阶。也可作为毕设项目、课程设计、大作业、初期项目立项演示等。 4、如果基础还行,或热爱钻研,亦可在此项目代码基础上进行修改添加,实现其他不同功能。 欢迎下载!欢迎交流学习!不清楚的可以私信问我!
OIF_IEEE802.3_liaison_19OCt09
做网络安全FTP内容的实验必备
nagarajan_01_1107
AB PLC例程代码项目案例 【备注】 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用!有问题请及时沟通交流。 2、适用人群:计算机相关专业(如计科、信息安全、数据科学与大数据技术、人工智能、通信、物联网、自动化、电子信息等)在校学生、专业老师或者企业员工下载使用。 3、用途:项目具有较高的学习借鉴价值,不仅适用于小白学习入门进阶。也可作为毕设项目、课程设计、大作业、初期项目立项演示等。 4、如果基础还行,或热爱钻研,亦可在此项目代码基础上进行修改添加,实现其他不同功能。 欢迎下载!欢迎交流学习!不清楚的可以私信问我!
mellitz_3cd_01_0318
PyQt6实战派 配套代码
陕西省省级非物质文化遗产经纬度数据统计表 统计内容包含以下字段: 1. 项目名称 2. 遗产类别 3. 入选批次 4. 所属地区 5. 申报地区/单位 6. 地理经度 7. 地理纬度 该统计表系统记录了陕西省省级非物质文化遗产的地理空间信息,为文化遗产的数字化保护与研究工作提供了重要的数据支撑。
ran_3ck_02a_0918
毕业设计_基于springboot+vue开发的汽车租赁管理系统【源码+sql+可运行】【50308】.zip 全部代码均可运行,亲测可用,尽我所能,为你服务; 1.代码压缩包内容 代码:springboo后端代码+vue前端页面代码; 脚本:数据库SQL脚本 效果图:运行结果请看资源详情效果图 2.环境准备: - JDK1.8+ - maven3.6+ - nodejs14+ - mysql5.6+ - redis 3.技术栈 - 后台:springboot+mybatisPlus+Shiro - 前台:vue+iview+Vuex+Axios - 开发工具: idea、navicate 4.功能列表 - 系统设置:用户管理、角色管理、资源管理、系统日志 - 业务管理:汽车管理、客户管理、租赁订单 3.运行步骤: 步骤一:修改数据库连接信息(ip、port修改) 步骤二:找到启动类xxxApplication启动 4.若不会,可私信博主!!!
# Runcorder - 跑步训练管理系统 Runcorder 是一款专为跑步爱好者、马拉松运动员及高校体育生设计的本地化跑步训练管理工具,基于 Python 开发,结合 Tkinter 图形界面与强大的数据处理能力,为用户提供从训练记录到数据分析的全方位支持。无论是初学者还是专业跑者,Runcorder 都能帮助你科学规划训练、精准追踪进度,并通过可视化图表直观呈现训练成果,让你的跑步训练更智能、更高效! - **多用户管理**:支持创建、加载和删除用户档案,每个用户的数据独立存储,确保隐私与安全。 - **科学训练记录**:全维度记录跑步数据,包括日期、里程、配速、自评和晨跑标记,支持智能输入校验,避免数据错误。 - **多维数据分析**:通过动态可视化图表展示跑步里程趋势、平均配速曲线,支持自定义 Y 轴范围,帮助用户深入理解训练效果。 - **高阶功能**:提供 4 种科学训练模式(有氧/无氧/混合),支持历史记录修改与删除,数据以 JSON 格式持久化存储,跨平台兼容。
paatzsch_01_0708
AnythingLLM是一个全栈应用程序,您可以使用流行的开源大语言模型,再结合向量数据库解决方案构建个人本地AI大模型知识库
mellitz_3ck_02_0519
petrilla_01_0708