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

面向服务的架构(SOA)从入门到实战(融合WebService、JAX-WS、SCA开发MIS项目) 面向服务的架构(SOA)是全球IT供应商广泛讨论的热门话题,IBM、Hawlett-Packard、Software AG、oracle、SAP、及Microsoft等公司都已成为SOA的支持者,许多供应商都在开发基于SOA的产品.但国内很多软件公司对SOA的认知缺乏,很多程序员看到SOA就感觉束手无策。 本课程主要针对主流的SOA核心思想、融合WebService、JAX-WS、SCA、 Tuscany及开源产品技术CXF完成了从思想到技术,从技术到项目的课程体系.本课程主要是针对复杂的SOA 思想,通过项目开发的形式融会贯通给学员进行讲解,大大地降低学习SOA的复杂度,让学员一听就懂,一用就会。 立即下载

一天的时间调通了一个 WebService 的 JAVA 端的 C/S、一个 ANDROID 端的 C/S,调通了而已,很不爽,很闷。因为刚刚上手 JAVA & Eclipse,对于我这个用惯了 VS 2010 的同学来说,感觉大大的不好。被迫和陌生的感觉很容易让我这个巨蟹座的男人直接地由然而生强烈的抵触情绪。不过话说回来了,网络方面的东西我一直很感兴趣,苦于没有项目参与。谁让项目要求我 AXIS2 + Ecliipse + Tomcat + Android 呢?看在网络项目开发的面子上,忍了!

       于是用两天的时间好好地看了看 20 多年前的故事,抽空儿看了看 SOA & SOAP & WebService 的东西,看了看 WSDL 和 SOAP 标准。

       简单地说 WSDL 这东西,一种网络服务描述规范,它是一个实现 WebService 的组件,也只是提供一种描述的框架,如果想用 SOAP,就往里面添 SOAP 的元素节点,如果想用 MIME 的东西,就往里面添 MIME 的元素节点,想用 HTTP-GET/POST 的东西,就往里面添相应的元素节点。

       搞清楚整个 WSDL 结构,了解构成 WSDL 内容的主要元素标签就可以了,还挺有层次感的:

  1. 1、Type
  2. 2、Message:需要交互的类型数据的定义
  3. 3、Operation:服务支持的某个动作描述
  4. 4、Porttype:由若干个 endpoint 支持的 Operation 集合
  5. 5、Binding:为某 Porttype 绑定的具体协议和数据格式规范
  6. 6、Port:定义为某  Binding 和某 network address 的联合的 endpoint
  7. 7、Service:相关 endpoints 集

       SOA 这个东西很好。不过使用 AXIS2 + Eclipse + Tomcat 配起一个 WebService 架构,很烦!SOA 和 WebService 不是一个东西,SOA 是一个概念和模式、一种业务,WebService 是一种实现 SOA 理念的框架,一个工具。

       开个玩笑说,话说 SOAP 这个词儿我刚看到的时候,还以为是所谓的 SOA + P……

       SOAP 应是一种应用协议,初衷是针对 RPC 设计的;但和 HTTP 最初是奔着应用协议而设计的命运越来越像,它越来越有“堕落”到“传输协议”的倾向。不过无论 SOAP 还是 HTTP,都还是用于消息传输的应用协议。

       有人说 SOAP = RPC + XML+ HTTP,基本上吧,不准的。还是试图点出 SOAP 和 HTTP 的关系了的。SOAP 消息的请求和响应动作,是需要映射为 HTTP 的请求和响应来完成 C/S 之间的通信的。怎么映射,不管了,反正就是这么回事儿。对于 WebService 来说,除了 SOAP 还有 HTTP-GET/POST 和 MIME 两种消息通信方式。但对于更好地实现 SOA 理念的要求来说,我们只关注 SOAP 就可以了。

       SOAP 传的是什么,是 XML 数据元素,嗯……是序列化的 XML 数据元素。SOA 所谓的与终端平台无关嘛,那就是,无论什么业务,大家一起来遵循同一规范就是了—— SOAP + XML(应用协议和数据格式),这是典型的天下大一统的历史演变趋势,所以,我们泱泱华夏七千年文明历史,老祖宗早早就觉悟了,早早地推动天下大一统的治世理念了;洋人文明史才一千多年,觉悟得晚,刚刚才知道,是时候去推动天下大一统了,要不,这天下也太他妈的乱了。

       对于开发来说,程序员需要搞清楚的应该是代码逻辑,尤其是这种遵循业务规范做开发编程的,与其说要搞清楚代码逻辑,不如说,必须得先搞清楚业务逻辑是什么,规范是什么,然后它们是如何反映到代码结构中的才是。

       若是用 AXIS2 的 WSDL2JAVA 生出来的 STUB,那你开发客户端可就省大事儿了,不过自己去用代码建起整个请求响应的操作过程,包括指定端点,指定 URI,指定方法签名,指定参数,指定传输方式,指定请求目标,指定 SOAP 消息的哪个部分该填充哪个对像等等……你只需要指明要调用哪个服务方法,传什么参,怎么操作返回值就好了,关注点很集中,因为整个 SOAP 是怎么跑的你根本不用关心,反正肯定能成功就对了。

       若你不想用或者不会用或者害怕用 WSDL2JAVA 工具生出来的代码,想自己写客户端,或者类似于做 ANDROID 上面的东西,要走 KSOAP2,客户端就得自己去写。这个时候就只能给自己个“勤奋好学求知”的理由去好好搞清楚整个 SOA & SOAP & WebService 是怎么个回事儿,回头来再看代码了。

       不过使用 AXIS2 的包儿去写客户端和使用 KSOAP2 的包儿去写客户端还是有很大不同的。AXIS2 在背后还是替你做了很多工作,在这点上你一点儿选择都没有,使得基于 AXIS2 的包儿开发的客户端的代码逻辑很不怎么 SOAP,所以先看基于 KSOAP2 的客户端代码逻辑吧。

       看之前,先想想,要想完整地在客户端处理一个 SOAP 请求/响应过程,需要准备什么?

       我们回头看看 SOAP 的结构,一个信封,一个可有可无的头,一个体。信封指明谁来处理消息,也就是把消息寄给谁。使用 HTTP 通信的话,则须用 URI 填充 SOAP Action HTTP Header 域,这个域指明了这封信是要交给谁的。SOAP 体用来装 RPC 对像,而 RPC 包含需要调用的函数的一切信息,至少函数名、参数是必须指定的。使用 HTTP 传输 SOAP,则须指定服务端的 endpoint,用 URL 指定。

       看,这些信息是明确一个完整 SOAP 过程的最小集了。它明确了,这个 SOAP 消息要怎么寄(HTTP),要寄到哪儿(endpoint/URL),寄给谁(URI/SOAP Action Header),寄的是什么(SOAP Body/RPC),而要求都写在 RPC 里面了。

       好了,现在回头看代码:

