SOAP 是什么东西? 介绍介绍

理解SOAP (一)介绍、SOAP 版本、 日期:2003-03适用于:全局XML Web 服务架构(GXA)          远程过程调用(RPC)          SOAP 1.1 SOAP 1.2 规范          传输协议:TCP, HTTP, SMTP, 和 MSMQ          Microsoft® .NET Web Services Enhancements 1.0 SP1        阅读详情

  如果你的安装路径(installation paths)和上面使用的不同,你需要更正它们,然后关闭和重启Tomcat以使它们生效。这样,你就有为运行SOAP作好了准备。但是现在,我要忘记有关的技术部分,来学一点理论知识。

  SOAP意思是简单对象访问协议(Simple Object Access Protocol)。的确如它的名字一样,SOAP是很简单的。它是一个基于XML的协议,允许程序组件和应用程序彼此使用一种标准的Internet协议--HTTP来通讯。SOAP是一种独立的平台,它不依赖程序语言,它是简单的,弹性的,很容易扩展的。目前,应用程序能够彼此使用一种基于DCOM和CORBA技术的远程过程调用(RPC)来进行相互通讯,但HTTP不被设计为这个目的。RPC在Internet上应用是非常困难的,它们会出现许多兼容性和安全性的问题,因为防火墙和代理服务器通常都会阻断(block)这些类型的流量。应用程序之间最好的通讯方式是通过HTTP协议,因为HTTP是支持所有Internet浏览器和服务器的。基于这个目的,SOAP协议被创建出来。
那么,它们是如何运作的呢?比如,一个应用程序(A)需要和另一个应用程序(B)在SOAP的帮助下进行彼此通讯。它们将使用下面的框架图来完成这个过程:

  这个SOAP信封(SOAP envelope)是一个包含以下内容的XML文档:

  

  正如你看到的,它是非常简单的。它看起来确实就象一个普通的信封或者你的email。你想看看它们是如何动作的吗?下面跟我们一起来吧。其实我们有很多方法是不用SOAP来在创建和运行我们自己的“Hello World”应用程序的,但是因为我们要保持它的简单性,我会给你一个它运作方式的框架图(scheme)。

  我们的“Hello World”范例会包含一个SOAP Service。我们的SOAP Client将发送它们的名字到该SOAP Service,并试图得到一些答复或响应。这个SOAP Service需要部署到一个SOAP Admin的工具,以至重定位所有请求的SOAP(Proxy) RPC Router能够知道它们应该使用哪种服务来运作。总而言之,这个是以下面的方式来运作的:


现在,我们来一步步的看看到底发生了什么。在Step 1里,HelloWorldClient将连接一个SOAP RPC Router,请求我们的SOAP Service并将包含我们名字的一个字符串传递给它。该SOAP RPC Router会检查是否它已经部署了这个SOAP Service。如果它被发现是被部署的,那么它将传递数据到这个SOAP Service并调用特定的方法,这个是Step 2。然后SOAP Service方法会被执行,将返回某个字符串值(该值就是SOAP Client的答复或者响应)(Step 3)。在Step4中,SOAP RPC Router将仅仅只是重定向这个数据到SOAP Client。所有在Step1和Step4里传输的数据是通过SOAP Envelope来完成的。正如你所看到的,算法是相当简单的,因此我们只准备关心实际的代码。

  首先,我们要创建一个SOAP Service。下面是它的代码,请不要忘记将它放入HelloWorld/ 目录中(必须被包含在你的CLASSPATH中):

// SOAPService.java 
  package HelloWorld; 
  public class SOAPService  { 
      public String sayHi(String x)  { 
      return("Hello my friend, " + x + "! Glad to see you!"); 
  } 
  }

      添加任何注释也是很容易的。要编译它,只需要用下列命令:javac SOAPService.java

        
第二步,一旦我们准备好了SOAP Service,我们需要用SOAP Service Manager来部署它。这个可以通过很多方式来实现,但是为了能让初学SOAP的读者更容易理解SOAP,我提供了一个最容易的方式。我们假设你的Web Server(Tomcat或其他)已经正常运行,并且你已经正确安装了SOAP。那么当浏览器访问http://localhost:8080/soap/,你会看见Apache SOAP的欢迎页面。点击Run the admin client ,然后 Deploy。你会得到一个屏幕显示,在那里你需要填入ID,Scope,Method,Provider Type和JAVA Provider的信息到表单域中。你能忽略其他所有的表单域,除非你真的需要它们的信息。我们的“HelloWorld”例子不需要它们,所以,我们填的下面的值:

