HTTP学习之《图解HTTP》总结

《图解HTTP》完整彩色版1 背景的同时也能了解当初制定HTTP的初衷,这样有助于我们更好地理解。1.2.1 为知识共享而规划 Web1989 年 3 月,互联网还 立即下载

转载请标注:http://blog.youkuaiyun.com/friendlychen/article/details/73924568
初学网络方面的知识,肯定与TCP/IP,HTTP等协议的学习分不开,毕竟这些协议是网络组成最重要的基础,相当于交通里面的各种红绿灯,交通标志图标,交通标记线等,规范着行车规则。网络协议就是网络通信的这种规范。对于初学HTTP协议,我推荐《图解HTTP》,虽然我个人不喜欢日本,但是技术是无国界的,相对于西方作者字典式的教科书,每本书都像字典一样,厚的不行,内容还枯燥,啃下来的难度非常大。而这本日本人的著作,用了大量通信图片,全面系统而又生动介绍了HTTP协议的基础知识,特别适合网络初学者。这里我对这本书的大概内容做了简单的总结,把一些重要的知识点梳理了一下。

一、网络基础之TCP/IP与HTTP

了解HTTP,就必须要了解些TCP/IP协议族。其实机器是很笨的,没有任何智商,想让机器之间通信,必须要有一套完整通信规则,包括如何到达通信目标,使用的传输类型,等等都需要一套规范,这一整套规范就是协议。TCP/IP协议就是其中的这么一套协议族。

TCP/IP 协议的四层分层管理

1、应用层,具体的协议有,HTTP,FTP(文件传输协议),DNS(域名系统,就是IP与域名互相转换)等。从这里可以看出HTTP协议是TCP/IP协议族的组成部分。
2、传输层,TCP(面向连接的,传输控制协议),UDP(面向无连接的,用户数据报协议)。
3、网络层,IP协议。
4、数据链路层,处理网络的硬件部分,比如,网卡,通信线路(光纤,电缆)。
这里写图片描述
如图所示的,这是整个通信过程中数据流的走向,同时经过每层协议时,都会加上相应的首部,每个首部都会有相应的功能。
各个分层之间相互协作,当一个部分出现问题,可以找到相应的层次来处理问题,而不是把整个协议都去检查一遍。
从上图也可以看出,HTTP协议作为TCP/IP协议族应用层的重要成员,在通信过程中起着非常重要的角色。

二、简单的HTTP协议

HTTP协议一般是用户客户端和服务器之间的通信,一般都是客户端请求,服务端响应,类似于一问一答式的通信。
这里写图片描述
就问你,这张图是不是好丑。哈哈,好吧,图虽然丑了点,但是不影响这表达的意思嘛,就是在两台机器通信时使用HTTP协议中,肯定有一方是客户端,一方是服务器。
这里写图片描述
这就是HTTP通信最基本的格式了,从1中发送请求,从2中返回响应。请求的格式是:

GET /index.htm HTTP/1.1
Host: baidu.com

这个起始行中的GET表示的是访问服务器的类型,成为请求方法,随后的字符串/index.htm指明了请求访问的资源对象,也叫请求URI,最后的HTTP/1.1表示HTTP的版本号,也是提示客户端使用的HTTP协议功能。
请求报文是由请求方法,请求URI,协议版本,可选的请求首部字段和内容实体构成。
客户端请求报文的构成

服务器响应报文的构成

HTTP是无状态的协议

就是在通信过程中,HTTP协议本身不对庆祝和响应的通信状态进行保存。
当新的请求发送时,并不知道上次是否已经发送类似的请求。举个例子,就是当我们登陆到一个购物网站时,当跳转到其他页面时,发出的请求也应该是保持登陆的状态才能有好的购物体验,不可能说每打开一个页面再登陆一次,这样肯定很麻烦。为了实现这种保持状态的功能,引入了Cookie功能。具体做法是在服务端引入Session功能,在服务端用Session来管理状态,生成SessionID,传给客户端,客户端将SessionID保存在Cookie中,每次请求时在Cookie中取出SessionID放入到HTTP请求中,这样服务器通过SessionID知道你以前的请求状态,是否登录过等信息。

HTTP请求方法

