DataPool 是一种测试数据集,在测试脚本回放的时候提供给脚本的变量。 datapool 可以由 rational 产品 robot 或 TestManager 创建,下边的表格列举出在 robot 和 testmanager 中可以对 datapool 执行的操作:
操作 Robot TestManager
在测试脚本中自动建立 datapool ●
创建测试脚本并产生自动数据 ● ●
修改 vu 脚本中的 datapool 设置 ●
修改 datapool 字段定义并修改测试数据 ● ●
创建并修改数据类型 ●
管理 datapool 比如改名或者拷贝 ●
倒入到出数据 ●
倒入数据 ●
备注: rational 中 datapool 有两种文件: txt 和 csv 文件,创建 datapool 成功后会保存在
盘符 :\ 工程文件目录 \TestDatastore\DefaultTestScriptDatastore\TMS_Datapools 文件夹下
测试数据保存在有 csv 扩展名的文本文件中,所有字段信息保存在后缀名为 spc 的文件中,该文件由 testmanager 管理。
datapool 有两种创建方法,一种是在 testmanager 中建立,一种 robot 录制 vu 脚本时自动建立同名 datapool ,只有在 robot 中 tools->session record options, 设置 Generator 页面 general 的 use datapool 选项,才可以生效。下边分别介绍这两种创建和使用方法:
一.
建立 datapool :
1 .启动 Rational TestManager ;
2 . Tools>Manage>Datapool ,点击 New …,输入数据池名称点“确定”;
3 .在打开的 Data Type Specification 中添加字段定义;(字段定义说明见后)
4 .生成数据 Generate Data (产生大量数据,这里默认产生 100 个数据)
5 .修改其中的数据 Edit DataPool data
其中字段定义说明:
1) Name 指的是数据池列标题名它与测试脚本中变量相一致。如果你改变了数据池列名,也必须保证测试脚本中的变量做相应的改变;如果你不是在 Rational 测试环境下建立的数据池然后导入它, TestManager 自动给数据池列分配缺省的名称。也必须保证测试脚本中的变量与其相一致。你可以用 ime 给 datapool 字段起多字节的名字
2) Type 标准的或用户定义的数据类型都按名称向数据池列提供其值。犹如建立数据库,先建立字段名,后改动类型。
制定数据池列的数据类如下操作:
a 、选择标准类型或已存在的用户定义数据类型,点击当前显示的数据类型名称,然后从列表中选择新的数据类型。
b 、可以选择 rational 中的标准的数据类型。
c 、如果想自定义一个类型名称而不是进行选择,在用户定义数据类型前输入星号,如: *MyData;
d 、建立新的用户定义数据类型,输入数据类型名称(不要带 * ),然后点击 Return 。在你点击了 Yes 确定你想要建立用户定义的数据类型,
例如:建立新的 column ,输入列名,输入 DemoType (自定义类型),保存。这时会出现数据类型属性编辑对话框(我向 Description 中输入描述信息,确定按钮不可用,可能是 rational 的 bug ,不知道告诉 ratioanl 有没有奖励),确定,出现另一个数据类型属性编辑界面,输入测试数据,退出。选中该行生成数据, testmanager 会自动创建你输入的数据。
e 、建立新的用户定义数据类型。
3) Sequence 数据类型的值的顺序被写入数据池列中。只要从中进行选择即可:- Random -随机向数据池列中写入数字和字母的值。- Sequential -顺序写出,如 0 , 1 , 2 , 3 , ... Sequential 仅仅支持数字值(包括日期和时间) 和生成的用户定义的日期类型。当你选择数字类型,必须确定其最大和最小的范围,间隔必须大于 0 ;- Unique 即其中的值是唯一的。也可定义最大最小值。
4) Repeat 即出现在数据池列的时间, Repeat 不能为 0 。要想设置有符号的整数和用户定义的数据类型的唯一性,设置 Reapeat 为 1 。当定义唯一值时,确定生成的数在你定义的范围之内。
5) Length 数据池列中存在的最大的数。这个长度包括小数点和负号。
6) Decimals 定义最大的浮点数的小数位,最大的设置是 6 位。
7) Interval 如果你在数据池列中设置了间隔,那么将按照你设置的顺序,而顺序变化。最小的间隔是 1 ,最大的间隔是 999999 在数字数据类型下选择了 Sequence ,并定义了最大和最小范围,间隔必须大于 0 。这设置仅仅在数字设置时有效。
8) Minimum 确定数字最小值这设置仅仅在数字设置时有效。
9) Maximum 确定数字最大值这设置仅仅在数字设置时有效。
10) Seed 是 Rational Test 为了计算随机值的数。相同的种子数产生相同的随机数,要改变随机顺序,改变种子数。
11) Data File 用户定义的数据类型的路径,这个路径是自动付给你的,不能进行修改。数据类型文件存放在你的项目文件中的 Data Type 目录,不能进行直接修改。
4 、 在设置好字段后,在 No. of records to genarete :中输入要生成的记录数,然后点击 Genarete Data 即可生成数据,或者点击 SAVE 按钮,关闭当前窗口,然后点击 manage datapools>edit>edit datapool data ,直接手工输入数据;
5 、 这样就完成了数据池的创建,还可以执行数据池的编辑、改名、删除、导入、导出等操作;
6 、 数据池有数据生成能力,但是不具备数据的计算能力。这种情况下可以利用其他工具(如 EXCEL )生成数据,并保存为 csv( 逗号分割文件 ) 格式,然后在 manage datapools 中导入;
实际应用:
开发部最近提出对现有软件系统的登陆功能进行测试。测试工程师设计测试用例,在实际工作中发现登陆系统版本基本稳定,而且功能孤立,界面在将来的版本中变化的可能性不大,所以决定测试自动化,减少人工重复劳动,提高测试效率。
测试工程师开始利用黑盒测试方法等价类法,因果分析法,边界值法等方法设计测试用例,开发功能测试脚本,用 datapool (数据池中的数据是设计测试用例的时候用到的输入值)保存测试数据。 登陆界面需要输入用户名,密码,在数据池中建立两个字段 username,password 。 Datapool 中的数据和测试用例中输入数据相一致。
第一步:创建名字为 dp 的 datapool, 假如字段 name,password 并自动生成数据,然后把测试用例中各种数据输入 dp 中
第二步:录制功能测试脚本,脚本如下:
Sub Main
Dim Result As Integer
'Initially Recorded: 2004-4-24 10:59:24
'Script Name: Five
StartApplication "xxx"
Window SetContext, "Caption= 登陆 ", ""
InputKeys "sa"
EditBox Click, "ObjectIndex=1", "Coords=34,9"
InputKeys "sa"
PushButton Click, "Text= 登陆 "
Window SetContext, "Caption= 登陆 ;Class=#32770", ""
PushButton Click, "Text= 确定 "
End Sub
第三步:循环读出 datapool 数据,进行自动化测试,脚本如下
'$Include "sqautil.sbh"
Sub Main
Dim Result As Integer
Dim dp_id as Long
Dim dp_Result as Long
Dim strName as String
Dim strPassWord as String
'Initially Recorded: 2004-4-24 10:30:51
'Script Name: Four
StartApplication "xxx"
Window SetContext, "Caption= 登陆 ", ""
dp_id = SQADatapoolOpen ("dp", FALSE, SQA_DP_SEQUENTIAL, FALSE)
dp_Result = SQADatapoolFetch (dp_id)
while dp_Result <> sqaDpEOF
dp_Result = SQADatapoolValue (dp_id, "name", strName)
dp_Result = SQADatapoolValue (dp_id, "password", strPassWord)
dp_Result = SQADatapoolFetch (dp_id)
InputKeys strName
EditBox Click, "ObjectIndex=1", "Coords=34,9"
InputKeys strPassWord
PushButton Click, "Text= 登陆 "
Window SetContext, "Caption= 登陆 ;Class=#32770", ""
PushButton Click, "Text= 确定 "
wend
dp_Result = SQADatapoolClose (dp_id)
End Sub
第四步: 加入执行成功和失败的 result 信息并写入 Result report 中,和必要的除错处理。对脚本进行优化。加入 BASELINE 设置(对于测试基线有两种思路,一种是文件处理,采用文件类型为文本文件或者 EXCEL 或者 WORD ,读取 DATAPOOL 测试数据和文件内容对比,检测测试数据是否在文件中存在,当然这里的测试基线考虑的不够周全,你可以定制规则,逐步完善,一种是直接从数据库中读取数据进行对比 , 用数据库作为 baseline 来避免以后增加测试用例后改动 baseline 文件,当然这么做跟测试理论不合,应该把预期输出保存到特定文件中作为 baseline, 这个留给你自己动手来改进)。
脚本如下:
'$Include "sqautil.sbh"
Sub Main
Dim Result As Integer
Dim dp_id as Long
Dim dp_Result as Long
Dim strMessage as String
Dim vSText as string
Dim cnn As object
Dim Rst As object
Dim strLink As String
Dim strSql As String
Dim strName as String
Dim strPassWord as String
'Initially Recorded: 2004-4-24 10:30:51
'Script Name: Four
strLink = " 连接字符串 "
Set cnn = CreateObject("ADODB.Connection")
Set Rst = CreateObject("ADODB.Recordset")
cnn.Open strLink
Rst.CursorLocation = 0
Rst.LockType = 1
Rst.CursorType = 2
On Error Goto Last
StartApplication "xxx"
Window SetContext, "Caption= 登陆 ", ""
dp_id = SQADatapoolOpen ("dp", FALSE, SQA_DP_SEQUENTIAL, FALSE)
dp_Result = SQADatapoolFetch (dp_id)
if (dp_Result = 0) then
while dp_Result <> sqaDpEOF
dp_Result = SQADatapoolValue (dp_id, "name", strName)
dp_Result = SQADatapoolValue (dp_id, "password", strPassWord)
dp_Result = SQADatapoolFetch (dp_id)
InputKeys strName
EditBox Click, "ObjectIndex=1", "Coords=34,9"
InputKeys strPassWord
PushButton Click, "Text= 登陆 "
strMessage = " 用户名: " + strName + "; 密码: " + strPassWord
strSql = "select * from login where name = "" " + strName + " "" and password = """ + strPassWord + """"
Rst.open strSql, cnn
Window SetContext, "Caption= 登陆 ;Class=#32770", ""
‘ 这个函数是作为插入验证点,验证点为窗体提示信息,没有用 window p_w_picpath 来作为验证点,是因为无法把该脚本进行模块化,存入 shl 文件中,将来多平台使用。
SQAGetProperty "Label", "Text", vSText
‘ 如果 rst.RecordCount 返回值为 1 ,说明此用户在数据库中存在
‘ 测试用例分为成功,失败的测试用例,失败的测试用例中即使数据
' 错误,但有预期输出就是成功的用例,所以写入 result report 中的信
‘ 息分为三种,成功,失败,预期失败,对于程序中有不是预期的窗
‘ 体,用程序自动关闭掉,继续执行,这里安全的做法做标志然后关
‘ 闭整个软件,重新启动软件,测试脚本从失败处继续执行
if Rst.RecordCount= 1 then
if (vSText=" 登陆成功 ") then
PushButton Click, "Text= 确定 "
SQALogMessage sqaPass, " 测试数据为 " + strMessage + " 的测试用例执行成功 ", " 项目名称 "
else
' 出现异常窗体,该用例测试失败
SQALogMessage sqaFail, " 测试数据为 " + strMessage + " 的测试用例执行失败 ", " 项目名称 "
SQAGetProperty "Window", "Text", vSText
SQALogMessage sqaFail, " 出现错误窗体 :"+ vSText, " 项目名称 "
Window CloseWin, "Caption=" + vSText, ""
end if
else
if (vSText=" 登陆失败 ") then
' 数据错误,用例执行失败,软件功能正常
PushButton Click, "Text= 确定 "
SQALogMessage sqaFail, " 测试数据为 " + strMessage + " 的测试用例执行失败但软件功能正常 ", " 项目名称 "
else
' 出现异常窗体,该用例测试失败
SQALogMessage sqaFail, " 测试数据为 " + strMessage + " 的测试用例执行失败 ", " 项目名称 "
SQAGetProperty "Window", "Text", vSText
SQALogMessage sqaFail, " 出现错误窗体 :"+ vSText, " 项目名称 "
Window CloseWin, "Caption=" + vSText, ""
end if
end if
wend
dp_Result = SQADatapoolClose (dp_id)
else
SQALogMessage sqaFail, " 数据池打开失败 ", " 项目名称 "
end if
Last:
SQALogMessage sqaFail, " 测试脚本发生异常,测试脚本执行失败 ", " 项目名称 "
End Sub
总结:
上边脚本是对登陆功能测试自动化初步优化后的代码,后边还要做的是脚本模块化,函数话,功能分切。脚本过大不容易维护,把其中连接数据库,处理 datapool 功能写成函数提供其他工程使用。其实也可以把测试数据存入文本文件 ,word,excel 等文件中,然后读出处理模拟 datapool 功能,但开发脚本工程量大。 datapool 提供自动生成数据功能和能够和工程结合是它的优点,但很困难多个工程共享 datapool 。
二.性能测试脚本自动建立测试 datapool
在 robot 中 tools->session record options, 设置 Generator 页面 general 的 use datapool 选项,才能在产生 datapool.
一般录制性能测试脚本,遵循如下步骤:
第一. 设置录制 Session 选项
第二. 启动录制对话
第三. 启动客户端程序
第四. 产生脚本
第五. 关闭客户端程序
第六. 停止录制
设置选项:
1 .录制方法( method ) : api, network,proxy,custom 四种选项设置
通过分析要测试的软件架构来选择录制的方法,下边的表格提供参考:
Situation Api NetWork Proxy
The client application access secure data from a Web server Required
The Client Application access data from a web server Recommended Fist Alternate Second alternate
The client application accesses objects on a DCOM Server Required
The client application access an oracle8 database or oracle arrays. Required
The client application access an Oracle database.(For network and proxy recording, supply the name of the oracle database,) Recommended First alternate Second alternate
The client application is not installed on the local computer Recommended Alternate
The client application is not running on Windows NT4, Windows XP, or Windows 2000 Recommended Alternate
You want to record traffic from multiple client applications that reside on different commputers Recommended Alternate
You want to record traffic between multiple,specific clent and server computers. Recommended
Neither the client nor the serer computer is on same network segment as the local computer Required
An Ethernet controls network traffic, and neither the client nor the server application is installed on the computer required
The client application accesses a TUXEDO Server Recommended Alternate
“On-the-wire” recording support is lacking Recommended Alternate
Api recording is not functioning properly Recommended Alternate
FDDI,ATM,or other hight-speed networks are used Recommended
备注:上图参考 rational robot user's guide ,
NetWork 录制方式必须安装 Rational 网络驱动才能生效
安装方法:
1. 开始 - 〉设置 - 〉网络和拨号连接
2. 点本地连接
3. 点安装,选择协议,点添加
4. 点选者从磁盘安装
5. 打开安装目录 C:\Program Files\Rational\Rational Test\driverw2k (安装 rational 的目录),选者 inf 文件,确定
6. 选择 ethernet 或者 token ring 都可以
2.Generator Filtering
Filtering
(1) . 设置 autoFiltering 使 robot 生成脚本时自动选择可用协议 , 下边协议选者列表可用
特别说明 DCOM 是一种独占的协议,不能和其他协议共存
如果后台是 SQLSERVER ,选择 SQLSERVER, 如果后台是 ORACLE, 选择 ORACLE 协议。根据软件实现方式,选择不同的协议。
(2). 设置 Manual Protocol Filtering 使 robot 生成脚本时手工选择协议
3.Generator Per Protocol
只能对在 generator Filtering 选择的部分协议( http,iiop,Oracle,Tuxedo, 和 dcom )起作用。
实际应用:
为了说明问题。我用分别用 vb,delphi, DotNET 实现一个简单添加用户的功能,后台用 ACCESS 数据库,例用 ado 通过 odbc 连接。
1. 分析程序实现的结构,是简单的 c/s 结构,利用 odbc 连接。并且客户端,服务器端都配置在一台计算机。 ( 请注意这个是条件,我们第二步选择的基础 )
2. 设置 session Record Options
录制方法选择 api record 录制,协议用 odbc 。(如果我后台换 sqlserver 或则 oracle ,其他实现方式不变,应该选择什么协议,因该添加什么协议)
3. Vb,delphi 编码方式的功能脚本录制成功(创建同名 datapool )。 DotNet 脚本录制成功,却无法产生同名的 datapool (怎么办)。不成功脚本如下:
/*
->-> Session File Information <-<-
Created: Sun Apr 25 23:24:36 2004
Name: G:\Program\robot\lead\TestDatastore\DefaultTestScriptDatastore\TMS_Sessions\demo.wch
Type: Rational Robot - API
(with ODBC)
*/
#include
{
push Timeout_scale = 200; /* Set timeouts to 200% of maximum response time */
push Think_def = "LR";
Min_tmout = 120000; /* Set minimum Timeout_val to 2 minutes */
push Timeout_val = Min_tmout;
/* No Datapool Items Remain */
/* After All Data Analyses. */
VBNETDemo = sqlconnect("VBNETDemo", "", LOOKUP_PWD,
"VBNETDemo", "odbc",
"DRIVER_INFO='DSN=?;;UID=DEFAULT;PWD=DEFAULT;'");
/*
{ INFO SERVER "UNKNOWN"="0.0.0.0"; } */
/*
Unable to determine Server Name/Address */
set Server_connection = VBNETDemo;
push Think_avg = 0;
stmt_2_1_id = sqlopen_cursor ["pre001"] "", "select * from login";
set Think_avg = 313;
push CS_blocksize = 1;
sqlfetch_cursor ["pre002"] stmt_2_1_id, ALL_ROWS;
set Think_avg = 0;
sqlclose_cursor ["pre003"] stmt_2_1_id ;
set Think_avg = 4078;
stmt_2_2_id = sqlopen_cursor ["pre004"] "", "INSERT INTO `login` (`name`,`password`) VALUES (?,?)",
"'f\002'",
"'f\002'";
set Think_avg = 0;
sqlfree_cursor( stmt_2_2_id );
set Think_avg = 2781;
sqlfree_cursor( stmt_2_1_id );
sqldisconnect(VBNETDemo);
pop [Think_def, Think_avg, Timeout_val, Timeout_scale];
pop CS_blocksize;
}
点 EDIT->Datapool information 报错没有 datapool config ,那就动手修改脚本
4 .修改脚本后如下
/*->-> Session File Information <-<-
Created: Sun Apr 25 23:24:36 2004
Name: G:\Program\robot\lead\TestDatastore\DefaultTestScriptDatastore\TMS_Sessions\demo.wch
Type: Rational Robot - API
(with ODBC)
*/
#include
{
push Timeout_scale = 200; /* Set timeouts to 200% of maximum response time */
push Think_def = "LR";
Min_tmout = 120000; /* Set minimum Timeout_val to 2 minutes */
push Timeout_val = Min_tmout;
/* No Datapool Items Remain */ 红色字体是无法生成 datapool 的解释
/* After All Data Analyses. */
DP1 = datapool_open("lead"); // 添加的脚本
datapool_fetch(DP1); // 添加的脚本
VBNETDemo = sqlconnect("VBNETDemo", "", LOOKUP_PWD,
"VBNETDemo", "odbc",
"DRIVER_INFO='DSN=?;;UID=DEFAULT;PWD=DEFAULT;'");
/*
{ INFO SERVER "UNKNOWN"="0.0.0.0"; } */
/*
Unable to determine Server Name/Address */
set Server_connection = VBNETDemo;
push Think_avg = 0;
stmt_2_1_id = sqlopen_cursor ["pre001"] "", "select * from login";
set Think_avg = 313;
push CS_blocksize = 1;
sqlfetch_cursor ["pre002"] stmt_2_1_id, ALL_ROWS;
set Think_avg = 0;
sqlclose_cursor ["pre003"] stmt_2_1_id ;
set Think_avg = 4078;
stmt_2_2_id = sqlopen_cursor ["pre004"] "", "INSERT INTO `login` (`name`,`password`) VALUES (?,?)",
"'f\002'",
"'f\002'";
set Think_avg = 0;
sqlfree_cursor( stmt_2_2_id );
set Think_avg = 2781;
sqlfree_cursor( stmt_2_1_id );
sqldisconnect(VBNETDemo);
pop [Think_def, Think_avg, Timeout_val, Timeout_scale];
pop CS_blocksize;
}
// 下边是添加的脚本
DATAPOOL_CONFIG "lead" OVERRIDE DP_NOWRAP DP_SEQUENTIAL DP_SHARED
{
EXCLUDE, "rpcarg", "string", "f";
EXCLUDE, "rpcarg", "string", "f";
}
脚本修改完成后,错误解决,可以打开 datapool information.
4. 建立 datapool 。
Exclude 含义是建立 datapool 但不建立 datapool 中字段,运行脚本的时候从实际录制的脚本中读数据。
Include 在 datapool 建立一个同名的字段,运行脚本时从 datapool 中读数据。 Override 在 datapool 中建立同名字段,运行脚本时从实际脚本中读数据。
修改 datapool 的 usage 属性为 include ,建立 datapool 字段,生成数据,修改数据(添加测试用例中的数据)
5. ( 确定脚本运行正常 ) robot 中运行脚本,启动 testmanager ,点 run suit 。或者直接在 testmanager 中启动 suit, 修改 changage, 选择脚本
6. 多用户访问。运行 20 个用户同时访问服务器(修改 suit 中 number of users ),运行 , 修改数字为 20 ,同时运行
7. 我们需要多用户同时访问,但是数据不同。
修改 usage 属性 exclude 为 include 。
修改 DATAPOOL Information 中 playback behavior 中 access 为 radom
use script data 为 obey usage 。运行 testmanage 中 suit 。
第二个实际应用例子比较简单,不过把可能实际应用到的情况进行了简单的阐述,这里中心是介绍 datapool 的使用,基本上把 datapool 影响到的地方介绍给大家了。希望大家在实际工作中应用自如。使我们的测试工作更上一层楼。
备注:以上例子运行在 Rational 2003 版本上。
参考:
Ratonal Robot User's Guide
Rational TestManager User's Guide

职场 软件测试 休闲 软件测试

0

分享

微博 QQ 微信

收藏

上一篇:管理寓言:狗熊救火 下一篇:加密与认证技术基础
风VS潇潇

28篇文章,26W+人气,0粉丝

关注

转载于:https://blog.51cto.com/fengvsxiaoxiao/61925

Rational 中 DataPool 的介绍与实际应用相关推荐

  1. Rational Rose 2007简单介绍及详细安装步骤

    Rational Rose 2007简单介绍及详细安装步骤 Rational Rose是Rational公司出品的一种面向对象的统一建模语言的可视化建模工具.用于可视化建模和公司级水平软件应用的组件构 ...

  2. HTML中Css详细介绍

    HTML中Css详细介绍 一.样式表的作用 1.Css样式表,层叠样式表 2.类似于人类的衣服,网页的衣服 3.作用:美化网页 4.优势: 1.内容与表现分离,便于维护 2.样式丰富,页面布局灵活 3 ...

  3. Linux下使用ls查看文件颜色全部为白色的解决方法,以及Linux中文件颜色介绍

    1 解决ls查看文件爱呢颜色为白色 方法一: 1.修改~/.bashrc文件,添加如下内容 alias ls='ls --color=auto' 2.source一下,让修改配置生效 source ~ ...

  4. TF:tensorflow框架中常用函数介绍—tf.Variable()和tf.get_variable()用法及其区别

    TF:tensorflow框架中常用函数介绍-tf.Variable()和tf.get_variable()用法及其区别 目录 tensorflow框架 tensorflow.Variable()函数 ...

  5. c语言字符串加减_C语言中指针的介绍

    C语言中指针的介绍 指针是C语言中广泛使用的一种数据类型. 运用指针编程是C语言最主要的风格之一.利用指针变量可以表示各种数据结构:能很方便地使用数组和字符串: 并能象汇编语言一样处理内存地址,从而编 ...

  6. Linux中 /boot 目录介绍 【转载】

    Linux中 /boot 目录介绍 转自:点击打开链接 一./boot/目录中的文件和目录 Linux系统在本地启动时,目录/boot/非常重要,其中的文件和目录有: (1)系统Kernel的配置文件 ...

  7. 6.支持向量机(SVM)、什么是SVM、支持向量机基本原理与思想、基本原理、课程中关于SVM介绍

    6.支持向量机(SVM) 6.1.什么是SVM 6.2.支持向量机基本原理与思想 6.2.1.支持向量机 6.2.2.基本原理 6.3.课程中关于SVM介绍 6.支持向量机(SVM) 6.1.什么是S ...

  8. 03_MyBatis基本查询,mapper文件的定义,测试代码的编写,resultMap配置返回值,sql片段配置,select标签标签中的内容介绍,配置使用二级缓存,使用别名的数据类型,条件查询ma

     1 PersonTestMapper.xml中的内容如下: <?xmlversion="1.0"encoding="UTF-8"?> < ...

  9. java中ThreadPool的介绍和使用

    文章目录 Thread Pool简介 Executors, Executor 和 ExecutorService ThreadPoolExecutor ScheduledThreadPoolExecu ...

最新文章

  1. mysql的字段空格是null_MySQL中NULL与空字符串 空格问题
  2. STM32移植RT-Thread后的串口在调试助手上出现:(mq != RT_NULL) assert failed at rt_mq_recv:2085和不能接收数据问题讨论
  3. 51nod 1307 绳子与重物 (标记父节点更新即可)
  4. data中的数据如何在innerhtml中调用_Vuex中调用state数据
  5. h5关于选择器以及class的小加强
  6. 【QGIS入门实战精品教程】4.6:QGIS实现栅格(影像、DEM)的拼接与掩膜提取
  7. 独占设备的分配与回收_灵魂拷问:Java对象的内存分配过程是如何保证线程安全的?...
  8. ajax前台获取json,ajax与json 获取数据并在前台使用简单实例
  9. 小D课堂-SpringBoot 2.x微信支付在线教育网站项目实战_2-6.Mysql逆向工程效率神器之使用IDE自动生成Java实体类...
  10. 视频会议中回声消除与噪音抑制的技巧
  11. 怎么将pdf转换成jpg图片格式
  12. word文档如何画线条流程图_Word中流程图如何画 手把手教你制作!
  13. Matlab信号处理,小波降噪
  14. 进击的自走棋——《金铲铲之战》游戏体验报告
  15. Computer Science Theory for the Information Age-2: 高维空间中的正方体和Chernoff Bounds
  16. 49-从哥尼斯堡七桥问题开始
  17. 简单理解O2O商业模式
  18. 服务器kvm切换器维修,服务器数字KVM切换器
  19. oracle connectionstring 属性尚未初始化.,ConnectionString 属性尚未初始化
  20. 麒麟操作系统基于linux哪个版本_如今的国产操作系统deepin和优麒麟哪个更好?...

热门文章

  1. 发布一个免费漂亮的仿Outlook风格、支持换肤的通用界面框架
  2. Centos7上kvm虚拟化自定义NAT网络
  3. 在Windows10上运行TensorFlow Android Demo实例
  4. oracle数据库查询表的列
  5. numpy+pandas+matplotlib绘制误差条形图
  6. C++——OOP(Object-Oriented Programming) vs. GP(Generic Programming)
  7. 【AI视野·今日CV 计算机视觉论文速览 第183期】28 Apr 2020
  8. 【anaconda】激活环境失败-bash: activate:No such file/没有那个文件或目录
  9. 国内外ACM/ICPC的OJ,BBS列表
  10. 静态类 c# 1615139615