·    ID: urn:HelloWorld_SOAPService

·          Scope: Application

·    Methods: sayHi

·    Provider Type: java

·    Java Provider - Provider Class: HelloWorld.SOAPService

·    Java Provider - Static? No

一些注释:ID是我们要从SOAP Client标识我们的SOAP Service的唯一名字。Method包含SOAP Service提供的一系列方法。JAVA Provider-Provider Class是SOAP Service Java类的名字。

  现在,点击Deploy 按钮,那么你的服务会被部署。再次强调,请注意正确设置CLASSPATH环境变量。然后,你的HelloWorld.SOAPService类能够被找到,并且所有必需的jar包也能被找到。这是个几乎每个人都会犯的普通错误。现在,你能够点击 List ,将会看见你的服务已经被部署进来。恭喜!

  最后,让我们来创建一个SOAP Client。代码看起来有点复杂,但是在现实中不会只有这么点长。

1: // HelloWorldClient.java 
  2: import java.io.*; 
  3: import java.net.*; 
  4: import java.util.*; 
  5: import org.apache.soap.*; 
  6: import org.apache.soap.rpc.*; 
  7: public class HelloWorldClient  { 
  8: public static void main(String[] arg) throws Exception  { 
  9: Call c = null; 
  10: URL url = null; 
  11: Vector params = null; 
  12: Response rep = null; 
  13: String ourName = "Superman"; 
  14: String ourUrn = "urn:HelloWorld_SOAPService"; 
  15: String ourMethod = "sayHi"; 
  16: url = 
new URL("http://localhost:8080/soap/servlet/ 
  rpcrouter"); 
  17: System.out.println("Passing to our deployed "+ourUrn+" 
  our name ("+ourName+"): "); 
  18: c = 
new Call(); 
  19: c.setTargetObjectURI(ourUrn); 
  20: c.setMethodName(ourMethod); 
  21: c.setEncodingStyleURI(Constants.NS_URI_SOAP_ENC); 
  22: params = 
new Vector(); 
  23: params.addElement(new Parameter("ourName", String.class, 
  ourName, null)); 
  24: c.setParams(params); 
  25: System.out.print("and its answer is: "); 
  26: rep = c.invoke(url, ""); 
  27: 
if (rep.generatedFault())  { 
  28: Fault fault = rep.getFault(); 
  29: System.out.println("/nCall failed!"); 
  30: System.out.println("Code = " + fault.getFaultCode()); 
  31: System.out.println("String = " + fault.getFaultString()); 
  32: } 
else  { 
  33: Parameter result = rep.getReturnValue(); 
  34: System.out.print(result.getValue()); 
  35: System.out.println(); 
  36: } 
  37: } 
  38:}


下面我要做一些解释。在第13行,我们设置了我们的名字,这个名字将会传递给SOAP Service。在第14行,我们设置了我们将要调用的服务的ID(service ID),和第15行里设置的服务方法(service method)。有了这个ID,服务能够被部署到SOAP服务管理器(SOAP Service Manager)中。我们没有设置任何其他值,仅仅只用刚才那些基础值就可以正常运作了。你能从SOAP的官方文档上得到相关信息,该文档来自SOAP包中,它们的解释超出了本文的范围。

  用以下方式编译这个SOAP Client:

  javac HelloWorldClient.java

  为了圆满完成它,让我们检查一下针对我们的测试,是否所有事情都准备就绪。Tomcat正在运行,所有的环境变量都正确,SOAP Service被编译和部署,SOAP Client被成功编译。OK,让我们运行它,你将看到这个屏幕:

  正如你所看到的,我们的SOAP Client使用SOAP协议成功发送它的名字和接收了一个答复。正如前面所说的,SOAP Service发送和接收的是SOAP envelope。这个是SOAP envelope的源代码。

  被发送到SOAP Service的SOAP Envelope

<?xml version=1.0 encoding=UTF-8?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/
soap/envelope/"
xmlns:xsi="http://www.w3.org/2001/
XMLSchema-instance"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
>
<SOAP-ENV:Body>
<ns1:sayHi xmlns:ns1="urn:HelloWorld_SOAPService"
SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/
soap/encoding/"
>
<ourName xsi:type="xsd:string">Superman</ourName>
</ns1:sayHi>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>: 


从SOAP Service接收的SOAP Envelope

<?xml version=1.0 encoding=UTF-8?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/
soap/envelope/"
xmlns:xsi="http://www.w3.org/2001/
XMLSchema-instance"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
>
<SOAP-ENV:Body>
<ns1:sayHiResponse xmlns:ns1="urn:HelloWorld_SOAPService"
SOAP-ENV:encodingStyle="http://schemas.xmlsoap.
org/soap/encoding/"
>
<return xsi:type="xsd:string">Hello my friend, Superman!
Glad to see you!
</return>
</ns1:sayHiResponse>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope> 

      
      
要理解SOAP Envelope中的所有标签的含义,我建议你花一点时间阅读 http://www.w3.org/2001/06/soap-envelope 命名空间规范。

  我希望本文能够在你理解SOAP技术上有一定帮助。这个技术是简单的,有趣的,强大的,弹性的。它被用在许多Web应用中,这些应用的数量也在不断增加。学习SOAP是值得的,至少你要知道它是什么和它是怎么运作的。

 

webservice soap协议 JAX-WS提供了一组用于开发SOAP协议的Web服务的API,可以轻松地创建和部署SOAP Web服务。总的来说,JAX-WS和Axis是用于开发SOAP协议的Web服务的工具和框架,它们可以与HTTP+SOAP协议一起使用,以实现在Web服务中进行结构化的信息交换。HTTP+SOAP:HTTP+SOAP是一种基于HTTP协议的SOAP Web服务。当您使用 JAX-WS 构建 Web 服务时,您实际上是在使用 SOAP 协议,因为 JAX-WS 是 SOAP 协议的一种 Java 实现。 阅读详情

相关推荐

SOAP ,WSDL 和UDDI

这些描述通常用于SOAP服务,但也可以用于描述REST服务(尽管REST服务的描述通常更简单,不需要WSDL的复杂性)。

技术博客 1208

SOAP

SOAP(Simple Object Access Protocol )简单对象访问协议是在分散或分布式的环境中交换信息的简单的协议,是一个基于XML的协议,它包括四个部分:SOAP封装(envelop),封装定义了一个描述消息中的内容是什么,是谁发送的,谁应当接受并处理它以及如何处理它们的框架;SOAP编码规则(encoding rules),用于表示应用程序需要使用的数据类型的实例; SOAP

gu0072003的专栏 881

鸿蒙手机卸载内置应用 adb连接

**傻瓜式删除鸿蒙系统内置应用,自己亲测有效。**

JJDXBT的博客 3万+

深度思考:总结SOA、WSDL、SOAP、REST、UDDI之间的关系

SOA、WSDL、SOAP、REST及UDDI各具优势,共同增强系统灵活性、互操作性及资源优化。它们在网络服务发展中扮演关键角色,推动跨平台交互与标准化进程。

科技互联网领域深度探索者,乐于分享与写作。 1661

Notion卡顿救星:3分钟搞定DNS优化,手机电脑全平台加速指南

本文针对Notion访问慢和卡顿问题,提供了全平台DNS优化与Hosts文件修改的详细指南。通过更换优质DNS服务器或建立静态IP映射,可有效解决因网络延迟和域名解析导致的加载缓慢,实现手机与电脑端的快速加速,提升Notion使用流畅度。

v6b7n8m9q0的博客 1306

GEO优化实战:用AnswerBit量化AI搜索可见度与品牌监控体系

生成式引擎优化(GEO)正取代传统SEO,成为品牌在AI搜索生态中获取可见度的关键。当用户习惯从“翻列表”转向“直接问AI”,品牌能否被生成式引擎识别、引用并正向推荐,直接决定了其在用户决策链条中的存在感。AI搜索可见度因此从模糊概念演变为可度量的运营指标,涵盖提及率、引文率、情感分与回源质量等维度。腾讯AnswerBit作为答案侧分析工具,帮助运营者拆解AI回复中的品牌语境与引用来源,让优化动作有据可循。从内容结构化改造、品牌实体建设到第三方权威背书,GEO要求团队建立“度量-优化-再度量”的闭环。文章结

weixin_31100517的博客 150

SOAP是什么意思?底层原理是什么?

总之,SOAP是一种基于XML和HTTP的协议,用于实现不同应用程序之间的通信和互操作性。它是一种用于在网络上交换结构化信息的协议。SOAP主要用于在不同的应用程序之间进行通信,并支持基于网络的服务和应用程序之间的互操作性。HTTP提供了广泛的互联网基础设施和通信机制,使SOAP能够在不同的系统之间进行通信。通过WSDL,客户端可以了解如何与特定的SOAP服务进行交互,并生成相应的代码来调用服务。XML(可扩展标记语言):SOAP消息以XML格式编码,因此它可以在不同的平台和编程语言之间进行解析和处理。

长风破浪会有时的博客 1605

【HDL系列】除法器(3)——基2 SRT算法

目录 一、除法表示 二、数字递归算法基础公式 三、QDS(Quotient Digit Selection)函数 四、基2 SRT算法 一、除法表示 除法被定义如下: 其中,x是被除数,d是除数,q是商,rem是余数。 商的精度由ulp(unit of last position)来决定: 如果ulp=1, 商q则是整数; 如果ulp=r^(-n),n是商数个数,r是所有输入操作数的基,此时商为小数。 二、数字递归算法基础公式 在使用数字递归算法(Digit Re...

纸上谈芯的专栏 8155

JavaWeb11-Java Web服务:使用SOAP与RESTful API

本文介绍了Java Web服务中的SOAP和RESTful API两种主流架构。SOAP作为基于XML的协议导向服务,适合金融、医疗等需要高可靠性的企业级应用,通过WSDL定义严格契约;而RESTful作为一种轻量级架构风格,以资源为中心,使用HTTP方法操作JSON/XML数据,更适合互联网和移动应用。文章对比了两者在协议本质、数据格式、接口定义等关键差异,并详细演示了使用JAX-WS开发SOAP服务的完整流程,包括服务端接口定义、实现类编写以及WSDL生成。

千淘万漉虽辛苦,吹尽狂沙始到金 2万+

STM32硬件SPI驱动W5500以太网模块全流程(附避坑指南)

本文详细介绍了如何使用STM32硬件SPI驱动W5500以太网模块,包括开发环境准备、SPI接口配置、网络参数设置及常见问题排查。通过官方驱动移植和实战案例,帮助开发者快速实现以太网通信功能,适用于智能家居、工业控制等物联网应用场景。

weixin_29192141的博客 364

一步步教你使用 NVIDIA 推出的全新GPU加速求解器 cuOpt:解锁超高效率的求解体验

未完成

Linshaodan520的博客 868

SOAP基础知识

一、SOAP是什么? SOAP是一种轻量级协议,旨在在分散的分布式环境中交换结构化信息。 SOAP使用XML技术来定义可扩展的消息传递框架,该框架提供了可以在各种基础协议之间交换的消息构造。 通信协议 用于应用程序之间的通信 发送消息的格式 设计用于通过Internet通信 平台无关 语言无关 基于XML 简单且可扩展 ...

XD的学习笔记 1269

基于STM32的智能手环心率血氧体温监测系统(完整设计)

本文设计了一款基于STM32单片机的多功能智能手环系统,集成心率、血氧、体温实时监测功能,并支持运动数据管理与健康预警。系统采用MAX30102传感器实现心率血氧监测,DS18B20检测体温,ADXL345进行步数统计,通过OLED屏幕显示数据。研究通过低功耗硬件选型与模块化软件架构设计,实现了多参数同步采集、阈值预警及蓝牙数据传输功能。测试结果表明,系统在健康监测精度、续航能力及用户交互体验上均达到预期目标,为个人健康管理提供了实用解决方案。

3254968421的博客 701

jax_ws_在Spring中记录JAX-WS SOAP消息

jax_ws 每当在Spring内使用JAX-WS时,您可能都希望记录传入和传出的SOAP消息-如果仅用于开发过程中的调试。 因此,第一件事就是增加日志级别,对吗? 不幸的是,这将无效。 您将要做的是利用javax.xml.ws.handler.HandlerResolver接口。 那么我们该怎么做呢? 首先,您将要创建一个实现HandlerResolver接口的类。 这是一个非常基本的类,将...

cunhu2961的博客 147

YOLOv11改进策略【损失函数篇】| 将激活函数替换为带有注意力机制的激活函数 ARelu

将ELSA中的函数Φ\PhiΦ用具有可学习参数α\alphaα和β\betaβ的网络层表示为LxiαβCαxixi0σβxixi≥0Lxi​αβCαxi​σβxi​​xi​0xi​≥0​,结合标准的Rectified Linear UnitsRxi0xi0xixi≥0Rxi​0xi​​xi​0xi​≥0​,得到可学习激活函数Fxiα。

Limiiiing的博客 2116

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

C#发起soap请求!!!好东西啊

using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; using hp

Eric_GuoDongliang的专栏 1万+

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

【SOAP-WebService系列】SOAP简述

文章目录SOAP是什么SOAP和HTTP SOAP是什么 简述1:SOAP 是用于访问传统Web服务(SOAP-WebServices)的协议。 简述2:SOAP=HTTP+XML+RPC SOAP(Simple Object Access Protocol,即简单对象访问协议) 是广泛用于SOAP-WebServices(传统Web服务)交换数据的一种协议规范。 此标准由IBM、Microsoft、UserLand和DevelopMentor在1998年共同提出,并得到 莲花(Lotus)、康柏(C

无数_Mirage的博客 9443

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

随便聊聊 SOA & SOAP & WebService 的一些东西,以及客户端开发的代码逻辑解析

随便聊聊 SOA & SOAP & WebService 的一些东西,以及客户端开发的代码逻辑解析

光宇广贞 5873

soap是什么东西?

soap是什么东西呢?刚刚接触程序的程序员一定会问这么一堆名词都是什么呢?也许你有基础的可能这些你早就明白了,但是像我这样不是计算机专业半路转行的程序员们是一定会问的。让我们一步一步学习稳扎稳打,共同进步吧。 简单对象访问协议 SOAP即简单对象访问协议。 简单对象访问协议是交换数据的一种协议规范,是一种轻量的、简单的、基于XML(标准通用标记语言下的一个子集)的协议,它被设计成在...

weixin_30713953的博客 278

YII中使用SOAP一定要注意的一些东西

SiteController.php /** * Declares class-based actions. */ public function actions() { return array( //web service action define 'myService' => array(

礷天設計 4520

soap soapenv区别_soap学习笔记(二)-----soap入门篇

SOAP的全称是Simple Object AccessProtocol,即简单对象访问协议。简单地说,SOAP是一种有线协议,类似于CORBA的IIOP、DCOM的ORPC或Java远程方法调用的Java远程方法协议(JavaRemote MethodProtocol,JRMP)。你也许会怀疑,既然已经有了那么多有线协议,为什么我们还需要另外一种?事实上,这不正好导致前面所讨论的问题吗?这些问题...

weixin_39860849的博客 4785

理解SOAP (一)介绍、SOAP 版本

适用于:全局xml web 服务架构(gxa) 远程过程调用(rpc) soap 1.1 soap 1.2 规范 传输协议:tcp, http, smtp, 和 msmq microsoft® .net web services enhancements 1.0 sp1

微软新技术 2760

soap soapenv SOAP-ENV 区别

有时soapevn 是大写: SOAP-ENV,这完全是命名空间的ding'yi

enetor1的专栏 2万+

soap soapenv区别_soap soapenv SOAP-ENV 区别

soap soapenv SOAP-ENV 区别请求代码Hello World! This is Test!有时soapevn 是大写: SOAP-ENV,这完全是命名空间的定义这个属于XML基础知识。带有冒号的xml标签用于声明xml的标签元素的命名空间。为什么要使用命名空间呢?这是因为XML文档中同一个标签名可能有着不同的含义。例如这个标签,一般我们知道它是一个网页上的表格,如果一个家具商,...

weixin_39849418的博客 1200

理解 SOAP

【前言】好歹也是开发了一场soap,昨天被测试部问起,开发用的soap版本是多少,我竟然没答不上来,so失败。。。。看来短时间内堆积起来的知识,第一不牢靠,第二不深入。 【出处】http://msdn.microsoft.com/zh-cn/library/ms995800.aspx 【总结】1. SOAP 版本控制基于 XML 命名空间。SOAP 1.1 由 http:/

火影的梦想 1445
上一篇: CORBA 介绍之实践练习
下一篇: control-m中 利用 bmc 公司提供的api 进行二次开发 介绍
caiguoxing
博客等级 码龄20年 14粉丝 21原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值