浙江万里学院物流与电子商务学院(2019-2020学年第二学期) 《大数据分析》期末大作业报告学生(学号):班级:《大数据分析》期末大作业报告目录第一章 数据处理第…

文件:n459.com/file/25127180-476199168

以下内容无关:

-------------------------------------------分割线-----------------------------------------------------------------------

大部分针对物理文件的请求都希望获取整个文件的内容,区间请求则与之相反,它希望获取某个文件部分区间的内容。区间请求可以通过多次请求来获取某个较大文件的全部内容,并实现断点续传。如果同一个文件同时存放到多台服务器,就可以利用区间请求同时下载不同部分的内容。与条件请求一样,区间请求也作为标准定义在HTTP规范之中。

HTTP区间请求
如果希望通过一个GET请求获取目标资源的某个区间的内容,就需要将这个区间存放到一个名为Range的报头中。虽然HTTP规范允许指定多个区间,但是StaticFileMiddleware中间件只支持单一区间。分区所采用的计量单位,HTTP规范并未做强制的规定,但是StaticFileMiddleware中间件支持的单位为Byte,也就是说,它是以字节为单位对文件内容进行分区的。

Range报头携带的分区信息采用的格式为bytes={from}-{to}({from}和{to}分别表示区间开始与结束的位置),如bytes=1000-1999表示获取目标资源从1001到2000共计1000字节(第1个字节的位置为0)。如果{to}大于整个资源的长度,这样的区间依然被认为是有效的,它表示从{from}到资源的最后一个字节。如果区间被定义成bytes={from}-这种形式,同样表示区间从{from}到资源的最后一个字节。采用bytes=-{n}格式定义的区间则表示资源的最后n个字节。无论采用何种形式,如果{from}大于整个资源的总长度,这样的区间定义就被视为不合法。

如果请求的Range报头携带一个不合法的区间,服务端就会返回一个状态码为“416 Range Not Satisfiable”的响应,否则返回一个状态码为“206 Partial Content”的响应,响应的主体将只包含指定区间的内容。返回的内容在整个资源的位置通过响应报头Content-Range来表示,采用的格式为{from}-{to}/{length}。除此之外,还有一个与区间请求相关的响应报头Accept-Ranges,它表示服务端能够接受的区间类型。例如,前面针对条件请求的响应都具有一个Accept-Ranges: bytes报头,表示服务支持针对资源的区间划分。如果该报头的值被设置为none,则意味着服务端不支持区间请求。

区间请求在某些时候也会验证资源内容是否发生改变。在这种情况下,请求会利用一个名为If-Range的报头携带一个时间戳或者整个资源(不是当前请求的区间)的标签。服务端在接收到请求之后会根据这个报头判断请求的整个资源是否发生变化,如果判断已经发生变化,它会返回一个状态码为“200 OK”的响应,响应主体将包含整个资源的内容。只有在判断资源并未发生变化的前提下,服务端才会返回指定区间的内容。

针对静态文件的区间请求
下面从HTTP请求和响应报文的角度来探讨StaticFileMiddleware中间件针对区间请求的支持。我们依然沿用前面演示条件请求的实例,该实例中作为目标文件的foobar.txt包含26个字母和10个数字,加上UTF文本文件初始的3个字符(EF、BB、BF),所以总长度为39。我们发送如下两个请求分别获取前面26个字母(3-28)和后面10个数字(-10)。

GET http://localhost:50000/foobar.txt HTTP/1.1
Host: localhost:50000
Range: bytes=3-28

HTTP/1.1 206 Partial Content
Date: Wed, 18 Sep 2019 23:38:59 GMT
Content-Type: text/plain
Server: Kestrel
Content-Length: 26
Content-Range: bytes 3-28/39
Last-Modified: Wed, 18 Sep 2019 23:15:14 GMT
Accept-Ranges: bytes
ETag: “1d56e76ed13ed27”

abcdefghijklmnopqrstuvwxyz
GET http://localhost:50000/foobar.txt HTTP/1.1
Host: localhost:50000
Range: bytes=-10

