自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

我學(xué)習(xí)Android的一些套路

移動開發(fā) Android
今天筆者將給大家分享一下我學(xué)習(xí)Android的一些方法和想法,分享中并不局限于Android哪一塊怎么學(xué)習(xí)。而是一個(gè)總體的,普適性的學(xué)習(xí)套路和方法。希望可以幫助大家解決一些問題。

今天筆者將給大家分享一下我學(xué)習(xí)Android的一些方法和想法,分享中并不局限于Android哪一塊怎么學(xué)習(xí)。而是一個(gè)總體的,普適性的學(xué)習(xí)套路和方法。希望可以幫助大家解決一些問題。

注意本文知識點(diǎn)相對分散,后面部分包含了一些聽眾提出的問題,但是不影響總體的閱讀和理解。

[[207255]]

Android需要打好哪些編程基礎(chǔ)

  • Java基礎(chǔ)(Kotlin)
  • OOP思想與設(shè)計(jì)模式
  • Android基礎(chǔ)
  • 數(shù)據(jù)結(jié)構(gòu)與算法
  • 其他,比如JVM相關(guān)

除了編程基礎(chǔ),我們還需要補(bǔ)充哪些能力

  • 喜歡鉆研的興趣
  • 良好的英語理解能力
  • 善于思考和總結(jié)的習(xí)慣
  • 高效率的學(xué)習(xí)方法
  • 能夠機(jī)智地利用Google搜索
  • 善于利用工具
  • 和現(xiàn)實(shí)事物關(guān)聯(lián)類比的能力

對待問題的態(tài)度

1.喜歡鉆研的興趣,盡管高級編程語言的出現(xiàn)讓我們將精力更多的放到業(yè)務(wù)上,而不是編程細(xì)節(jié)。正所謂知其然知其所以然,鉆研細(xì)節(jié)可以更好地幫助我們實(shí)現(xiàn)業(yè)務(wù),做到了然于胸。

2.良好的英文理解能力。由于一些原因,我們接觸到的一些技術(shù)的資料都是二手資料,而這些二手資料往往在知識傳遞的效果上有一些折扣,甚至是偏差。英語可以說是(安卓)編程提升的加速器。同時(shí),英語好的話,可以輔助我們寫出更具有自解釋的代碼。

3.善于思考和總結(jié)的習(xí)慣。真理越辯越明,同樣技術(shù)越思考越清晰。對于一個(gè)技術(shù)通常我們需要抱有這樣的疑問

  • 它是什么 一句話概括
  • 解決了什么問題 存在的意義
  • 怎樣解決了問題 內(nèi)部的實(shí)現(xiàn)
  • 它的缺點(diǎn)是什么 多角度分析

