昨天晚上出去和幾個朋友交流了一下。聊了很是多,思考了一下這一年學習技術的經歷,趁着在宿舍養病,將本身的想法記錄了下來。java
從開始決定當碼農到現在將近兩年零三個月,起初是因爲本身專業的科研不是本身想象中的那樣,加之對程序猿的羨慕和崇拜,因而就走上了碼農的不歸路。做爲非科班出身的學生,和計算機院的學生比起來有先天的劣勢,好比好多的基礎課程未學習、周圍的編程氛圍太差等等,然而其實:正是因爲不是科班學生。咱們比別人更努力,更願意付出時間去學習。android
去年四月底開始學android,當時是由於實驗室項目(不是作應用層),今年6月份開始學了一個多月iOS,移植了寫在android上的功能。c++
今年作了三個商業性質的軟件,1月份作了我第一個商業項目,4月份作了一個供路由器使用的app。八月份作了比較大的一個項目模塊相似於茄子快傳/QQ面對面傳文件。800多萬的用戶。面試
站在今天的角度來審視這一年走過的路,用一句話來總結就是:認爲何都沒幹呢,一年就過去了!算法
隨着時間的發展,我對一些東西也有深的認識。就拿android開發來講。編程
android開發學起來很是簡單。上手很是easy,高中生也可能會作,但是作android難道不過拖幾個控件,擺幾個layout或者使用幾個美麗的開源框架能作個還說得過去的手機app麼?顯然不是的。設計模式
使用工具,使用輪子來拼湊產品不過最主要的要求,深刻原理纔是更重要的,不僅要知其然,更要知其因此然!api
好比android中的各類manager,進程間通訊Binder,view視圖的繪製,觸摸事件的分發,消息機制,view動畫等等。假設不去研究。不去看原理,作一段時間就會遇到瓶頸期,因爲會發現android開發就是接口api的調用,你可能會傻傻的以爲手機屏幕上顯示的一個界面就是activity,甚至都不知道傳說中的Java程序的啓動類main函數在哪。還有因爲android自帶的控件比較醜。作項目的時候會使用一些第三方的控件、效果,不能只會直接拿來用這些。在達到必定的水平以後,要試着本身來實現一些好的效果,不只提升本身的水平,可能還會造福他人。在一個就是使用第三方的開源框架工具,比方經常使用的ImageLoader,Volley,他們到底是怎麼實現的呢?這些都是用來學習的最好的資料啊!固然我眼下還沒研究這兩個,不過接下來確定要看看。緩存
因此我體會最深入的就是。作一門技術,會用僅僅是最主要的要求。會使用很是easy,難的是要能深刻究竟層的原理。必定要研究的深刻。知其然,知其因此然,固然並不是讓所有人去反複製造輪子。而是在製造輪子的過程當中,對本身技術的提高絕對是很是很是快的。事實上團隊開發中也有更重要的好比編碼規範、風格,模塊的解耦合等等。這個另當別論。之後工做了就很是少有時間去研究了,跟着產品迭代的節奏會很是少有時間去學習。因此必定要珍惜現在的時間。安全
java是作android的基礎,其實剛開始學android的時候。個人java基礎並不是很好,好多都是依據c++的類比大體瞭解了一下。也是在今年。好好的把java的相關知識研究了一下,對語言的學習也不能只停留在知道怎麼用的層次。照着教學視頻能實現各xx系統沒什麼用,基礎才最重要。有時間最好去研究其深層的緣由,這絕對是故意而無害的。比方java的集合詳細是怎麼實現的?固然這和學過的數據結構是同樣的。不過jdk的開發人員封裝的更好,代碼更加嚴謹,研究這些源碼不不過對數據結構的複習仍是對大牛的編程思想風格的學習。還有假設不看代碼,怎麼知道hashtable和vector爲何是線程安全的,假設不懂原理。怎麼知道hashmap是亂序的treemap是有序的?還有java中高級一點的主題NIO(這是我作相似於茄子快傳/QQ面對面快傳功能的基本技術)、併發編程。不要以爲作android又不是作後臺server,學這些用處不大,這就大錯特錯了。
其實這些知識都是頗有區分度的,也是很實用的。再深刻java要學的固然就是java虛擬機,這也是近期正在研究的內容,裏面關於內存空間劃分、垃圾回收、類載入的過程等等都是很很實用的東西。好比。能看懂字節碼,對理解類、對象的初始化過程就有很大幫助。
由於下一年就要找工做,因此接下來學習的東西會更偏向於基礎知識。
android部分要在研究一些開源框架,圖片緩存載入庫ImageLoader。Volley通訊庫和一些框架層的源代碼。
java會依照java面試寶典上的內容再回回想一下java的小知識,繼續看深刻理解java虛擬機。
tcp/ip:事實上做爲學通訊的,這部分掌握較好,只是還要認真看看。
算法:以前已經將數據結構還有常見的排序算法寫了一遍並且整理在了博客。因爲我不想在基礎知識還不熟悉的狀況下就去刷題。接下來就要狂刷題,看劍指offer,編程之美。
儘管我很是反相應試教育。
操做系統:看一本操做系統的書/視頻。
設計模式:事實上以前已經研究過一部分設計模式,android中最常用的觀察者模式、工廠模式,java I/O的裝飾者。集合中的迭代器等等。後面還要再學習幾種。
另外,再深刻挖掘曾經所作項目中的相關問題。
幹不論什麼一件事情,都不可避免的會走一些「彎路」,可是這是彎路差點兒是非走不可的,因爲不論什麼事情。你不經歷永遠體會不到。更況且。所謂的彎路並不必定是彎路,不論什麼走過的路,犯過的錯,都會成爲往後成功的墊腳石。記得前段時間看知乎上有個問題:你有什麼道理懊悔沒有早點知道?從這個角度來看,個人回答是:看書,看經典書。
經典書籍絕對是最好的知識寶庫,曾經沒意識到看書的重要性。
其實當真正研究了一本書,就可以對相關方面有一個全面的掌握,更基本的是還能對一些問題有更深入的看法。經常說的一句話:光陰似箭歲月如梭時光荏苒如白駒過隙通常。現在最大的感觸就是時間過的真的好快,然而過去已經沒法掌控。那麼僅僅有把握好當下。時間過得很是快,必定要勤奮。
如下羅列一些我看過的java相關的很是不錯的書。有些書不必定全然看了。
Thinking in Java
Java併發編程實戰
Java Nio
深刻理解java虛擬機
深刻理解android內核設計思想
算法導論(前面部分)
TCP/IP 電子科大楊寧老師的視頻
設計模式之禪
effective java
另外一些我沒看過的,但是評價很不錯的書
Java核心技術卷1/2
Java併發編程的藝術(已購買)
Android開發藝術探索(看了文件夾就感受至關棒,絕對是好書)
鳥哥的私房菜(學android仍是要掌握一些Linux的)
hotspot實戰(翻過pdf,還不錯)
* *以上僅僅是我我的的一些觀點,假設有什麼不妥之處還請諒解**