HTTP/1.1 206 Partial Content
Date: Wed, 18 Sep 2019 23:39:51 GMT
Content-Type: text/plain
Server: Kestrel
Content-Length: 10
Content-Range: bytes 29-38/39
Last-Modified: Wed, 18 Sep 2019 23:15:14 GMT
Accept-Ranges: bytes
ETag: “1d56e76ed13ed27”

0123456789
由于请求中指定了正确的区间,所以我们会得到两个状态码为“206 Partial Content”的响应,响应的主体仅包含目标区间的内容。除此之外,响应报头Content-Range(“bytes 3-28/39”和“bytes 29-38/39”)指明了返回内容的区间范围和整个文件的总长度。目标文件最后修改的时间戳和标签同样会存在于响应报头Last-Modified与ETag之中。

接下来我们发送如下所示的一个区间请求,并刻意指定一个不合法的区间(50-)。正如HTTP规范所描述的那样,在这种情况下可以得到一个状态码为“416 Range Not Satisfiable”的响应。

GET http://localhost:5000/foobar.txt HTTP/1.1
Host: localhost:5000
Range: bytes=50-

HTTP/1.1 416 Range Not Satisfiable
Date: Wed, 18 Sep 2019 23:43:21 GMT
Server: Kestrel
Content-Length: 0
Content-Range: bytes */39
为了验证区间请求针对文件更新状态的检验,我们使用了请求报头If-Range。在如下所示的这两个请求中,我们分别将一个基准时间戳和文件标签作为这个报头的值,显然服务端针对这两个报头的值都将做出“文件已经更新”的判断。根据HTTP规范的约定,这种请求会返回一个状态码为“200 OK”的响应,响应的主体将包含整个文件的内容。如下所示的响应报文就证实了这一点。
GET http://localhost:5000/foobar.txt HTTP/1.1
Range: bytes=-10
If-Range: Wed, 18 Sep 2019 01:01:01 GMT
Host: localhost:5000

HTTP/1.1 200 OK
Date: Wed, 18 Sep 2019 23:45:32 GMT
Content-Type: text/plain
Server: Kestrel
Content-Length: 39
Last-Modified: Wed, 18 Sep 2019 23:15:14 GMT
Accept-Ranges: bytes
ETag: “1d56e76ed13ed27”

abcdefghijklmnopqrstuvwxyz0123456789
GET http://localhost:50000/foobar.txt HTTP/1.1
User-Agent: Fiddler
Host: localhost:50000
Range: bytes=-10
If-Range: “123abc456”

HTTP/1.1 200 OK
Date: Wed, 18 Sep 2019 23:46:36 GMT
Content-Type: text/plain
Server: Kestrel
Content-Length: 39
Last-Modified: Wed, 18 Sep 2019 23:15:14 GMT
Accept-Ranges: bytes
ETag: “1d56e76ed13ed27”

abcdefghijklmnopqrstuvwxyz0123456789

