技術文章第一時間送達!
源碼精品專欄
接口有什么用
1、通過接口可以實現(xiàn)不相關類的相同行為,而不需要了解對象所對應的類。
2、通過接口可以指明多個類需要實現(xiàn)的方法。
3、通過接口可以了解對象的交互界面,而不需了解對象所對應的類。
另:Java是單繼承,接口可以使其實現(xiàn)多繼承的功能。
大體回答如上,類似文章請移駕:
說說http,https協(xié)議
HTTP:
是互聯(lián)網上應用最為廣泛的一種網絡協(xié)議,是一個客戶端和服務器端請求和應答的標準(TCP),用于從WWW服務器傳輸超文本到本地瀏覽器的傳輸協(xié)議,它可以使瀏覽器更加高效,使網絡傳輸減少。
HTTPS:
是以安全為目標的HTTP通道,簡單講是HTTP的安全版,即HTTP下加入SSL層,HTTPS的安全基礎是SSL,因此加密的詳細內容就需要SSL。
區(qū)別:
1、https協(xié)議需要到ca申請證書,一般免費證書較少,因而需要一定費用。
2、http是超文本傳輸協(xié)議,信息是明文傳輸,https則是具有安全性的ssl加密傳輸協(xié)議。
3、http和https使用的是完全不同的連接方式,用的端口也不一樣,前者是80,后者是443。
4、http的連接很簡單,是無狀態(tài)的;HTTPS協(xié)議是由SSL+HTTP協(xié)議構建的可進行加密傳輸、身份認證的網絡協(xié)議,比http協(xié)議安全。
大體回答如上,類似文章請移駕:
說說tcp/ip協(xié)議族
TCP/IP協(xié)議族是一個四層協(xié)議系統(tǒng),自底而上分別是數(shù)據(jù)鏈路層、網絡層、傳輸層和應用層。每一層完成不同的功能,且通過若干協(xié)議來實現(xiàn),上層協(xié)議使用下層協(xié)議提供的服務。
1、數(shù)據(jù)鏈路層負責幀數(shù)據(jù)的傳遞。
2、網絡層責數(shù)據(jù)怎樣傳遞過去。
3、傳輸層負責傳輸數(shù)據(jù)的控制(準確性、安全性)
4、應用層負責數(shù)據(jù)的展示和獲取。
大體回答如上,類似文章請移駕:
tcp五層網絡協(xié)議
物理層:
為數(shù)據(jù)端設備提供傳送數(shù)據(jù)的通路,數(shù)據(jù)通路可以是一個物理媒體,也可以是多個物理媒體連接而成。
數(shù)據(jù)鏈路層:
為網絡層提供數(shù)據(jù)傳送服務。
網絡層:
路由選擇和中繼、激活,終止網絡連接、在一條數(shù)據(jù)鏈路上復用多條網絡連接,多采取分時復用技術 、差錯檢測與恢復、排序,流量控制、服務選擇、網絡管理 。
傳輸層:
傳輸層是兩臺計算機經過網絡進行數(shù)據(jù)通信時,第一個端到端的層次,具有緩沖作用。
應用層:
應用層向應用程序提供服務
大體回答如上,類似文章請移駕:
TCP與UDP的區(qū)別
1、基于連接與無連接
2、TCP要求系統(tǒng)資源較多,UDP較少;
3、UDP程序結構較簡單
4、流模式(TCP)與數(shù)據(jù)報模式(UDP);
5、TCP保證數(shù)據(jù)正確性,UDP可能丟包
6、TCP保證數(shù)據(jù)順序,UDP不保證
大體回答如上,類似文章請移駕:
說說tcp三次握手,四次揮手
圖片來源博客園,地址圖右下角
大體回答如上,類似文章請移駕:
cookie和session的區(qū)別,分布式環(huán)境怎么保存用戶狀態(tài)
1、cookie數(shù)據(jù)存放在客戶的瀏覽器上,session數(shù)據(jù)放在服務器上。
2、cookie不是很安全,別人可以分析存放在本地的COOKIE并進行COOKIE欺騙,考慮到安全應當使用session。
3、session會在一定時間內保存在服務器上。當訪問增多,會比較占用你服務器的性能,考慮到減輕服務器性能方面,應當使用COOKIE。
4、單個cookie保存的數(shù)據(jù)不能超過4K,很多瀏覽器都限制一個站點最多保存20個cookie。
分布式環(huán)境下的session(舉例兩種):
服務器session復制
原理:任何一個服務器上的session發(fā)生改變(增刪改),該節(jié)點會把這個 session的所有內容序列化,然后廣播給所有其它節(jié)點,不管其他服務器需不需要session,以此來保證Session同步。
優(yōu)點:可容錯,各個服務器間session能夠實時響應。
缺點:會對網絡負荷造成一定壓力,如果session量大的話可能會造成網絡堵塞,拖慢服務器性能。
session共享機制
使用分布式緩存方案比如memcached、redis,但是要求Memcached或Redis必須是集群。
大體回答如上,類似文章請移駕:
Nginx反向代理,負載均衡,redis session共享,keepalived高可用
GIT和SVN的區(qū)別
1、GIT是分布式的,SVN不是。
2、GIT把內容按元數(shù)據(jù)方式存儲,而SVN是按文件。
3、GIT分支和SVN的分支不同。
4、GIT沒有一個全局的版本號,而SVN有。
5、GIT的內容完整性要優(yōu)于SVN。
(一般問會不會用,知道這些區(qū)別貌似也沒卵用)
請寫一段棧溢出、堆溢出的代碼
遞歸調用可以導致棧溢出
不斷創(chuàng)建對象可以導致堆溢出
代碼如下:
public class Test {
public void testHeap(){
for(;;){
ArrayList list = new ArrayList (2000);
}
}
int num=1;
public void testStack(){
num++;
this.testStack();
}
public static void main(String[] args){
Test t = new Test ();
t.testHeap();
t.testStack();
}
}
大體回答如上,類似文章請移駕:
聯(lián)系客服