基本是APP開發涉及到的相關技術的入門級介紹。涉及到的知識點與技術細節比較多,很多技術相關的內容並無像標題暗示的那樣沒有技術背景也能夠看懂,而是涉及到許多專業的術語、原理。也有一些內容是用比喻的方法講原理。前端
能夠看做是給開發人員的APP開發技術的一個索引。沒有技術背景的產品經理也能夠經過這本書知道須要再去詳細瞭解哪些IT知識,能夠學習到一些常識,好比說普通的人像照片無法轉化成矢量圖。程序員
整體評價3星,有參考價值。算法
如下是書中一些內容的摘抄:數據庫
1:在一些視頻網站上,全部的電影名、演員名都是馬上顯示的,電影的海報是框架加載完成以後,再發起AJAX請求拉取的。採用這樣的異步加載模式能夠在最大程度上緩解用戶等待時的焦慮感。P3瀏覽器
2:因此,瀏覽器在解析HTML文檔時,會把每一個標籤抽象成代碼裏的對象,按照這種井井有條的結構組織,這就是DOM. P4前端框架
3:因而,有人發明了一種便捷的方法,叫做虛擬DOM。簡單來講,就是用JavaScript模擬了一棵簡單的DOM樹,而後在這上面演練全部的DOM操做,等時機成熟時再把虛擬DOM樹和真正的瀏覽器的DOM樹作對比,算出差別,一次性地改變真正的DOM樹。這兩個步驟從總體上大大提升了JavaScript操縱DOM樹的效率。P5服務器
4:固然,要防護它是有辦法的。開發者在引用一個第三方庫時,在頁面裏寫上它的散列值,若是第三方庫被劫持,計算出的散列值與開發者寫在頁面裏的不匹配,瀏覽器便不會執行它。還有另外一種方案,就是使用HTTPS連接,這樣能夠解決大部分劫持問題。P13網絡
5:使用WebSocket能夠很好地解決這個問題.WebSocket是HTML5的一個主要特性,它是創建在TCP上的一種全雙工協議,也就是說客戶端能夠向服務器發信息,服務器也能夠向客戶端推送消息。WebSocket在首次創建鏈接時,使用普通HTTP和服務器通訊,同時告訴服務器後面的交互用WebSocket的方式。P24架構
6:總結一下:瀏覽器直接輸出渲染好數據的HTML頁面,簡稱「直出」.直出沒什麼神祕的,只不過須要Node.js的支持,服務器和前端都用JavaScript語言編寫,至關於在服務器上也運行一個瀏覽器,它把渲染好的內容直接輸出給客戶端的瀏覽器。P25框架
7:單頁的Web應用會在用戶單擊連接以後直接和服務器聯繫(不會告訴瀏覽器頁面切換了),拉取數據。雖然看起來與多頁Web應用沒什麼區別,但技術上的區別很大。P26
8:如今,移動端上的不少應用都採用了Hybrid APP的架構。所謂Hybrid APP,就是指使用原生和H5兩種UI呈現內容。P36
9:看到路上的街景採集車(如圖2-7所示)了嗎?若是讀者覺得它們只是採集街景就想錯了。它們在大街上漫遊時,就記下了附近無線路由器的MAC地址和GPS信息。日復一日年復一年,一個龐大的Wi-Fi定位數據庫就創建起來了。P42
10:發送心跳包是有代價的。爲了省電,手機鎖屏以後,CPU是處於休眠狀態的,然而發送心跳包就會喚醒CPU,必然會增長電量的消耗。這還只是一條長鏈接通道的狀況,若是手機裏裝了二三十個帶有推送的APP呢?聰明的Android工程師和iOS工程師早就想到了這一點,他們分別設計了GCM(Google Cloud Messaging)和APNs(Apple Push Notification service)來解決多個APP有多個長鏈接通道的問題。P45
11:圖2-11中貓咪的眼睛和鼻子都一塊兒被模糊了,嚴重失真,因此咱們通常選用一種特殊的高斯模糊算法:雙邊濾波。它的好處是能夠保存邊緣,好比皮膚和眉毛的交接處,通過雙邊濾波後眉毛沒有變化,只有皮膚作了高斯模糊處理。在實際應用過程當中,還會用到膚色檢測,人臉識別等技術。P47
12:「以圖搜圖」的功能經過對圖片進行縮放、灰度處理,最後提取出一個64位的散列值做爲特徵碼,用它去作匹配。一樣,要識別一首歌曲,也要先找到它的特徵,也就是音樂的「指紋」,簡稱「樂紋」。P48
13:因此平時咱們使用搜索引擎時,它的搜索結果並非實時査找出來的,而是使用了提早作好的倒排索引,將關鍵詞的索引結果合併展現出來。P79
14:CSRF攻擊的本質是,瀏覽器沒法區分一個請求是用戶在當前網站自願發起的,仍是其餘網站模擬用戶行爲發出來的。
15:所以,避免CSRF攻擊的措施之一即是區分當前請求的來源網站。P133
16:最後,搬運一個應用的流程就變成「下載應用——反編譯——篡改代碼——從新打包——國內分發」,這個流程很簡單,將其作成一個批量處理任務只需十來分鐘,但是開發一個應用最少要耗費開發者幾個月的時間。P138
17:一個好的產品設計是這樣的:本地要默認寫死一些常在展現、不怎麼變化的頻道,這些稱爲打底數據或默認數據。若是沒有這份寫死的數據,你的客戶端運行時,至網絡數據傳回前或者無網絡時,頭部都沒有任何信息展現。因此打底數據主要用於解決用戶體驗問題,在無網絡或初次啓動時,告知用戶這個客戶端已經在正常運行。P161
18:因此,JSON並非憑空想出來的高深概念,而只是爲了解決「對象」在網絡上傳輸的問題而誕生的。這時再看它的英文名JavaScript Object Notation(JavaScript的對象標記法),是否是以爲確實是這麼回事?P180
19:那麼問題來了,如何才能充分調動顯卡的強大能力,幫助咱們繪製圖形呢?OpenGL就是爲此而生的。OpenGL是一組API,這些API能夠運行在不一樣的平臺上,能夠支持各類語言。最重要的是,它能利用顯卡的硬件加速能力,幫助咱們繪製圖形。P181
20:OpenGL這兩年比較火,主要仍是由於iOS和Android都靠它來作遊戲、寫界面。嚴格地說,在移動平臺上,你們用的是OpenGL-ES,是OpenGL的一個子集。OpenGL有700多個API,OpenGL-ES裁掉了其中不經常使用的、移動端很差用的一些API。P182
21:既然矢量圖能夠作到縮放不失真,爲何不把全部圖片都作成矢量圖呢?答案是,作不到。一張普通的圖片裏,有人物也有風景,每個細節是沒法用數學方程式來描述的,只能按照點對點的映射作成一張位圖,而這張位圖的分辨率就取決於鏡頭的分辨率。P188
22:React是Facebook推出的一個前端框架,準確地說,它是一個前端的UI組件庫。P197
23:ReactNative是Facebook推出的一個用JavaScript語言就能同時編寫iOS,Android及後臺的技術.ReactNative於2016年9月發佈的Android版本在IT圈裏掀起了一波熱潮,不斷有喜歡嚐鮮的程序員投人這個領域。P198
24:由於ReactNative引擎的啓動耗時,因此首屏速度可能會稍微慢一點兒。另外,ReactNative會多出一些JStoNative的通訊成本。除此以外,翻譯後的UI佈局由於用的是純原生的實現方式,動畫,滑動都會跟原生同樣順滑。但React有一個硬傷,就是List(列表)的性能較差。P200
25:谷歌正式發佈了Flutter,它一經推出便受到衆多開發者的追捧。不像ReactNative那樣站在ReactJS的肩膀上,Flutter的誕生顯得平淡了不少。它的開發者來自谷歌的Chrome團隊,沒錯,就是那些作瀏覽器的技術人員,他們試圖把瀏覽器的渲染技術用在普通的APP上,改着改着,就改出了一個令全部人振奮的框架。P202
26:谷歌之因此用Dart而不用JavaScript還有一層緣由.Dart語言既能夠像Java那樣預先編譯成二進制代碼預裝在APK包裏,也能夠像JavaScript那樣動態下發,隨時解釋執行。P203
全文完
相關連接:
3.5星|《硅谷產品》:Facebook網紅社區產品經理經驗談
3星|《人人都是產品經理(記念版)》:產品經理入門,阿里產品流程
更多毒舌書評參見個人公衆號:左其盛經管新書點評