GET,POST,HEAD,OPTIONS,PUT,DELETE等。
GET:一般是获取资源。
POST:一般是传输实体主题,主要目的是将信息告诉服务器。
HEAD:获取报文的首部,一般不返回报文主题,确认资源URI是否有效
OPTIONS:查询针对请求URI指定的资源支持的方法。
PUT:上传文件。一般很少用。
DELETE : 删除资源,一般很少用。

三、HTTP首部

HTTP协议请求和响应报文中包含了HTTP首部,HTTP首部字段是构成HTTP报文中的要素之一,HTTP首部为我们提供了客户端和服务器通信时很重要的通信信息。

HTTP请求报文

请求报文中,HTTP报文有方法,URI,HTTP版本,HTTP首部字段等构成。
HTTP请求报文

HTTP响应报文

响应报文中,HTTP报文由HTTP版本,状态码,HTTP首部字段构成。
HTTP响应报文
HTTP首部字段结构:
首部字段名:字段值
例如:

Host:baidu.com
Cache-Control: max-age = 0
Content - Type: text/html

有的字段值可以是多个值,例如:

Keep-Alive: timeout = 15,max = 100

HTTP首部字段从上面两幅图可以看出共有4种类型。

通用首部字段

这里写图片描述

请求首部字段

这里写图片描述

响应首部字段

这里写图片描述

实体首部资源

这里写图片描述
上面4种类型都对应了好多首部字段,具体每个用法就不再具体展开细说了。
还有一些并不是HTTP协议本身的字段,但是很有用,也需要了解。比如为Cookie服务的首部字段,有Set-Cookie(响应首部字段) 和Cookie(请求首部字段),这是管理服务器和客户端之间状态的信息,它的工作机制是用户识别和状态管理。

四、HTTP状态码

响应报文中HTTP状态码表示了客户端HTTP请求的返回结果,得到响应的结果码,有助于了解我们请求时是否成功,如果错误了,是哪种类型的错误。状态码有5种类型,分别表示了对应的返回响应原因。
这里写图片描述
1、2XX,表示响应结果为请求被正常处理
200 OK
表示客户端发来的请求在服务端被正常处理。
204 NO Content
表示处理成功,但是响应中没有任何实体。
206 Partial Content
表示客户端进行了范围七牛,而服务器成功执行了这部分的请求。

2、3XX,表示浏览器需要执行某些特殊的处理以正确处理请求。
301 Moved Permanently
永久性重定向,表示该资源已经分配了新的URI,原来URI不再使用。
302 Found
临时性重定向,跟301类似,也是请求的资源分配了新的URI,但只是临时的,以后可能会换回来。
304 Not Modified
表示服务器允许请求访问资源,但是没有满足条件。比如你客户端需要请求一个信息,但是要求该信息是今天编辑的,但是资源里确实有该信息,只是这个信息是昨天编辑的,不符合条件,则服务器返回该状态码。

3、4XX,表示客户端是发生错误的原因所在
400 Bad Request
表示请求报文中存在语法错误。
401 Unauthorized
没有认证,表示发送的请求组要进行HTTP认证。
403 Forbidden
表示不允许访问这个资源。
404 Not Found
表示服务器无法找到请求的资源。

4、5XX 表示服务器本身发生错误。
500 Internal Server Error
表示服务器在执行时发生错误。
503 Service unavailable
表示服务器暂时处于超负荷或者正在停机维护,无法处理请求。

五、HTTP与HTTPS

