1、丰桥接口调用返回的都是xml格式内容,要去封装一个对象映射返回结果。下面类就是映射对象:

import java.io.Serializable;
import java.util.List;import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlAttribute;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;
import javax.xml.bind.annotation.XmlValue;@XmlAccessorType(XmlAccessType.FIELD)
@XmlRootElement(name = "Response")
public class SfExpressResponse implements Serializable{private static final long serialVersionUID = 1L;//响应状态@XmlElement(name = "Head")private String Head;//响应失败原因@XmlElement(name = "ERROR")private ERROR ERROR;//响应结果@XmlElement(name = "Body")private Body Body;@XmlAccessorType(XmlAccessType.NONE)public static class ERROR implements Serializable{private static final long serialVersionUID = 1L;@XmlAttribute(name = "code")private String code;@XmlValueprivate String text;public String getCode() {return code;}public void setCode(String code) {this.code = code;}public String getText() {return text;}public void setText(String text) {this.text = text;}@Overridepublic String toString() {return "ERROR [code=" + code + ", text=" + text + "]";}}@XmlAccessorType(XmlAccessType.NONE)public static class Body implements Serializable{private static final long serialVersionUID = 1L;@XmlElement(name = "OrderResponse")private OrderResponse OrderResponse;@XmlElement(name = "RouteResponse")private RouteResponse RouteResponse;public SfExpressResponse.OrderResponse getOrderResponse() {return OrderResponse;}public void setOrderResponse(SfExpressResponse.OrderResponse orderResponse) {OrderResponse = orderResponse;}public SfExpressResponse.RouteResponse getRouteResponse() {return RouteResponse;}public void setRouteResponse(SfExpressResponse.RouteResponse routeResponse) {RouteResponse = routeResponse;}@Overridepublic String toString() {return "Body [OrderResponse=" + OrderResponse + ", RouteResponse="+ RouteResponse + "]";}}@XmlRootElement(name="rls_info")@XmlAccessorType(XmlAccessType.NONE)public static class Rls_info implements Serializable{private static final long serialVersionUID = 1L;@XmlAttribute(name = "invoke_result")private String invoke_result;@XmlElement(name = "rls_detail")private Rls_detail rls_detail;public String getInvoke_result() {return invoke_result;}public void setInvoke_result(String invoke_result) {this.invoke_result = invoke_result;}public Rls_detail getRls_detail() {return rls_detail;}public void setRls_detail(Rls_detail rls_detail) {this.rls_detail = rls_detail;}}@XmlRootElement(name="rls_detail") @XmlAccessorType(XmlAccessType.NONE)public static class Rls_detail implements Serializable{private static final long serialVersionUID = 1L;@XmlAttribute(name = "sourceTransferCode")private String sourceTransferCode;@XmlAttribute(name = "sourceCityCode")private String sourceCityCode;@XmlAttribute(name = "sourceDeptCode")private String sourceDeptCode;@XmlAttribute(name = "sourceTeamCode")private String sourceTeamCode;@XmlAttribute(name = "destCityCode")private String destCityCode;@XmlAttribute(name = "destDeptCode")private String destDeptCode;@XmlAttribute(name = "destDeptCodeMapping")private String destDeptCodeMapping;@XmlAttribute(name = "destTeamCode")private String destTeamCode;@XmlAttribute(name = "destTransferCode")private String destTransferCode;@XmlAttribute(name = "destRouteLabel")private String destRouteLabel;@XmlAttribute(name = "cargoTypeCode")private String cargoTypeCode;@XmlAttribute(name = "limitTypeCode")private String limitTypeCode;@XmlAttribute(name = "expressTypeCode")private String expressTypeCode;@XmlAttribute(name = "twoDimensionCode")private String twoDimensionCode;@XmlAttribute(name = "proCode")private String proCode;@XmlAttribute(name = "printIcon")private String printIcon;@XmlAttribute(name = "codingMapping")private String codingMapping;public String getCodingMapping() {return codingMapping;}public void setCodingMapping(String codingMapping) {this.codingMapping = codingMapping;}public String getPrintIcon() {return printIcon;}public void setPrintIcon(String printIcon) {this.printIcon = printIcon;}public String getDestDeptCodeMapping() {return destDeptCodeMapping;}public void setDestDeptCodeMapping(String destDeptCodeMapping) {this.destDeptCodeMapping = destDeptCodeMapping;}public String getDestTeamCode() {return destTeamCode;}public void setDestTeamCode(String destTeamCode) {this.destTeamCode = destTeamCode;}public String getDestTransferCode() {return destTransferCode;}public void setDestTransferCode(String destTransferCode) {this.destTransferCode = destTransferCode;}public String getSourceTransferCode() {return sourceTransferCode;}public void setSourceTransferCode(String sourceTransferCode) {this.sourceTransferCode = sourceTransferCode;}public String getSourceCityCode() {return sourceCityCode;}public void setSourceCityCode(String sourceCityCode) {this.sourceCityCode = sourceCityCode;}public String getSourceDeptCode() {return sourceDeptCode;}public void setSourceDeptCode(String sourceDeptCode) {this.sourceDeptCode = sourceDeptCode;}public String getSourceTeamCode() {return sourceTeamCode;}public void setSourceTeamCode(String sourceTeamCode) {this.sourceTeamCode = sourceTeamCode;}public String getDestCityCode() {return destCityCode;}public void setDestCityCode(String destCityCode) {this.destCityCode = destCityCode;}public String getDestDeptCode() {return destDeptCode;}public void setDestDeptCode(String destDeptCode) {this.destDeptCode = destDeptCode;}public String getDestRouteLabel() {return destRouteLabel;}public void setDestRouteLabel(String destRouteLabel) {this.destRouteLabel = destRouteLabel;}public String getCargoTypeCode() {return cargoTypeCode;}public void setCargoTypeCode(String cargoTypeCode) {this.cargoTypeCode = cargoTypeCode;}public String getLimitTypeCode() {return limitTypeCode;}public void setLimitTypeCode(String limitTypeCode) {this.limitTypeCode = limitTypeCode;}public String getExpressTypeCode() {return expressTypeCode;}public void setExpressTypeCode(String expressTypeCode) {this.expressTypeCode = expressTypeCode;}public String getTwoDimensionCode() {return twoDimensionCode;}public void setTwoDimensionCode(String twoDimensionCode) {this.twoDimensionCode = twoDimensionCode;}public String getProCode() {return proCode;}public void setProCode(String proCode) {this.proCode = proCode;}}@XmlRootElement(name="OrderResponse")@XmlAccessorType(XmlAccessType.NONE)public static class OrderResponse implements Serializable{private static final long serialVersionUID = 1L;//订单号@XmlAttribute(name = "orderid")private String orderId;//运单号@XmlAttribute(name = "mailno")private String mailNo;//原寄地区域代码(可用于顺丰电子运单标签打印)@XmlAttribute(name = "origincode")private String originCode;//目的地区域代码(可用于顺丰电子运单标签打印)@XmlAttribute(name = "destcode")private String destCode;//筛单结果:1:人工确认 2:可收派 3:不可以收派@XmlAttribute(name = "filter_result")private String filterResult;@XmlElement(name = "rls_info")private Rls_info rls_info;public Rls_info getRls_info() {return rls_info;}public void setRls_info(Rls_info rls_info) {this.rls_info = rls_info;}public String getOrderId() {return orderId;}public void setOrderId(String orderId) {this.orderId = orderId;}public String getMailNo() {return mailNo;}public void setMailNo(String mailNo) {this.mailNo = mailNo;}public String getOriginCode() {return originCode;}public void setOriginCode(String originCode) {this.originCode = originCode;}public String getDestCode() {return destCode;}public void setDestCode(String destCode) {this.destCode = destCode;}public String getFilterResult() {return filterResult;}public void setFilterResult(String filterResult) {this.filterResult = filterResult;}@Overridepublic String toString() {return "OrderResponse [orderId=" + orderId + ", mailNo=" + mailNo+ ", originCode=" + originCode + ", destCode=" + destCode+ ", filterResult=" + filterResult + "]";}}@XmlRootElement(name="RouteResponse")@XmlAccessorType(XmlAccessType.NONE)public static class RouteResponse implements Serializable{private static final long serialVersionUID = 1L;//运单号@XmlAttribute(name = "mailno")private String mailNo;//路由@XmlElement(name = "Route")private List<Route> Route ;public String getMailNo() {return mailNo;}public void setMailNo(String mailNo) {this.mailNo = mailNo;}public List<SfExpressResponse.Route> getRoute() {return Route;}public void setRoute(List<SfExpressResponse.Route> route) {Route = route;}@Overridepublic String toString() {return "RouteResponse [mailNo=" + mailNo + ", Route=" + Route + "]";}}@XmlRootElement(name="Route")@XmlAccessorType(XmlAccessType.NONE)public static class Route implements Serializable{private static final long serialVersionUID = 1L;//路由节点发生的时间@XmlAttribute(name = "accept_time")private String acceptTime;//路由节点具体描述@XmlAttribute(name = "remark")private String remark;//路由节点操作码@XmlAttribute(name = "opcode")private String opcode;public String getAcceptTime() {return acceptTime;}public void setAcceptTime(String acceptTime) {this.acceptTime = acceptTime;}public String getRemark() {return remark;}public void setRemark(String remark) {this.remark = remark;}public String getOpcode() {return opcode;}public void setOpcode(String opcode) {this.opcode = opcode;}}public String getHead() {return Head;}public void setHead(String head) {Head = head;}public SfExpressResponse.ERROR getERROR() {return ERROR;}public void setERROR(SfExpressResponse.ERROR ERROR) {this.ERROR = ERROR;}public SfExpressResponse.Body getBody() {return Body;}public void setBody(SfExpressResponse.Body body) {Body = body;}@Overridepublic String toString() {return "SfExpressResponse [Head=" + Head + ", ERROR=" + ERROR+ ", Body=" + Body + "]";}
}

