1、session、cookie、token的区别
1)session是会话的意思,当用户请求一次,就会与服务器产生一次session(会话),这个会话保存在了服务器中,前端人员可以把一些信息例如用户的登录信息临时保存到这个session存储块上,服务器的这边处理请求的时候可以从中取出,这是安全的。但是如果系统是微服务,做了负载均衡,那么下一个请求不在同一个服务器上发生(百分九十九),那么另外的均衡服务器就无法获取到这个session信息。
2)cookie是小面包的意思,但是就不能按照字面意思去理解了。cookie跟session的方式几乎是反着干的。cookie是客户端(浏览器)本地的存储。cookie由服务器生成,发送给浏览器,浏览器把cookie以kv形式保存到某个目录下的文本文件内,下一次请求同一网站时会把该cookie发送给服务器。由于cookie是存在客户端上的,所以浏览器加入了一些限制确保cookie不会被恶意使用,同时不会占据太多磁盘空间,所以每个域的cookie数量是有限的。(单个cookie保存的数据不能超过4K,很多浏览器都限制一个站点最多保存20个cookie)。浏览器的cookie是自己保管的,会话结束后依然存在。安全方面没有session高,但是通用和稳定性好。
3)token的意思是“令牌”,是用户身份的验证方式,最简单的token组成:uid(用户唯一的身份标识)、time(当前时间的时间戳)、sign(签名,由token的前几位+盐以哈希算法压缩成一定长的十六进制字符串,可以防止恶意第三方拼接token请求服务器)。还可以把不变的参数也放进token,避免多次查库。session 和 oauth token并不矛盾,作为身份认证 token安全性比session好,因为每个请求都有签名还能防止监听以及重放攻击,而session就必须靠链路层来保障通讯安全了
2、http,WebSocket,WebService的区别
1) http
http协议是用在应用层的协议,他是基于tcp协议的,http协议建立链接也必须要有三次握手才能发送信息。
http链接分为短链接,长链接,短链接是每次请求都要三次握手才能发送自己的信息。即每一个request对应一个response。长链接是在一定的期限内保持链接。保持TCP连接不断开。客户端与服务器通信,必须要有客户端发起然后服务器返回结果。客户端是主动的,服务器是被动的。
2) WebSocket
WebSocket 是HTML5支持的新特性,适用于即时通信。他是为了解决客户端发起多个http请求到服务器资源浏览器必须要经过长时间的轮训问题而生的,他实现了多路复用,他是全双工通信。在webSocket协议下客服端和浏览器可以同时发送信息。建立了WenSocket之后服务器不必在浏览器发送request请求之后才能发送信息到浏览器。这时的服务器已有主动权想什么时候发就可以发送信息到浏览器。而且信息当中不必在带有head的部分信息了与http的长链接通信来说,这种方式,不仅能降低服务器的压力。而且信息当中也减少了部分多余的信息。
3)WebService
webservice是服务器端的技术。它是一种服务,在http协议上的一个服务器服务,客户端通过请求发送消息到服务器端,服务器进行响应。是当前热火的微服务的前身。基于http协议,以xml为载体的通信方式。好处,一直观,二标准,也方便异构系统的交互。可以给其他服务提供接口,也可以消费其他服务的接口。
3 Arraylist与LinkedList的比较
- ArrayList是实现了基于动态数组的数据结构,因为地址连续,一旦数据存储好了,查询操作效率会比较高(在内存里是连着放的),因为地址连续, ArrayList要移动数据,所以插入和删除操作效率比较低。
- LinkedList基于链表的数据结构,地址是任意的,所以在开辟内存空间的时候不需要等一个连续的地址,对于新增和删除操作add和remove,LinedList比较占优势。因为LinkedList要移动指针,所以查询操作性能比较低。