HTTP协议虽然有相当优秀的一面,但是也并非没有缺点,因为设计很简单,没有考虑到安全方面的问题。HTTP协议有以下不足:
1、通信使用明文(不加密),内容可能会被窃听
在通信过程中,由于设备的公开性,不能保证所有环节都是安全的,因此,很有可能会被窃听,因此加密就成了通信过程中必不可少的环节。
2、不验证通信方的身份,因此可能遭遇伪装。
HTTP协议中的请求和响应是不需要验证通信方进行确认,因此任何人都可以伪装,无法辨别是否是真实的通信方。
3、无法验证报文的完整性,所以有可能篡改。
虽然在验证完整性上面有MD5等信息摘要技术,可以将信息和MD5的信息摘要码同时传递过去,但是通信过程中,这两项都有可能被同时更改,因此还是无法保证信息的完整性。
简单概括成,不加密,无法认证,没有完整性保护。鉴于HTTP的不安全性,于是就用了HTTP+加密+认证+完整性保护来处理这些问题,这就是HTTPS。
这里写图片描述
相信在上网过程中,会经常接触到这个https开头的网页,网址的前面还有个加锁图标,并且写着安全两个字。为什么有的网址是http开头,有的是https开头呢?为什么会有http和https的区别呢?为什么https开头的会提示安全两个字呢?这就是https的强大之处啦。
HTTPS不是新的协议,而是在HTTP协议的接口部分用了SSL和TLS协议代替了。HTTPS与HTTP在TCP/IP协议族的位置如下
这里写图片描述
既然HTTPS具有加密功能,这里先来讲点加密方法。
加密最基本的目的是两个人交流不想让第三个人知道其中的内容,加密是先有一套规则,然后在这套规则的基础上进行交流。现代加密方法中的加密算法(加密规则)一般是公开的,而加密会涉及到密钥,密钥用来加密和解密,因此密钥一般是保密的。根据密钥的不同分成把加密分成两种加密方式,一种是对称密钥加密,一种是非对称加密。
对称密钥加密意思就是加密和解密时密钥是一样的,在通信过程中,如何做好密钥不被窃听就显得很重要。而非对称加密的加密密钥和解密密钥是不一样的。通信中,用其中用加密密钥(又称公开密钥)加密信息,这个加密密钥大家都可以知道,当把信息传给我时,只有我知道解密密钥(又称私有密钥)可以解密信息。没有这个解密密钥,而只有加密密钥,想解开密文是极其困难的。

HTTPS是采用混合加密机制的

非对称加密虽然更加安全,但是加解密的时候比较复杂,一般只能用于信息量比较小的数据中,随着数据量的加大,加解密会占有更多的时间和内存。对称加密虽然在保存密钥上比较麻烦,但是处理速度比较快,适合大量数据的加密,因此利用可以利用两者各自的优势。
HTTPS在通信开始建立时使用非对称加密来进行对称加密密钥的交换,在数据通信时使用对称加密,可以提高数据传输的效率。
非对称加密的公开密钥还有一个问题,就是无法证明这个公开密钥就是真实的公开密钥。这里就相当于引入了第三方来证明我的公开密钥是正确的。这里的第三方就是数字证书认证机构(CA),这样的机构一般都是社会信用度极高的第三方机构。

证明服务器是合法的
一般服务器向第三方机构去申请证书,第三方机构先去验证这个服务器是否合法,验证完后向该服务器颁发证书,证书里有对申请的公开密钥做数字签名。客户端请求时,服务器会想客户端发送数字证书,客户端接受到证书可以对数字签名进行验证,通过之后,则服务器的公开密钥是值得信赖的。
证明客户端是合法的
上述对服务器的验证也可以用于客户端的验证,比如我们之前用过的网银什么的,有一个类似于U盘大小的东西插在电脑中,其实就是相当于客户端的证书。毕竟除了金融和保密性强的一些单位,很少会去申请客户端的证书,毕竟申请证书还是需要一大笔费用的。

当然了,HTTPS既然有这么多的优点,为什么不全部都是用HTTPS呢,事物都有两面性。确实优点不少,也有部分的缺点啦。
一是在不断的加密解密过程中需要消耗大量的内存和CPU等硬件资源。因此比一般的HTTP请求要慢2到100倍。
二是购买证书是需要花一大笔费用的,对BAT等那些财大气粗的当然不在乎这点钱啦,对一般的小企业还是需要考虑一下的,一年费用在几千到几十万不等。

以上就是《图解HTTP》的总结,当然哪里写的不太好的话,欢迎各位提意见和建议,谢谢啦。大家也可以去看看这本书,确实写的不错,里面还有大量的内容我没有进行总结了,这里总结的大部分都是常用的知识。

