市面上常見的網(wǎng)絡(luò)框架(OKgo中燥,Nohttp,xutils,volley)

1.okgo:

該庫是封裝了okhttp的標(biāo)準(zhǔn)RESTful風(fēng)格的網(wǎng)絡(luò)框架,可以與RxJava完美結(jié)合塘偎,比Retrofit更簡單易用疗涉。支持大文件上傳下載,上傳進(jìn)度回調(diào)吟秩,下載進(jìn)度回調(diào)咱扣,表單上傳(多文件和多參數(shù)一起上傳),鏈?zhǔn)秸{(diào)用涵防,可以自定義返回對象闹伪,支持Https和自簽名證書,支持超時(shí)自動(dòng)重連壮池,支持cookie與session的自動(dòng)管理祭往,支持四種緩存模式緩存網(wǎng)絡(luò)數(shù)據(jù),支持301火窒、302重定向,擴(kuò)展了統(tǒng)一的上傳管理和下載管理功能驮肉。

1.支持的常用功能

一般的 get,post,put,delete,head,options請求

基于Post的大文本數(shù)據(jù)上傳熏矿,postString(),postJson()等

多文件和多參數(shù)統(tǒng)一的表單上傳(允許監(jiān)聽上傳進(jìn)度)

支持一個(gè)key上傳一個(gè)文件,也可以一個(gè)Key上傳多個(gè)文件

大文件下載和下載進(jìn)度回調(diào)

大文件上傳和上傳進(jìn)度回調(diào)

支持cookie的內(nèi)存存儲和持久化存儲离钝,支持傳遞自定義cookie

提供網(wǎng)絡(luò)緩存功能票编,默認(rèn)支持304緩存協(xié)議,并額外擴(kuò)展了三種本地緩存模式

支持301卵渴、302重定向

支持鏈?zhǔn)秸{(diào)用

支持可信證書和自簽名證書的https訪問

支持根據(jù)Tag取消網(wǎng)絡(luò)請求

支持自定義泛型Callback慧域,自動(dòng)根據(jù)泛型返回對象

具體詳解:okgo 詳解

2.Nohttp

NoHttp簡介:

NoHttp是一個(gè)Android開源網(wǎng)絡(luò)框架,實(shí)現(xiàn)了RFC2616(Http1.1)協(xié)議浪读,一個(gè)標(biāo)準(zhǔn)的Http框架昔榴。支持普通請求、文件的上傳與下載碘橘、自動(dòng)維持Cookie互订、支持RFC2616規(guī)定的所有請求方法(POST、GET痘拆、HEAD……)仰禽、支持Https(包括訪問自簽名網(wǎng)站)、支持請求優(yōu)先級、支持請求與Activity聯(lián)動(dòng)吐葵、提供了五種緩存策略供開發(fā)者選擇……

請求和下載都是隊(duì)列规揪,平均分配每個(gè)線程的資源,支持多個(gè)請求并發(fā)温峭。

支持GET猛铅、POST、PUT诚镰、PATCH奕坟、HEAD、DELETE清笨、OPTIONS月杉、TRACE等請求協(xié)議。

支持基于POST抠艾、PUT苛萎、PATCH、DELETE的文件上傳(Html表單原理)检号。

文件下載腌歉、上傳下載、上傳和下載的狀態(tài)回調(diào)齐苛、錯(cuò)誤回調(diào)翘盖。

提供了五種數(shù)據(jù)緩存策略供開發(fā)者選擇使用。

支持自定義Request凹蜂,利用NoHttp泛型可以解析成任何數(shù)據(jù)格式(String馍驯、Json、JavaBean等)玛痊。

支持Session汰瘫、Cookie的自動(dòng)維持,App重啟擂煞、關(guān)開機(jī)后還持續(xù)維持混弥。

支持Https、自簽名網(wǎng)站Https的訪問对省、支持Https雙向驗(yàn)證蝗拿。

支持取消某個(gè)請求、取消指定多個(gè)請求蒿涎、取消所有請求蛹磺。

支持重定向、多級別重定向同仆。支持代理萤捆、支持Request的優(yōu)先級。

具體使用方式:NoHttp詳解

3.xutils

xUtils一個(gè)Android公共庫框架,主要包括四個(gè)部分:View俗或,Db, Http, Bitmap 四個(gè)模塊市怎。

View模塊主要的功能是通過注解綁定UI,資源辛慰,事件区匠。

Db模塊是一個(gè)數(shù)據(jù)庫orm框架, 簡單的語句就能進(jìn)行數(shù)據(jù)的操作帅腌。

Http模塊主要訪問網(wǎng)絡(luò)驰弄,支持同步,異步方式的請求速客,支持文件的下載戚篙。

Bitmap模塊是加載圖片以及圖片的處理, 支持加載本地溺职,網(wǎng)絡(luò)圖片岔擂。而且支持圖片的內(nèi)存和本地緩存。

詳細(xì)介紹:xutils詳解

4.volley

所謂Volley,它是2013年Google I/O上發(fā)布的一款網(wǎng)絡(luò)框架浪耘,基于Android平臺乱灵,能使網(wǎng)絡(luò)通信更快,更簡單七冲,更健全痛倚。

它的優(yōu)點(diǎn):(1)默認(rèn)Android2.3及以上基于HttpURLConnection,2.3以下使用基于HttpClient澜躺;(2)符合Http 緩存語義 的緩存機(jī)制(提供了默認(rèn)的磁盤和內(nèi)存等緩存)蝉稳;(3)請求隊(duì)列的優(yōu)先級排序;(4)提供多樣的取消機(jī)制苗踪;(5)提供簡便的圖片加載工具(其實(shí)圖片的加載才是我們最為看重的功能);(6)一個(gè)優(yōu)秀的框架削锰。

不足之處也有:它只適合數(shù)據(jù)量小通铲,通信頻繁的網(wǎng)絡(luò)操作,如果是數(shù)據(jù)量大的器贩,像音頻颅夺,視頻等的傳輸,還是不要使用Volley的為好

詳細(xì)介紹:Volley使用及其原理解析

Hashmap

1.HashMap的數(shù)據(jù)結(jié)構(gòu)

數(shù)據(jù)結(jié)構(gòu)中有數(shù)組和鏈表來實(shí)現(xiàn)對數(shù)據(jù)的存儲蛹稍,但這兩者基本上是兩個(gè)極端吧黄。

數(shù)組:數(shù)組存儲區(qū)間是連續(xù)的,占用內(nèi)存嚴(yán)重唆姐,故空間復(fù)雜的很大拗慨。但數(shù)組的二分查找時(shí)間復(fù)雜度小,為O(1);數(shù)組的特點(diǎn)是:尋址容易赵抢,插入和刪除困難剧蹂;

鏈表:鏈表存儲區(qū)間離散,占用內(nèi)存比較寬松烦却,故空間復(fù)雜度很小宠叼,但時(shí)間復(fù)雜度很大,達(dá)O(N)其爵。鏈表的特點(diǎn)是:尋址困難冒冬,插入和刪除容易。

2.存取原理

put 方法:當(dāng)程序試圖將一個(gè)key-value對放入HashMap中時(shí)摩渺,程序首先根據(jù)該 key的 hashCode() 返回值決定該 Entry 的存儲位置:如果兩個(gè) Entry 的 key 的 hashCode() 返回值相同简烤,那它們的存儲位置相同。如果這兩個(gè) Entry 的 key 通過 equals 比較返回 true证逻,新添加 Entry 的 value 將覆蓋集合中原有 Entry的 value乐埠,但key不會覆蓋。如果這兩個(gè) Entry 的 key 通過 equals 比較返回 false囚企,新添加的 Entry 將與集合中原有 Entry 形成 Entry 鏈丈咐,而且新添加的 Entry 位于 Entry 鏈的頭部

get元素時(shí),首先計(jì)算key的hashCode龙宏,找到數(shù)組中對應(yīng)位置的某一元素棵逊,然后通過key的equals方法在對應(yīng)位置的鏈表中找到需要的元素。

假若現(xiàn)在同時(shí)有A線程和B線程同時(shí)獲得了同一個(gè)頭節(jié)點(diǎn)并對其進(jìn)行修改银酗,這樣A寫入頭節(jié)點(diǎn)之后B也寫入頭節(jié)點(diǎn)則會將A的操作覆蓋

3. hashtable對比

image
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末辆影,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子黍特,更是在濱河造成了極大的恐慌蛙讥,老刑警劉巖,帶你破解...
    沈念sama閱讀 221,273評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件灭衷,死亡現(xiàn)場離奇詭異次慢,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)翔曲,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,349評論 3 398
  • 文/潘曉璐 我一進(jìn)店門迫像,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人瞳遍,你說我怎么就攤上這事闻妓。” “怎么了掠械?”我有些...
    開封第一講書人閱讀 167,709評論 0 360
  • 文/不壞的土叔 我叫張陵由缆,是天一觀的道長注祖。 經(jīng)常有香客問我,道長犁功,這世上最難降的妖魔是什么氓轰? 我笑而不...
    開封第一講書人閱讀 59,520評論 1 296
  • 正文 為了忘掉前任,我火速辦了婚禮浸卦,結(jié)果婚禮上署鸡,老公的妹妹穿的比我還像新娘。我一直安慰自己限嫌,他們只是感情好靴庆,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,515評論 6 397
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著怒医,像睡著了一般炉抒。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上稚叹,一...
    開封第一講書人閱讀 52,158評論 1 308
  • 那天焰薄,我揣著相機(jī)與錄音,去河邊找鬼扒袖。 笑死塞茅,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的季率。 我是一名探鬼主播野瘦,決...
    沈念sama閱讀 40,755評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼飒泻!你這毒婦竟也來了鞭光?” 一聲冷哼從身側(cè)響起泞遗,我...
    開封第一講書人閱讀 39,660評論 0 276
  • 序言:老撾萬榮一對情侶失蹤惰许,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后史辙,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體汹买,經(jīng)...
    沈念sama閱讀 46,203評論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,287評論 3 340
  • 正文 我和宋清朗相戀三年髓霞,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了卦睹。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片畦戒。...
    茶點(diǎn)故事閱讀 40,427評論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡方库,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出障斋,到底是詐尸還是另有隱情纵潦,我是刑警寧澤徐鹤,帶...
    沈念sama閱讀 36,122評論 5 349
  • 正文 年R本政府宣布,位于F島的核電站邀层,受9級特大地震影響返敬,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜寥院,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,801評論 3 333
  • 文/蒙蒙 一劲赠、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧秸谢,春花似錦凛澎、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,272評論 0 23
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至臭蚁,卻和暖如春最铁,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背垮兑。 一陣腳步聲響...
    開封第一講書人閱讀 33,393評論 1 272
  • 我被黑心中介騙來泰國打工冷尉, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人甥角。 一個(gè)月前我還...
    沈念sama閱讀 48,808評論 3 376
  • 正文 我出身青樓网严,卻偏偏與公主長得像,于是被迫代替她去往敵國和親嗤无。 傳聞我的和親對象是個(gè)殘疾皇子震束,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,440評論 2 359