通信---HTTP(未完待续。。。21/4/27)

重点步骤:1.大体统计有多少东西 2.画脑图 3.把原来学习过的统计近来
内容有些东拼西凑,但只为探得究竟

概论

通信分类:
1.Http
2.WebSocket
3.SocketIO

Http

简介

彰显一下地位:
1.HTTP协议(HyperText Transfer Protocol,超文本传输协议)是因特网上应用最为广泛的一种网络传输协议,所有的WWW文件都必须遵守这个标准。
2.HTTP是一个基于TCP/IP通信协议来传递数据(HTML 文件, 图片文件, 查询结果等)。(忍者飞镖搬砖各种发)(TCP/IP这才是树干,HTTP只能算的上叶子)

工作原理

HTTP协议工作于客户端(上海老板)<—>服务器(松原老板)架构上。浏览器作为HTTP客户端通过URL(大哥大)向HTTP服务端即WEB服务器发送所有请求。
Web服务器有:Apache服务器,IIS服务器(Internet Information Services)等。(松原老板有两个手下)
Web服务器根据接收到的请求后,向客户端发送响应信息。(松原老板事多,架子大,上海不打电话不主动打电话)
HTTP默认端口号为80,但是你也可以改为8080或者其他端口。(默认号码是80,有时也可以换成666,888啥的连号)

消息结构

HTTP是基于客户端/服务端(C/S)的架构模型,通过一个可靠的链接来交换信息,是一个无状态的请求/响应协议。(无状态,什么意思?是不是还有 有状态的时候?
HTTP使用统一资源标识符(Uniform Resource Identifiers, URI)来传输数据和建立连接。(跟URL差一个字母,难道。。。
一旦建立连接后,数据消息就通过类似Internet邮件所使用的格式[RFC5322]和多用途Internet邮件扩展(MIME)[RFC2045]来传送。

主要特点

1、简单快速:客户向服务器请求服务时,只需传送请求方法和路径。请求方法常用的有GET、HEAD、POST。每种方法规定了客户与服务器联系的类型不同。由于HTTP协议简单,使得HTTP服务器的程序规模小,因而通信速度很快。

2、灵活:HTTP允许传输任意类型的数据对象。正在传输的类型由Content-Type加以标记。

3.无连接:无连接的含义是限制每次连接只处理一个请求。服务器处理完客户的请求,并收到客户的应答后,即断开连接。采用这种方式可以节省传输时间。(不是不连,是在需要的时候连上干活,没活就不连,省话费

4.无状态:HTTP协议是无状态协议。无状态是指协议对于事务处理没有记忆能力。缺少状态意味着如果后续处理需要前面的信息,则它必须重传,这样可能导致每次连接传送的数据量增大。另一方面,在服务器不需要先前信息时它的应答就较快。
5、支持B/S及C/S模式。(B/S这啥意思

客户端请求消息

在这里插入图片描述

服务器响应消息

在这里插入图片描述
Content-Type: 正在传输的类型由Content-Type加以标记。HTTP允许传输任意类型的数据对象。(上面灵活性提到啦

请求方法

上海老板为了能更好的找到松原老板,买9个电话。
HTTP1.0 定义了三种请求方法: GET, POSTHEAD方法。(GET, POST面试官会总问,也是使用率最高的,重点学一下)
HTTP1.1 新增了六种请求方法:OPTIONSPUTPATCHDELETETRACECONNECT 方法。

序号	方法	描述1	GET	请求指定的页面信息,并返回实体主体。2	HEAD	类似于 GET 请求,只不过返回的响应中没有具体的内容,用于获取报头3	POST	向指定资源提交数据进行处理请求(例如提交表单或者上传文件)。数据被包含在请求体中。POST 请求可能会导致新的资源的建立和/或已有资源的修改。4	PUT	从客户端向服务器传送的数据取代指定的文档的内容。5	DELETE	请求服务器删除指定的页面。6	CONNECT	HTTP/1.1 协议中预留给能够将连接改为管道方式的代理服务器。7	OPTIONS 	允许客户端查看服务器的性能。8	TRACE	回显服务器收到的请求,主要用于测试或诊断。9	PATCH	是对 PUT 方法的补充,用来对已知资源进行局部更新 。
这些主要是针对页面说的

HTTP的版本

一、1.0
二、1.1
三、2.0

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在Java中,泛型是一种强类型机制,它可以让你在编译时检查类型错误,从而提高代码的安全性和可读性。在使用泛型时,我们经常会遇到父类和子类的泛型转换问题。 首先,我们需要明确一点:子类泛型不能转换成父类泛型。这是因为Java中的泛型是不协变的。例如,如果有一个类A和它的子类B,那么List<A>和List<B>之间是不存在继承关系的。 下面我们来看一个例子: ```java public class Animal { //... } public class Dog extends Animal { //... } public class Test { public static void main(String[] args) { List<Animal> list1 = new ArrayList<>(); List<Dog> list2 = new ArrayList<>(); list1 = list2; // 编译错误 } } ``` 在这个例子中,我们定义了Animal类和它的子类Dog。然后我们定义了两个List,分别是List<Animal>和List<Dog>。如果将List<Dog>赋值给List<Animal>,会出现编译错误。这是因为List<Animal>和List<Dog>之间不存在继承关系。 那么,如果我们想要让子类泛型转换成父类泛型,应该怎么办呢?这时我们可以使用通配符来解决问题。通配符可以表示任意类型,包括父类和子类。例如,我们可以将List<Dog>赋值给List<? extends Animal>,这样就可以实现子类泛型转换成父类泛型了。 下面我们来看一个使用通配符的例子: ```java public class Animal { //... } public class Dog extends Animal { //... } public class Test { public static void main(String[] args) { List<Animal> list1 = new ArrayList<>(); List<Dog> list2 = new ArrayList<>(); list1 = list2; // 编译错误 List<? extends Animal> list3 = new ArrayList<>(); list3 = list2; // 正确 } } ``` 在这个例子中,我们定义了List<? extends Animal>来表示任意继承自Animal的类型。然后我们将List<Dog>赋值给List<? extends Animal>,这样就可以实现子类泛型转换成父类泛型了。 总结一下,Java中的泛型是不协变的,子类泛型不能转换成父类泛型。如果需要实现子类泛型转换成父类泛型,可以使用通配符来解决问题。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值