比如我們關(guān)于WebView的考慮點(diǎn)的總結(jié)

  • 是否支持js
  • 是否支持mixed content (https網(wǎng)頁加載http圖片)
  • 與js通信的問題,比如給方法增加JavaScriptInterface注解
  • 是否自身處理某些URL(協(xié)議不同,不讓flipboard://showSection等)還是交給外部程序
  • 關(guān)于UA中是否加入特定的標(biāo)識,比如Flipboard字樣
  • 是否增加特定的header

有了思考,我們需要以文字的形式記錄下來,這也應(yīng)了那句老話,好記性不如爛筆頭。建議以博客的形式總結(jié)出來。

4.高效率的學(xué)習(xí)方法。

  • 理清楚概念很重要
  • 做好控制變量法
  • 多動手實(shí)踐,與理論結(jié)合
  • 抓住重點(diǎn),剔除干擾因素

其實(shí),任何復(fù)雜的事情都是由簡單的事情組成,編程也是一樣。在編程過程中,我們會接觸到很多概念,這些概念很重要,對于概念的一知半解往往會使得我們越走越慢,學(xué)習(xí)起來原來越困難。因此對于編程中的概念要務(wù)必理解準(zhǔn)確和深刻。

控制變量法:我們在初中做實(shí)驗(yàn)的時(shí)候,經(jīng)常會用到控制變量法。在編程中紅也是。當(dāng)我們在解決問題時(shí),也要做到控制一處修改。比如我們項(xiàng)目中需要修一個(gè)webview相關(guān)的bug,我們要想一想能不能脫離現(xiàn)在龐大而負(fù)責(zé)的項(xiàng)目,單獨(dú)寫一個(gè)簡單的變量單一的sample來重現(xiàn),做到快速和小粒度驗(yàn)證。

多動手實(shí)踐與理論結(jié)合:很多時(shí)候,我們學(xué)習(xí)新技術(shù)的時(shí)候,我們應(yīng)該先學(xué)會使用它,有了初步的認(rèn)知之后,便于我們更好的理解和深入研究。比如關(guān)于GUI的東西,我們***時(shí)不時(shí)做出一些東西,理論和實(shí)踐要做到相輔相成。

抓住重點(diǎn),剔除干擾因素:

  • 任何復(fù)雜的事情都是簡單問題錯(cuò)綜復(fù)雜交織在一起,進(jìn)行拆分
  • 去除無關(guān)因素或者干擾因素
  • 補(bǔ)充了解問題必備的知識
  • 具象分析:看它的實(shí)現(xiàn)原理和運(yùn)行機(jī)制 (比如通過分析源碼,我們知道HandlerThread無非就是一個(gè)自帶并初始化好了Handler的線程)
  • 抽象總結(jié):從適度抽象的角度進(jìn)行歸納

5.機(jī)智地使用Google。從事編程工作,使用Google是一種必須。雖然國內(nèi)訪問不了,但是對于聰明的程序員來說這不算問題。通常情況下,我都是講想要搜索的知識點(diǎn)轉(zhuǎn)成英文的形式,不包含中文。優(yōu)先查看stackoverflow 和 google groups的內(nèi)容。相比而言,中文的相關(guān)資源并不是很可靠,質(zhì)量也普遍差一些。

6.善用工具,多使用終端,多嘗試寫一些腳本解決重復(fù)的工作。Python,Ruby,Shell腳本都可以幫助你寫出很多利器。

  • 比如全文查找關(guān)鍵字工具 grep -E $1 --exclude-dir={.git,lib,.gradle,.idea,build,captures} --exclude={*.png,*.jpg,*.jar} . -R --color=always -n 能找出Android工程下面的包含某個(gè)關(guān)鍵字的文件以及所在的行數(shù)。
  • 快速獲取當(dāng)前Activity的名稱 adb shell dumpsys window windows | grep -E 'mCurrentFocus|mFocusedApp' --color=always
  • 快速檢查json文件是否合法

https://github.com/androidyue/DroidScripts

7.和現(xiàn)實(shí)事物關(guān)聯(lián)類比的能力

隨著編程時(shí)間的增長,我們會原來越發(fā)現(xiàn)程序里的很多概念和現(xiàn)實(shí)生活中的事物是類似的。

  • 比如數(shù)據(jù)庫的索引和現(xiàn)實(shí)生活中我們使用的字典索引。好處都是便于快速查找。不好的地方,索引多了會增加占用,增加,刪除,修改同時(shí)連帶索引修改會慢一些等。
  • 比如對象池和現(xiàn)實(shí)中餐廳的公共餐具是類似的。我們都需要回收的時(shí)候,清理臟數(shù)據(jù),避免影響到下一次使用。
  • 比如KFC里面的餐具回收人員關(guān)于何時(shí)回收餐盤,和JVM的GC其實(shí)是類似的。一個(gè)對象不被其他對象持有,就可以回收。即一個(gè)桌子上沒有人,只有餐具通常是可以回收的。

如何做到關(guān)聯(lián)和類比

  • 了解編程中的具體概念,抓住問題的關(guān)鍵點(diǎn)和關(guān)鍵行為
  • 選擇現(xiàn)實(shí)中習(xí)以為常的事物和行為進(jìn)行類比,不要選擇模糊不清的。
  • 提取共同點(diǎn),檢查是否match。

8.對待問題的態(tài)度 對待問題的態(tài)度一定要積極。不能得過且過。比如對待不容易/不能復(fù)現(xiàn)的問題,及時(shí)手頭沒有可以復(fù)現(xiàn)的機(jī)器,也要通過模擬/使用云設(shè)備 等方式嘗試重現(xiàn)。

對于目前在做的只有自己已知的問題,不要隱瞞,盡量暴露出來,這樣便于自己和他人更好的發(fā)現(xiàn)解決。

作為Android程序員,如何把握好技術(shù)的寬度和深度

對于Android來說,有太多的誘惑,比如React Native,小程序,熱更新,插件化。

我學(xué)習(xí)Android的一些套路

我理解的應(yīng)該是先從寬度上拓展,然后在盡心深度研究。

什么時(shí)候需要橫向拓展

  • 初學(xué)者
  • 工作業(yè)務(wù)量繁多,比如瀏覽器開發(fā)(普通App開發(fā)技術(shù),HTML+Javascript等技術(shù))
  • 自身興趣

什么時(shí)候需要縱向深入

  • 中級和高級開發(fā)
  • 追求更深入的細(xì)節(jié)和思想
  • 工作內(nèi)容需要

橫向發(fā)展有哪些

  • ReactNative等技術(shù)
  • 簡單的后臺開發(fā) Java/PHP/Python/Ruby
  • IOS等應(yīng)用開發(fā)
  • 總而言之就是會的多

縱向發(fā)展有哪些

  • 系統(tǒng)源碼
  • 各種技術(shù)的實(shí)現(xiàn)機(jī)制
  • 操作系統(tǒng)相關(guān)知識等
  • 總而言之就是學(xué)得精,知其然深知其所以然。

我個(gè)人比較傾向于多花點(diǎn)時(shí)間做深入研究,在這個(gè)過程中會慢慢形成一種透徹理解技術(shù)的能力,有了這種能力之后就能觸類旁通,學(xué)習(xí)其他技術(shù)也會更加輕松。

另外,工作需要時(shí)影響你朝著哪個(gè)維度發(fā)展的重要因素。所以選擇一個(gè)公司要謹(jǐn)慎。

  • 通常大公司,優(yōu)秀的團(tuán)隊(duì)會有利于你進(jìn)行縱向深入
  • 小公司,創(chuàng)業(yè)公司更多的會影響你進(jìn)行橫向發(fā)展。

如何從日常的工作中獲取***的收益

日常的工作中,我們都是在做公司的項(xiàng)目。我們想要做到***化收益需要做到

  • 不要將自己的要求僅僅停留在功能實(shí)現(xiàn)(比如完成一個(gè)界面不代表你的收益做到***,只是代表任務(wù)完成)
  • 要理解你所使用的技術(shù)的原理和本質(zhì)。不要停留在API使用,否則無法增強(qiáng)你的競爭力。比如我們對于加載Bitmap都會用到LRUCache,我們則需要至少理解LRUCache的原理,如果可以的話,了解它的內(nèi)部實(shí)現(xiàn)機(jī)制。
  • 項(xiàng)目中有好的地方,要去思考好在何處。思考這種技術(shù)的通用場景。
  • 在項(xiàng)目中思考更好的解決方法。做好兩種方案的優(yōu)缺點(diǎn)對比。比如你聽了《Android Performance Pattern》中關(guān)于ArrayMap的講解,也考慮到HashMap的空間占用問題,不要急于去替換。要做到對比(既要了解HashMap也要了解ArrayMap)同時(shí)結(jié)合業(yè)務(wù)場景來選擇最適用的。
  • 如果在項(xiàng)目中遇到了問題,建議先解決,然后空余時(shí)間研究這個(gè)技術(shù)的原理和細(xì)節(jié)。后續(xù)的研究務(wù)必要做。
  • 善于做總結(jié),將自己的經(jīng)驗(yàn)和教訓(xùn)寫成博客分享給他人。

日常的工作給我們提供了許許多多好的實(shí)踐和不好的問題,是一塊彌之珍貴的技術(shù)提升的源泉。

Android那么多庫,我該選擇哪些,怎么學(xué),學(xué)到什么程度

庫的存在是為了封裝細(xì)節(jié),簡化調(diào)用者實(shí)現(xiàn)或者輔助我們更容易發(fā)現(xiàn)問題。比如ButterKnife利用注解簡化了對于view的查找和類型轉(zhuǎn)換等功能。

關(guān)于如何選擇那些庫

  • 確定這個(gè)庫是否是必需的
  • 這個(gè)庫能否帶來開發(fā)效率的提升,降低代碼的維護(hù)成本
  • 這個(gè)庫的學(xué)習(xí)成本如何 比如rxjava其實(shí)學(xué)習(xí)成本會相對高一些。
  • 這個(gè)庫的質(zhì)量如何,不要僅僅看star,更要看issue的處理情況

Flipboard常用的庫(部分)

  • LeakCanary A memory leak detection library for Android and Java.
  • Stetho Stetho is a debug bridge for Android applications, enabling the powerful Chrome Developer Tools and much more.
  • ButterKnife Bind Android views and callbacks to fields and methods.
  • Baber A custom view styling library
  • GoldenGate An Android annotation processor for generating type safe javascript bindings
  • MaterialEditText EditText in Material Design
  • 。。。

關(guān)于庫,首先我們需要掌握其使用方法,同樣也需要理解其運(yùn)行機(jī)制。

對于初學(xué)者,大學(xué)生的建議有哪些

  • 越來越多的關(guān)于互聯(lián)網(wǎng)寒冬的消息傳出
  • 聽見越來越多的人抱怨Android找工作越來越難,已經(jīng)趨近飽和。
  • Android開發(fā)的紅利期正在逐漸消逝,尤其是對于初級和中級開發(fā)人員
  • 關(guān)于現(xiàn)在加入Android開發(fā)隊(duì)伍,我并不反對。
  • 仍然可以趕上紅利期的有容器,機(jī)器學(xué)習(xí)和人工智能。
  • 但是無論選擇哪一種技術(shù),即便是Android,請具備好的基礎(chǔ)和較強(qiáng)的編程能力和足夠的愛好。不要僅僅追求物質(zhì)。

一直想學(xué),卻很難堅(jiān)持下去

  • 有意愿是很好的。
  • 如果很難堅(jiān)持下去,可能的原因有沒有學(xué)進(jìn)去,或者自制力比較差
  • 關(guān)于沒有學(xué)進(jìn)去,可以參考上面提到的學(xué)習(xí)方法
  • 如果是自制力的話,可以通過自我監(jiān)督和他人監(jiān)督的方式來改善。

不知道去哪里學(xué)安卓,可以邊學(xué)邊工作么

  • 學(xué)習(xí)Android的途徑有很多,可以是自學(xué)(視頻網(wǎng)站,看書,博客)也可以選擇培訓(xùn)(不推薦)
  • 邊學(xué)邊工作通常是可以的,不過具體實(shí)施起來還要結(jié)合自身的情況,比如時(shí)間是否充裕,學(xué)習(xí)者的決心和自學(xué)能力。

春招做準(zhǔn)備,數(shù)據(jù)結(jié)構(gòu)和算法不懂怎么辦

無論是春招還是秋招,對基礎(chǔ)知識的掌握程度都是很重要的衡量標(biāo)準(zhǔn),畢竟畢業(yè)生的實(shí)戰(zhàn)經(jīng)驗(yàn)比較少一些。

數(shù)據(jù)結(jié)構(gòu)和算法應(yīng)該是必不可少的一部分。建議還是要多多做一些準(zhǔn)備工作。

呈現(xiàn)出***的狀態(tài)來面試春招。

自己有一個(gè)什么樣的個(gè)人項(xiàng)目才有競爭力

如果這個(gè)項(xiàng)目是App

  • 首先有足夠的用戶量,比如月活達(dá)到上萬的數(shù)量級
  • 界面和交互處理良好,符合Android UI/UE規(guī)范
  • 運(yùn)行流暢和穩(wěn)定,不存在低級的錯(cuò)誤(比如卡頓等問題)
  • App能明顯解決用戶的痛點(diǎn)

如果這個(gè)項(xiàng)目是一個(gè)開源項(xiàng)目

  • 有足夠的star(然而這個(gè)已經(jīng)被玩壞了)
  • issue的處理情況
  • contributor的數(shù)量
  • 設(shè)計(jì)的思想是否優(yōu)秀
  • 代碼是否居然自解釋性
  • 學(xué)習(xí)成本和維護(hù)成本盡量少

我該如何選擇網(wǎng)絡(luò)中魚龍混雜的學(xué)習(xí)資料 pass

  • 使用Google和StackOverflow,Medium
  • 如果是博客文章,在自己能力可以理解前提下,盡量選擇英文
  • 最簡單判斷一個(gè)文章的優(yōu)劣可以先到文章的底部看評論(Good,Execellent,Awesome)以及Google+,Facebook,Twitter分享數(shù)量
  • 盡量選擇內(nèi)容整潔(說明態(tài)度認(rèn)真)的文章

學(xué)習(xí)效果差的問題 pass

  • 長期看慕課和論壇,感覺效果很差
  • 感覺通過視頻學(xué)習(xí),進(jìn)步很大,但是即使學(xué)習(xí)完了,感覺還是菜鳥
  • 視頻也看了,書也讀了,但是寫起來還是很吃力,下一步如何熟練和進(jìn)階

產(chǎn)生這些結(jié)果的原因:

  • 通常的視頻網(wǎng)站傳授給大家都往往是立竿見影的技能。
  • 學(xué)習(xí)中缺乏思考,無法做到觸類旁通。只知道照葫蘆畫瓢
  • 基礎(chǔ)薄弱,概念沒有搞清。導(dǎo)致做上層的東西舉步維艱。
  • 沒有比較良好的輔助工具或者無法找到優(yōu)秀的輔助內(nèi)容。

如何提高安卓程序員的核心競爭力,項(xiàng)目理解能力還是技術(shù)能力,哪個(gè)更重要

  • 什么是核心競爭力。表現(xiàn)在學(xué)習(xí)技術(shù)的能力,對待問題的態(tài)度,解決問題的技術(shù)方案。別的行業(yè)其實(shí)也是這樣的。
  • 具體如何提高核心競爭力,我上面有提到,參考程序員需要具備其他那些能力。
  • 這兩個(gè)能力是相輔相成的,很難做出孰重孰輕的決斷。

大齡Android程序員的煩惱

經(jīng)常收到一些安卓程序員的郵件,其中有很多問題是,做了Android很多年了,為以后的職業(yè)選擇惆悵。比如互聯(lián)網(wǎng)寒冬,華為清退34歲以上員工等等。

的確,由于Android相關(guān)的工程師需求不如之前那么好,加之年齡越大,拼勁可能不如剛剛畢業(yè)的年輕人。這種煩惱是可以理解的。

走出煩惱的一些方法

  • 不斷學(xué)習(xí),夯實(shí)基礎(chǔ),拓展技術(shù)面。為什么總是提到這個(gè),因?yàn)槠鋵?shí)存在很多程序員,邏輯思維不強(qiáng),還不愛學(xué)習(xí)。不斷學(xué)習(xí)對于程序員來說至關(guān)重要。
  • 提高自己的競爭力,不要成為僅僅面向API編程的程序員。要勤于思考,追求更高。求其上者得其中,求其中者得其下。你必須和5年前,甚至是10年前的你有改變,不能僅僅是一項(xiàng)技能重復(fù)了5年,10年。
  • 建立個(gè)人品牌:寫博客,寫書,開源項(xiàng)目,寫?yīng)毩pp等。注意這其中任何一個(gè)都是一個(gè)長期堅(jiān)持才能完成的事情。
  • 其實(shí)現(xiàn)代人的煩惱,不論是否是程序員,很多都是關(guān)于物質(zhì)生活的恐懼。買車買房,家庭支出等等問題。以及對于自己的能力無法滿足物質(zhì)支出的恐懼和擔(dān)心。在自己無法改變的情況下,適當(dāng)調(diào)整心態(tài)。
  • 嘗試知識變現(xiàn),但是需要不斷積累,需要時(shí)間。不能一蹴而就。
  • 關(guān)于舒適區(qū),學(xué)習(xí)區(qū)和恐懼區(qū)的理論

