目录

 

(1)什么是反射,反射的作用,反射的性能问题。

(2)如何理解HTTP协议,与HTTP协议的运行流程

(3)HTTP有哪些请求方式 其中HTTP200、302、403、404、503都表示什么状态

(4)如何理解cookie和session

(5)什么事web缓存,为什么要使用它

(6)什么事HTTPS,HTTPS的原理

(7)什么是http代理服务器,有什么用?

(八)什么是虚拟主机及其实现原理?


(1)什么是反射,反射的作用,反射的性能问题。

JAVA反射机制就是在运行状态中,对于任意一个类,都知道这个类的所有属性与方法;对于任意一个对象,都能够调用他的任意一个方法与属性;这种动态获取的信息以及动态调用对象的方法的功能就是反射。(实际上就是去扫描.class文件)   首先我们要知道静态编译与动态编译。静态编译是指编译的时候确定类型,绑定对象。动态编译:则是运行时确定类型,绑定对象,动态编译发挥了java的灵活性,体现了多态的应用,降低类之间的耦合。

要想使用反射,首先要获取待操作的这个所对应的Class对象。Java中,无论生成某个类的多少个对象,这些对象都会对应同一个Class文件,这个Class文件是由JVM生成的,通过它能获悉整个类的结构。获取Class对象的三种方式:

1、使用class类的静态方法 如
Class<?> clazz = Class.forName("com.bobo.User");
2、使用类的class语法
Class clazz = User.class
3、使用对象的getClass方法
User user = new User();
Class<?> clazz = user.getClass();

优点:反射机制的优点就是可以动态的创建和编译,,体现出很大的灵活性,反射的性能问题、反射经常在持续存储对象为数据库、XML或其它外部格式的框架中使用。Java reflection 非常有用,它使类和数据结构能按名称动态检索相关信息,并允许在运行着的程序中操作这些信息。广泛的用于哪些需要运行时检测和修改程序行为的程序中。

缺点:对性能有影响,使用反射类似一种解释操作,我们可以告诉JVM我们希望做什么并且满足我们的要求,这类操作总是慢于直接执行相同的操作。主要原因用于字段和方法接入时反射要远慢于直接代码。性能问题的程度取决于程序中如何使用反射。如果它作为程序运行中相对很少涉及的部分,缓存的性能将不会是一个问题。

(2)如何理解HTTP协议,与HTTP协议的运行流程

HTTP是超文本传输协议,目的是使浏览器更加高效,使网络传输更小,保证计算机正确的传输文本文档,由那本分先显示。HTTP是一个应用层协议,由请求和响应构成,是一个标准的客户端服务器模型,无状态协议。(无状态是指对事务处理没有记忆功能,前后请求没有直接关系,实际中我们会使用session和cookie等机制实现有状态)。HTTP是承载TCP协议之上,有时候也承载与TLS或SSL协议层之上,也就是HTTPS。默认端口号是80,HTTPS默认端口号443。

大致也是先TCP的三次握手建立通信,客户端第一次SYN seq x=0,服务端第二次SYN ACKseq y=0,ack x=1;第三次 ACK ACKseq x+1,ACK y+1; 然后发送http请求,服务器确认,http发送数据,服务器确认.。。服务器响应200 表示OK。

运行流程:1、建立TCP/IP连接,客户端与服务端建立Socket三次握手连接 2、客户端发送HTTP请求 (例如POST/login.html http/1.1) 3、客户端发送请求头信息,请求内容,最后会发送一空白行,标识客户端请求完毕。 4、服务器做出应答,标识对客户端请求应答 (例如HTTP/1.1 200 OK) 5、服务器向客户端发送应答头信息 6、服务器向客户端发送请求头信息后,也发送一空白行,标示应答头信息发送完毕。 

java freemarker 服务器端渲染 java渲染是什么意思_服务器

java freemarker 服务器端渲染 java渲染是什么意思_HTTP_02

(3)HTTP有哪些请求方式 其中HTTP200、302、403、404、503都表示什么状态

HTTP1.0有GET POST HEAD  HTTP1.1 有OPTIONS PUT DELETE TRACE CONNECT

GET 请求指定页面的信息,返回实体主体。

HEAD类似GET请求,只会返回响应的报头

POST 向指定资源提交数据进行处理请求,例如表单的处理。数据被包含在请求体中,POST请求可能会导致新的资源的建立和已有资源的修改。

PUT 从客户端向服务器传送数据取代文档的内容

DELETE 请求服务器删除指定的页面

CONNECT HTTP1.1中预留给能将连接改为管道方式的代理服务器

OPTIONS 允许客户端查看服务器性能

TRACE 回显服务器收到的请求 用于诊断
HTTP状态类型 (1)1XX 请求收到 继续处理 (2)2XX操作成功收到分析接受 (3)3XX  完成请求必须进一步处理 重定向(4)4XX 请求包含了一个错误语法或不能完成,请求方错误 (5)5XX 服务器执行一个完全有效的请求失败

200 确认收到成功 302在其他地址发现请求数据,路径的重定向请求 403禁止访问 404 找不到请求的资源,canfound  503也是找不到请求资源但是是由于服务器出现了问题,服务不可用。

(4)如何理解cookie和session

