根据wsdl生成对应的Java代码进行接口测试(一)
来源:http://www.blogjava.net/amigoxie/archive/2009/11/20/303038.html
1)使用XFire+Spring构建Web Service(一)——helloWorld篇
2)使用XFire+Spring构建Web Service(二)
讲到了如何使用XFire+Spring构建WebService,并生成了对应的wsdl文件。针对这两篇文章,收到很多留言和读者来信,大部分都是针对拿到wsdl后,如何根据wsdl生成对应的Java代码,并进行测试。
基于在开发过程中,很多时候都是拿到另一方的wsdl,需要与该方进行联调测试,所以在本文中,我大概的整理了一下,希望能帮读者解决一些问题。
第一章. 准备wsdl
这阵子正好在写几个wsdl,就拿其中一个来做实例吧。
首先贴下接口协议文档:
1.1 数据类型
AccessCodeContext的数据类型:
域名 |
类型 |
Is Null |
说明 |
accessCode |
Varchar(32) |
N |
接入号 |
vccId |
Varchar(20) |
Y |
集团标识 |
routeStrategy |
Integer 默认1 |
N |
路由策略: 1.转接分机/组; 2.由CTI指定路由。 |
telephoneNumber |
Varchar(32) |
Y |
分机/分机组(当路由策略为1时,该项不能为空) |
serviceId |
Varchar(20) |
Y |
服务(当路由策略为2时,该项不能为空) |
1.2查询接入号码总数接口
接口定义
接口名称 |
查询接入号码总数接口 |
接口描述 |
查询接入号码总数 1)accessCodeContext中的routeStrategy为0时,不过滤该项. |
接口协议 |
webservice方式,使用utf-8编码 |
方法名 |
getTotalItem |
链接地址 |
|
接口提供者 |
|
主要使用者 |
ap |
wsdl文件 |
2) 输入参数:
名称 |
说明 |
数据类型 |
is null |
accessCodeContext |
接入号码属性(当该对象为null时,查询所有的接入号码信息,若某项为空时,该项不参与查询) |
AccessCodeContext |
n |
3) 返回参数
发生其他异常时,以ServiceException异常的方式抛出。
名称 |
说明 |
数据类型 |
is null |
totalItem |
总数 |
Integer |
Y |
1.3查询接入号码列表接口
1)接口定义
接口名称 |
查询接入号码列表接口 |
接口描述 |
查询接入号码列表 1)accessCodeContext中的routeStrategy为0时,不过滤该项. |
接口协议 |
webservice方式,使用utf-8编码 |
方法名 |
list |
链接地址 |
|
接口提供者 |
|
主要使用者 |
ap |
wsdl文件 |
2) 输入参数:
名称 |
说明 |
数据类型 |
is null |
startItem |
起始查询行号 |
Varchar |
Y |
maxItem |
最大查询行数 |
Varchar |
Y |
accessCodeContext |
接入号码属性(当该对象为null时,查询所有的接入号码信息,若某项为空时,该项不参与查询) |
AccessCodeContext |
n |
3) 返回参数
发生其他异常时,以ServiceException异常的方式抛出。
名称 |
说明 |
数据类型 |
is null |
accessCodeContextArray |
接入号码信息数组 |
AccessCodeContext[] |
Y |
1.4 查询单个接入号码接口
1)接口定义
接口名称 |
查询接入号码接口 |
接口描述 |
查询接入号码信息 |
接口协议 |
webservice方式,使用utf-8编码 |
方法名 |
find |
链接地址 |
|
接口提供者 |
|
主要使用者 |
ap |
wsdl文件 |
2) 输入参数:
名称 |
说明 |
数据类型 |
is null |
accessCode |
接入号码 |
varchar(32) |
n |
3) 返回参数
若接入号码信息不存在或发生其他异常时,以ServiceException异常的方式抛出。
名称 |
说明 |
数据类型 |
is null |
accessCodeContext |
接入号码属性 |
AccessCodeContext |
N |
1.5 增加接入号码接口
1) 接口定义
接口名称 |
增加接入号码接口 |
接口描述 |
增加接入号码, 说明: 1) 接入号码不能重复; 2) 集团信息必须存在。 |
接口协议 |
webservice方式,使用utf-8编码 |
方法名 |
save |
链接地址 |
|
接口提供者 |
|
主要使用者 |
ap |
wsdl文件 |
2) 输入参数:
名称 |
说明 |
数据类型 |
is null |
accessCodeContext |
接入号码信息 |
AccessCodeContext |
n |
3) 返回参数
失败时以异常的方式抛出ServiceException。
1.6 修改接入号码接口
1) 接口定义
接口名称 |
修改接入号码接口 |
接口描述 |
修改接入号码。 说明: 1) 接入号码必须存在; 2) 集团信息必须存在。 |
接口协议 |
webservice方式,使用utf-8编码 |
方法名 |
update |
链接地址 |
|
接口提供者 |
|
主要使用者 |
ap |
wsdl文件 |
2) 输入参数
名称 |
说明 |
数据类型 |
is null |
accessCodeContext |
接入号码信息 |
AccessCodeContext |
n |
3) 返回参数
失败时以异常的方式抛出ServiceException。
1.7 删除接入号码接口
1)接口定义
接口名称 |
删除接入号码接口 |
接口描述 |
删除接入号码: 1)接入号码必须存在。 |
接口协议 |
webservice方式,使用utf-8编码 |
方法名 |
delete |
链接地址 |
|
接口提供者 |
|
主要使用者 |
ap |
wsdl文件 |
2) 输入参数:
名称 |
说明 |
数据类型 |
is null |
accessCode |
接入号码 |
Varchar(32) |
n |
3) 返回参数
失败时以异常的方式抛出ServiceException。
第二章 实例wsdl
相关的wsdl有5个,其中两个是各个接口共用的,定义了共用的异常和数据对象之类的东西。
1)acd_common_faults.wsdl:定义了共用的异常ServiceException。
内容如下:
<!-- 编辑使用 XMLSpy v2006 U (http://www.altova.com) 由 any (any) -->
<!-- 2009.10.29 -->
<wsdl:definitions xmlns="http://schemas.xmlsoap.org/wsdl/" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:acd_common_faults_xsd="http://cintel.com/ws/acd/system/v1_0/common/model" targetNamespace="http://www.cintel.com.cn/ws/acd/system/v1_0/common/faults" name="common_faults">
<wsdl:types>
<xsd:schema elementFormDefault="qualified">
<xsd:import namespace="http://cintel.com/ws/acd/system/v1_0/common/model" schemaLocation="acd_common_types.xsd"/>
</xsd:schema>
</wsdl:types>
<wsdl:message name="ServiceException">
<wsdl:part name="ServiceException" element="acd_common_faults_xsd:ServiceException"/>
</wsdl:message>
</wsdl:definitions>
2)acd_common_types.xsd:定义了共用的数据类型
3)acd_accessCode_types.xsd:定义了接入码的数据对象
<!-- 20090618 -->
<xsd:schema xmlns:acd_common_xsd="http://cintel.com/ws/acd/system/v1_0/common/model" xmlns:acd_accessCode_xsd="http://cintel.com/ws/acd/system/v1_0/accessCode/model" xmlns:xsd="http://www.w3.org/2001/XMLSchema" targetNamespace="http://cintel.com/ws/acd/system/v1_0/accessCode/model">
<xsd:element name="AccessCodeContext" type="acd_accessCode_xsd:AccessCodeContext"/>
<xsd:complexType name="AccessCodeContext">
<xsd:sequence>
<xsd:element name="accessCode" type="xsd:string" nillable="false"/>
<xsd:element name="vccId" type="xsd:string" nillable="true"/>
<xsd:element name="routeStrategy" type="xsd:int" nillable="false"/>
<xsd:element name="telephoneNumber" type="xsd:string" nillable="true"/>
<xsd:element name="serviceId" type="xsd:int" nillable="true"/>
</xsd:sequence>
</xsd:complexType>
</xsd:schema>
4)acd_accessCode_service.wsdl:定义了接入码管理的各个方法
<!-- 2009-10-29 -->
<wsdl:definitions xmlns="http://schemas.xmlsoap.org/wsdl/" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:tns="http://cintel.com/ws/acd/system/v1_0/accessCode/service" xmlns:interface="http://cintel.com/ws/acd/system/v1_0/accessCode/interface" targetNamespace="http://cintel.com/ws/acd/system/v1_0/accessCode/service" name="acd_accessCode_service">
<wsdl:import namespace="http://cintel.com/ws/acd/system/v1_0/accessCode/interface" location="acd_accessCode_interface.wsdl"/>
<wsdl:binding name="AccessCodeBinding" type="interface:AccessCode">
<soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>
<wsdl:operation name="getTotalItem">
<soap:operation style="document"/>
<wsdl:input>
<soap:body use="literal"/>
</wsdl:input>
<wsdl:output>
<soap:body use="literal"/>
</wsdl:output>
<wsdl:fault name="ServiceException">
<soap:fault name="ServiceException" use="literal"/>
</wsdl:fault>
</wsdl:operation>
<wsdl:operation name="list">
<soap:operation style="document"/>
<wsdl:input>
<soap:body use="literal"/>
</wsdl:input>
<wsdl:output>
<soap:body use="literal"/>
</wsdl:output>
<wsdl:fault name="ServiceException">
<soap:fault name="ServiceException" use="literal"/>
</wsdl:fault>
</wsdl:operation>
<wsdl:operation name="find">
<soap:operation style="document"/>
<wsdl:input>
<soap:body use="literal"/>
</wsdl:input>
<wsdl:output>
<soap:body use="literal"/>
</wsdl:output>
<wsdl:fault name="ServiceException">
<soap:fault name="ServiceException" use="literal"/>
</wsdl:fault>
</wsdl:operation>
<wsdl:operation name="save">
<soap:operation style="document"/>
<wsdl:input>
<soap:body use="literal"/>
</wsdl:input>
<wsdl:output>
<soap:body use="literal"/>
</wsdl:output>
<wsdl:fault name="ServiceException">
<soap:fault name="ServiceException" use="literal"/>
</wsdl:fault>
</wsdl:operation>
<wsdl:operation name="update">
<soap:operation style="document"/>
<wsdl:input>
<soap:body use="literal"/>
</wsdl:input>
<wsdl:output>
<soap:body use="literal"/>
</wsdl:output>
<wsdl:fault name="ServiceException">
<soap:fault name="ServiceException" use="literal"/>
</wsdl:fault>
</wsdl:operation>
<wsdl:operation name="delete">
<soap:operation style="document"/>
<wsdl:input>
<soap:body use="literal"/>
</wsdl:input>
<wsdl:output>
<soap:body use="literal"/>
</wsdl:output>
<wsdl:fault name="ServiceException">
<soap:fault name="ServiceException" use="literal"/>
</wsdl:fault>
</wsdl:operation>
</wsdl:binding>
<wsdl:service name="AcessCodeService">
<wsdl:port name="AccessCode" binding="tns:AccessCodeBinding">
<soap:address location="http://localhost:8686/AccessCodeService/services/AccessCode"/>
</wsdl:port>
</wsdl:service>
</wsdl:definitions>
5)acd_accessCode_interface.wsdl:接口定义
<!--2009-10-29 -->
<wsdl:definitions xmlns="http://schemas.xmlsoap.org/wsdl/" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:acd_accessCode="http://cintel.com/ws/acd/system/v1_0/accessCode/interface" xmlns:acd_common_xsd="http://cintel.com/ws/acd/system/v1_0/common/model" xmlns:acd_common_faults="http://www.cintel.com.cn/ws/acd/system/v1_0/common/faults" xmlns:acd_accessCode_xsd="http://cintel.com/ws/acd/system/v1_0/accessCode/model" xmlns:acd_accessCode_local_xsd="http://cintel.com/ws/acd/system/v1_0/accessCode/local" targetNamespace="http://cintel.com/ws/acd/system/v1_0/accessCode/interface" name="acd_AccessCode_interface">
<wsdl:import namespace="http://www.cintel.com.cn/ws/acd/system/v1_0/common/faults" location="acd_common_faults.wsdl"/>
<wsdl:types>
<xsd:schema elementFormDefault="qualified" xmlns:xsd="http://www.w3.org/2001/XMLSchema" targetNamespace="http://cintel.com/ws/acd/system/v1_0/accessCode/local">
<xsd:import namespace="http://cintel.com/ws/acd/system/v1_0/accessCode/model" schemaLocation="acd_accessCode_types.xsd"/>
<xsd:import namespace="http://cintel.com/ws/acd/system/v1_0/common/model" schemaLocation="acd_common_types.xsd"/>
<xsd:element name="getTotalItem" type="acd_accessCode_local_xsd:getTotalItem"/>
<xsd:complexType name="getTotalItem">
<xsd:sequence>
<xsd:element name="accessCodeContext" type="acd_accessCode_xsd:AccessCodeContext"/>
</xsd:sequence>
</xsd:complexType>
<xsd:element name="getTotalItemResponse" type="acd_accessCode_local_xsd:getTotalItemResponse"/>
<xsd:complexType name="getTotalItemResponse">
<xsd:sequence>
<xsd:element name="totalItem" type="xsd:int" nillable="false"/>
</xsd:sequence>
</xsd:complexType>
<xsd:element name="list" type="acd_accessCode_local_xsd:list"/>
<xsd:complexType name="list">
<xsd:sequence>
<xsd:element name="startItem" type="xsd:int" nillable="false"/>
<xsd:element name="maxItem" type="xsd:int" nillable="false"/>
<xsd:element name="accessCodeContext" type="acd_accessCode_xsd:AccessCodeContext"/>
</xsd:sequence>
</xsd:complexType>
<xsd:element name="listResponse" type="acd_accessCode_local_xsd:listResponse"/>
<xsd:complexType name="listResponse">
<xsd:sequence>
<xsd:element name="accessCodeContextArray" type="acd_accessCode_xsd:AccessCodeContext" nillable="true" minOccurs="0" maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:complexType>
<xsd:element name="find" type="acd_accessCode_local_xsd:find"/>
<xsd:complexType name="find">
<xsd:sequence>
<xsd:element name="accessCode" type="xsd:string"/>
</xsd:sequence>
</xsd:complexType>
<xsd:element name="findResponse" type="acd_accessCode_local_xsd:findResponse"/>
<xsd:complexType name="findResponse">
<xsd:sequence>
<xsd:element name="accessCodeContext" type="acd_accessCode_xsd:AccessCodeContext"/>
</xsd:sequence>
</xsd:complexType>
<xsd:element name="save" type="acd_accessCode_local_xsd:save"/>
<xsd:complexType name="save">
<xsd:sequence>
<xsd:element name="accessCodeContext" type="acd_accessCode_xsd:AccessCodeContext"/>
</xsd:sequence>
</xsd:complexType>
<xsd:element name="saveResponse" type="acd_accessCode_local_xsd:saveResponse"/>
<xsd:complexType name="saveResponse">
<xsd:sequence>
<xsd:element name="result" type="xsd:boolean"/>
</xsd:sequence>
</xsd:complexType>
<xsd:element name="update" type="acd_accessCode_local_xsd:update"/>
<xsd:complexType name="update">
<xsd:sequence>
<xsd:element name="accessCodeContext" type="acd_accessCode_xsd:AccessCodeContext"/>
</xsd:sequence>
</xsd:complexType>
<xsd:element name="updateResponse" type="acd_accessCode_local_xsd:updateResponse"/>
<xsd:complexType name="updateResponse">
<xsd:sequence>
<xsd:element name="result" type="xsd:boolean"/>
</xsd:sequence>
</xsd:complexType>
<xsd:element name="delete" type="acd_accessCode_local_xsd:delete"/>
<xsd:complexType name="delete">
<xsd:sequence>
<xsd:element name="accessCode" type="xsd:string"/>
</xsd:sequence>
</xsd:complexType>
<xsd:element name="deleteResponse" type="acd_accessCode_local_xsd:deleteResponse"/>
<xsd:complexType name="deleteResponse">
<xsd:sequence>
<xsd:element name="result" type="xsd:boolean"/>
</xsd:sequence>
</xsd:complexType>
</xsd:schema>
</wsdl:types>
<wsdl:message name="AccessCode_getTotalItemMessageRequest">
<wsdl:part name="parameters" element="acd_accessCode_local_xsd:getTotalItem"/>
</wsdl:message>
<wsdl:message name="AccessCode_getTotalItemMessageResponse">
<wsdl:part name="result" element="acd_accessCode_local_xsd:getTotalItemResponse"/>
</wsdl:message>
<wsdl:message name="AccessCode_listMessageRequest">
<wsdl:part name="parameters" element="acd_accessCode_local_xsd:list"/>
</wsdl:message>
<wsdl:message name="AccessCode_listMessageResponse">
<wsdl:part name="result" element="acd_accessCode_local_xsd:listResponse"/>
</wsdl:message>
<wsdl:message name="AccessCode_findMessageRequest">
<wsdl:part name="parameters" element="acd_accessCode_local_xsd:find"/>
</wsdl:message>
<wsdl:message name="AccessCode_findMessageResponse">
<wsdl:part name="result" element="acd_accessCode_local_xsd:findResponse"/>
</wsdl:message>
<wsdl:message name="AccessCode_saveMessageRequest">
<wsdl:part name="parameters" element="acd_accessCode_local_xsd:save"/>
</wsdl:message>
<wsdl:message name="AccessCode_saveMessageResponse">
<wsdl:part name="result" element="acd_accessCode_local_xsd:saveResponse"/>
</wsdl:message>
<wsdl:message name="AccessCode_updateMessageRequest">
<wsdl:part name="parameters" element="acd_accessCode_local_xsd:update"/>
</wsdl:message>
<wsdl:message name="AccessCode_updateMessageResponse">
<wsdl:part name="result" element="acd_accessCode_local_xsd:updateResponse"/>
</wsdl:message>
<wsdl:message name="AccessCode_deleteMessageRequest">
<wsdl:part name="parameters" element="acd_accessCode_local_xsd:delete"/>
</wsdl:message>
<wsdl:message name="AccessCode_deleteMessageResponse">
<wsdl:part name="result" element="acd_accessCode_local_xsd:deleteResponse"/>
</wsdl:message>
<wsdl:portType name="AccessCode">
<wsdl:operation name="getTotalItem">
<wsdl:input message="acd_accessCode:AccessCode_getTotalItemMessageRequest"/>
<wsdl:output message="acd_accessCode:AccessCode_getTotalItemMessageResponse"/>
<wsdl:fault name="ServiceException" message="acd_common_faults:ServiceException"/>
</wsdl:operation>
<wsdl:operation name="list">
<wsdl:input message="acd_accessCode:AccessCode_listMessageRequest"/>
<wsdl:output message="acd_accessCode:AccessCode_listMessageResponse"/>
<wsdl:fault name="ServiceException" message="acd_common_faults:ServiceException"/>
</wsdl:operation>
<wsdl:operation name="find">
<wsdl:input message="acd_accessCode:AccessCode_findMessageRequest"/>
<wsdl:output message="acd_accessCode:AccessCode_findMessageResponse"/>
<wsdl:fault name="ServiceException" message="acd_common_faults:ServiceException"/>
</wsdl:operation>
<wsdl:operation name="save">
<wsdl:input message="acd_accessCode:AccessCode_saveMessageRequest"/>
<wsdl:output message="acd_accessCode:AccessCode_saveMessageResponse"/>
<wsdl:fault name="ServiceException" message="acd_common_faults:ServiceException"/>
</wsdl:operation>
<wsdl:operation name="update">
<wsdl:input message="acd_accessCode:AccessCode_updateMessageRequest"/>
<wsdl:output message="acd_accessCode:AccessCode_updateMessageResponse"/>
<wsdl:fault name="ServiceException" message="acd_common_faults:ServiceException"/>
</wsdl:operation>
<wsdl:operation name="delete">
<wsdl:input message="acd_accessCode:AccessCode_deleteMessageRequest"/>
<wsdl:output message="acd_accessCode:AccessCode_deleteMessageResponse"/>
<wsdl:fault name="ServiceException" message="acd_common_faults:ServiceException"/>
</wsdl:operation>
</wsdl:portType>
</wsdl:definitions>
第三章 在MyEclispe中通过wsdl生成Java代码
3.1 建立工程环境
在MyEclipse中建立一个工程,例如建立一个名为wsdl2java的WEB工程。需要添加到WEB-INF/lib目录下的包如下所示:
将wsdl目录拷贝到工程目录,例如src/wsdl目录下。
3. 2. 根据wsdl文件生成对应的java类
选择新建的工程后,点击右键,选择“Run As”->“Run”,如下图所示:
弹出窗口如下图所示:
在上图中,左边选择“Java Application”后,点击左上角的新增“”按钮new configuration,页面如下图所示:
在上图中,将“Include libraries when searching for a main class” 勾上,而后点击“Main class”右边的“Search”按钮,弹出窗口如下图所示:
在上图中输入WSDL2Java后,查找到axis这个jar包中对应类,点击“OK”按钮,此时主窗口如下图所示:
在上图中点击“Arguments”页签,Arguments里把要生成的web service URI或wsdl文件写进去,最后点run。在下图中输入的是wsdl文件的路径: src/wsdl/acd_accessCode_interface.wsdl、src/wsdl/acd_accessCode_service.wsdl:
生成的代码的结构如下图所示:
第四章 更简便的生成Java代码的方法
本章讲述的方法是笔者采用的方法,也是笔者所推荐的,原理与前一章相同,但是要简便一些。
4.1 准备jar包
将上一章提到的6个jar包放到某个目录,例如E:\amigo\project\ws_lib
4.2 拷贝wsdl以及相关文件
将上面章节5个wsdl文件拷贝到某个目录,例如:E:\interface
4.3 编写一个批处理文件
编写一个根据wsdl生成Java代码的批处理文件,以后都可以拿来用。在wsdl文件所在目录创建批处理文件createPackageByWsdl.bat,编写该文件内容:
set AxisClassPath=%LibPath%\axis.jar;%LibPath%\commons-logging.jar;%LibPath%\commons-discovery-0.2.jar;%LibPath%\jaxrpc.jar;%LibPath%\saaj.jar;%LibPath%\wsdl4j.jar;
set WSDL2JavaCommand=java -classpath %AxisClassPath% org.apache.axis.wsdl.WSDL2Java
set WsDeploy=-s
%WSDL2JavaCommand% %WsDeploy% acd_accessCode_interface.wsdl
%WSDL2JavaCommand% %WsDeploy% acd_accessCode_service.wsdl
在后面可加入更多的wsdl文件。
编写完成后,运行该批处理文件,可在同目录下生成指定的wsdl对应的Java类。生成的文件与上一章的文件一样。
注意:第一行指定的是jar所在的目录,读者需要进行修改。
根据wsdl生成对应的Java代码进行接口测试(一)相关推荐
- 如何以及为什么使用Spoon分析,生成和转换Java代码
Spoon是分析,生成和转换Java代码的工具. 在本文中,我们将看到通过使用以编程方式处理代码的技术可以实现什么. 我认为这些技术不是很广为人知或使用,这很遗憾,因为它们可能非常有用. 谁知道,即使 ...
- spoon java_如何以及为什么使用Spoon分析,生成和转换Java代码
spoon java Spoon是分析,生成和转换Java代码的工具. 在本文中,我们将看到通过使用以编程方式处理代码的技术可以实现什么. 我认为这些技术不是很为人所知或使用,这很遗憾,因为它们可能非 ...
- Axis2;wsdl生成客户端和serverJava代码
来源:http://blog.csdn.net/ouyangtianhan/article/details/6779528 1.安装JDK6 并设置环境变量 JAVA_HOME,path,clas ...
- java中的随机生成算法_随机生成算法的java代码太复杂了
public static Integer[] generateRandomArray(int n, int rangeL, int rangeR) { assert rangeL <= ran ...
- 随机生成中文的java代码
package com.yong.course.chinese;import java.io.UnsupportedEncodingException; import java.util.Random ...
- 利用SoapUI工具生成webservice客户端java代码
一.下载和安装软件 1.SoapUI 5.3.0 2.axis-1_4(下载地址:https://archive.apache.org/dist/ws/axis/1_4/axis-bin-1_4.zi ...
- JavaParser生成,分析和修改Java代码
作为开发人员,我们经常鄙视手动进行重复工作的人员. 我们认为, 他们应该实现这一目标 . 尽管如此,我们还是进行与编码有关的所有活动. 当然,我们使用的高级IDE可以为我们执行一些重构,但这基本上就是 ...
- 智能合约转java_第四章 自定义sol合约转化java代码,并实现调用
鉴于笔者以前各大博客教程都有很多人提问,早期建立一个技术交流群,里面技术体系可能比较杂,想了解相关区块链开发,技术提问,请加QQ群:538327407 准备工作 1.官方参考说明文档 2.已经在ubu ...
- 使用非JAVA代码 说明
使用非JAVA代码 JAVA语言及其标准API(应用程序编程接口)应付应用程序的编写已绰绰有余.但在某些情况下,还是必须使用非JAVA编码.例如,我们有时要访问操作系统的专用特性,与特殊的硬件设备打交 ...
最新文章
- Java迭代器使用注意
- Visual Studio Styles
- 特征工程(part1)--什么是特征工程
- 数学--数论---欧拉筛 模板
- redis desktop manager_面试官:Redis分布式锁如何解决锁超时问题?
- 2018.2.8 php实现qq登陆接口
- php框架laravel百科,PHP 的Laravel 框架
- FileZilla客户端连接腾讯云FTP服务器时出现“227 Entering Passive Mode”
- 目标检测第4步:显卡、GPU、CUDA、cuDNN的介绍及如何在Windows 10下安装cuDNN?
- 各种网络模拟器的下载链接
- linux查看tomcat日志_Linux 查看指定时间段的日志
- 关于微信小程序使用获取用户信息getUserProfile的问题:TypeError: wx.getUserProfile is not a function
- Java 线程第三版 第八章 Thread与Collection Class 读书笔记
- 谷歌在招什么样的人?
- 计算机ps屏幕背景颜色怎么换,win7系统ps背景颜色怎么换?七步教您轻松处理
- 64 ---- 平面与直线的位置关系
- NOIP2015斗地主
- 计算机中插入背景图片怎样操作,在word中怎么添加背景图片及文字背景
- 说话干嘛要“之道”啦?(1-10)
- gradient()函数的理解
热门文章
- ArcGIS网络分析之Silverlight客户端最近设施点分析(四)
- Win7下提取加密PDF文件(pdf加密成exe)
- error LNK2001: unresolved external symbol QtCored.lib	using staic Qt lib
- asp文件上传和下载
- 8086汇编寄存器及指令汇总
- JSON解析的几种方式
- IOS中的swift和oc关于对象模型的description方法重写
- linux共享 smb3.0,区块链3.0_精通Hyperledger之Samba使用(4)
- mnist手写数字识别python_基于tensorflow的MNIST手写数字识别(二)--入门篇
- 开源 多进程 框架 c++_linux fork多进程并发服务器模型之C/C++代码实战