第一次在簡書上寫心得,還有一點小小的緊張。總的來說,這一年從開始復習到找到工作都過得比較充實。在學習上有不少的長進,特別在自己所熟悉的Java領域。在這里對剛過去的2016年的個人學習情況進行一些總結。
回顧過往
在總結2016年的工作之前,先回顧一下之前個人的學習情況。
入門
在上大學初期,雖然通過對C語言的學習入了軟件開發的“門”,但是依然完全不了解程序員的世界,當時眼前可謂是一片迷茫。隨后有幸在一位大牛舍友潛移默化的影響下,漸漸對我們程序員的世界有所了解,也同時逐漸有了自己明確的學習方向。大學期間學習過Html、CSS3、JavaScript、C++、Java、Java Web、Struts2、Spring、Hibernate和JUnit以及MySQL,了解過XML、PHP、Python、GitHub和Maven以及響應式Web設計(比如,Bootstrap和Foundation),但沒有做過實際的項目。
項目經驗
大四下半學期和研一上半學期的時候去過企業(甲方)做過2個多月的需求調研、需求分析和編寫需求文檔以及3個多月C# BS項目安監模塊的編碼工作。該項目讓我熟悉了軟件開發的整套流程并鍛煉了我的團隊協作能力。研一下半學期參與了某電商平臺的SSH項目的開發,主要負責保證金管理管理模塊的設計、編碼和測試。該項目讓我對之前學習的SSH有了直觀的體驗和更為深入的理解。研二上半學期主導了某活動管理平臺的SSH項目的開發,主要負責項目整體的設計和用戶權限模塊的編碼、測試和項目遠程發布以及遠程調試工作。該項目我讓學會了使用Spring Security、CXF和Junit4以及OAuth2.0等技術,并且鍛煉了我分析問題和解決問題能力。
復習
從2016年3月到同年9月進行了全面的復習,可以按所屬的技術類別分為以下六類:Java 基礎、Java Web、數據庫、數據結構與算法和工具類以及面試綜合類。下面簡要說明每個類別復習的情況。
Java基礎
- 《Java 編程思想》(第4版)和《Java核心技術 卷1 基礎知識》(第9版)跳過其中的圖形和 applet 相關章節,均通讀過2遍。每次重新閱讀一次,心理就會更踏實一些。平時遇到不解的基礎問題,通過查閱這兩本書和Java API Doc均能基本得到解決。建議以后遇到不太清楚的知識點再查閱相關章節,而不用每次都通讀全書。這樣做有兩個好處,一是避免自己陷入對熟悉事物再次學習的厭煩情緒里,二是節省時間。若時間比較充沛,這兩本書還是有再次通讀的必要。
- 《Effective Java》( 中文第二版)通讀過1遍,粗略看過1遍。這本書的每個條目(可以理解為建議),作者均解釋的非常詳細(絕對讓你“知其然知所以然”)并且每個條目均特別實用能把你從對Java語言膚淺的認識中拉回到實用的生產環境中。值得再次通讀。
- 《Java并發編程實戰》通讀過1遍,粗略看過1遍。Java并發編程方面的權威之作,讓我對線程、同步、可見性和線程池以及線程安全集合類等有了更為深刻的理解。值得再次通讀。
- 《JAVA解惑》和《編寫高質量代碼:改善Java程序的151個建議》均通讀過1遍,粗略看過1遍。這兩本書針對每個解惑或建議的篇幅均比較短小,語言簡潔幽默,讀起來相對《Effective Java》來說比較輕松有趣。每個解惑或建議均從Java語言的細節方面來充實你,若面試前通讀這兩本書,絕對讓你在很多Java面試題面前無懈可擊。建議以后面試前通讀。
- 《深入理解Java虛擬機 JVM高級特性與最佳實踐》(第2版),針對第二部分的第2章和第3章和第三部分的第6章和第7章,讀過2遍。閱讀后,對Java虛擬機的內存分配、垃圾回收策略和垃圾回收器以及類加載機制有了深入的理解。至于該書中的其它章節需要靜心閱讀和實驗。該書值得深入學習和思考。
Java Web
因為復習時想應聘Java服務端研發工程師或Java Web研發工程師,所以比較偏向后端的技術,前端技術涉及較少。(因為之前學習過Html5、CSS3和JavaScript,基本可以應付后端相應的配合開發。)
- 《圖解HTTP》通讀過2遍。該書通俗易懂,詳細地描述了HTTP請求和響應的過程和請求和響應的首部信息等相關細節,有助于以后Web開發中的調試工作。值得初學Web前后端的同學閱讀。若需要詳細了解HTTP的同學可以閱讀《HTTP權威指南》。
- 《深入淺出Servlets&JSP》通讀過2遍,粗略復習過1遍。該書是Java Web的入門書籍,內容比較簡潔、有趣和通俗易懂,具有Head First系列書籍的一貫風格。該書詳細介紹了Servlet、JSP、EL表達式、JSTL和請求與響應以及會話等相關細節。這些Java Web知識是以后學習SpringMVC或其他MVC框架的基礎。值得初學Java Web的同學閱讀。
- 《深入分析Java Web技術內幕 修訂版》通讀過1遍,粗略復習過1遍。該書分析或介紹了Java Web開發中常涉及的IO、中文編碼問題、虛擬機、Java Web服務器、SSM、Velocity等技術,有點Java Web簡潔的“文獻綜述”的味道。該書可以給學習Java Web的同學指明了應該學習的Java Web相關技術的方向。值得再次通讀。
數據庫
- 《Head First SQL》通讀過2遍。該書是以MySQL為基礎介紹基本的SQL語句、子查詢和內聯接以及外聯接等。該書是學習MySQL的入門書籍,內容比較簡潔、有趣和通俗易懂,具有Head First系列書籍的一貫風格。值得初學MySQL的同學閱讀。
- 《MySQL技術內幕:SQL編程》通讀過1遍,粗略復習過1遍。該書對MySQL中涉及的相關基礎技術有詳細的介紹,是一本全面的MySQL基礎書籍。值得再次通讀。
數據結構與算法
- 《數據結構與算法分析_Java語言描述》(第2版)前8章均讀過2遍。該書前8章對常用的數據結構及其中使用的算法均有詳細的介紹,是一本描述數據和算法的基礎書籍。值得再次通讀。
- 《算法》(第4版)讀過該書的第2章(排序)和第3章(查找)2遍。該書這兩章中采用了對比和圖示的方式,分別詳細描述了排序和查找的多種算法,比起單純的數學分析來說更為有趣和簡單。另外本書也是采用Java語言來描述算法的,這對熟悉Java同學來說比較“親切”。值得細細品讀。
工具類
- 《Maven實戰》通讀過2遍。該書對Maven坐標和依賴、倉庫、生命周期、聚合與繼承等知識點進行了全面的介紹,閱讀后就可以對Maven有更加準確的把握,進而可以游刃有余地使用Maven。之前做項目的時候就使用Maven進行依賴管理,只是簡單了解過和看過些許博客。通讀過后對Maven有了更為全面的認識,目前項目中使用Maven進行項目的依賴管理和構建管理,感覺十分方便。建議以后將其作為手冊來參考。
- 《Git權威指南》前4篇讀過1遍,粗略讀過1遍。該書的前4篇對Git產生的歷史、本地使用Git、多人協作使用Git等相關的命令進行了全面的介紹。閱讀后可明確Git相關命令背后所做的工作,對準確地使用Git大有裨益。目前日常學習過程中,常用Git作為版本管理器。
面試綜合類
- 框架類讀過書籍或網站:《Struts2.x權威指南》、《Spring揭秘》、《精通Hibernate+Java對象持久化技術詳解》(第2版)、《Spring Security3》和Web Service以及CXF/MyBatis/Spring/Hibernate/Spring Security官網。
- 面試類讀過的書籍或網站:《JAVA程序員面試寶典》( 第3版)、《劍指offer 名企面試官精講典型編程題》(紀念版)、《XML入門經典》(第4版)和《Java面試寶典》(2016版,電子書)以及牛客網刷題(Java基礎和算法)。
拓展眼界
程序員每天都在面對不斷的變化,如何在這不斷的變化中保持住足夠的“淡定”,取決你是否有足夠的眼界。這眼界可以說是一種修養,具有這種修養才能讓你在面對各種變化的過程中臨危不亂并指導你有價值地學習和解決目前存在的問題。眼界是可以培養的,如何獲取最有價值的資訊從某種程度上決定著你的眼界。
通俗地講,就是靠近牛人并向他們學習。比如,通過程序員常常交流的“圈子”來獲取和篩選高質量的資訊,從而在“圈子”潛移默化地影響下和通過有價值的交流,來提升自己的眼界。
推薦一下,大家常常逛的“圈子”:GitHub、Stack Overflow、開源中國、博客園、CSDN、并發編程網、簡書、SegmentFault、ImportNew、36氪和掘金以及知乎等。
通過這一年來有目的瀏覽的資訊和對優秀博客的拜讀自身體會很深,漸漸對自己學習目標日益明確并緊跟行業內的變化,從而避免了自己做一個井底之蛙或閉門造車。通過大牛們推薦的書籍和博客讓我長進很快,特別自己對將要學習的分布式方面。目前了解了Tomcat的內部原理,Netty的工作機制、阿里RPC Dubbo、ZooKeeper、Nginx和Redis以及ActiveMQ等知識。
小結
雖然9月份末找了一個Java研發工程師的工作,但目前對該工作不太滿意。希望2017年上半年自己的能力再有所提升,從而幫助自己在以后更好地工作和拿到更體面的薪資。在此對2017年上半年的學習進行簡單的計劃:
- 以前學習Java的過程中專注于在“面”上的擴展,現在“面”上以基本成型,應將方向調整為加深對Java的“點”上的深入,比如對NIO、AIO和多線程以及Java 8中新特性等知識的學習和研究。
- Java Web方面,希望掌握Tomcat的工作原理和Nginx的工作機制以及了解Docker。
- 2016年中對數據庫涉及比較少,應在“面”上繼續擴展對MySQL的學習并在夯實MySQL基礎的同時也應涉及MySQL集群等知識。在關注關系型數據庫的同時也應該學習NoSQL數據庫,比如Redis和MongoDB。
- 2016年中對算法與數據結構方面的涉及也比較少。雖然復習過數據結構與算法,但對常用的算法的思想和實現不能完全了然于胸。希望能全面地掌握常用數據結構和算法,讓自己擺脫對數據結構和算法學習和使用的恐懼。
- 開始學習分布式,比如Memcached緩存、負載均衡、Dubbo、ZooKeeper和ActiveMQ以及Netty等技術。
希望自己在2017年再接再厲。