硬件之光实战篇--Boost 当开关管处于关闭状态时,由于电感中的电流在短时间内不能瞬间消失,因此它会产生一个电感电动势,在电容器上加上一个高电压,从而使输出电压变高。--------------------------------------------------------分割线----------------------------------------------------------------在应用中,升压芯片需要根据负载电路的需求,选择合适的电感和电容等元器件,以达到所需要的升压倍数和输出电压。 阅读详情

相关推荐

从光斑图到锤形优化:一次搞定Zemax双胶合透镜的像散与场曲问题

本文详细解析了Zemax双胶合透镜设计中像散与场曲问题的诊断与优化方法。从光斑图分析到锤形优化技巧,提供了完整的光学设计实战指南,帮助设计师快速定位问题并有效改善系统性能,特别适合光学设计工程师和Zemax使用者参考。

weixin_27134495的博客 233

图解http

图解http

m0_46406723的博客 2122

【为K8s的coredns配置上游DNS服务器】

为K8s的coredns配置上游DNS服务器一、背景描述二、如何修改coredns达到目的三、修改coredns 解析指定域名走指定dns①、get coredns configmap②、修改coredns configmap③、查询现有coredns pod并逐个重启④、验证解析是否正确 一、背景描述 有一个项目需要部署到客户内网,并通过nat映射实现外网访问! 项目中有多个服务之间调用是走的外网域名,项目采用k8s集群容器部署,客户的网络情况导致服务之间通过外网域名互调时总是 connection ti

那个那个 6671

图解HTTP,搞定HTTP就一步!!!

HTTP到底是什么呢?很多小伙伴只局限于 “超文本传输协议” 这几个字 以及 相关的一些用法,对其本质却不是很了解。近期我深入学习了 《图解HTTP》这本书,做出了一下总结。希望能够帮到对这方面知识有疑问的小伙伴

qq_52551683的博客 447

SAP 合并报表(EC-CS)完整方法论 + 全业务操作步骤

SAP合并报表(EC-CS)方法论与操作指南摘要 SAP EC-CS模块提供完整的集团合并解决方案,其核心方法论基于会计准则和集团管控逻辑,通过6大维度构建标准化合并体系:组织架构标准化、数据采集标准化、外币换算规则化、内部交易自动化抵消、股权与商誉规范化、报表出具灵活化。 实施过程分为两个阶段: 上线前配置阶段(12个步骤):包括合并架构搭建、科目表配置、外币规则设定、抵消规则定义等基础工作 日常操作阶段(10个步骤):涵盖数据报送、外币换算、内部对账、自动抵消、调整分录等月结流程 系统优势包括: 支持多

金牌架构师 1365

TIA protal与SCL从入门到精通(1)——SCL编程入门

SCL语言是由Pascal而生的结构化程序语言,与梯形图相(LAD)比,SCL语言的灵活程度更高,易于编写控制算法。 本教程基于的平台如下 软件:TIA 15.1 CPU 1516 (1)直接创建纯SCL的程序块儿; (2)在LAD/FBD中在插入SCL程序段。 在程序段中直接右击插入即可,但是插入的程序段并不能完全使用SCL语法,GOTO等跳转指令就不能使用。在SCL中一般不能使用绝对地址进...

苦走一口田 7万+

【免费下载】 图解HTTP-彩色版.pdf

图解HTTP-彩色版.pdf 【下载地址】图解HTTP-彩色版.pdf 图解HTTP-彩色版.pdf 项目地址: https://gitcode.com/Open-source-documentation-tutorial/5ce...

gitblog_06663的博客 6365

RK3588开发笔记-USB3.0接口调试

RK3588平台是一款强大的处理器,但要充分发挥其性能,需要正确调试其各种接口,包括USB 3.0接口。USB 3.0接口提供了更快的数据传输速度,但也可能面临一些问题。本篇博客将介绍如何在RK3588平台上调试USB 3.0接口,以确保其稳定性和性能。RK3588芯片具有强大的USB资源,包括多个USB接口和高速数据传输能力。RK3588通常具有多个USB接口,包括USB 2.0和USB 3.0。USB 2.0用于低速和全速设备连接,而USB 3.0则用于高速设备连接。

flypig has a dream! 2560

《图解HTTP》第一章学习笔记

网安小白通过《图解HTTP》一书学习网络基础,学习之余做一点记录加深印象。

LylTNT_的博客 1308