// RPC 对像,服务方法所在命名空间和方法名 
SoapObject rpc = new SoapObject(NAMESPACE, METHOD_NAME); 
// 方法的参数名和参数值 
rpc.addProperty(PARA_NAME, PARA_VALUE); 
// 使用 HTTP 传输,指定 URL,就是要把信寄到哪儿,URL 指定到 ?wsdl  
HttpTransportSE ht = new HttpTransportSE(URL); 
// 要写信了,指明是 soap 1.1 标准 
SoapSerializationEnvelope envelope = 
       new SoapSerializationEnvelope(SoapEnvelope.VER11); 
// 将 RPC 塞信里面 
envelope.bodyOut = rpc; 
// 这步很重要,告诉把信寄给谁,填充 SOAP Action Header 域 
ht.call(SOAP_ACTION, envelope); 
// 处理回馈 
if (envelope.getResponse() != null) { 
       // 返回对像是一个包含基础类型的封装体 
       SoapPrimitive re = (SoapPrimitive) envelope.getResponse(); 
       System.out.println(re.toString()); 
}

       这段使用 KSOAP2 包开发的客户端代码逻辑,就已经很明白了吧!

       使用 AXIS2 包开发的客刻端代码逻辑很不好看,它只需要照顾到几个围绕要调用的服务方法的方面:函数所在的服务端点、命名空间和函数签名、参数:

// 使用 RPC 方式调用WebService  
RPCServiceClient rpcClient = new RPCServiceClient(); 
Options soption = rpcClient.getOptions();           
// 函数所在的服务端点在哪儿,不用指定到 WSDL  
EndpointReference enpointref = 
       new EndpointReference("http://192.168.1.100:8080/axis2/services/hikaliv"); 
