atitit.恒朋无纸化彩票系统数据接入通信协议
atitit.恒朋无纸化彩票系统数据接入通信协议
深圳市恒朋科技开发有限公司
Shenzhen Helper Science & Technology Co., Ltd.
恒朋无纸化彩票系统数据接入通信协议
文档版本历史
内容目录
恒朋无纸化彩票系统数据接入通信协议............................................1
文档版本历史..................................................................2
内容目录......................................................................3
1.文档定义....................................................................4
1.1名词表和缩略语..........................................................4
1.2文档约定................................................................4
2.概述........................................................................5
2.1角色定义................................................................5
2.2交易交互过程............................................................5
3. 交易消息定义...............................................................6
3.1 http参数...............................................................6
3.2消息包..................................................................6
3.3消息头..................................................................8
3.4消息体.................................................................11
3.4.1奖期通知...........................................................11
3.4.2奖期查询...........................................................12
3.4.3投注...............................................................14
3.4.4投注结果通知.......................................................17
3.4.5票查询.............................................................19
3.4.6返奖查询...........................................................21
3.4.7销量查询...........................................................22
4总述........................................................................24
附录A 玩法参数说明...........................................................25
附录B 响应状态码说明.........................................................26
附录C 投注号码格式说明.......................................................28
附录D 玩法奖等参数说明.......................................................32
1.文档定义
第三方投注代理商如果要实现接入恒朋无纸化彩票系统,需要参考两份文档,一份是《恒朋无纸化彩票系统数据接入技术方案》,以及当前的这份《恒朋无纸化彩票系统数据接入通信协议》。《恒朋无纸化彩票系统数据接入技术方案 》说明了第三方投注代理商与恒朋无纸化彩票系统的连接与通信的技术方案,《恒朋无纸化彩票系统数据接入通信协议》说明了通信的数据结构。这两份文档的所有权归属于深圳市恒朋科技开发有限公司。
1.1名词表和缩略语
MD5
HTTP
XML
SCHEMA
1.2文档约定
● 文档备注部分会使用10号字体,并且会注明:注。
● 文档当前版本相对与上一个版本的变化会使用蓝色字体显示。
2.概述
恒朋无纸化彩票系统可以接入多个第三方投注代理商,为接入的第三方投注代理商提供数据落地服务,同时也为第三方投注代理商实现了彩票的无纸化销售方式。
注:更多信息可以参考《恒朋无纸化彩票系统数据接入技术方案》
2.1角色定义
● 投注代理商 :也可以叫做第三方投注代理商,它提供用户界面,接收用户投注请求,管理用户的投注资金,返奖。
● 恒朋无纸化彩票系统 :接收投注代理商的投注数据,完成开兑奖,为投注代理商提供数据落地的服务。
2.2交易交互过程
在第三方投注代理商与恒朋无纸化彩票系统之间的交互过程中,有由第三方投注代理商主动发起请求,也有恒朋无纸化彩票系统主动发起请求。当任一方主动发起请求的时候,发起请求的一方为请求方,接收请求的一方为响应方。下图说明了第三方投注代理商与恒朋无纸化彩票系统之间的交互过程:
当前恒朋无纸化彩票系统默认支持的数据传输协议为HTTP,所以每一个交互都是一个请求/响应的模式。消息发送方发出请求之后,需要等待响应,并且处理响应信息。
3. 交易消息定义
3.1 http参数
交易交互是以http协议作为数据传输协议,这里定义发起交易请求的一端为客户端,客户端需要以http post的方式提交交易请求,在交易请求中需要定义一下两个参数:
参数名
参数说明
交易类型, 参考‘ 消息头’ 部分关于交易类型的定义,比如103
交易消息包
这里假设有一个奖期查询的交易请求,那么http消息体的内容如下:
transType=102&transMessage=<?xml version="1.0" encoding="GBK"?><message version="1.0" id="3899122007051000000231"><header> <messengerID>389912</messengerID><timestamp>20070510092433</timestamp><transactionType>101</transactionType> <digest>8123f913e123e123990028d9c72e013c</digest></header> <body> <issueQuery><issue gameName="ssc" number="2007051001"/></issueQuery> </body></message>
注:实际http传输中,可能对内容进行编码。
3.2消息包
每一个请求/响应的消息包都是一个xml的字符串,包含消息头和消息体,对于不同类型的请求/响应(比如投注和奖期查询),消息头的格式是相同的,而消息体会携带具体的特定类型的请求/响应信息。
请参照下面的消息包格式定义
[消息包示例1—奖期通知请求]
<?xml version="1.0" encoding="GBK"?>
<message version="1.0" id="3899122007051000000231">
<?xml version="1.0" encoding="GBK"?>
<message version="1.0" id="3899122007051000000232">
<header>
<messengerID>389912</messengerID>
[消息头] <timestamp>20070510092435</timestamp>
<transactionType>501</transactionType>
<digest>8123f913e123e123990028d9c72e0dfgds</digest>
</header>
<body>
[消息体] <response code="0000" message="成功,系统处理正常"/>
</body>
</message>
[消息包示例2—奖期通知响应]
整个消息包是一个xml字串,首先声明xml的版本和编码,这里定义encoding为GBK。在消息包元素message中声明了version和id两个属性,其中:
version 表示该消息包使用的数据通信协议的版本,当前为1.0
id 表示这个交易消息包的编号,这个编号必须保证在恒朋无纸化彩票系统唯一。对于同一个交易,请求/响应的消息id应该是相同的。编号的生成规则为(agentID+8位时间戳(YYYYMMDD)+8位递增流水号),其中:
agentID是恒朋无纸化彩票系统为第三方投注代理商分配的唯一编号。
递增流水号从1开始到99999999,每次递增1, 到达99999999之后重新从1开始,由投注代理商自己管理,不足8位的左边补0。
比如某个编号为389912的代理在2007年5月10日发起了一个奖期查询的请求, 那么请求的消息包的id为3899122007051000000231,其中递增流水号为231。
关于消息头和消息体的描述,请参照后续章节。
注: 在这份文档的示例部分,我们总假定投注代理商的编号为389912
3.3消息头
消息头对于所有的交易请求以及对每个交易请求的请求/响应都具有同样的数据结构,其中所包含的信息描述了消息包的发送方,消息发送的时间,交易请求的类型以及对消息包的部分信息的摘要。
注:在后面对交易请求消息体的描述中不再重复说明消息头的结构。
<header>
<messengerID>389912</messengerID>
<timestamp>200703510102433</timestamp>
<transactionType>101</transactionType>
<digest>8123f913e123e123990028d9c72e013c</digest>
</header>
header元素定义了消息头的数据结构,其中:
名称
数据类型
必需
长度
描述
[消息头]
交易类型。每个交易包括请求和响应,当前支持以下交易类型:
● 时间戳: 即消息头中timestamp元素的值。
● 投注代理商密码:恒朋无纸化彩票系统会为每个投注代理商分配一个访问密码,这个密码不会在消息中直接传输。无论是投注代理商向恒朋无纸化彩票系统发送消息还是恒朋无纸化彩票系统向某个代理发送消息,都会使用投注代理商的密码来执行摘要。
● 消息体: 消息包中body元素部分。
假设一个请求消息如下:
<?xml version="1.0" encoding="GBK"?>
<message version="1.0" id="3899122007051012345678">
<header>
<messengerID>389912</messengerID>
<timestamp>20070510102433</timestamp>
<transactionType>102</transactionType>
<digest>8123f913e123e123990028d9c72e013c</digest>
</header>
<body>
<issueQuery>
<issue gameName="ssc" number="2007051002"/>
</issueQuery>
</body>
</message>
那么,被摘要的字串应该是(假设投注代理商的密码为111111):
389912200705101234567820070510102433111111<body> <issueQuery><issue gameName="ssc" number="2007050102"/></body>
注:被摘要的body元素部分应该保留消息字串中的所有格式信息,比如空格。
同时,该奖期查询请求的响应消息应该为:
<?xml version="1.0" encoding="GBK"?>
<message version="1.0" id="3899122007051012345678">
<header>
<messengerID>389912</messengerID>
<timestamp>20070510102440</timestamp>
<transactionType>502</transactionType>
<digest>8123f913e123e123990028d9c72e013c</digest>
</header>
<body>
<response code="0000" message="成功,系统处理正常">
<issue gameName="ssc" number="2007051002"
status="5" bonusCode="1,2,3,4,5"/>
</reponse>
</body>
</message>
[示例请求]
[示例响应]
关于奖期查询交易的说明请参考后续章节。
3.4消息体
在投注代理商和恒朋无纸化彩票系统之间有多个不同的业务交互,每个交互需要发送具体的业务请求,恒朋无纸化彩票系统根据或者投注代理商根据不同的业务请求来执行相应的业务处理。每一个业务处理都是一个请求/响应的过程,即每个业务请求都会有一个相应的业务响应。
3.4.1奖期通知
当恒朋无纸化彩票系统的奖期状态转换的时候,比如开启一个新奖期,截止一个奖期等,恒朋无纸化彩票系统会向相应的投注代理商系统发送奖期通知,通知投注代理商关于奖期状态的变化。同时投注代理商也可以不依赖于恒朋无纸化彩票系统的奖期通知机制,可以通过奖期查询的服务来获得奖期的状态转换。当然投注代理商也可以完全不依赖于恒朋无纸化彩票系统的奖期管理,而由自己来管理奖期。
1)恒朋无纸化彩票系统向投注代理商发出奖期通知的请求消息,消息体格式如下:
<body>
<issueNotify>
<issue gameName="ssc" number="2007051023"
status="1" />
<issue gameName="ssc" number="2007051024"
status="1" />
</issueNotify>
</body>
在消息体元素body中定义了issueNotify子元素来声明奖期通知,其中:
* issueNotify元素: 容器元素,定义了奖期通知数据结构。
issue元素:奖期元素,描述了奖期信息。
名称
数据类型
必需
长度
描述
gameName
string
Y
*
玩法的编号,具体的玩法编号定义可以参照附录B。
[请求消息体]
1
长度
描述
code
string
Y
4
响应方处理请求的响应状态码,具体定义可以参照附录B。
message
注:响应消息都包含response子元素,这个元素在所有交易响应信息中结构是一样的,所以后面将不再对这个元素做重复说明。
<issueQuery>
[响应消息体]
其中,issueQuery元素定义了奖期查询请求数据结构,issue子元素描述了要查询的奖期。如果不指定issue元素的number属性,那么默认返回玩法当前奖期的信息,并且响应信息中会携带当前奖期编号,更多关于issue元素描述可以参照随后奖期查询响应部分中关于issue的描述。
2) 恒朋无纸化彩票系统向投注代理商返回响应信息,消息体格式如下:
<body>
<response code="0000" message="成功,系统处理正常" >
<issue gameName="ssc"
number="2007051002"
startTime="20070328080000"
stopTime="20070328180000"
status="5"
bonusCode="1,2,3,4,5"/>
</response>
</body>
在响应消息中,issue元素描述了详细的奖期信息。
* issue元素
名称
数据类型
必需
长度
描述
gameName
string
Y
*
玩法的编号,具体的玩法编号定义可以参照附录B。
number
string
Y
*
奖期开启时间,格式与消息头中的timestamp子元素一样, 为yyyyMMddHHmmss,示例: 20070510080000表示2007年5月10日上午8:00
奖期截止时间,格式同startTime
玩法的状态,可选值可以参照'奖期通知'部分对于'event'子元素的code 属性的描述。
奖期的开奖号码。
[响应消息体]
恒朋无纸化彩票系统状态
暂停奖期
完成期结
issue, startTime, stopTime, status
完成兑奖
issue, startTime, stopTime, bonusNumber, status
<body>
[异常响应消息体]
<body>
<lotteryRequest>
<ticket id="3899122007051000000266" playType="301" money="8.00" amount="2">
<issue number="2007051044" gameName="ssc"/>
<userProfile cardType="1" mail="wangye@sun.com"
cardNumber="430525800815722"
mobile="13612736754"
realName="王绎之" bonusPhone=" (0755)65079323" />
<anteCode>1,2,3,4,5</anteCode>
<anteCode>5,6,3,2,1</anteCode>
</ticket>
<ticket id="3899122007051000000267"
playType="301" money="6.00" amount="1">
<issue gameName="ssc" number="2007051044"/>
<userProfile cardType="3" mail="ramon@phoenix.com"
cardNumber="G03355390"
bonusPhone=" (023)76526753"
mobile="13098191231" realName="李侠"/>
<anteCode>_,_,9,7,8</anteCode>
<anteCode>_,_,3,6,5</anteCode>
<anteCode>_,_,2,7,6</anteCode>
</ticket>
</lotteryRequest>
</body>
彩票投注的基本单位是票,它对应了投注请求消息体中的一个ticket元素,每一票只能包含同样投注方式的投注号码,并且对投注号码的数量有限制,具体定义可以参照下表中playType属性的定义。
在投注的请求消息体中,lotteryRequest是一个容器元素,它可以有多个ticket子元素,这表示恒朋无纸化彩票系统可以处理投注代理商的批量投注请求,当前协议版本定义一个投注请求最多可以携带500票。
下面说明了消息体的数据结构:
[请求消息体]
ticket元素:投注的票
名称
数据类型
必需
长度
描述
id
string
Y
22
票号,生成规则可以参照消息包的id 定义规则。
playType
integer
Y
投注方式,当前支持以下投注方式定义:
方式编号
5组投注号码
103
cardType
方式编号
2
军官证
3
护照
*
长度
</body>
1)恒朋无纸化彩票系统向投注代理商发起投注结果通知交易请求,消息体格式如下
[响应消息体]
<ticket id="3899122007051000000231"
</ticketNotify>
</body>
其中,响应消息中的ticketNotify定义了投注结果通知消息体结构,ticket子元素和相应的投注交易请求中的ticket元素是对应的,即投注交易请求中每个ticket的投注处理结果都会在相应的投注结果通知中返回,其中:
ticket: 投注基本单位
名称
数据类型
必需
长度
描述
dealTime
string
Y
14
恒朋无纸化彩票系统处理投注代理投注请求的时间,格式为yyyyMMddHHmmss 。
status
string
Y
4
恒朋无纸化彩票系统处理某一票投注的状态,状态码可以参照附录B
message
string
Y
*
如果恒朋无纸化彩票系统处理票投注失败,可以说明失败原因。
2)投注代理商返回相应信息到恒朋无纸化彩票系统,消息体格式如下:
<body>
<response code=“0000” message="成功,系统处理正常"/>
</body>
[请求消息体]
[响应消息体]
</ticketQuery>
2)恒朋无纸化彩票系统处理了投注代理商的票查询请求,返回响应信息。消息体格式如
[请求消息体]
[响应消息体]
<body>
<response code="0000" message="成功,系统处理正常">
<tiketQueryResult>
<ticket id="3899122007051000000231"
dealTime="20070510165423" money="8.00"
playType="301" amount="2"
status="0000" message=" "/>
<issue gameName="ssc" number="2007051001" />
<userProfile cardType="1" mail="wang@sun.com"
cardNumber="430525800815722" mobile="13612736754"
realName="王绎之" bonusPhone="(0755)65079323"/>
<anteCode>1,2,3,4,5</anteCode>
<anteCode>5,2,3,6,7</anteCode>
</ticket>
<ticket id="3899122007051000000232"
dealTime="20070510165423" money="6.00"
playType="301" amount="1"
status="0000" message=""/>
<issue gameName="ssc" number="2007051001" />
<userProfile cardType="3"
mail="ramon@phoenix.com"
cardNumber="G03355390"
bonusPhone="(023)76526753"
mobile="13098191231" realName="李侠"/>
<anteCode>1,9,7,8,2</anteCode>
<anteCode>2,9,3,6,1</anteCode>
<anteCode>8,2,7,6,3</anteCode>
</ticket>
</ticketQueryResult>
</response>
</body>
ticketQueryResult元素定义了票查询结果的数据结构,其中的ticket子元素与投注请求中的票数据结构是相似的,这里不重复列出它们,请参照‘投注’部分。
3.4.6返奖查询
投注代理商向恒朋无纸化彩票系统发起返奖的请求,恒朋无纸化彩票系统处理请求,然后返回返奖数据到投注代理商。
1)投注代理商向恒朋无纸化彩票系统发起返奖请求,消息体格式如下:
[请求消息体]
<body>
<bonusQuery>
<issue gameName="ssc" number="2007051001"/>
</bonusQuery>
</body>
bonusQuery元素定义了返奖请求的数据结构,issue元素描述了要查询的奖期的信息,关于issue的描述可以参照”奖期查询”部分。
2)恒朋无纸化彩票系统接收到投注代理商的请求,处理请求之后,返回返奖数据。消息体格式如下:
[响应消息体]
<body>
<response code="0000" message="成功,系统处理正常">
<bonusQueryResult bonusNumber="1,2,3,4,5"
totalItems="3" totalMoney="1100.00">
<issue number="2007051011" gameName="ssc"/>
<bonusItem playType="301" money="0.00" isBombBonus="true"
bonusLevel="1" ticketID="3899122007051045451212"/>
<bonusItem playType="301" money="1000.00" isBombBonus="false"
bonusLevel="2" ticketID="3899122007051045451212"/>
<bonusItem playType="301" money="100.00" isBombBonus=" false "
bonusLevel="3" ticketID="3899122007051098127477"/>
</bonusQueryResult>
</response>
</body>
在响应信息的消息体中,bonusQueryResult定义了返回信息的数据结构,其中:
bonusQueryResult元素
名称
数据类型
必需
长度
描述
bonusNumber
string
Y
*
开奖号码。
totalItems
integer
Y
中奖记录总数。
totalMoney
double
Y
中奖金额总数。
* issue :描述了奖期信息,可以参照‘奖期查询’中关于issue的定义。
* bonusItem元素: 返奖明细
名称
数据类型
必需
长度
描述
playType
isBombBonus
money
bonusLevel
ticketID
string
Y
3.4.7销量查询
<issue gameName="ssc" number="2007051001"/>
[请求消息体]
[响应消息体]
</balanceQueryResult>
balanceQueryResult元素定义了销量查询结果的数据结构,其中:
名称
数据类型
必需
长度
描述
salesMoney
double
Y
该奖期的销售金额。只有奖期截止之后才能查询到销售金额。
bonusMoney
double
Y
该奖期的返奖金额。只有返奖之后才能查询到返奖金额。返奖之前查到的返奖金额为-1
* issue :描述了奖期信息,可以参照‘奖期查询’中关于issue的定义。
如果恒朋无纸化彩票系统处理销量查询请求出现异常,那么返回信息的消息体格式如下:
<body>
<response code="9999" message="系统未知异常"/>
</body>
其中response的code属性定义了响应状态码,可以参照附录B。
[响应消息体]
[响应消息体]
4总述
在这份通信协议中,主要描述了投注代理商与恒朋无纸化彩票系统之间的通信数据结构,概述部分简要的介绍了投注代理商与恒朋无纸化彩票系统之间的交互过程,如果要了解更多,可以参考《恒朋无纸化彩票系统数据接入技术方案》。
附录A 玩法参数说明
玩法名称
区域
全国
20选5
重庆
205
附录B 响应状态码说明
0000
0010
消息格式错误。
0011
不支持的协议版本,比如设定了message的version属性为0.1。
0012
messageID格式错误。
0014
timestamp时间戳格式错误。
0015
消息摘要不匹配。
0016
不支持该交易类型。
0017
MessageId重复。
0098
单个请求超出最大并发数。
1011
1012
1013
奖期未完成期结。
2001
用户手机号码错误。
2012
2013
2014
2015
禁止组选投注。
2045
2046
2047
重复发送的投注票(该投注票已经发送到恒朋无纸化彩票系统了)。
不存在该票号。
投注失败。
投注中。
3001
3002
3003
9999
投注方式
时时彩
号码之间用逗号分隔,示例:1,2,3,4,5
说明
{5个号码}
前2个号码用下划线”_”表示,号码之间用逗号分隔
前3个号码用下划线”_”表示,号码之间用逗号分隔
{5个号码}
复选投注只有五星、三星和二星复选
格式
五星复选
号码之间用逗号分隔。
三星和值
{5个号码}
投注方式
投注方式
投注方式
投注方式
格式同直选投注。
单式投注
投注方式
投注方式
说明
奖等定义
二等奖
选中6个红色球号码
N
N
N
N
N
N
Y
Y
Y
N
N
N
N
Y
二等奖
选中3个基本号
atitit.恒朋无纸化彩票系统数据接入通信协议的更多相关文章
- flume+kafka+smart数据接入实施手册
1. 概述 本手册主要介绍了,一个将传统数据接入到Hadoop集群的数据接入方案和实施方法.供数据接入和集群运维人员参考. 1.1. 整体方案 Flume作为日志收集工具,监控一个文件目录或者一 ...
- 本地日志数据实时接入到hadoop集群的数据接入方案
1. 概述 本手册主要介绍了,一个将传统数据接入到Hadoop集群的数据接入方案和实施方法.供数据接入和集群运维人员参考. 1.1. 整体方案 Flume作为日志收集工具,监控一个文件目录或者一个文 ...
- 读:HIS 与医保系统的接入方案及实现
HIS 与医保系统的接入方案及实现刘剑锋 李刚荣第三军医大学西南医院信息科(重庆 400038) 医院HIS和医保系统的接口设计方案涉及两个部分,分别由医院和医保中心分别完成相,应的程序设计,这两部分 ...
- Home Assistant + 树莓派:强大的智能家居系统 · 设备接入篇
转载:Home Assistant + 树莓派:强大的智能家居系统 · 设备接入篇 目录 HASS 配置框架 主文件设置 Homebridge 设置 鹬蚌相争? 设备追踪设置 更新日志 作者的话 相信 ...
- HIS 与医保系统的接入方案及实现
HIS 与医保系统的接入方案及实现刘剑锋 李刚荣第三军医大学西南医院信息科(重庆 400038)摘要: 目的 建设HIS,迎接医疗改革的挑战.方法 分析HIS与地方医疗保险系统的不同特点,提出解决问题 ...
- Druid 0.17 入门(3)—— 数据接入指南
在快速开始中,我们演示了接入本地示例数据方式,但Druid其实支持非常丰富的数据接入方式.比如批处理数据的接入和实时流数据的接入.本文我们将介绍这几种数据接入方式. 文件数据接入:从文件中加载批处理数 ...
- Atitit 知识管理的重要方法 数据来源,聚合,分类,备份,发布 搜索
Atitit 知识管理的重要方法 数据来源,聚合,分类,备份,发布 搜索 1.1. Rss 简易信息聚合(也叫聚合内容 Really Simple Syndication1 1.1. Rss 简易信息 ...
- elasticsearch【cat API,系统数据】指令汇总
本博文讲述的ES获取系统数据的API是基于Elasticsearch 2.4.1版本的. 0. overview a. 下面将要介绍的所有的指令,都支持一个查询参数v(verbose),用来显示详细的 ...
- (四) 一起学 Unix 环境高级编程(APUE) 之 系统数据文件和信息
. . . . . 目录 (一) 一起学 Unix 环境高级编程 (APUE) 之 标准IO (二) 一起学 Unix 环境高级编程 (APUE) 之 文件 IO (三) 一起学 Unix 环境高级编 ...
随机推荐
- Monitoring SSD Performance::www.brentozar.com
https://www.brentozar.com/archive/2013/05/monitoring-ssd-performance/ May 16, 2013Jeremiah PeschkaSQ ...
- datatables .fnDraw is not a function
Datatables中文网:http://dt.thxopen.com/manual/api.html API DataTables 提供的可以操作表格数据的API,有下面六个关键部分: 表格(tab ...
- pyPdf - 用Python方便的处理PDF文档
pyPdf库 ( http://pybrary.net/pyPdf/ ) ,操作起来相当直接易懂,把代码贴在这儿,做个记录. 1 from pyPdf import PdfFileWriter, P ...
- DevExpress 自动匹配宽度,及其他使用笔记
摘自: http://blog.sina.com.cn/s/blog_53b58e7c0101avl4.html GridControl列自动匹配宽度 -- : 327人阅读 评论() 收藏 举报 / ...
- 怎样在Ubuntu手机应用中得到全部的环境变量值
我们在先前的例程中已经通过一些方法得到我们应用的一些环境变量值.这些值有的很实用.比方我们能够得到我们应用所仅仅能訪问的文件夹.在今天的例程中,我们来展示一种方法能够得到应用全部的环境变量.在我们的实 ...
- Android EditText 状态切换
不可编辑状态 <EditText android:id="@+id/ed_newPwd" an ...
- Eight_pku_1077(广搜).java
Eight Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 21718 Accepted: 9611 Special ...
- ESLint:can not ESLint annotation...
刚开始用webstorm开发VUE,提示这个东西: 安装一个npm库就可以了 命令行执行:npm install eslint -g
- Centos 7 通过yum的方式安装配置Artifactory 5.10
制品仓库系统有很多,例如:Artifactory,Nexus,Archiva, 其中Artifactory拥有很多强大的企业级特性和人性化的用户接口,很多大型的公司都在使用它. 背景:因客户需求,需要 ...
- Qracle、Sql server 、mysql查询练习题
1. select * from emp; 2. select empno, ename, job from emp; 3. select empno 编号, ename 姓名, job 工作 fro ...