《大数据分析》期末大作业报告相关推荐

  1. 大数据开发、大数据分析、大数据运维主要工作各是什么?哪个好?

    本文转自https://blog.csdn.net/weixin_34318956/article/details/87302823 首先,工作本身没有好坏之分,只有门槛高低之别.大数据开发.大数据分 ...

  2. 大数据开发、大数据分析、大数据运维主要工作各是什么?哪个好?谢谢?

    首先,工作本身没有好坏之分,只有门槛高低之别.大数据开发.大数据分析.大数据运维都围绕着大数据展开.如果我们把大数据去掉,就只剩下,开发,分析,运维.当然还有其它的工作,例如运营,产品,讲师,测试等. ...

  3. 什么是大数据分析?大数据分析要学什么?

    作为时下最火热的IT行业的词汇--大数据,它是指对规模庞大的数据库或者数据池进行挖掘.清理.分析的过程.大数据可以概括为5个V,数据量大(Volume).速度快(Velocity).类型多(Varie ...

  4. 浅谈数据分析、大数据分析和大数据开发的区别

    自我介绍 在大学期间主要学习一些数据分析的课程例如,统计学,多元统计学,数据挖掘,matalb,R语言统计分析,时间序列分析,也参加了几次数学建模竞赛.对数据分析也有些了解. 实习时进了一家大数据公司 ...

  5. 2021 数据挖掘与大数据分析复习笔记 电子科技大学《数据挖掘与大数据分析期末》课程期末高分指南

    狼狈不堪的数据挖掘期末课程复习结束辽 给这门课程画上一个句号吧! 虽然之后主要方向是搞开发了 但是万一以后想去搞大数据捏~ 这是我总结的这门课程的部分章节内容 为了总结下这门课程所学 也让之后有缘找到 ...

  6. 大数据分析和大数据开发哪个好就业啊?

    在看着两个哪个好就业之前,我们先来关注一下分别都是做什么的,以及所需要具备的技能~ 大数据开发做什么? 大数据开发分两类,编写Hadoop.Spark的应用程序和对大数据处理系统本身进行开发.大数据开 ...

  7. 大数据分析12大就业方向

    今天主要给大家说说大数据分析行业的就业方向,大数据分析怎么学,怎么入门.很多同学知道这个很火,但是不清楚这是干啥的.今天就先给大家讲大数据分析工程师. 当下,大数据分析方面的就业主要有三大方向:一是数 ...

  8. python编程大数据分析_大数据分析Python学习技巧

    大数据分析Python是任何开发人员都应该知道的重要编程语言.许多程序员使用这种语言来构建网站,创建学习算法以及执行其他重要任务.但是尝试学习大数据分析Python可能会令人感到恐惧,沮丧和困难,尤其 ...

  9. 防灾科技学院图书馆大数据分析,2018读书报告丨来看一下谁是全年的阅读之星?

    这个学期都要过去一半了哦 好好学习,天天向上了没? 读了几本书呢? 今天可是世界读书日 小编问图书馆要了过去一年里的借阅数据 那在2018年 你与防灾的五星级图书馆有过几次"亲密接触&quo ...

  10. 2021年山东大学python与大数据分析期末试题回忆

    一.选择 不是python关键字的是 在python中的非法表达式 不支持的数据类型是 以下哪个是基于python的web框架 导入模块的方式不正确的是 什么可以作为对象的唯一标识 能正确生成nump ...

最新文章

  1. js代码收藏(zz)
  2. 常用电脑密码破解技巧
  3. xp系统无法创建宽带连接服务器地址,XP下无法建立宽带拨号连接修复一例(新建连接向导选项为灰色)...
  4. php为什么在变量前加,php中变量前加、@等符号是什么意思?
  5. 是未来的风口还是无声的战争,中国的saas平台究竟能不能做起来?
  6. 有4个节点可以构造出 二叉树_简单4个步骤就可以拍摄出美丽的城市夜景,赶紧试试吧...
  7. 「镁客·请讲」吉影科技黄俊平:水下机器人市场的拓展,需要更多行业者协同并进...
  8. JAVA接口详细讲解
  9. 高并发模拟( 测试 )
  10. 还在愁csdn进不去吗,看这里
  11. ··· Socks Online - 在内部网也能使用QQ ···
  12. CG佬的20年:行走于行业的过去与未来
  13. H3C设备网吧万兆光模块解决方案
  14. 币圈免公众号源码带多个支付接口
  15. trove 创建实例源码分析
  16. java503错误是什么_打开网页后出现503 service unavailable等字样,什么意思
  17. Linux 运维必备的 13 款实用工具,拿好了
  18. 灵性图书馆:好书推荐-《巫士唐望的教诲》
  19. sqlserver 2012 序列号
  20. uip tcp 客户端例程

热门文章

  1. 树莓派自启动python程序,远程树莓派桌面,重装树莓派系统,串口驱动,永不休眠,树莓派旋转屏幕方向,树莓派定时重启,修改矫正树莓派时间,raspbian Linux 系统命令常用
  2. [又值奥运季] 2016年里约奥运会--8月22日赛事
  3. How to modify comment and attribute ClearCase
  4. linux远程打印,SUSE 远程打印
  5. 《达尔文自传》——达尔文最后的信仰作者:光在我心
  6. ajax的列表联动示例
  7. 2022.04精灵宝可梦国内在线观看渠道整理
  8. DCDC直流转换器(自用版
  9. MATLAB离线模糊控制表生成以及模糊控制程序编写
  10. Diamond 3.5简易教程(二)------软件的简单使用