HTTP POST GET详解

02-HTTP- http请求方法和常见的 get、post GET GET 方法用于获取指定资源的信息,并将结果以响应实体返回。GET 请求在不会改变资源状态情况下被认为是幂等的,即调用相同的 URL 多次得到的结果不变。POST POST 方法用于向指定资源提交实体数据,如表单数据、JSON 等。该方法会更改服务器上的资源状态或副作用。POST 请求不具备幂等性,因为调用相同的 URL 进行多次 POST 请求会多次修改服务端资源状态。PUT PUT 方法用于向服务器上传一个表示某个与URI关联的对象或更新已有的对象。 阅读详情

一 原理区别

    一般在浏览器中输入网址访问资源都是通过GET方式;在FORM提交中,可以通过Method

指定提交方式为GET或者POST,默认为GET提交

Http定义了与服务器交互的不同方法,最基本的方法有4种,分别是GET,POST,PUT,

DELETE

URL全称是资源描述符,我们可以这样认为:一个URL地址,它用于描述一个网络上的资源

,而HTTP中的GET,POST,PUT,DELETE就对应着对这个资源的查 ,改 ,增 ,删 4个操作

。到这里,大家应该有个大概的了解了,GET一般用于获取/查询 资源信息,而POST一般用

于更新 资源信息(个人认为这是GET和POST的本质区别,也是协议设计者的本意,其它区别

都是具体表现形式的差异 )。

  根据HTTP规范,GET用于信息获取,而且应该是安全的和幂等的 。

  1.所谓安全的意味着该操作用于获取信息而非修改信息。换句话说,GET请求一般不应

产生副作用。就是说,它仅仅是获取资源信息,就像数据库查询一样,不会修改,增加数

据,不会影响资源的状态。

  * 注意:这里安全的含义仅仅是指是非修改信息。

  2.幂等的意味着对同一URL的多个请求应该返回同样的结果。这里我再解释一下幂等

这个概念:

  幂等 (idempotent、idempotence)是一个数学或计算机学概念,常见于抽象代数中

。
  幂等有以下几种定义:
  对于单目运算,如果一个运算对于在范围内的所有的一个数多次进行该运算所得的结

果和进行一次该运算所得的结果是一样的,那么我们就称该运算是幂等的。比如绝对值运

算就是一个例子,在实数集中,有abs(a) = abs(abs(a)) 。
  对于双目运算,则要求当参与运算的两个值是等值的情况下,如果满足运算结果与参

与运算的两个值相等,则称该运算幂等,如求两个数的最大值的函数,有在在实数集中幂

等,即max(x,x) = x 。
看完上述解释后,应该可以理解GET幂等的含义了。

  但在实际应用中,以上2条规定并没有这么严格。引用别人文章的例子:比如,新闻站

点的头版不断更新。虽然第二次请求会返回不同的一批新闻,该操作仍然被认为是安全的

和幂等的,因为它总是返回当前的新闻。从根本上说,如果目标是当用户打开一个链接时

,他可以确信从自身的角度来看没有改变资源即可。

  根据HTTP规范,POST表示可能修改变服务器上的资源的请求 。继续引用上面的例子:

还是新闻以网站为例,读者对新闻发表自己的评论应该通过POST实现,因为在评论提交后

站点的资源已经不同了,或者说资源被修改了。

  上面大概说了一下HTTP规范中,GET和POST的一些原理性的问题。但在实际的做的时候

,很多人却没有按照HTTP规范去做,导致这个问题的原因有很多,比如说:

  1.很多人贪方便,更新资源时用了GET,因为用POST必须要到FORM(表单),这样会麻

烦一点。

  2.对资源的增,删,改,查操作,其实都可以通过GET/POST完成,不需要用到PUT和

DELETE。

  3.另外一个是,早期的但是Web MVC框架设计者们并没有有意识地将URL当作抽象的资

源来看待和设计 。还有一个较为严重的问题是传统的Web MVC框架基本上都只支持GET和

POST两种HTTP方法,而不支持PUT和DELETE方法。

  * 简单解释一下MVC:MVC本来是存在于Desktop程序中的,M是指数据模型,V是指用户

界面,C则是控制器。使用MVC的目的是将M和V的实现代码分离,从而使同一个程序可以使

