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