科技改變生活 · 科技引領未來
第一周:熟悉 Java基礎
要積極探索 Java的使用方法,盡可能多的完成下面這些任務
第一天 基本概念(4小時): java程序員需要了解的底層知識,變量,輸入,條件語句
列表,for循環,while循環,函數,數組,枚舉,導入模塊,基本語法,編程規范,搭建環境,依賴框架等
第二天 基本概念(5小時): 硬件和操作系統的底層知識,操作系統需要處理如管理與配置內存、決定系統資源供需的優先次序、控制輸入設備與輸出設備、操作網絡與管理文件系統等基本事務
第三天 簡單編程問題(5小時): 操作系統之進程管理,Linux系統的內存映射內核同步方法及用匯編啟動內核 存儲分配、存儲共享、存儲保護 、存儲擴張,文件存儲空間的管理、目錄管理 、文件操作管理、文件保護
第四天 中級編程問題(6小時): 虛擬文件系統,文件描述符,IO重定向 , 內核中PageCache、mmap作用、java文件系統io、nio、內存中緩沖區作用
第五天 數掘結構(6小時): ,Socket編程BIO及TCP參數,C10K問題及NIO精講IO模型性能壓測,網絡編程之多路復用器及Epoll精講操作系統之進程管理
Linux系統的內存映射內核同步方法及用匯編啟動內核
第六天 面向對象編程 (6小時): 詳解線程池:自定義線程池,JDK自帶線程池,ForkJoin, 詳解線程池:自定義線程池,JDK自帶線程池,ForkJoin,單機壓測工具JMH,單機最快MQ - Disruptor原理解析
第七天 算法(6小時): 單機高并發應該掌握的線程基礎:線程狀態,異常與鎖等, 解析自旋鎖CAS操作與volatile ,JUC包下AtomicXXX類與新的同步機制:Latch Semaphore等,LockSupport,高頻面試題,AQS源碼,以及源碼閱讀方法論 ,強軟弱虛四種引用以及ThreadLocal的原理與源碼線程池可用的各種高并發容器詳解:CopyOnWriteList,BlockingQueue等
第二周:開始軟件開發(構建項)
軟件開發需要在會編程語言的基礎之上學習更多邊緣知識
第一天 開發工具下載與安裝(8小時): 軟件開發工具是用于輔助軟件生命周期過程的基于計算機的工具。通常可以設計并實現工具來支持特定的軟件工程方法,減少手工方式管理的負擔。下載idea和eclipse等
第二天 項目選型與制定開發計劃(6小時): 在軟件項目管理過程中一個關鍵的活動是制定項目計劃,它是軟件開發工作的第一步。 項目計劃的目標是為項目負責人提供一個框架,使之能合理地估算軟件項目開發所需的資源 、經費和開發進度,并控制軟件項目開發過程按此計劃進行。 在做計劃時,必須就需要的人力、項目持續時間及成本作出估算。這種估算大多是參考 以前的花費作出的。軟件項目計劃包括二個任務:研究和估算。即通過研究確定該軟件 項目的主要功能、性能和系統界面。
第三天 編寫代碼試運行(5小時): 為了使計算機能夠理解人的意圖,人類就必須將需解決的問題的思路、方法和手段通過計算機能夠理解的形式告訴計算機,使得計算機能夠根據人的指令一步一步去工作,完成某種特定的任務。這種人和計算體系之間交流的過程就是編程。
第四天 解決bug迭代項目(6小時): 在工作中,由最初的不夠細致,經過反思和總結,能夠做到更加細致。經過思考明白了工作時間是自己的,因而提高工作效率可以為自己節省很多的時間。態度決定一切,好的態度有助于工作更好地完成,團結協作可以起到事半功倍的效果。經過向大家的學習,在工作完成上更加規范,好的規范除了能讓工作完成得更好以外,也能夠讓自己在學習上更有方向性,能夠更側重地學習到更多。開發任務完成后,以及在遇到問題后學會了總結,這不僅起到學習的作用,也能夠避免同樣的問題以后再犯,便于查找。
第五天 引用新技術完成更高級功能(6小時): 百度云,嗶哩嗶哩,優酷開放平臺,提供視頻播放地址,淘寶客,京東聯盟,多多客,提供代金券領取,支付寶,微信實現 認證,支付,退款等,淘寶開放平臺,京東智能,百度智能,小米開放平臺,提供服務端接口
第六天 部署一臺小型機線上運行 (6小時): 部署的工具也有很多,在我本次的作業中使用的是jenkins,通過在本地啟動一個虛擬機然后運行jenkins,將其作為目標環境使用jenkins的pipeline進行部署
第七天 總結軟件開發遇到問題與下一步計劃(6小時):就本次項目開發過程中,我發現如果要開發項目就一定要有合理規范的開發規范和開發流程。我認為不論是個人還是團隊合作都應該有開發規范和開發流程,也一定要嚴格地遵守它,否則在開發過程中會產生許多的問題。
第三周:讓自己成為一名程序員
想要成為一個合格的程序員,往往需要滿足以下幾點要求:
第一天 思想上跟隨程序員的日產工作(6個小時)對于很多程序員來說,寫出來的代碼可能這里因為不小心漏了什么,那里因為不小心沒有測試出一個Bug,這里少個符號,那里多個空格等等,因為馬虎而出現的問題不在少數。所以,細心,能夠很有效地減少開發周期,為整個項目的推進起到良性的作用。
第二天 程序員需要具備的硬性指標(8小時)對于一個程序員來說,你的思維邏輯有些地方其實需要異于常人的。最經典的笑話就是:女朋友讓程序員買包子,如果遇到賣西瓜的,就買一個。結果就是,程序員買了一個包子回家。為什么?因為他遇到了賣西瓜的。這個雖然是一個笑話,但是在代碼層面,業務流程圖上,確實可能需要這樣來理解的。所以,一個程序員首先需要培養屬于程序員自身的思維邏輯,不然,你對于設計文檔的理解就可能有問題。
第三天 程序員安身立命的根本技能(8小時)
你需要熟練的運用一種或多種語言,并且能夠用它寫出所需要的內容。
A和B聊天,
A問B:“你都會哪些語言?”
B說:“我會中文、英文、日文。
那B是普通人;
B說:“我會Java,PHP,C。”
那B才是程序員。
你一定會說我會說:我會C,C++,C,JAVA,PHP,Python,,,,和中文,英文,韓文,日文,俄文,法文,普通話,上海話,廣東話。等等
第四天 文檔能力 (8小時)不會寫文檔的程序員不是一個好程序員。雖然一個程序員寫得最多的是代碼,且幾乎很少有程序員是心甘情愿地寫文檔,但是一個程序員必須具備一定的文檔能力,
第五天 編碼習慣 (8小時)什么是編碼習慣?簡單點說就是,注釋,命名規范,編碼規范為什么我們必須寫注釋?因為一個月以后,你可能看不懂你的代碼了。為什么要遵守命名規范?因為一個月以后,你可能看不懂你的代碼了。為什么要遵守編碼規范?因為一個月以后,你可能看不懂你的代碼了。你都看不懂你的代碼了,其他人還能看懂?更不可能了。所以,一定要習慣寫注釋,按照命名規范和編碼規范來嚴格完成。
第六天 協作溝通能力 (8小時)研發并不是一個人的戰斗,而是一群人的戰爭。一定要分工配合,不要只是顧自己。不然團隊里的其他人被干掉了,你也活不長。
第七天 學習能力 (8小時)這個可以說是決定程序員未來的能力,我見過很多30多歲的程序員,除了CRUD,其他的幾乎什么都不懂,他難道10年時間什么都沒有學嗎?不,他學了,只是他學習的只是業務方面的知識,對于技術方面的知識,僅僅學習他需要的。
第四周:認真考慮工作(實習)問題
已經學習一段時間Java的你如何制定明確的職業發展規劃?
第一天 學習簡歷制作和面試技巧(6小時)簡歷是求職的第一關,如果簡歷做得都不好,那么第一批就會被淘汰。在春招實習和秋招階段,會有大量的簡歷進入系統,HR最開始篩選的標準一般是簡歷的格式是否合理,個人信息是否完善。在給圖森和字節跳動做校園大使的1年多時間里,我收到了近5000份簡歷,最后成功獲得面試機會的不足10%,90%的人倒在了簡歷關
第二天 求助一些有豐富經驗的老師或者同學 (8小時)其實很多程序員走到這個階段已經在做軟件設計師工作了。這是絕大多數程序員發展的必經之路。因為,程序員在編程序的時候,一方面會實現設計的功能,另一方 面 也在對設計有一個理解、認識、熟知的過程。進而慢慢地從學習別人設計,轉向到自己參與或獨立設計。如果這個程序員真的非常非常喜歡程序員這個職業,
第三天 自我介紹并準備筆試(8小時)也有一些程序員工作機遇比較好,不但負責了項目的設計工作,而且負責了項目管理工作。對項目經理這個工作有了一定的嘗試。因此,這類程序員可以審視一下自己,是否合適這項工作。如果自己對這種工作比較滿意,而且具備項目經理的要求,則可以向項目經理這個方向發展。項目經理承擔著項目管理的職責,對項目負責 要責任。它和程序員的作用也不相同,
第四天 準備好要面試的崗位 (8小時)很多程序員希望自己能成為公司中的主管、經理、老總、老板,這樣無論是收入和在公司的地位都相對比較高一些。另外,一方面程序員可能厭倦了年復一年的編程工作,對工作產生了抵觸情緒,希望能擺脫這種步步緊逼的工作狀態。走向管理者其實要求程序員要比一般人做更多的準備,
第五天 開始尋找需要的崗位 (8小時)我一直說,程序員最大的缺點之一,就是眼光只盯在技術上。程序員在入門階段和成長階段,這種情況還是屬于正常的。但是,到了成熟階段這種缺點將嚴重影響了 程 序員的發展。程序員在工作中不免會接觸到用戶,不免會了解到用戶的需求。從而了解到軟件實際發揮的作用,進而了解了自身的工作價值所在。有的程序員則固步 自封,不愿意和外界打交道,
第六天 調整心態準備好面試 (8小時)當然也有一些程序員惰性比較大,滿足于現狀,享受著眼前的勝利果實,也無可非議。對待這些程序員,我們不要強求他們改變自己的想法,我建議是原地發展,把本職工作做得更好,把自己的技術水平往上再提高一步。在這個過程中他們的能力和自信心都會得到提高,他們的想法不會一直一成不變的。磨刀不誤砍柴功,刀快了自然會去砍柴的。
第七天 總結此次學習計劃結果(8小時)
不管做哪一行,都該盡早做好職業規劃,人都是需要有一個目標去激勵自己,Java程序員更是如此。朝著一個目標逐步提升自身實力總會比原地打轉好,相信聰明的你該知道怎么做。
高龍