android 9.0Settings休眠时间项(屏幕超时)添加永不休眠功能

在9.0的系统产品开发中,系统中默认息屏时间为1分钟,可以通过在Setting中的息屏时间选项设置对应的息屏时间,但是在开发平板类的产品中,需要实现永不休眠的功能,所以需要在Settings中的息屏时间中添加永不休眠时间这一项来实现这个功能,接下来看息屏时间的相关功能,来添加这个功能

安卓兼职framework和app工程师的博客 2056

Python电梯II

输入数据有若干组(最多不超过1000组),每组数据的第一行为四个如题目中所示的整数N,u,d,s,由空格分隔开。第二行为不同楼层需要上下楼的请求, 最多不超过1000个。每个请求的格式为"from-to",其中"from"和"to"为所在楼层和要到达的楼层,保证from!=to。

沐风—云端行者 910

Http协议(图解Http学习笔记二)(首部字段)

图解http是一本挺好的协议入门书籍,主要讲http协议,在这里记录一下学习总结 (因为在看书的时候记得文字笔记,所以底下会有许多图片,字丑别嫌弃)   HTTP报文首部的首部字段: 首部字段是报文的重要组成部分,起到传递额外重要信息的作用,例如:Content-Type:text/html 指定报文主体的媒体类型 HTTP首部字段分为四种类型: 请求/响应首部字段    ,通用首...

yh18668197127的博客 390

高温环境下(100℃以上)相机的几种保障方案

高温环境下相机保障措施摘要:针对120℃以上高温环境,相机需采取多重防护:1.散热设计采用金属机身、散热鳍片或风扇;2.关键部件选用耐高温材料(铝合金、特种玻璃);3.电子元件需军规级芯片并做三防处理;4.建议外接电源或耐高温电池。工业相机(如FLIR A655sc、Basler ace)及特种机型(Ximea xiQ)具备高温适应性,普通相机可加装隔热套件配合冷却系统。选择时需关注传感器信噪比和全局快门性能,并设置温度监控保护机制。注意高温会加速设备老化,需定期检测维护。(149字)

start_up_go的博客 1586

《图解HTTP》学习

图解系列的书籍基本都属于入门书籍,讲的通俗易懂。《图解HTTP》这本书主要讲HTTP的基础知识,内容也不多,对于HTTP入门,了解HTTP大致的内容来说很有帮助,可以先阅读这本书,了解HTTP大致的内容之后,再学习一些更深入的书籍,来加深理解。这本书内容比较少,可以快速阅读,花费的时间也不多,比较推荐。 ...

hellolde的博客 202

深度学习工具包 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》个人学习系列

《图解HTTP协议》第二章个人学习 《图解HTTP》第三章个人学习 心得体会 总述: 各章分述: 第三章 本章从HTTP报文的结构谈起。报文是多行的数据构成的字符串文本。有发送就有接受,因此就会有HTTP的请求报文的和HTTP响应报文的,二者各是什么结构?本章进行的概述。请求报文包含着请求行、请求首部字段、通用首部字段、实体首部字段和其他;响应报文则包含着状态行、响应首部字段、通用首部字段、实体首部字段和其他。 用户体验永远是Web的一个重点考虑内容?本章简要的讨论几个和用户体验有关的内容。 第一、用户

matthewchen123的博客 308

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

Http协议(图解Http学习笔记一)(基本概念)

图解http是一本挺好的协议入门书籍,主要讲http协议,在这里记录一下学习总结 (因为在看书的时候记得文字笔记,所以底下会有许多图片,字丑别嫌弃)     TCP/IP协议是互联网各类协议族的总称 分为应用层,传输层,网络层,链路层 http协议为其子集,是处于应用层 IP协议(网络层)  Internet Protocol 网际协议 IP地址:节点分配的地址(可变换) ...

yh18668197127的博客 674

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

图解HTTP学习

HTTP学习 1.TCP协议的三次握手: 通过两个标志(flag) SYN(syncharonize)和ACK(acknowledgement) 1.发送端:发送标有SYN的数据包。 2.接受端:收到,发送标有SYN和ACK的数据包给发送端。 3.发送端:收到,发送标有ACK的数据包给接收端。 DNS服务器 DNS服务器将域名转换为IP地址。 URI (统一资源标识符) Un