用不同的表现形式。

  以上3点典型地描述了老一套的风格(没有严格遵守HTTP规范),随着架构的发展,现

在出现REST(Representational State Transfer),一套支持HTTP规范的新风格,这里不多

说了,可以参考《RESTful Web Services》。

二 表现形式区别

   搞清了两者的原理区别,我们再来看一下他们实际应用中的区别:

    为了理解两者在传输过程中的不同,我们先看一下HTTP协议的格式:

    HTTP请求:

<request line>

<headers>

<blank line>

<request-body>]

在HTTP请求中,第一行必须是一个请求行(request line),用来说明请求类型、要访问

的资源以及使用的HTTP版本。紧接着是一个首部(header)小节,用来说明服务器要使用

的附加信息。在首部之后是一个空行,再此之后可以添加任意的其他数据[称之为主体

(body)]。

GET与POST方法实例:
GET /books/?sex=man&name=Professional HTTP/1.1
Host: www.wrox.com
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.7.6)
Gecko/20050225 Firefox/1.0.1
Connection: Keep-Alive

POST / HTTP/1.1
Host: www.wrox.com
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.7.6)
Gecko/20050225 Firefox/1.0.1
Content-Type: application/x-www-form-urlencoded
Content-Length: 40
Connection: Keep-Alive
     (----此处空一行----)
name=Professional%20Ajax&publisher=Wiley


有了以上对HTTP请求的了解和示例,我们再来看两种提交方式的区别:

   (1)GET提交,请求的数据会附在URL之后(就是把数据放置在HTTP协议头中),以?分

割URL和传输数据,多个参数用&连接;例如:login.action?

name=hyddd&password=idontknow&verify=%E4%BD%A0 %E5%A5%BD。如果数据是英文字母/数

字,原样发送,如果是空格,转换为+,如果是中文/其他字符,则直接把字符串用BASE64

加密,得出如: %E4%BD%A0%E5%A5%BD,其中%XX中的XX为该符号以16进制表示的ASCII。

  POST提交:把提交的数据放置在是HTTP包的包体中。上文示例中红色字体标明的就是

实际的传输数据

     因此,GET提交的数据会在地址栏中显示出来,而POST提交,地址栏不会改变

    (2)传输数据的大小:首先声明:HTTP协议没有对传输的数据大小进行限制,HTTP协议

规范也没有对URL长度进行限制。

而在实际开发中存在的限制主要有:

GET:特定浏览器和服务器对URL长度有限制,例如IE对URL长度的限制是2083字节(2K+35)。

对于其他浏览器,如Netscape、FireFox等,理论上没有长度限制,其限制取决于操作系统

的支持。

因此对于GET提交时,传输数据就会受到URL长度的限制。

POST:由于不是通过URL传值,理论上数据不受限。但实际各个WEB服务器会规定对post提交

数据大小进行限制,Apache、IIS6都有各自的配置。

(3)安全性:

.POST的安全性要比GET的安全性高。注意:这里所说的安全性和上面GET提到的“安全”不

是同个概念。上面“安全”的含义仅仅是不作数据修改,而这里安全的含义是真正的

Security的含义,比如:通过GET提交数据,用户名和密码将明文出现在URL上,因为(1)登

录页面有可能被浏览器缓存, (2)其他人查看浏览器的历史纪录,那么别人就可以拿到你

的账号和密码了,除此之外,使用GET提交数据还可能会造成Cross-site request forgery

攻击

(4)Http get,post,soap协议都是在http上运行的
1)get:请求参数是作为一个key/value对的序列(查询字符串)附加到URL上的
        查询字符串的长度受到web浏览器和web服务器的限制(如IE最多支持2048个字符

),不适合传输大型数据集同时,它很不安全
2)post:请求参数是在http标题的一个不同部分(名为entity body)传输的,这一部分

用来传输表单信息,因此必须将Content-type设置为:application/x-www-form-

urlencoded。post设计用来支持web窗体上的用户字段,其参数也是作为key/value对传输

。
      但是:它不支持复杂数据类型,因为post没有定义传输数据结构的语义和规则。
3)soap:是http post的一个专用版本,遵循一种特殊的xml消息格式
       Content-type设置为: text/xml   任何数据都可以xml化

三 HTTP响应
1.HTTP响应格式:


<status line>
<headers>
<blank line>
[<response-body>]