// 将端点引用与 RPC 对像关联  
soption.setTo(enpointref);  
// 参数 
Object[] inargs = new Object[]{"hikaliv"}; 
// 返回参数类型 
Class[] returnclasses = new Class[]{String.class}; 
// 指定要调用的方法及命名空间 
QName qname = new QName(NAMESPACE, METHOD_NAME); 
// 采用同步阻塞调用,等待结果反馈 
Object[] result=rpcClient.invokeBlocking(qname, inargs, returnclasses); 
for(Object obj : result){ 
       System.out.println(obj); 
} 

       就聊到这儿。

SOA和Web+Service的区别,SOA和Webservice概念与应用,SOA架構 立即下载

相关推荐

企业SOA:纵深防御与Endpoint实施

本文借鉴以往系统安全上常用的“纵深防御”(In Depth Defense)来说,虽然企业服务总线上可以设计一个统一的认证和授权控制系统。但是就像SOAP调用可以很容易地穿越防火墙一样,非法的SOAP调用 一样很容易不经过企业服务总线到达每个具体的Service Endpoint上。如果这里不设防,对于一个企业级的SOA应用而言可以说埋下了很多日后安全问题的伏笔。这里笔者建议在设计上,SOA环境本身也要贯彻“纵深”的防御方法。

SOAP 学习笔记

<br />SOAP:<br />Simple:<br />   用XML来呈现数据,并且通过HTTP来传输它是Simple的!<br />   <br />   SOAP请求的每个方面都试图成为一个自我描述并且基于大量验证集和构建良好的协议。<br />   <br />   <br />基于消息的文档交换和RPC:<br />SOAP在通过HTTP进行同步远程过程调用中有它自己的roots,<br />同步RPC,异步的基于消息的文档交换模型。<br />文档交换模型是两个endpoint之间数据交换的

liuxiIT的专栏 4059

华为产品安全基线

一、敏感信息安全传输 1、采用HTTPS安全协议传输 2、客户端本地保存的敏感信息,需要先加密再保存使用,不可逆支持PBKDF2(迭代10000次)加密保存,可逆支持AES256+IV保存,密钥支持可更新 二、认证鉴权 1、License中心与分析节点分布式部署,需要做用户名+口令安全认证,支持使用HTTPS安全协议。 2、客户端登录支持防暴力破解,支持验证码,多次连续尝试登陆失败后锁定账...

zileixu的博客 1万+

android soap webservice 数据流传输,在android中使用SOAP与webservice进行数据交互

因为项目中需要使用SOAP与服务器进行数据的交互,于是做了一个非常简单的例子来熟悉SOAP与WebService间的通信。首先需要在项目中导入KSOAP基于android版本的jar包 ksoap2-android-assembly-2.5.4-jar-with-dependencies.jar在android中的代码实现://1, 指定WebService命名空间 xxxx.com 为你要访问的...

weixin_35504293的博客 352

昆仑通态,自由串口通讯

软件默认无该功能,需要问客服索要扩展包。

cfqq1989的博客 1537

LVGL与STM32的理解(基于正点原子资料)

我们要在lcd_draw_fast_rgb_color里面实现对屏的具体操作(也就是在这里实现自己的代码)。lcd_set_window、lcd_write_ram_prepare、lcd_wr_data这三个函数是本例程LCD屏的控制函数(也就是自己写的函数)。以下是stm32工程的文件目录,GUI_APP也可以忽略(细节参考正点原子例程):这里主要是再次加强一下印象,主要就是把。,里面的lcd_init()与lcd_display_dir是。它们都是LVGL的接口,按照它们的需求,把内容给它们即可。

weixin_39257775的博客 3437

SOAP Action揭密

最近在工作中遇到一个SOAP Action的问题,正好拿出来研究一把。据说SOAPAction header这玩意在SOAP 1.1规范中着实让不少开发者喝了一壶。真的有这么难理解么?我想这应该是因为SOAP有两种非常不同的使用方式,而SOAPAction主要是被用来支持其中应用较少的一种方式的原因。在我看来,这种方式也非常有价值。让我们先看看SOAP 1.1规范是怎么定义HTTP SOA

碧荷故乡_胡奇的专栏 2万+

GD32 TIMER0 PWM输出死活没波形?别忘了这个关键配置(附完整代码)

本文详细解析了GD32 TIMER0 PWM输出无波形的常见问题,特别强调了高级定时器特有的主输出使能配置。通过完整的代码示例和调试技巧,帮助开发者快速解决PWM输出问题,适用于无刷电机控制等嵌入式应用场景。

weixin_30906185的博客 397