BIGGGFISH的博客 635

图解HTTP学习笔记

DIGEST 认证同样使用质询 / 响应的方式所谓质询响应方式是指,一开始一方会先发送认证要求给另一方,接着使用从另一方那接收到的质询码计算生成响应码。最后将响应码返回给对方进行认证的方式。DIGEST 认证提供防止密码被窃听的保护机制,但并不存在防止用户伪装的保护机制。SSL。

djh3200的博客 5758

《图解HTTP》学习笔记

以前学习网络技术的时候课程内容只上到TCP/IP为止,自己也没有继续阅读后面应用层的内容,所以之前每次遇到HTTP的问题的时候都是现查,工作的效率不高,学到的知识比价碎片化。所以这一两天阅读了薄薄的《Http图解》并做了思维导图,书中的图讲的非常通俗易懂,因此看得也很快。其中最后一章WEB安全没有阅读。 导图 补充 HTTP遇到最多的可能就是报文和状态码了吧,但是因为内容太多,就没有写在

WangT443的博客 757

《图解http》学习总结

1.什么是http? HTTP(Hypertext TransferProtocol),即超文本传输协议。是client-server之间的处在应用层的通讯协议。HTTP协议是基于TCP/IP之上的协议。通俗来讲是服务器和客户端之间传输数据的一些约定。 2.那什么又是TCP/IP呢? TCP/IP是在IP协议的通信过程中,使用到的协议族的统称。其分为以下四层: 应用

kingliguo的博客 686

《图解HTTP》 学习日记,HTTP学习指南,HTTP学习

计算机与网络设备相互通信,双方就需要使用同样的方法,比如,你和别人约定在某个地方见面,见面前,约定好在什么地方见面,见面时双方的特征,以及见面以后做什么等规则都要事先确定,不同硬件、操作系统之间的通信,都需要一种规则,这种规则称为。用来处理连接网络的硬件部分,包括控制操作系统,硬件的设备驱动,NIC(Network interface Card,网络适配器,即网卡),光纤,等一切物理可见部分(还包括连接器等一切传输媒介)。TCP/IP协议族按层次分成以下4层:应用层,传输层,网络层,数据链路层。

six6de6的博客 969

图解HTTP学习理解

认识HTTP HTTP:超文本、传输、协议 什么是超文本 什么是传输 什么是协议

qq_35301188的博客 938

《图解HTTP》学习总结

第一章 了解Web及网络基础 1.Web的出现是为了实现知识共享规划的。最初的设想是,借助多文档之间相互关联形成的超文本,连成万维网(WWW)。 2.WWW构建技术是SGML、HTTP和URL,现在WWW简称为Web。 3.TCP/IP协议族分为四层:应用层、传输层、网络层和数据链路层。传输层对请求报文进行分割和标序,网络层对请求报文增加MAC地址。 4.IP地址通过ARP协议可以解析为MAC地...

罗毅豪的博客 67

学习HTTP协议——《图解HTTP》

《图解HTTP》——学习HTTP &nbsp;&nbsp;&nbsp;&nbsp;看过很多的关于http的博客,但还是有些模糊,偶尔看到《图解HTTP》这本书,终于有了清晰的认识,PS:文末附电子书下载链接 ——以下内容来自于对书中的梳理和总结—— 一、网络基础TCP/IP TCP/ IP 是在 IP 协议的通信过程中,使用到的协议族的统称。 协议——不同的硬件、操作系统之间的通信,所有的这一切都...

斩落千山 1225

图解HTTP 学习笔记

个人学习 图解HTTP篇 U1 网络基础 使用HTTP协议访问Web,当在网页浏览器地址栏中输入URL时Web页面呈现的过程   TCP/IP 协议族架构      TCP/IP 通信传输流   DNS域名解析服务 各种协议与HTTP协议的关系 URL与URI U2 简单的HTTP协议 HTTP通过请求和响应的交换达成通信 请求报文 ...

panjianlongWUHAN的专栏 663
上一篇: Android Context简单用法
下一篇: Java设计模式之观察者模式
chendroid
博客等级 码龄12年 9粉丝 17原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值