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。
https://blog.csdn.net/liaozhongping/article/details/48543161
2.tcp 粘包
TCP粘包是指發送方發送的若干包數據到接收方接收時粘成一包,從接收緩衝區看,後一包數據的頭緊接着前一包數據的尾。
粘包主要是發送端,接收端,跟緩衝區剩餘空間大小之間發生的。
TCP默認會使用Nagle算法。而Nagle算法主要做兩件事:1)只有上一個分組得到確認,纔會發送下一個分組;2)收集多個小分組,在一個確認到來時一起發送。
發送方發生粘包,則我們可以通過關閉Nagle算法來解決,使用TCP_NODELAY選項來關閉Nagle算法。
接收方發生粘包(加入緩衝區大於緩衝區取出),則需要應用層進行處理,發送數據時數據長度一併發送過來(跟之前彈幕二進制內容傳輸一下,數據的頭部記錄數據的長度)。
更多解釋https://www.cnblogs.com/qiaoconglovelife/p/5733247.html
3. 8種跨域支持
圖片ping或者script標籤、jsonP、CORS、window.name+iframe、window.postMessage()、修改document.domain跨子域、WebSocket、代理(服務器端處理)
我們還發現凡是擁有"src"這個屬性的標籤都擁有跨域的能力,比如<script>、<img>、<iframe>
優缺點使用等介紹:https://blog.csdn.net/ligang2585116/article/details/73072868
服務器端配置支持跨域:
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包。
參考https://www.cnblogs.com/zrui-xyu/p/8981442.html
自動支持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請求。
更多https://blog.csdn.net/f529352479/article/details/51909095#
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)聯合使用。當垃圾回收器準備回收一個對象時,如果發現它還有虛引用,就會在回收對象的內存之前,把這個虛引用加入到與之關聯的引用隊列中。
http://blogxin.cn/2017/09/16/java-reference/
6.Spring boot自動配置,以及加載啓動
更多詳細見:https://mp.weixin.qq.com/s/0d8x0CiPb9izVbfBzQ172g
更多詳細信息:https://www.cnblogs.com/shamo89/p/8184960.html