SOA,Web Service,SOAP,REST,RPC,RMI,JMS的区别与联系

最近需要同步不同的系统之前的数据的问题,目前采用的架构是通过webService 来做服务端和客户端的请求同步数据。所以就找了一篇通信的相关的东西总结一下。SOA面向服务的软件架构(Service Oriented Architecture) 是一种计算机软件的设计模式,主要应用于不通应用组件中通过某种协议来互操作 它的基本设计原理是:服务提供了一个简单的接口,抽象了底层的复杂性,然后用户可以访

技术的路上,自己摸着走。 525

Python实战:3分钟搞定A股K线数据抓取(附东方财富/腾讯API完整代码)

本文为量化交易初学者提供了一份快速获取A股K线数据的实战指南。通过对比东方财富与腾讯财经两大免费API的优劣,并附上可直接运行的完整Python代码,帮助读者在3分钟内搭建起自己的数据抓取管道,为构建量化交易系统奠定坚实的数据基础。

weixin_29062255的博客 2910

ECharts 实现世界地图

效果图 源代码(仅供参考) &lt;template&gt; &lt;div class="echarts"&gt; &lt;div class="className" id="id" style="width: 100%; height: 450px" ref="myEchart" &gt;&lt;/div&gt; &lt;/div&gt; &lt;/template&gt; &lt;script lang="ts"&gt; imp

EsquireY的博客 4874

关注SOA in Action

会议网址:http://www.soa2007.org/soainaction/download.php#materials关注点:       1、决定向SOA迈进后,中国企业的IT实践者还需清楚几个关键问题:   我们何时迈向SOA——SOA在中国的整体发展现状究竟如何? 我们如何迈向SOA——中国企业如何迈出实施SOA的第一步? 我们应采用何

飞马的专栏 466

低代码Agent开发框架使用指南(二)—Coze平台核心功能概览

本篇分享系统介绍了字节跳动推出的低代码智能体开发平台Coze。Coze以免费易用、多模型支持和便捷的跨平台发布为核心优势,显著降低了智能体开发门槛。文章详细解析了平台的六大核心功能:扩展能力边界的插件系统、增强认知的知识库、结构化数据管理的数据库、可视化图像处理的图像流、实现复杂逻辑编排的工作流,以及处理复杂任务的多智能体协作机制,全面展现了Coze平台的强大能力。

weixin_42782643的博客 1358

分享下我常用的客户开发方法及思路

一、浅谈下什么是客户开发? 1.What-了解下什么是客户开发? 客户开发是销售工作的第一步,通常来讲是业务人员通过市场调查初步了解市场和客户情况,对有实力和有意向的客户重点沟通,最终完成目标区域的客户开发计划。但以上只是一个企业客户开发工作中的冰山一角,要成功做好企业的客户开发工作,企业需要从自身资源情况出发,了解竞争对手在客户方面的一些策略性打法,制定适合自身企业的客户开发战略,再落实到销售一...

Linkedin_topeasy的博客 7187

DAC8568实战指南:如何用STM32实现8通道DAC精准控制(附代码)

本文提供DAC8568与STM32结合的实战指南,详细解析8通道16位DAC的精准控制方法。内容涵盖硬件连接、SPI配置、驱动层构建、时序调试及多通道同步输出等关键步骤,并附有经过验证的HAL库驱动代码,帮助工程师快速解决实际项目中的通信与输出稳定性问题。

weixin_29175469的博客 745

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

Java SOA Client - HelloTeamcenter详解

客户数据模型(CDM) 客户端数据模型用于保存所有Teamcenter业务模型对象(ModelObject)。 该数据存储是服务操作返回的所有数据的累积。由于不同的服务操作返回相同对象实例(由UID标识)的副本,该存储中的该对象的单个实例将被更新。 只有当客户端应用程序进行显式调用以删除数据或服务器使用DeleteObjectEvent标记对象时,才会从该存储区删除对象。 ModelObject (com.teamcenter.soa.client.model) 这是存储在CDM中的对象的基本ja

weixin_44942769的博客 1607

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

WebService,soap,soa,wsdl和.net之间的关系

.nethttps://baike.baidu.com/item/.NET/156737?fr=aladdin;https://www.cnblogs.com/1996V/p/9037603.html#net1 为了实现跨语言操作,但不同语言或多或少会有冲突产生,所以.NET专门为此参考每种语言并找出了语言间的共性,然后定义了一组规则,开发者都遵守这个规则来编码,那么代码就能被任意.NET平台...