理論

我學(xué)習(xí)Android的一些套路

  • “舒適區(qū)”, 對于你來說是沒有學(xué)習(xí)難度的知識或者習(xí)以為常的事務(wù),自己可以處于舒適心理狀態(tài)。
  • “學(xué)習(xí)區(qū)”,對自己來說有一定挑戰(zhàn),因而感到不適,但是不至于太難受。
  • “恐慌區(qū)”,超出自己能力范圍太多的事務(wù)或知識,心理感覺會嚴(yán)重不適,可能導(dǎo)致崩潰以致放棄學(xué)習(xí)。

對于一個(gè)人來說,最理想的狀態(tài)是處于“學(xué)習(xí)區(qū)”,學(xué)習(xí)具有適當(dāng)挑戰(zhàn)性的東西, 一段時(shí)間后,“學(xué)習(xí)區(qū)”會慢慢變?yōu)?ldquo;舒適區(qū)”, “舒適區(qū)”越變越大, 而一部分的“恐慌區(qū)” 也會相應(yīng)變成“學(xué)習(xí)區(qū)”。

責(zé)任編輯:未麗燕 來源: 技術(shù)小黑屋
相關(guān)推薦

2018-01-03 10:32:21

面試經(jīng)驗(yàn)套路

2017-05-02 21:08:35

開發(fā)架構(gòu)工程師

2023-10-31 07:39:36

2011-07-13 09:13:56

Android設(shè)計(jì)

2014-03-17 10:10:58

CC++編程書籍

2017-07-18 16:14:06

FileProvideAndroidStrictMode

2019-08-01 12:56:00

Python代碼記錄

2017-05-10 14:49:52

Kotlin語言Java

2013-12-24 14:50:39

Ember.js框架

2015-12-30 11:14:57

前端工具

2021-12-22 10:49:42

架構(gòu)運(yùn)維技術(shù)

2019-09-17 09:21:01

2018-06-14 09:35:35

2020-02-03 09:09:23

機(jī)器學(xué)習(xí)ML深度學(xué)習(xí)

2013-03-18 10:24:50

系統(tǒng)架構(gòu)

2018-07-23 12:03:01

2020-12-04 09:11:45

Python加密文件爆破字典

2010-05-12 17:45:01

IIS 服務(wù)器

2009-08-19 16:59:25

C# 操作符

2010-05-11 19:01:11

Unix系統(tǒng)
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號