Http研究心得 面試心得

2021-07-10 08:50:18 字數 2355 閱讀 9005

當做了很久網際網路產品,肯定會對http多少有些了解,當面試問起來這個問題,面試官會根據這個來衡量乙個開發人的深度,會在幾方面深入了解如:

http(hypertext transfer protocol)中文 「超文字傳輸協議」,是一種為分布式,合作式,多**資訊系統服務,面向應用層的協議,是internet上目前使用最廣泛的應用層協議,它基於傳輸層的tcp協議進行通訊,http協議是通用的、無狀態的協議。

1、http協議定義:

www是以internet作為傳輸媒介的乙個應用系統,www網上基本的傳輸單位是web網頁。www的工作是基於客戶機/伺服器計算模型,由web瀏覽器和web伺服器構成,兩者之間採用超文字傳輸協議http進行通訊。

http協議時基於tcp/ip協議之上的協議,是web瀏覽器和web伺服器之間的應用層的協議,是通用的、無狀態的物件導向的協議。

如果要實現網路互聯我們要思考兩個需要解決的技術問題:

通過internet去傳送到伺服器當中,而internet內部可以通過三種方式來實現傳送資訊和資料:

3.1 響應狀態解答

在http請求中,乙個請求回來肯定會代乙個code,而卻code關鍵點

1xx臨時/資訊響應、2xx成功、3xx重定向、 4xx客戶端/請求錯誤、5xx伺服器錯誤等。那麼問題來了,async中有一段**如下:

if (!thread.currentthread().isinterrupted())  else 

}

在這裡的大於=300為啥要這麼寫。那是根據服務端code返回***的定義,所以如果是返回304該如何處理,所以這種寫法本身不對,而用okhttp就避免這種寫法,並且規範不一定是死的,這個還得得從實際情況而定。

3.2httpurlconnection和httpclient他們各自的優缺點是什麼?

httpurlconnection 在 2.3 以前的版本是有 bug 的,所以之前的版本推薦使用 httpclient,但是 google 現在已經不維護 httpclient 了,5.1裡面已經把 httpclient 標過期。另外 httpurlconnection 支援gzip壓縮等,推薦首選它。 

在 froyo(2.2) 之前,httpurlconnection 有個重大 bug,呼叫 close() 函式會影響連線池,導致連線復用失效,所以在 froyo 之前使用 httpurlconnection 需要關閉 keepalive。 

另外在 gingerbread(2.3) httpurlconnection 預設開啟了 gzip 壓縮,提高了 https 的效能,ice cream sandwich(4.0) httpurlconnection 支援了請求結果快取。 

再加上 httpurlconnection 本身 api 相對簡單,所以對 android 來說,在 2.3 之後建議使用 httpurlconnection,之前建議使用 androidhttpclient。

3.3在android4.0之後的加入的概念:

在主線程不能執行網路申請。

四、httpcient:

httpclient是apache開源組織提供的http網路訪問介面(乙個開源的專案),從名字上就可以看出,它是乙個簡單的http客戶端(並不是瀏覽器),可以傳送http請求,接受http響應。但是不會快取伺服器的響應,不能執行http頁面中簽入嵌入的js**,自然也不會對頁面內容進行任何解析、處理,這些都是需要開發人員來完成的。

httpclient其實是乙個inte***ce型別,httpclient封裝了物件需要執行的http請求、身份驗證、連線管理和其它特性。既然httpclient是乙個介面,因此無法建立它的例項。從文件上看,httpclient有三個已知的實現類分別是:abstracthttpclient, androidhttpclient, defaulthttpclient,會發現有乙個專門為android應用準備的實現類androidhttpclient,當然使用常規的defaulthttpclient也可以實現功能。

從兩個類包所有在位置就可以看出區別,androidhttpclient定義在android.net.http.androidhttpclient包下,屬於android原生的http訪問,而defaulthttpclient定義在org.apache.http.impl.client.defaulthttpclient包下,屬於對apche專案的支援。而androidhttpclient沒有公開的建構函式,只能通過靜態方法newinstance()方法來獲得androidhttpclient物件。

簡單來說,用httpclient傳送請求、接收響應都很簡單,只需要五大步驟即可:(要牢記)

研究中....後續跟上。

xxl job研究心得

最近2天 花了點時間研究xxl job 專案還是比較小的 分布式排程中心 排程中心基於quartz的,job的資訊還是持久化到mysql中的,排程的時候也是用資料庫鎖的方式避免重複獲取統一任務,然後分發調執行器端,分發使用rpc 方式,本質使用了jetty 執行器作為客戶端,執行器啟動的時候回向排程...

Lucene研究心得(一)

剛開始使用lucene的時候,當程式不正常退出時,write.lock總是存在,再次執行就會錯誤,相信大家也都遇到過,經過長時間的深入研究才搞明白錯誤的緣由。這個錯誤是因為file.createnewfile產生的bug。大家也許不明白了,lucene中怎麼會有file的bug,那麼聽我一一道來。首...

面試後心得

技術面,首先都是從專案經驗出發,了解現有的專案經驗,問開發專案過程中遇到的什麼問題,遇到的問題是如何解決的。在專案組中擔任什麼角色,是否具有專案的設計經驗,結合專案細節問些技術問題。從過程中觀察被面試人員的性格,以及以前的工作業績。另外由於技術的需要重點考察了面試人員的linux系統架構的認識,開發...