session是一个抽象概念,开发者为了实现中断和继续等操作,将user agent和server之间一对一交互,抽象为“会话”,进而衍生出的“会话状态”也就是session的概念,而cookie是一个实际存在的都系存在http的报文头中,上面的实例图中可以看到。

Session在服务端保存的一个数据结构,用来跟踪用户状态,这个数据可以保存在集群中个,Cookie是客户端保存用户信息的一种机制,用来记录用户的一些信息,也是实现Session的一种方式。session的运行以来session id,而session id 是存在id中的,维持会话的核心就是session id。主要区别就是一个是客户端一个是服务端对有状态的实现。

(5)什么事web缓存,为什么要使用它

Web缓存是游走与服务器和客户端之间。这个服务器可能是源服务器就是资源所在服务器,数量可能是一个或者多个,这个客户端也可能是一个或者多个。Web缓存就在服务器-客户端之间的监控,监控请求并且把请求输出的内容另存一份,然后,如果下一个请求是相同的URL,则直接请求保存的副本,而不是源服务器。

使用缓存的原因:(1)降低延迟,缓存离客户端更近,因此,从缓存请求内容比源服务器所用的时间更少,呈现时间更快。(2)降低网络传输,副本被重复利用,大大降低了用户带宽的使用,其实也是变相的省资源。

web缓存的类型:(1)浏览器缓存,浏览器在硬盘上专门开辟一个空间专门为你存储资源副本。(2)代理服务器缓存,这是出于网络中,请求要以某种方式路由到他们。例如拦截代理吧web请求根据底层网络重定向(3)网关缓存:可以有多重方法吧请求路由到网关缓存,有内容分发网络(CDNS)为整个网络分配网关缓存(部署层面的),然后把这些缓存卖给需要的网站,加速网站的访问。

(6)什么事HTTPS,HTTPS的原理

一般http协议是明文传输的,是不会进行保密的,因此使用http传输私密协议十分不安全,于是就有了https,因此SSL依旧是HTTPS的代名词。https的URL表名它使用Http,但HTTPS存在不同的HTTP默认的端口和一个加密/身份认证在(HTTP与TCP之间)(提高了数据的完整性,数据的私密性、身份认证)

java freemarker 服务器端渲染 java渲染是什么意思_服务器_03

HTTPS工作过程:1、客户端发送自己支持的加密规则给服务器,准备进行连接 2、服务器从中选出一套自己支持的加密算法与hash算法以及身份信息以证书发送给浏览器,证书中包含服务器信息,加密公钥等  3、客户端收到证书后,验证证书的合法性,用约定好的hash算法计算握手消息,生成密钥进行加密。发送给服务器。 4、用私钥解析出密码,用密码解析握手消息,验证hash值是否与浏览器  5、如果计算hash值一致,握手成功

(7)什么是http代理服务器,有什么用?

http代理服务器是指网络信息的中转站,比如HTTP代理服务器。我们使用网络浏览器直接链接其他Internet站点并获取网络信息时,需要送出request信号来得到答案,然后对方再把信息传送回来。代理服务器就是接于浏览器和web服务器之间的一台服务器,浏览器不是直接到web服务器去取回网页而是向代理服务器发出请求,Request信号会先送到代理服务器,由代理服务器来取回浏览器所需要的信息并传送给你。

这里用nginx举例:nginx目的就是代理,代理位于web客户端和web服务器中间扮演“中间人”的角色。

nginx特点就是跨平台、配置异常简、支持大的并发连接。

事件处理机制:首先看一个请求的基本过程:建立连接-接受数据-发送数据

异步非阻塞的时间处理机制,监控多个事件,调用他们是阻塞的。{通过异步非阻塞的事件处理机制,nginx实现由进程循环处理多个准备好的事件,从而实现高并发和轻量级。master和worker结构,一个master进程,生成一个或者多个worker进程,内存消耗小,处理大并发的请求内存消耗小。对于每个进程而言避免了多线程的切换,和redies的单线程有点类似,个人观点}

正向代理:客户端设置正向代理服务器,前提是知道正向代理服务器的IP地址,还有代理程序的端口。 这时候中间的正向代理服务器是源服务器允许的IP登陆地址。中间的代理服务器类似于一个跳板,要想到服务端必须先把消息发送到正向代理服务器。(例如google,访问无法访问的资源,加速访问资源等)

反向代理:是指代理服务器来接受innetnet的连接请求,然后将请求转发给内部网络上的服务器,并将服务器得到的结果返回给internet上请求连接的客户端,此时代理服务器与web源服务器是一个整体。

java freemarker 服务器端渲染 java渲染是什么意思_客户端_04

 

(八)什么是虚拟主机及其实现原理?

虚拟主机:是在网络服务器上划分一定的磁盘空间供用户放置站点、应用组件等,提供必要的站点功能与数据存放、传输功能。所谓虚拟主机就是把一个运行在互联网上的服务器划分为多个“虚拟”的服务器,每一个服务器都具有一个独立的域名和完整的Internet服务器支持(www、FTP、E-mail等)功能。一台服务器上不同虚拟主机是鸽子独立的,并由用户自行管理。但一台服务器主机智能支持一定数量的虚拟主机。

实现原理:虚拟主机使用同一个WEB服务器,为不同域名网站提供服务的技术,Apache、Tomcat等均可以通过配置实现这个功能。相关的HTTP的消息头:host