在响应中唯一真正的区别在于第一行中用状态信息代替了请求信息。状态行(status line

)通过提供一个状态码来说明所请求的资源情况。
     
HTTP响应实例:

HTTP/1.1 200 OK
Date: Sat, 31 Dec 2005 23:59:59 GMT
Content-Type: text/html;charset=ISO-8859-1
Content-Length: 122
<html>
<head>
<title>Wrox Homepage</title>
</head>
<body>
<!-- body goes here -->
</body>
</html>
2.最常用的状态码有:

◆200 (OK): 找到了该资源,并且一切正常。
◆304 (NOT MODIFIED): 该资源在上次请求之后没有任何修改。这通常用于浏览器的缓存

机制。
◆401 (UNAUTHORIZED): 客户端无权访问该资源。这通常会使得浏览器要求用户输入用户

名和密码,以登录到服务器。
◆403 (FORBIDDEN): 客户端未能获得授权。这通常是在401之后输入了不正确的用户名或

密码。
◆404 (NOT FOUND): 在指定的位置不存在所申请的资源。

四 完整示例:

例子:


HTTP GET

发送

GET /DEMOWebServices2.8/Service.asmx/CancelOrder?

UserID=string&PWD=string&OrderConfirmation=string HTTP/1.1
Host: api.efxnow.com

回复

HTTP/1.1 200 OK
Content-Type: text/xml; charset=utf-8
Content-Length: length

<?xml version="1.0" encoding="utf-8"?>
<objPlaceOrderResponse xmlns="https://api.efxnow.com/webservices2.3">
<Success>boolean</Success>
<ErrorDescription>string</ErrorDescription>
<ErrorNumber>int</ErrorNumber>
<CustomerOrderReference>long</CustomerOrderReference>
<OrderConfirmation>string</OrderConfirmation>
<CustomerDealRef>string</CustomerDealRef>
</objPlaceOrderResponse>


HTTP POST

发送

POST /DEMOWebServices2.8/Service.asmx/CancelOrder HTTP/1.1
Host: api.efxnow.com
Content-Type: application/x-www-form-urlencoded
Content-Length: length

UserID=string&PWD=string&OrderConfirmation=string

回复

HTTP/1.1 200 OK
Content-Type: text/xml; charset=utf-8
Content-Length: length

<?xml version="1.0" encoding="utf-8"?>
<objPlaceOrderResponse xmlns="https://api.efxnow.com/webservices2.3">
<Success>boolean</Success>
<ErrorDescription>string</ErrorDescription>
<ErrorNumber>int</ErrorNumber>
<CustomerOrderReference>long</CustomerOrderReference>
<OrderConfirmation>string</OrderConfirmation>
<CustomerDealRef>string</CustomerDealRef>
</objPlaceOrderResponse>


SOAP 1.2

发送

POST /DEMOWebServices2.8/Service.asmx HTTP/1.1
Host: api.efxnow.com
Content-Type: application/soap+xml; charset=utf-8
Content-Length: length

<?xml version="1.0" encoding="utf-8"?>
<soap12:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

xmlns:xsd="http://www.w3.org/2001/XMLSchema"

xmlns:soap12="http://www.w3.org/2003/05/soap-envelope">
<soap12:Body>
    <CancelOrder xmlns="https://api.efxnow.com/webservices2.3">
      <UserID>string</UserID>
      <PWD>string</PWD>
      <OrderConfirmation>string</OrderConfirmation>
    </CancelOrder>
</soap12:Body>
</soap12:Envelope>

回复

HTTP/1.1 200 OK
Content-Type: application/soap+xml; charset=utf-8
Content-Length: length

<?xml version="1.0" encoding="utf-8"?>
<soap12:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

xmlns:xsd="http://www.w3.org/2001/XMLSchema"

xmlns:soap12="http://www.w3.org/2003/05/soap-envelope">
<soap12:Body>
    <CancelOrderResponse xmlns="https://api.efxnow.com/webservices2.3">
      <CancelOrderResult>
        <Success>boolean</Success>
        <ErrorDescription>string</ErrorDescription>
        <ErrorNumber>int</ErrorNumber>
        <CustomerOrderReference>long</CustomerOrderReference>
        <OrderConfirmation>string</OrderConfirmation>
        <CustomerDealRef>string</CustomerDealRef>
      </CancelOrderResult>
    </CancelOrderResponse>
