第十三篇:Objective-C 知識(shí)回顧架構(gòu)框架之一

本篇大綱內(nèi)容

13.1.架構(gòu)&框架

問(wèn)題一: 架構(gòu)&框架是什么森枪?
  • 引入框架&架構(gòu),主要是為了實(shí)現(xiàn) 模塊化伟墙。
  • 然后再做一個(gè)相應(yīng)的 分層钾恢。
  • 目的就是為了 解耦手素。
  • 最終達(dá)到 降低代碼重合度 的效果

13.2.圖片緩存框架

問(wèn)題一: 怎樣設(shè)計(jì)一個(gè)圖片緩存框架?
圖片緩存框架設(shè)計(jì)圖解
  • 首先我們這個(gè)圖片管理緩存框架需要有一個(gè)管理者Manager用于管理或者說(shuō)協(xié)調(diào)調(diào)度這個(gè)框架內(nèi)部的各個(gè)模塊赘那。
  • 接下來(lái)需要有個(gè)關(guān)于內(nèi)存緩存的模塊刑桑,然后有一個(gè)關(guān)于磁盤(pán)緩存的模塊,如果圖片需要網(wǎng)絡(luò)獲取募舟,還需要一個(gè)網(wǎng)絡(luò)獲取圖片的模塊祠斧。
  • 如果圖片是經(jīng)過(guò)壓縮的,我們就需要配一個(gè)圖片解碼的管理者 Code Manager拱礁,用于調(diào)度 圖片解碼模塊圖片壓縮/解壓縮模塊琢锋。
問(wèn)題二: 一般常用的圖片庫(kù),圖片通過(guò)什么方式進(jìn)行讀寫(xiě)呢灶,過(guò)程是怎么樣的吴超?
  • 以圖片 URL 的單向 Hash 值作為 Key。


    圖片在框架中的讀取流程
問(wèn)題三: 內(nèi)存的設(shè)計(jì)上需要考慮哪些問(wèn)題鸯乃?
  • 存儲(chǔ)的 Size(不能無(wú)限大鲸阻,容易造成內(nèi)存壓力過(guò)大)
  • 淘汰策略(因?yàn)橛?Size 的限制跋涣,所以在超過(guò)限制了,就要有對(duì)應(yīng)的淘汰策略)
存儲(chǔ)的 Size 在數(shù)據(jù)結(jié)構(gòu)上的設(shè)計(jì)(重要)
淘汰策略一:利用隊(duì)列的先進(jìn)先出方式進(jìn)行淘汰
淘汰策略一:通過(guò) LRU 算法進(jìn)行淘汰鸟悴,定時(shí)檢測(cè)不推薦陈辱,耗時(shí)費(fèi)力
問(wèn)題四: 磁盤(pán)設(shè)計(jì)要考慮哪些問(wèn)題?

問(wèn)題思路指引细诸,相比于內(nèi)存沛贪,磁盤(pán)的存儲(chǔ)很大,但是讀取效率比較低震贵±常基于這個(gè)我們可以嘗試尋找答案。

  • 存儲(chǔ)方式的選擇
  • 大小限制(如 100MB)
  • 淘汰策略(如某一圖片存儲(chǔ)時(shí)間距今已超過(guò)7 天)
問(wèn)題五:網(wǎng)絡(luò)設(shè)計(jì)要考慮哪些問(wèn)題猩系?
  • 圖片請(qǐng)求最大并發(fā)量(比如最大并發(fā)量 10)
  • 請(qǐng)求超時(shí)策略(再次請(qǐng)求媚送,失敗兩次就不請(qǐng)求)
  • 請(qǐng)求優(yōu)先級(jí)(有些重要的圖片,優(yōu)先請(qǐng)求寇甸,失敗多次重試)
問(wèn)題六:對(duì)于不同格式的圖片季希,解碼采用什么方式來(lái)做?
  • 應(yīng)用策略模式對(duì)不同圖片格式進(jìn)行解碼幽纷。
問(wèn)題七:什么是策略模式?
  • 策略模式定義了一組算法博敬,將它們逐個(gè)封裝起來(lái)友浸,并使得它們可以相互替換。策略可以讓算法獨(dú)立于使用它們的客戶而變化偏窝。