有了上面的类还需要一个xml解析的工具类,为了清楚那个类是哪个包下面的,直接连import一起复制出来:


import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.StringReader;
import java.io.StringWriter;  import javax.xml.bind.JAXBContext;
import javax.xml.bind.JAXBException;
import javax.xml.bind.Marshaller;
import javax.xml.bind.Unmarshaller;public class XmlUtils {/** * 将对象直接转换成String类型的 XML输出 *  * @param obj * @return */  public static String convertToXml(Object obj) {  // 创建输出流  StringWriter sw = new StringWriter();  try {  // 利用jdk中自带的转换类实现  JAXBContext context = JAXBContext.newInstance(obj.getClass());  Marshaller marshaller = context.createMarshaller();  // 格式化xml输出的格式  marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT,  Boolean.TRUE);  // 将对象转换成输出流形式的xml  marshaller.marshal(obj, sw);  } catch (JAXBException e) {  e.printStackTrace();  }  return sw.toString();  }  /** * 将对象根据路径转换成xml文件 *  * @param obj * @param path * @return */  public static void convertToXml(Object obj, String path) {  try {  // 利用jdk中自带的转换类实现  JAXBContext context = JAXBContext.newInstance(obj.getClass());  Marshaller marshaller = context.createMarshaller();  // 格式化xml输出的格式  marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT,  Boolean.TRUE);  // 将对象转换成输出流形式的xml  // 创建输出流  FileWriter fw = null;  try {  fw = new FileWriter(path);  } catch (IOException e) {  e.printStackTrace();  }  marshaller.marshal(obj, fw);  } catch (JAXBException e) {  e.printStackTrace();  }  }  @SuppressWarnings("unchecked")  /** * 将String类型的xml转换成对象 */  public static Object convertXmlStrToObject(Class clazz, String xmlStr) {  Object xmlObject = null;  try {  JAXBContext context = JAXBContext.newInstance(clazz);  // 进行将Xml转成对象的核心接口  Unmarshaller unmarshaller = context.createUnmarshaller();  StringReader sr = new StringReader(xmlStr);  xmlObject = unmarshaller.unmarshal(sr);  } catch (JAXBException e) {  e.printStackTrace();  }  return xmlObject;  }  @SuppressWarnings("unchecked")  /** * 将file类型的xml转换成对象 */  public static Object convertXmlFileToObject(Class clazz, String xmlPath) {  Object xmlObject = null;  try {  JAXBContext context = JAXBContext.newInstance(clazz);  Unmarshaller unmarshaller = context.createUnmarshaller();  FileReader fr = null;  try {  fr = new FileReader(xmlPath);  } catch (FileNotFoundException e) {  e.printStackTrace();  }  xmlObject = unmarshaller.unmarshal(fr);  } catch (JAXBException e) {  e.printStackTrace();  }  return xmlObject;  }
}

再加一个顺丰接口实体类就完事了:

public class SfParam implements Serializable{private static final long serialVersionUID = 1L;private String orderNo;      // 客户运单号 (不能重复)private String mailNo;        // 顺丰运单号private String jiContact;    // 寄件人private String jiCompany;    // 寄件人公司private String jiTel;       // 寄件人电话private String jiAdress;    // 寄件人地址private String jiProvince;  // 寄件人省份private String jiCity;      // 寄件人城市private String jiCounty;     // 寄件人区域private String shouContact;  // 收件人private String shouCompany;  // 收件人公司private String shouTel;        // 收件人电话private String shouAdress;   // 收件人地址private String shouProvince; // 收件人省份private String shouCity;  // 收件人城市private String shouCounty;   // 收件人区域private String orderSn;        // 合同号private Double invoiceMoney; // 开票金额private String cargo;        // 货物private String cargoNum;     // 货物 (数量/重量)private String originCode;  // 原寄地区域代码,可用于顺丰电子面单标签打印。private String destCode;   // 目的地区域代码,可用于顺丰电子面单标签打印。private String destRouteLabel;private String qRCode;private Integer source;       // 打印机所在地址public Integer getSource() {return source;}public void setSource(Integer source) {this.source = source;}public String getOrderSn() {return orderSn;}public void setOrderSn(String orderSn) {this.orderSn = orderSn;}public Double getInvoiceMoney() {return invoiceMoney;}public void setInvoiceMoney(Double invoiceMoney) {this.invoiceMoney = invoiceMoney;}public String getqRCode() {return qRCode;}public void setqRCode(String qRCode) {this.qRCode = qRCode;}public String getDestRouteLabel() {return destRouteLabel;}public void setDestRouteLabel(String destRouteLabel) {this.destRouteLabel = destRouteLabel;}public Long getMemberId() {return memberId;}public void setMemberId(Long memberId) {this.memberId = memberId;}public String getOriginCode() {return originCode;}public void setOriginCode(String originCode) {this.originCode = originCode;}public String getDestCode() {return destCode;}public void setDestCode(String destCode) {this.destCode = destCode;}public String getMailNo() {return mailNo;}public void setMailNo(String mailNo) {this.mailNo = mailNo;}public String getOrderNo() {return orderNo;}public void setOrderNo(String orderNo) {this.orderNo = orderNo;}public String getJiContact() {return jiContact;}public void setJiContact(String jiContact) {this.jiContact = jiContact;}public String getJiCompany() {return jiCompany;}public void setJiCompany(String jiCompany) {this.jiCompany = jiCompany;}public String getJiTel() {return jiTel;}public void setJiTel(String jiTel) {this.jiTel = jiTel;}public String getJiAdress() {return jiAdress;}public void setJiAdress(String jiAdress) {this.jiAdress = jiAdress;}public String getJiProvince() {return jiProvince;}public void setJiProvince(String jiProvince) {this.jiProvince = jiProvince;}public String getJiCity() {return jiCity;}public void setJiCity(String jiCity) {this.jiCity = jiCity;}public String getJiCounty() {return jiCounty;}public void setJiCounty(String jiCounty) {this.jiCounty = jiCounty;}public String getShouContact() {return shouContact;}public void setShouContact(String shouContact) {this.shouContact = shouContact;}public String getShouCompany() {return shouCompany;}public void setShouCompany(String shouCompany) {this.shouCompany = shouCompany;}public String getShouTel() {return shouTel;}public void setShouTel(String shouTel) {this.shouTel = shouTel;}public String getShouAdress() {return shouAdress;}public void setShouAdress(String shouAdress) {this.shouAdress = shouAdress;}public String getShouProvince() {return shouProvince;}public void setShouProvince(String shouProvince) {this.shouProvince = shouProvince;}public String getShouCity() {return shouCity;}public void setShouCity(String shouCity) {this.shouCity = shouCity;}public String getShouCounty() {return shouCounty;}public void setShouCounty(String shouCounty) {this.shouCounty = shouCounty;}public String getCargo() {return cargo;}public void setCargo(String cargo) {this.cargo = cargo;}public String getCargoNum() {return cargoNum;}public void setCargoNum(String cargoNum) {this.cargoNum = cargoNum;}
}

就这两个比较重要,有了上面两个工具类,顺丰接口就方便多了,看一下自己公司所用到的:

String path;private static final Logger logger = Logger.getLogger(SFServiceIml.class);  private final String reqURL="https://bsp-oisp.sf-express.com/bsp-oisp/sfexpressService";private final String clientCode="******";//此处替换为您在丰桥平台获取的顾客编码private final String checkword="******";//此处替换为您在丰桥平台获取的校验码private final String url ="******"; // 打印机地址@Overridepublic SfExpressResponse sfExpressMethod(SfParam params,int type) {// 请求文String requestXml = "";// 请求方法String methodName = "";if (type < 1) {logger.warn("调用接口类型传错");return null;}// 1 下单  2 查询...if (type == 1) {requestXml = getOrderServiceRequestXml(params);methodName = "orderSerivce";}if (type == 2) {requestXml = getOrderSearchServiceRequestXml(params);methodName = "OrderSearchService";}String respXml= CallExpressServiceTools.callSfExpressServiceByCSIM(reqURL, requestXml, clientCode, checkword);logger.info("顺丰接口请求:" + "方法:" + methodName + " 返回报文 :" + respXml);SfExpressResponse response = (SfExpressResponse)XmlUtils.convertXmlStrToObject(SfExpressResponse.class, respXml);return response;}/*** 1 顺丰下单 xml报文*/private  String getOrderServiceRequestXml(SfParam params){//订单号String orderNo = params.getOrderNo();/*****************寄件方******************/// 公司名称String j_company = params.getJiCompany() == null ? "" : params.getJiCompany();// 联系人String j_contact = params.getJiContact();// 手机号String j_tel = params.getJiTel();// 省份String j_province = params.getJiProvince() == null ? "" : params.getJiProvince();String j_city = params.getJiCity() == null ? "" : params.getJiCity();String j_county = params.getJiCounty() == null ? "" : params.getJiCounty();String j_address = params.getJiAdress();/****************寄件方*******************//****************收件人*******************/String d_contact = params.getShouContact();//收件人公司String d_company  = params.getShouCompany() == null ? "" : params.getShouCompany();//收件人电话String d_tel = params.getShouTel();//收件人详细地址String d_province = params.getShouProvince() == null ? "" : params.getShouProvince();String d_city = params.getShouCity() == null ? "" : params.getShouCity();String d_county = params.getShouCounty() == null ? "" : params.getShouCounty();String d_address = params.getShouAdress();/****************收件人*******************///商品名称String cargo = params.getCargo();//商品数量String cargoNum = params.getCargoNum();StringBuilder strBuilder = new StringBuilder();strBuilder.append("<Request service='OrderService' lang='zh-CN'>");strBuilder.append("<Head>" + clientCode + "</Head>");strBuilder.append("<Body>");strBuilder.append("<Order").append(" ");strBuilder.append("orderid='" + orderNo.toString().trim() + "" + "'").append(" ");//返回顺丰运单号strBuilder.append("is_gen_bill_no='1'").append(" ");//寄件方信息strBuilder.append("j_company='" + j_company + "'").append(" ");strBuilder.append("j_contact='" + j_contact + "'").append(" ");strBuilder.append("j_tel='" + j_tel + "'").append(" ");strBuilder.append("j_address='" + j_province+j_city+j_county+j_address + "'").append(" ");//收件方信息strBuilder.append("d_company='" + d_company + "'").append(" ");strBuilder.append("d_contact='" + d_contact.toString().trim() + "'").append(" ");strBuilder.append("d_tel='" + d_tel.toString().trim() + "'").append(" ");strBuilder.append("d_address='" + d_province+d_city+d_county+d_address.toString().trim() + "'").append(" ");strBuilder.append("pay_method='1'").append(" ");strBuilder.append("routelabelService = '1' ");strBuilder.append(" > ");//货物信息strBuilder.append("<Cargo").append(" ");strBuilder.append("name='" + cargo + "'").append(" ");strBuilder.append("count='" + cargoNum.toString() + "'").append(" ");strBuilder.append(">");strBuilder.append("</Cargo>");strBuilder.append("</Order>");strBuilder.append("</Body>");strBuilder.append("</Request>");return strBuilder.toString();}/***  2 顺丰查询报文*/private String getOrderSearchServiceRequestXml(SfParam params){String orderNo =params.getOrderNo();StringBuilder strBuilder = new StringBuilder();strBuilder.append("<Request service='OrderSearchService' lang='zh-CN'>");strBuilder.append("<Head>" + clientCode + "</Head>");strBuilder.append("<Body>");strBuilder.append("<OrderSearch").append(" ");strBuilder.append("orderid='" + orderNo.toString().trim() + "" + "'").append(" > ");strBuilder.append("</OrderSearch>");strBuilder.append("</Body>");strBuilder.append("</Request>");return strBuilder.toString();}

需要用到丰桥接口的小伙伴直接可以拿去使用。

顺丰--Java丰桥接口整体封装(下单、查询、打印)相关推荐

  1. JAVA调用接口简单封装,Mvp+Retrofit2+RxJava2 项目中使用的简洁封装

    Retrofit2 + RxJava2 是一个强大的组合,完成一系列网络请求 MVP当前用的很多的一种框架,Model+View+Presenter 本文记录了作者在项目中对 Retrofit2 + ...

  2. JAVA对接顺丰快递(丰桥API)

    我们公司是做电商平台的,之前有接到过需求是对接顺丰快递,主要是用于查询物流信息以及预计派送时间.我这边经过查询相关资料整理出了以下代码. 对接顺丰快递是通过丰桥api实现的,首先需要到顺丰开放平台注册 ...

  3. BookCollectionSoftware - 图书管理(知识点糅合::类,对象,抽象类,接口,封装,继承,多态,顺序表)- java - 细节狂魔

    文章目录 前言 图书管理应实现的功能 准备工作 开始操作 先在book包,创建一个Book类,用来存储一本书的信息 小技巧: 根据小技巧来创造我们的 构造方法,公开的输入输出的接口,,还要重写的toS ...

  4. 顺丰丰桥接口之下订单接口,适用于第三方系统对接

    顺丰丰桥接口之下订单接口,适用于第三方系统对接 语言 JAVA 作者:不停留的风 1.加Servlet访问 @WebServlet("/XXX") public class Tes ...

  5. 接入丰桥,下单到打印面单到配送开发流程

    顺丰开放平台地址:顺丰开放平台 一.了解官网 1.1.开发文档 开发接口之前可以先查看熟悉文档,尤其是API文档仔细阅读.进入之后是如下图,根据自己需要开发的接口,先查看文档,然后根据文档要求来请求并 ...

  6. java三大特性:封装、继承、多态

    2019独角兽企业重金招聘Python工程师标准>>> 至今记得若干年前,去面试排了半天的队,到我的时候,面试官问我的第一个问题,java三大特性是什么~我支支吾吾的没有答全~0.0 ...

  7. AliPay - Java支付宝接口开发(三)

    一.前言 AliPay - Java支付宝接口开发(一) AliPay - Java支付宝接口开发(二) 二.支付宝沙箱环境集成Web项目 1.将支付宝Demo中的相关文件复制到我们的项目中 1.1 ...

  8. java后端项目整体代码结构

    文章目录 前言 一.java后端项目整体代码结构是什么样子的? 二.写完咋调试呢? 总结 前言 作为第一次参加java项目,在接触项目的第一周里也是遇到各种傻白的问题,如项目代码文件的整个结构是什么样 ...

  9. java sdi接口是什么意思_JAVA中Action层, Service层 ,modle层 和 Dao层的功能区分

    首先这是现在最基本的分层方式,结合了SSH架构.modle层就是对应的数据库表的实体类.Dao层是使用了Hibernate连接数据库.操作数据库(增删改查).Service层:引用对应的Dao数据库操 ...

最新文章

  1. asp.net MVC分页
  2. LiveData学习
  3. 美团电单车中标警用车采购项目,上千辆定制版警用电单车上线!
  4. log4j配置(转)
  5. 符合W3C标准的target=_blank形式
  6. dependency-check-maven安全漏洞扫描工具介绍
  7. android 创建桌面快捷方式 ShortCut
  8. FeedDemon 实务讲义
  9. PHP自学笔记 ---李炎恢老师PHP第一季 TestGuest0.4
  10. windows 下的CACTI的安装方法
  11. A003-182-2268-黄清梅
  12. 服务器文档链接电脑,服务器怎么链接电脑
  13. WPS、office使用入坑心得
  14. 微信H5支付(V3)
  15. DeeplabV3+ 训练自己的数据集。pytorch
  16. 麒麟桌面系统桌面环境介绍
  17. 什么软件可以测试色卡颜色,Pantone.inc彩通色卡识别软件
  18. <Linux>Ubuntu使用glade创建gtk UI应用程序
  19. 老罗前辈的总结:那两年炼就的Android内功修养
  20. 论文阅读:Tube Convolutional Neural Network (T-CNN) for Action Detection in Videos

热门文章

  1. 收藏夹功能打开解析视频连接
  2. ACM 海贼王之伟大航路(深搜剪枝)
  3. 计算机网络习题:网络层部分
  4. 【C++代码】区间重叠问题
  5. LaTeX排版小工具
  6. springboot2+junit5+MockMvc(Mockito)实现对Controller的测试,配置都有,很详细了。
  7. 自定义 View 之联系人字母索引及定位效果
  8. OpenJudge-021:鸣人和佐助
  9. hana经常使用函数
  10. 逗视 iOS客户端应用源码