</soap12:Body>
</soap12:Envelope>

HTTP中的GET和POST方法详解 一般来说GET是获取数据,POST是提交数据的。但是因为GET和POST都是HTTP的方法,HTTP又是是基于TCP/IP的关于数据在万维网中如何让通讯的协议。从本质上讲,GET和POST都是HTTP请求,都是TCP链接,是无区别的。 但是HTTP协议既然有了这两个方法,就是为了在特定的情况下区分应用。 1、GET是获取数据,POST是提交数据的。 GET方法通常用于请求服务器发送某个资源,而且应该是安全的和幂等的。 仅仅是获取资源信息,就像数据库查询一样,不会修改和增加数据,不会影响资源的状态。 POST 阅读详情

相关推荐

谈谈HTTP协议的方法里,GET和POST的区别?我来教你如何回答~

目录前言一、什么是GET、POST?1.1GET1.2POST二、如何轻松回答?第一步、直接盖棺定论:第二步、谈细节上的区别: 要想回答好这个问题,咱们先来了解以下什么是GET、POST方法,有哪些细节要注意; GET是HTTP请求最常用的方法,本质上就是浏览器通过GET方法,向服务器发起GET请求,从服务器拿到相应的数据;1.浏览器的地址栏中输入URL,就会触发GET;2.HTML里的link、a、img、script会触发GET请求;3.html中的form标签可以构造出GE

CYK_byte的博客 2179

Http协议、get和post请求整理

1、什么是GET 和 POST ? GET 和 POST 其实都是 HTTP 的请求方法。除了这 2 个请求方法之外,HTTP 还有 HEAD、PUT、DELETE、TRACE、CONNECT、OPTIONS 这 6 个请求方法。所以HTTP的请求方法共计有 8 种,每个请求方法和描述如下: GET 请求指定的页面信息,并返回实体主体。 POST向指定资源提交数据进行处理请求(例如提交表单或者上传文件)。数据被包含在请求体中。POST请求可能会导致新的资源的建立和/或已...

KIKI_20170120的博客 5940

契约锁代码审计分析

但是正常来讲,定义了这么多的路由,肯定会有一个通用的判断逻辑,来判断请求的url是否和这些路由匹配。POC中有一点值得注意,Spring新一些的版本中支持以表单的形式来为参数赋值,且无需用注解。但是需要注意4.2.8的代码逻辑和新版本中的不同,此漏洞可能存在于版本大于4.2.8的版本中。方法用于解析LICENSE,先进行AES解密,再从字符串转换成json格式的License。loadPath实际判断传入的path是否和下面的path相等,如果不相等返回null。,如果包含这三个中的一个就会抛出异常。

好记性不如烂笔头 5716

HTTP中get和post请求方法详解

HTTP中get和post请求方法详解

weixin_45639224的博客 5614

Xilinx PL端DP显示接口开发实战(一)——环境搭建与硬件选型

本文详细介绍了Xilinx PL端DP显示接口开发的环境搭建与硬件选型实战经验。从Vivado和Vitis 2021.1版本的软件安装要点,到DP141和MCDP6000芯片的选型建议,再到DP1.4接口的RX/TX方向开发关键点,为开发者提供了全面的技术指导。文章还分享了IP核配置、BD原理图设计以及常见问题排查的实用技巧,帮助开发者高效完成Xilinx DP接口开发项目。

weixin_29250573的博客 174

Matlab双目相机标定

1 概述 现在有许多双目相机在出厂时就已经标定好了,用户拿到手后可以直接使用,例如Intel Realsense系列。但是有些相机出厂的时候并没有完成标定工作,因而这个时候就需要我们自己来标定。由于笔者曾改装过一个双目相机,最远可以测至50m,因此有一定的心得体会想给大家分享一下。本文主要介绍双目相机标定的整个过程,以及导出标定数据的方法。 相机标定主要分为手动标定和自动标定,手动标定比较繁琐,这里主要介绍基于matlab工具箱的自动标定方式来对双目相机进行标定。具体的相关标定细节也可以参照这篇博客:m

weixin_46133643的博客 2万+

http中get和post详解