問(wèn)題八:在哪個(gè)階段做圖片解碼處理收恢?
  • 磁盤(pán)讀取后(從而保證存到內(nèi)存中的是已經(jīng)解碼的,讓主線程讀取后直接使用祭往,減輕主線程的負(fù)擔(dān))
  • 網(wǎng)絡(luò)請(qǐng)求返回后

13.3.閱讀時(shí)長(zhǎng)統(tǒng)計(jì)

問(wèn)題一: 怎樣設(shè)計(jì)一個(gè)閱讀時(shí)長(zhǎng)統(tǒng)計(jì)框架伦意?
時(shí)長(zhǎng)統(tǒng)計(jì)框架的總體設(shè)計(jì)
  • 頁(yè)面式記錄器,一般push的時(shí)候?yàn)殚_(kāi)始時(shí)間硼补,pop 的時(shí)候?yàn)榻Y(jié)束時(shí)間驮肉。
  • 流式記錄器,比如微博這樣 feed 流的頁(yè)面已骇,對(duì)其進(jìn)行停留時(shí)長(zhǎng)統(tǒng)計(jì)离钝。
  • 自定義式記錄器,記錄一些自定義褪储,比如說(shuō)橫幅停留時(shí)間等等卵渴,可以增強(qiáng)框架的擴(kuò)展性。
  • 記錄管理者負(fù)責(zé)管理 記錄緩存 磁盤(pán)存儲(chǔ) 上傳器鲤竹。
  • 記錄緩存是緩存記錄器所記錄的信息到內(nèi)存浪读。
  • 磁盤(pán)存儲(chǔ)是反正內(nèi)存中的緩存丟失。
  • 上傳器是為了將記錄的數(shù)據(jù)上傳到服務(wù)器。
問(wèn)題二: 為何要有不同類(lèi)型的記錄器碘橘,你的考慮是什么互订?
  • 基于不同分類(lèi)場(chǎng)景提供的關(guān)于記錄的封裝、適配蛹屿。
問(wèn)題三:記錄的數(shù)據(jù)會(huì)由于某種原因丟失屁奏,你是怎么樣處理的?

問(wèn)題解答思路:?jiǎn)栠@個(gè)問(wèn)題要考慮到错负,數(shù)據(jù)在內(nèi)存中偶爾出現(xiàn)丟失坟瓢,這是必定會(huì)出現(xiàn)的問(wèn)題,并不是問(wèn)你怎么讓它一條都不丟失犹撒,而是怎么做到盡量少丟失折联。

  • 定時(shí)寫(xiě)磁盤(pán)
  • 限定內(nèi)存緩存條數(shù)(如10 條),超過(guò)該條數(shù)识颊,就寫(xiě)入磁盤(pán)诚镰。
  • 定時(shí)上傳到服務(wù)器
問(wèn)題四:關(guān)于延時(shí)上傳的具體場(chǎng)景有哪些?

問(wèn)題解答思路:關(guān)于延時(shí)上傳的對(duì)立面就是立即上傳祥款,可想而知如果我每次產(chǎn)生一條記錄清笨,立刻上傳到服務(wù)器,這個(gè)無(wú)疑是降低了客戶端的性能以及十分消耗用戶的流量刃跛。

  • 前后臺(tái)切換的時(shí)候上傳
  • 從無(wú)網(wǎng)到有網(wǎng)上傳
  • 通用的輕量接口捎帶一些數(shù)據(jù)