le_wjjjy的博客 1485

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

深度学习工具包 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&#39;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 = &quot;R. B. Palm&quot;, title = &quot;Prediction as a candidate for learning deep hierarchical models of data&quot;, year = &quot;2012&quot;,}```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(&#39;DeepLearnToolbox&#39;));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(&#39;state&#39;,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&#39;); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand(&#39;state&#39;,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 = &#39;sigm&#39;;%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 &lt; 0.10, &#39;Too big error&#39;);```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(&#39;state&#39;,0)sae = saesetup([784 100]);sae.ae{1}.activation_function = &#39;sigm&#39;;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)&#39;)% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = &#39;sigm&#39;;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 &lt; 0.16, &#39;Too big error&#39;);```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x&#39;,28,28,60000))/255;test_x = double(reshape(test_x&#39;,28,28,10000))/255;train_y = double(train_y&#39;);test_y = double(test_y&#39;);%% 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&#39;ll get around 1.2% errorrand(&#39;state&#39;,0)cnn.layers = { struct(&#39;type&#39;, &#39;i&#39;) %input layer struct(&#39;type&#39;, &#39;c&#39;, &#39;outputmaps&#39;, 6, &#39;kernelsize&#39;, 5) %convolution layer struct(&#39;type&#39;, &#39;s&#39;, &#39;scale&#39;, 2) %sub sampling layer struct(&#39;type&#39;, &#39;c&#39;, &#39;outputmaps&#39;, 12, &#39;kernelsize&#39;, 5) %convolution layer struct(&#39;type&#39;, &#39;s&#39;, &#39;scale&#39;, 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&lt;0.12, &#39;Too big error&#39;);```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(&#39;state&#39;,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 &lt; 0.08, &#39;Too big error&#39;);%% ex2 neural net with L2 weight decayrand(&#39;state&#39;,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 &lt; 0.1, &#39;Too big error&#39;);%% ex3 neural net with dropoutrand(&#39;state&#39;,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 &lt; 0.1, &#39;Too big error&#39;);%% ex4 neural net with sigmoid activation functionrand(&#39;state&#39;,0)nn = nnsetup([784 100 10]);nn.activation_function = &#39;sigm&#39;; % 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 &lt; 0.1, &#39;Too big error&#39;);%% ex5 plotting functionalityrand(&#39;state&#39;,0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = &#39;softmax&#39;; % 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 &lt; 0.1, &#39;Too big error&#39;);%% 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(&#39;state&#39;,0)nn = nnsetup([784 20 10]); nn.output = &#39;softmax&#39;; % 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 &lt; 0.1, &#39;Too big error&#39;);```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free &quot;Bitdeli Badge&quot;)

WebService与SOA的实现

<br />第14章 WebService与SOA的实现<br /><br />14.1 Web Services和面向服务的软件架构(Service Oriented Architecture,简称SOA)概述:<br /> <br />在最新Java开发世界里,我们经常会遇到这样一个名词:Web Services(Web服务)。同时还会发现,与这个名词同时出现的多是各大主流技术供应商,各大技术供应商无一不在关注这一领域的发展。从Microsoft的.NET架构,到SUN的SUN ONE,以及IBM的We

个人学习记录所用 2133

Java WebService 简单实例 方式一(生成类文件方式)

前言:朋友们开始以下教程前,请先看第五大点的注意事项,以避免不必要的重复操作。   一、准备工作(以下为本实例使用工具) 1、MyEclipse10.7.1 2、JDK 1.6.0_22   二、创建服务端 1、创建【Web Service Project】,命名为【TheService】。      2、创建【Class】类,命名为【ServiceHello】,位于【co...

不进则退 801

安全公司爆料:五大SOA架构都有安全漏洞

 阅读提示:应用软件安全公司Fortify Software发表的一篇研究报告称,目前市场上最流行的五个SOA解决方案存在严重安全漏洞。这些解决方案是关于常见的如何配置和使用SOA框架。应用软件安全公司Fortify Software发表的一篇研究报告称,目前市场上最流行的五个SOA解决方案存在严重安全漏洞。这些解决方案是关于常见的如何配置和使用SOA框架。这篇研究报告披露称,Apache A

胡争辉 962
上一篇: IOException while loading persisted sessions: java.io.EOFException-Tomcat启动异常解决办法
下一篇: 什么叫敏捷开发?
Java我人生
博客等级 码龄15年 2147粉丝 132原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值