1.GET在浏览器回退时是无害的,而POST会再次提交请求。 2.GET产生的URL地址可以被Bookmark,而POST不可以。 3.GET请求会被浏览器主动cache,而POST不会,除非手动设置。 4.GET请求只能进行url编码,而POST支持多种编码方式。 5.GET请求参数会被完整保留在浏览器历史记录里,而POST中的参数不会被保留。 6.GET请求在URL中传送的参数是有长度限制的,而POST么有。 7.对参数的数据类型,GET只接受ASCII字符,而POST没有限制。 8.GET比POST更

m0_54944506的博客 3149

STM32硬件SPI驱动W25Q128实战:从CubeMX配置到DMA高速读写(附完整代码)

本文详细介绍了如何使用STM32硬件SPI驱动W25Q128 Flash存储器,从CubeMX配置到DMA高速读写的完整实战指南。内容包括硬件连接方案、SPI参数优化、DMA配置技巧以及完整代码实现,帮助开发者快速掌握高速稳定的SPI Flash存储解决方案。

weixin_33734785的博客 184

HTTP,HTTPS详解以及get post区别,状态码

一、什么是HTTP协议   HTTP是hypertext transfer protocol(超文本传输协议)的简写,它是TCP/IP协议的一个应用层协议,用于定义WEB浏览器与WEB服务器之间交换数据的过程。客户端连上web服务器后,若想获得web服务器中的某个web资源,需遵守一定的通讯格式,HTTP协议用于定义客户端与web服务器通迅的格式。 二、HTTP协议的版本   HTTP协议的版本:HTTP/1.0、HTTP/1.1 三、HTTP1.0和HTTP1.1的区别   在HTTP1.0协议

懂得选择、学会放弃、耐得住寂寞、经的起诱惑`` 886

Android OTA 升级实战指南:从原理到实现

本文详细解析了Android OTA升级的原理与实现方法,包括AB升级与Recovery升级的机制对比、OTA升级包制作流程以及应用层升级功能的实现。通过实战案例和常见问题排查指南,帮助开发者掌握Android系统无线升级技术,提升设备维护效率。

weixin_42652674的博客 198

Windows 10下用Python 3搞定Android源码下载:最新repo工具避坑指南

本文详细介绍了在Windows 10系统上,使用Python 3和官方最新repo工具下载Android源码的完整流程。文章提供了从Git安装、环境配置到repo工具初始化、同步加速及常见错误排查的避坑指南,帮助开发者高效搭建稳定的源码下载环境。

weixin_29266749的博客 436

Http协议详解以及GET和POST请求

(1)协议实际上是某些人,或者某些组织提前定制好的一套规范,大家按照这个规范来,这样就可以做到沟通无障碍(2)协议就是一套规范,就是一套标准。由其他人或者组织来负责制定的。(1)HTTP协议:是W3C制定的一种超文本传输协议(2)W3C:①万维网联盟组织②负责指定标准的:比如 HTTP、HTML4.0、HTML5、XML、DOM等规范都是由W3C制定的③万维网之父:蒂姆·伯纳斯·李(3)什么是超文本?①超文本说的就是:不是普通文本,比如流媒体:声音、视频、图片等。

y516369的博客 1775

Spring AI Alibaba实战训练营-16 NL2SQL (自然语言转 SQL)应用开发指南

本文介绍了一个基于AI的智能BI应用开发项目,主要实现自然语言转SQL(NL2SQL)功能,包含对话模块、MCP模块、向量数据管理模块。项目采用Spring AI Alibaba框架,集成通义千问大模型,支持内存向量库和AnalyticDB向量数据库两种存储方案。重点展示了chat模块的三个控制器实现:AnalyticNl2SqlController用于生产环境,SimpleChatController适用于开发测试,Nl2sqlForGraphController支持基于图的复杂对话流程。系统通过将业务知

program哲学 1585

HTTP POST GET 本质区别详解

一 原理区别    一般在浏览器中输入网址访问资源都是通过GET方式;在FORM提交中,可以通过Method指定提交方式为GET或者POST,默认为GET提交Http定义了与服务器交互的不同方法,最基本的方法有4种,分别是GET,POST,PUT,DELETEURL全称是资源描述符,我们可以这样认为:一个URL地址,它用于描述一个网络上的资源,而HTTP中的GET,

gideal_wang的专栏 14万+