問(wèn)題五:上傳時(shí)機(jī)怎么把控的抠艾?
  • 立刻上傳
  • 延時(shí)上傳
  • 定時(shí)上傳
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市桨昙,隨后出現(xiàn)的幾起案子检号,更是在濱河造成了極大的恐慌,老刑警劉巖蛙酪,帶你破解...
    沈念sama閱讀 211,290評(píng)論 6 491
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件齐苛,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡桂塞,警方通過(guò)查閱死者的電腦和手機(jī)凹蜂,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,107評(píng)論 2 385
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)阁危,“玉大人炊甲,你說(shuō)我怎么就攤上這事∮郏” “怎么了卿啡?”我有些...
    開(kāi)封第一講書(shū)人閱讀 156,872評(píng)論 0 347
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)菱父。 經(jīng)常有香客問(wèn)我颈娜,道長(zhǎng)剑逃,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 56,415評(píng)論 1 283
  • 正文 為了忘掉前任官辽,我火速辦了婚禮蛹磺,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘同仆。我一直安慰自己萤捆,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,453評(píng)論 6 385
  • 文/花漫 我一把揭開(kāi)白布俗批。 她就那樣靜靜地躺著俗或,像睡著了一般。 火紅的嫁衣襯著肌膚如雪岁忘。 梳的紋絲不亂的頭發(fā)上辛慰,一...
    開(kāi)封第一講書(shū)人閱讀 49,784評(píng)論 1 290
  • 那天,我揣著相機(jī)與錄音干像,去河邊找鬼帅腌。 笑死,一個(gè)胖子當(dāng)著我的面吹牛麻汰,可吹牛的內(nèi)容都是我干的速客。 我是一名探鬼主播,決...
    沈念sama閱讀 38,927評(píng)論 3 406
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼五鲫,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼挽封!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起臣镣,我...
    開(kāi)封第一講書(shū)人閱讀 37,691評(píng)論 0 266
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎智亮,沒(méi)想到半個(gè)月后忆某,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,137評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡阔蛉,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,472評(píng)論 2 326
  • 正文 我和宋清朗相戀三年弃舒,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片状原。...
    茶點(diǎn)故事閱讀 38,622評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡聋呢,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出颠区,到底是詐尸還是另有隱情削锰,我是刑警寧澤,帶...
    沈念sama閱讀 34,289評(píng)論 4 329
  • 正文 年R本政府宣布毕莱,位于F島的核電站器贩,受9級(jí)特大地震影響颅夺,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜蛹稍,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,887評(píng)論 3 312
  • 文/蒙蒙 一吧黄、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧唆姐,春花似錦拗慨、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,741評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至仗阅,卻和暖如春昌讲,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背减噪。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,977評(píng)論 1 265
  • 我被黑心中介騙來(lái)泰國(guó)打工短绸, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人筹裕。 一個(gè)月前我還...
    沈念sama閱讀 46,316評(píng)論 2 360
  • 正文 我出身青樓醋闭,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親朝卒。 傳聞我的和親對(duì)象是個(gè)殘疾皇子证逻,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,490評(píng)論 2 348

推薦閱讀更多精彩內(nèi)容

  • Swift1> Swift和OC的區(qū)別1.1> Swift沒(méi)有地址/指針的概念1.2> 泛型1.3> 類(lèi)型嚴(yán)謹(jǐn) 對(duì)...
    cosWriter閱讀 11,092評(píng)論 1 32
  • 在服務(wù)器端程序開(kāi)發(fā)領(lǐng)域囚企,性能問(wèn)題一直是備受關(guān)注的重點(diǎn)。業(yè)界有大量的框架瑞眼、組件龙宏、類(lèi)庫(kù)都是以性能為賣(mài)點(diǎn)而廣為人知。然而...
    dreamer_lk閱讀 1,001評(píng)論 0 17
  • 7.1 壓縮圖片 一伤疙、基礎(chǔ)知識(shí) 1银酗、圖片的格式 jpg:最常見(jiàn)的圖片格式。色彩還原度比較好徒像,可以支持適當(dāng)壓縮后保持...
    AndroidMaster閱讀 2,496評(píng)論 0 13
  • 本篇文章已授權(quán)微信公眾號(hào) guolin_blog (郭霖)獨(dú)家發(fā)布,來(lái)源于我在CSDN發(fā)表的一篇博文:http:/...
    半島鐵盒里的貓閱讀 1,181評(píng)論 0 4
  • 幸遇寒冬暖雨黍特, 凄凄香草有依。 冰山料峭春無(wú)意锯蛀, 三九何時(shí)遠(yuǎn)離灭衷。 早已萌萌就緒。 萬(wàn)芽蘊(yùn)育發(fā)期旁涤。 春陽(yáng)燦燦春風(fēng)習(xí)今布,...
    云逸1108閱讀 399評(píng)論 0 1