谈谈你对垃圾回收机制的了解?左链接和右链接的语法及区别?cookie和session的区别与联系 在HTTP请求中,什么情况下我们会选择post方式而非get?反之也是如何考虑的?

1 ,谈谈你对垃圾回收机制的了解?

什么是垃圾回收机制:在系统运行过程中,会产生一些无用的对象,这些对象占据着一定的内存,如果不对这些对象清理回收无用对象的内存,可能会导致内存的耗尽,所以垃圾回收机制回收的是内存。同时GC回收的是堆区和方法区的内存。
JVM回收特点:(stop-the-world)当要进行垃圾回收时候,不管何种GC算法,除了垃圾回收的线程之外其他任何线程都将停止运行。被中断的任务将会在垃圾回收完成后恢复进行。GC不同算法或是GC调优就是减少stop-the-world的时间。à(为何非要stop-the-world),就像是一个同学的聚会,地上有很多垃圾,你去打扫,边打扫边丢垃圾怎么都不可能打扫干净的哈。当在垃圾回收时候不暂停所有的程序,在垃圾回收时候有new一个新的对象B,此时对象A是可达B的,但是没有来及标记就把B当成无用的对象给清理掉了,这就会导致程序的运行会出现错误。

问题扩展:

如何判断哪些对象需要回收呢:
1.引用计数算法(java中不是使用此方法):每个对象中添加一个引用计数器,当有别人引用它的时候,计数器就会加1,当别人不引用它的时候,计数器就会减1,当计数器为0的时候对象就可以当成垃圾。算法简单,但是最大问题就是在循环引用的时候不能够正确把对象当成垃圾。
2.根搜索方法(这是后面垃圾搜集算法的基础):这是JVM一般使用的算法,设立若干了根对象,当上述若干个跟对象对某一个对象都不可达的时候,这个对象就是无用的对象。对象所占的内存可以回收。
根搜索算法的基础上,现代虚拟机的实现当中,垃圾搜集的算法主要有三种,分别是标记-清除算法、复制算法、标记-整理算法。

2 ,左链接和右链接的语法及区别?

核心答案讲解:

1.左连接
数据表A中的记录为主循环体,依次匹配数据表B中的记录,如果数据表A中连接字段Aid的值,在数据表B中没有Bnameid值与之对应,则右侧以null代替。结果集:公共部分记录集C+表A记录集A1。语句如下:select * from A Left JOIN B ON A.Aid=B.Bnameid
2. 右链接
数据表B中的记录为主循环体,依次匹配数据表A中的记录,如果数据表B中连接字段Bnameid的值,在数据表A中没有Aid值与之对应,则左侧以null代替。结果集:公共部分记录集C+表B记录集B1。语句如下:select * from A Right JOIN B ON A.Aid=B.Bnameid
(3) 问题扩展
内连接,全连接各是什么意思?

3 , cookie和session的区别与联系

核心答案解析

1、cookie数据存放在客户的浏览器上,session数据放在服务器上。
2、cookie并不是很安全,别人可以分析存放在本地的cookie并进行cookie欺骗,考虑到安全应当使用session。
3、session会在一定时间内保存在服务器上。当访问增多,会比较占用你服务器的性能,考虑到减轻服务器性能方面,应当使用cookie。
4、单个cookie保存的数据不能超过4K,很多浏览器都限制一个站点最多保存20个cookie。
5、可以考虑将登陆信息等重要信息存放为session,其他信息如果需要保留,可以放在cookie中。
6、session会在浏览器关闭或者一段时间内销毁cookie将持久化的存放在客户端
一般情况下,session生成的sessionid都是保存在cookie中。

问题扩展

cookie被用户禁用怎么办?可以使用URL地址重写是对客户端不支持Cookie的解决方案。URL地址重写的原理是将该用户Session的id信息重写到URL地址中。服务器能够解析重写后的URL获取Session的id。这样即使客户端不支持Cookie,也可以使用Session来记录用户状态。

4 ,在HTTP请求中,什么情况下我们会选择post方式而非get?反之也是如何考虑的?

核心答案解析

GET一般用于获取和查询资源信息,指定的资源经服务器端解析后返回响应内容,必要时,可以将查询字符串参数追加到URL末尾,以便将信息发送给服务器。POST一般用于更新资源信息,通常会用来传输实体的本体,用GET方法也可以传输实体的主体,但一般不用GET方法进行传输,而是用POST方法,虽然GET方法和POST方法很相似,但是POST的主要目的并不是获取响应的主体内容。

问题扩展

http协议其他的请求方式?
HEAD:获得报文首部,GET方法有实体,HEAD方法无实体。
PUT:传输文件,就像FTP协议的文件上传一样,要求在请求报文的主体中包含文件内容,然后保存在请求URI指定的位置,存在安全问题,故一般不用。
DELETE:删除文件或资源,与PUT方法相反,按URI删除指定资源
OPTIONS:询问支持的方法,客户端询问服务器可以提交哪些请求方法
TRACE:追踪路径,让Web服务器端将之前的请求通信还给客户端的方法
CONNECT:要求用隧道协议连接代理,实现用隧道协议进行TCP通信。

GET方法和POST方法本质上的区别?

1、GET方法用于信息获取,它是安全的(安全:指非修改信息,如数据库方面的信息),而POST方法是用于修改服务器上资源的请求;
2、GET请求的数据会附在URL之后,而POST方法提交的数据则放置在HTTP报文实体的主体里,所以POST方法的安全性比GET方法要高;
3、GET方法传输的数据量一般限制在2KB,而Chrome,FireFox浏览器理论上对于URL是没有限制的,它真正的限制取决于操作系统本身;POST方法对于数据大小是无限制的,真正影响到数据大小的是服务器处理程序的能力。

结合项目使用

在项目使用RESTful架构风格进行开发,GET用来获取资源,POST用来新建资源(也可以用于更新资源),PUT用来更新资源,DELETE用来删除资源,这样就统一了数据操作的接口,仅通过HTTP方法,就可以完成对数据的所有增删查改工作。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

明月常新

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值