YOLOv11涨点改进 | 全网独家创新,损失函数改进篇 | TGRS 2025 | 引入AdaFocalLoss损失函数,改进小目标检测,自适应聚焦小目标与样本分布不平衡,提升检测精度与训练稳定性

本文提出了一种改进YOLOv11模型的AdaFocalLoss损失函数,通过动态调节机制有效提升小目标检测性能。AdaFocalLoss融合了目标尺寸感知和IoU引导的自适应调节,解决了传统损失函数在小目标检测中的样本不平衡问题。该方法自动调整训练权重,无需手动调参,显著提升了模型在多尺度目标、复杂背景下的检测精度和训练稳定性。实验表明,AdaFocalLoss能更好地平衡不同尺度目标的梯度分布,改善边界完整性,减少误检漏检。文章详细介绍了算法原理、实现代码和在YOLOv11中的集成方法,为提升目标检测性能

Ai缝合怪、助力小伙伴高效发论文 335

假人有限元模型

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

java get post 区别详解_HTTP中get和post的区别详解

Http定义了与服务器交互的不同方法,最基本的方法有4种,分别是GET,POST,PUT,DELETE。URL全称是资源描述符,我们可以这样认为:一个URL地址,它用于描述一个网络上的资源,而HTTP中的GET,POST,PUT,DELETE就对应着对这个资源的查,改,增,删4个操作。到这里,大家应该有个大概的了解了,GET一般用于获取/查询资源信息,而POST一般用于更新资源信息。1.根据HTT...

weixin_31061699的博客 161

深度学习工具包 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")

HTTP协议及GET、POST详解

HTTP协议及GET、POST详解

曹定栓的博客 1965

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

HTTP Get,Post请求详解

一、请求类型三种最常见的请求类型是:GET,POST 和 HEAD GET:获取一个文档大部分被传输到浏览器的html,images,js,css, … 都是通过GET方法发出请求的。它是获取数据的主要方法。 例如,要获取Nettuts+ 的文章,http request的第一行通常看起来是这样的: GET /tutorials/other/top-20-mysql-best-practices/

w5nner的专栏 2140

HTTP请求之GET及POST详解

GET方式: 请求URL固定,所有参数均后缀在URL后面,以key=value&key1=value1&key2=value2方式拼装 POST方式: 1、请求URL固定,所有参数均放在http的请求报文中,即放在了body中!所有参数以json或者XML格式序列化文本串或form-data传输。 2、请求URL不固定,部分参数会放在URL中,即http://domain.com/userlogin/login?sign=xxx&timestamp=xxx以拼装成最终的.

carbonzhao的专栏 3746

HTTP协议中的POST、GET详解

一 原理区别      一般在浏览器中输入网址访问资源都是通过GET方式;在FORM提交中,可以通过Method指定提交方式为GET或者POST,默认为GET提交。      Http定义了与服务器交互的不同方法,最基本的方法有4种,分别是GET,POST,PUT,DELETE。URL全称是资源描述符,我们可以这样认为:一个URL地址,它用于描述一个网络上的资源,而HTTP中的GET,POST

zhuameng.com的博客 1099

Java中http的GET和POST请求详解

Java中http的GET和POST请求详解 1. http get/post方法(使用传统的URL connection方法,JDK自带):  (1) GET请求:(向服务器发送访问数据的请求,从而获取数据),(类似数据库中的select操作),(不会修改数据,产生    副作用),(数据量小,安全性低),(默认);  GET方法测试:    (2) POST请求:(向服务器发送数

保护大苹果 5206

详解HTTP:GET 和 POST 方法

深入理解HTTP的GET与POST方法

有见寒舍 1673

详解HTTP中GET和POST的区别

前言 我在《PHP处理HTML表单》这篇文章中,说到了处理HTML表单时用到了GET和POST方法,那么,GET和POST是两个什么东西呢?用它们处理表单又有啥区别呢?你不知道,就看这篇文章吧。对你绝对有用,不管你信不信,反正我是信了。 除了GET和POST这两种方式以后,还有哪些呢?我接下来就先对HTTP中定义的操作进行总结一下。 HTTP中定义的有哪些? 我们都知道,使

qq_29158381的博客 649
上一篇: HTTP POST GET 本质区别详解
下一篇: Sql Server 2005数据库 备份还原后出现“受限制用户”
ClsData
博客等级 码龄20年 34粉丝 33原创
评论 19
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值