本文共 2822 字,大约阅读时间需要 9 分钟。
1.http 301 302
均是重定向,301是永久重定向,302临时重定向
301,302 都是HTTP状态的编码,都代表着某个URL发生了转移,不同之处在于:
301 redirect: 301 代表永久性转移(Permanently Moved)。
302 redirect: 302 代表暂时性转移(Temporarily Moved )。
对用户来说没有区别
对于引擎及站长
302转向可能会有URL规范化及网址劫持的问题。可能被搜索引擎判为可疑转向,甚至认为是作弊。
问题就在于,有的时候搜索引擎,尤其是Google,并不能总是抓取目标网址。为什么呢?比如说,有的时候A网址很短,但是它做了一个302重定向到B网址,而B网址是一个很长的乱七八糟的URL网址,甚至还有可能包含一些问号之类的参数。很自然的,A网址更加用户友好,而B网址既难看,又不用户友好。这时Google很有可能会仍然显示网址A。
2.tcp 粘包
TCP粘包是指发送方发送的若干包数据到接收方接收时粘成一包,从接收缓冲区看,后一包数据的头紧接着前一包数据的尾。
粘包主要是发送端,接收端,跟缓冲区剩余空间大小之间发生的。
TCP默认会使用Nagle算法。而Nagle算法主要做两件事:1)只有上一个分组得到确认,才会发送下一个分组;2)收集多个小分组,在一个确认到来时一起发送。
发送方发生粘包,则我们可以通过关闭Nagle算法来解决,使用TCP_NODELAY选项来关闭Nagle算法。
接收方发生粘包(加入缓冲区大于缓冲区取出),则需要应用层进行处理,发送数据时数据长度一并发送过来(跟之前弹幕二进制内容传输一下,数据的头部记录数据的长度)。
更多解释
3. 8种跨域支持
图片ping或者script标签、jsonP、CORS、window.name+iframe、window.postMessage()、修改document.domain跨子域、WebSocket、代理(服务器端处理)
我们还发现凡是拥有"src"这个属性的标签都拥有跨域的能力,比如<script>、<img>、<iframe>
优缺点使用等介绍:
服务器端配置支持跨域:
cors方式,Spring boot更多采用这种方式,filter拦截配置(全局)
后来 HTML5 支持了 CORS 协议。CORS 是一个 W3C 标准,全称是”跨域资源共享”(Cross-origin resource sharing),允许浏览器向跨源服务器,发出 XMLHttpRequest 请求,从而克服了 AJAX 只能同源使用的限制。它通过服务器增加一个特殊的 Header[Access-Control-Allow-Origin]来告诉客户端跨域的限制,如果浏览器支持 CORS、并且判断 Origin 通过的话,就会允许 XMLHttpRequest 发起跨域请求。
mvc框架是spring4.2以上的话,一个@CrossOrigin就可以搞定
将@CrossOrigin加到Controller,整个Controller都支持跨域,加到具体方法上,则仅该方法支持
全局配置,也需要spring4.2以上。
@Bean public WebMvcConfigurer corsConfigurer() { return new WebMvcConfigurerAdapter() { @Override public void addCorsMappings(CorsRegistry registry) { registry.addMapping("/greeting-javaconfig").allowedOrigins("http://localhost:9000"); } }; }
.addCorsMappings()中的参数代表支持跨域的url,.allowedOrigins()中的参数代表可以访问该接口的域名,设置为”*”可支持所有域。
还有一种是web.xml配置,单独引入jar包。
参考
自动支持JSONP
SpringMVC 4.0以上@ControllerAdvice
@ControllerAdvice public class JsonpSupportAdvice extends AbstractJsonpResponseBodyAdvice { public JsonpSupportAdvice() { //参数包含callback的时候 使用jsonp的反馈形式 super("callback"); } } 只需要上面几行代码,springmvc就会为我们所有的json类型的请求提供jsonp数据的支持,只需要在请求的时候携带callback参数,springmv就会返回jsonp类型数据,如果没有callback参数,springmv会返回正常的json数据。控制器的原有方法不做任何修改,也无需添加任何配置,轻松支持jsonp请求。更多
nginx配置支持
4、Spring的基础知识
5、Java的强、软、弱、虚引用
强:平常的new Object,常会发生的OOM,OutOfMemoryError错误就是内存不够
软:有个算法决定是否GC回收,Java的反射就是利用了软引用,所以参数需要设定好,防止发生频繁Full GC。软引用可以和一个引用队列(ReferenceQueue)联合使用
clock - timestamp <= freespace * SoftRefLRUPolicyMSPerMB
弱:GC回收时,如果仅有弱引用,不管内存是否足够,都会进行回收。弱引用非常适合存储元数据,例如:存储ClassLoader引用,如果ClassLoader可达,则获取数据,如果不可达则直接被回收。弱引用可以和一个引用队列(ReferenceQueue)联合使用
虚:虚引用并不会决定对象的生命周期。如果一个对象仅持有虚引用,那么它就和没有任何引用一样,对象不可达时就会被垃圾回收器回收,但是任何时候都无法通过虚引用获得对象。虚引用主要用来跟踪对象被垃圾回收器回收的活动,一般可以通过虚引用达到回收一些非java内的一些资源比如堆外内存的行为。例如:在DirectByteBuffer中
虚引用与软引用和弱引用的一个区别在于:虚引用必须和引用队列(ReferenceQueue)联合使用。当垃圾回收器准备回收一个对象时,如果发现它还有虚引用,就会在回收对象的内存之前,把这个虚引用加入到与之关联的引用队列中。
6.Spring boot自动配置,以及加载启动
更多详细见:
更多详细信息:
转载地址:http://qgadi.baihongyu.com/