博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Java基础零散技术(笔记)
阅读量:4041 次
发布时间:2019-05-24

本文共 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/

你可能感兴趣的文章
JVM最简生存指南
查看>>
Java的对象驻留
查看>>
logback高级特性使用(二) 自定义Pattern模板
查看>>
JVM并发机制探讨—内存模型、内存可见性和指令重排序
查看>>
可扩展、高可用服务网络设计方案
查看>>
如何构建高扩展性网站
查看>>
微服务架构的设计模式
查看>>
持续可用与CAP理论 – 一个系统开发者的观点
查看>>
nginx+tomcat+memcached (msm)实现 session同步复制
查看>>
c++字符数组和字符指针区别以及str***函数
查看>>
c++类的操作符重载注意事项
查看>>
c++模板与泛型编程
查看>>
WAV文件解析
查看>>
WPF中PATH使用AI导出SVG的方法
查看>>
WPF UI&控件免费开源库
查看>>
QT打开项目提示no valid settings file could be found
查看>>
Win10+VS+ESP32环境搭建
查看>>
Ubuntu+win10远程桌面
查看>>
flutter-实现圆角带边框的view(android无效)
查看>>
android 代码实现圆角
查看>>