序言
本文主要面向的目標(biāo)人群:剛畢業(yè)進(jìn)入項(xiàng)目組,需要盡快上手項(xiàng)目的小伙伴俊鱼。本文著重于快速上手汛聚,較少的涉及到原理锹安。
寫本文的原因主要有兩個(gè),一個(gè)是深知自己獨(dú)自摸索的痛苦倚舀,所以想分享一下經(jīng)驗(yàn)給剛開(kāi)始工作的小伙伴一個(gè)參考叹哭,少走一些彎路;另一個(gè)就是給別人講如何快速上手項(xiàng)目時(shí)痕貌,有一些收獲风罩,整理出來(lái)做個(gè)備份。
當(dāng)然舵稠,我還想騙幾個(gè)贊(哈哈哈哈~)
個(gè)人感觸:剛開(kāi)始的時(shí)候不要追求太高深的原理超升,盡快上手才是正道,工作中不會(huì)給你那么多的時(shí)間讓你把每一個(gè)知識(shí)點(diǎn)研究透徹再去開(kāi)始做項(xiàng)目哺徊。但是當(dāng)你上手之后一定要從頭開(kāi)始研究原理室琢,切記!只有在理論的指導(dǎo)下唉工,你的實(shí)踐才能更深層次的去進(jìn)行研乒,否則你可能永遠(yuǎn)只是個(gè)寫增刪改查的搬運(yùn)工。理論知識(shí)決定了你看問(wèn)題的深度與廣度淋硝,理論無(wú)用論千萬(wàn)不要信雹熬。
PS:本文只是個(gè)人的一些經(jīng)驗(yàn),只有參考價(jià)值谣膳,不保證都是對(duì)的竿报,如發(fā)現(xiàn)問(wèn)題請(qǐng)私信。
適合自己的,才是最好的继谚。
準(zhǔn)備工作
思想準(zhǔn)備
你做好加班的準(zhǔn)備了嗎烈菌?
需要知道的概念(不需要深入了解,但一定要知道有這么個(gè)東西)
- SSH(Struts,Spring,Hibernate)
- SSM(Spring,SpringMVC,MyBatis)
據(jù)我所了解的,現(xiàn)在用的更多是SSM芽世,MyBatis使用起來(lái)也相對(duì)來(lái)說(shuō)更簡(jiǎn)單一點(diǎn)挚赊,這個(gè)具體要看項(xiàng)目組使用的技術(shù)
需要掌握的軟件最基本操作
- 版本管理:Git或SVN操作,GIT基本命令可見(jiàn)我的另一篇博客Git 最基本的操作命令
- 克录闷啊(clone):將遠(yuǎn)程倉(cāng)庫(kù)代碼克隆到本地
- 拉溶睢(pull):拉取最新代碼
- 提交(commit):提交代碼
- 上傳(push):提交到遠(yuǎn)程倉(cāng)庫(kù)
- 新增(add)
- Maven
- Maven安裝、配置
- Maven簡(jiǎn)單使用(*.pom如何引入Jar依賴)
- 配置連接公司的私有庫(kù)旺矾、打包蔑鹦、發(fā)布
- Eclipse下Maven插件配置(最新版本的Eclipse一般內(nèi)置插件,只需要配置一下就好)
- Eclipse
- 常用快捷鍵箕宙,可以極大地提升編碼效率嚎朽,而且看上去很帥,哈哈
- Build Path設(shè)置
- 字符編碼設(shè)置(中文亂碼的問(wèn)題一般是這個(gè)引起的)
- JDK安裝柬帕、環(huán)境變量設(shè)置
- 數(shù)據(jù)庫(kù)--MySQL哟忍、SQL Server、Oracle等 數(shù)據(jù)庫(kù)連接雕崩,一般都會(huì)有用于開(kāi)發(fā)的數(shù)據(jù)庫(kù)魁索,直接連接即可
核心技術(shù)點(diǎn)
- Spring
- Spring MVC或Struts(主要先了解Spring MVC模式及開(kāi)發(fā)流程)
- 數(shù)據(jù)庫(kù)操作:Mybatis(常用)或Hibernate或JDBCTemplate(Spring自帶)
- MVC(Model View Controller) 知道怎么回事即可,具體原理可上手之后研究盼铁,
- model-模型
- view-視圖
- controller-控制器
開(kāi)發(fā)流程
這里所說(shuō)的開(kāi)發(fā)流程基本試用大部分的開(kāi)發(fā)項(xiàng)目粗蔚,希望對(duì)讀者有幫助。
基本流程:需求分析—功能設(shè)計(jì)—理清邏輯—寫代碼
- 需求分析:別人提供一個(gè)需求的大致描述饶火,需要自己去分析需求的可行性以及需求實(shí)現(xiàn)的基本思路鹏控,最好是在紙上寫寫畫畫,方便理清思路以及防止死不承認(rèn)(嗯肤寝,相信我当辐,這很重要!)
- 功能設(shè)計(jì):根據(jù)需求確認(rèn)代碼需要實(shí)現(xiàn)幾個(gè)功能鲤看,然后功能組合缘揪,最終滿足需求。這個(gè)階段需要測(cè)試技術(shù)實(shí)現(xiàn)的可能性义桂,比如做定時(shí)功能找筝,你可能需要首先寫一下定時(shí)實(shí)現(xiàn)的Demo測(cè)試下技術(shù)可能性再去具體實(shí)現(xiàn)整個(gè)功能。
- 理清邏輯:功能設(shè)計(jì)完成之后慷吊,需要理清寫代碼時(shí)的邏輯袖裕,功能優(yōu)先級(jí),功能模塊的解耦等溉瓶。個(gè)人感覺(jué)這一塊很重要急鳄,經(jīng)常見(jiàn)有人代碼寫到一半發(fā)現(xiàn)邏輯不對(duì)需要重新返工谤民。
- 寫代碼:Model實(shí)體—Dao數(shù)據(jù)庫(kù)操作--Service業(yè)務(wù)邏輯--Controller控制器(Action)
學(xué)習(xí)流程:
上手最快的方式就是模仿別人的代碼。因?yàn)槊總€(gè)項(xiàng)目組的差異性疾宏,沒(méi)有什么通用性的模板去靠张足,所以融入項(xiàng)目最好的方式就是看下項(xiàng)目組前輩的代碼,然后嘗試著去模仿坎藐。
具體做法就是找一個(gè)已經(jīng)開(kāi)發(fā)完的簡(jiǎn)單功能兢榨,看代碼,其中Service的具體代碼不需要看懂(涉及業(yè)務(wù)邏輯顺饮,如果不知道具體的業(yè)務(wù)的話很難看懂,只會(huì)浪費(fèi)時(shí)間)凌那,個(gè)人感覺(jué)關(guān)鍵點(diǎn)在于Mybatis的使用兼雄,因?yàn)镴ava Web后端的開(kāi)發(fā)最常做的就是增刪改查了。Controller層很少寫業(yè)務(wù)邏輯帽蝶,只是負(fù)責(zé)跟前端交互(比如前后端傳值赦肋、API提供等)
MyBatis兩種使用方法:
- 直接寫在.java文件上以注解的形式寫SQL
- 方法定義與XML(通俗的講就是寫sql的地方)做映射(mybatis有自動(dòng)生成,
mybatis-generator
励稳,熟悉之后可以研究下佃乘,可以節(jié)省大量的開(kāi)發(fā)時(shí)間)
如何閱讀別人的代碼
因?yàn)槊總€(gè)公司的標(biāo)準(zhǔn)不一樣,所以有些package和方法名的命名不一樣驹尼,最好是跟已有的保持一致
Java Web開(kāi)發(fā)的命名一般是:Model趣避、Dao、Service新翎、Controller(Action)
比如用戶功能的開(kāi)發(fā)可能是:
UserModel程帕、User……(實(shí)體,一般是對(duì)應(yīng)數(shù)據(jù)庫(kù)user地啰,變量名駝峰形式愁拭,比如userName)
UserDao、UserMapper:數(shù)據(jù)庫(kù)操作亏吝,一般對(duì)應(yīng) UserMapper.xml
UserService(接口定義)岭埠、UserServiceImpl(接口實(shí)現(xiàn),寫業(yè)務(wù)邏輯的地方)
UserController(或*Action) 控制器蔚鸥,一般跟前端的交互在這惜论,比如前端調(diào)用的接口就是在這定義的。
學(xué)會(huì)去問(wèn)
不要怕問(wèn)株茶!不要怕問(wèn)来涨!不要怕問(wèn)!
技術(shù)這個(gè)領(lǐng)域太龐大了启盛,沒(méi)有人敢說(shuō)掌握了所有的東西蹦掐,即使是在你所擅長(zhǎng)的領(lǐng)域技羔。每個(gè)人都有無(wú)知的時(shí)候,所以不要覺(jué)得自己?jiǎn)杽e人丟臉卧抗,有時(shí)候你糾結(jié)的問(wèn)題都是些很簡(jiǎn)單的問(wèn)題藤滥,只要你理清楚了剩下的很多問(wèn)題都會(huì)很容易的解決掉。
做技術(shù)的人社裆,不是在解決問(wèn)題就是在去解決問(wèn)題的路上~
當(dāng)然拙绊,不要怕問(wèn)不代表著什么都要問(wèn),問(wèn)別人也是需要技巧的泳秀,否則問(wèn)多了別人也會(huì)煩的标沪。
要搞明白什么該問(wèn)什么不該問(wèn)
- 什么該問(wèn)?
- 一定是你經(jīng)過(guò)思考的問(wèn)題嗜傅,而不是一看不會(huì)就跑去問(wèn)金句,這個(gè)很容易給別人留下不好的印象。
- 你覺(jué)得有價(jià)值的問(wèn)題吕嘀,只要是你覺(jué)得有價(jià)值而且自己解決不了的都可以問(wèn)违寞,問(wèn)題沒(méi)有低級(jí)高級(jí)之分,只要是你求知路上的攔路虎對(duì)你來(lái)說(shuō)都是大問(wèn)題偶房。如果是自己覺(jué)得沒(méi)什么價(jià)值但是又想知道的趁曼,可以在平時(shí)吃飯閑聊的時(shí)候問(wèn)一下
- 什么不該問(wèn)?
- 網(wǎng)上一搜答案一大堆的基礎(chǔ)問(wèn)題棕洋,比如Maven如何安裝挡闰,這種問(wèn)題網(wǎng)上太多了就不要再去浪費(fèi)別人的時(shí)間了
- 自己都不知道自己的問(wèn)題是什么的。說(shuō)的模模糊糊還需要?jiǎng)e人自己去理解的問(wèn)題最好別問(wèn)掰盘,除非這個(gè)問(wèn)題很重要而且確實(shí)是你自己不知道該如何表述尿这。
怎么問(wèn)
- 找著問(wèn)題所在,上網(wǎng)搜下嘗試自己解決庆杜,如果超出了自己預(yù)期時(shí)間再去問(wèn)別人(如果很長(zhǎng)時(shí)間沒(méi)解決射众,千萬(wàn)別浪費(fèi)時(shí)間了,耽誤進(jìn)度比丟臉問(wèn)題大多了)晃财。
- 如果是程序報(bào)錯(cuò)叨橱,一定要將具體的報(bào)錯(cuò)信息截圖或者通過(guò)別的方法記錄下來(lái),不要直接問(wèn)什么“我的程序怎么跑不起來(lái)”這種問(wèn)題断盛,說(shuō)實(shí)話罗洗,有一萬(wàn)種可能會(huì)導(dǎo)致你程序跑不起來(lái)的方法,別人不可能挨著給你排查钢猛。對(duì)于一個(gè)程序員來(lái)說(shuō)伙菜,日志是很重要的東西,一個(gè)報(bào)錯(cuò)的日志截圖絕對(duì)會(huì)讓別人更愿意幫你解決問(wèn)題
學(xué)會(huì)網(wǎng)上搜索
肯定很多人會(huì)很奇怪命迈,難道我一個(gè)高材生還不會(huì)百度贩绕?說(shuō)實(shí)話火的,有可能你真的不會(huì)。搜索的時(shí)候一定要搜問(wèn)題的關(guān)鍵詞馏鹤,而不是漫無(wú)目的的檢索。
比如:數(shù)據(jù)庫(kù)連接報(bào)錯(cuò)娇哆,有的人直接網(wǎng)上搜“數(shù)據(jù)庫(kù)為什么連不上”湃累,這種問(wèn)題網(wǎng)上都有上億的結(jié)果,等你找到你自己的問(wèn)題答案天估計(jì)也黑了碍讨。找到報(bào)錯(cuò)信息治力,直接搜索報(bào)錯(cuò)信息絕對(duì)是事半功倍。如果百度等沒(méi)找到勃黍,可以直接去Stack Overflow上找琴许,絕大部分的問(wèn)題都能在上面找到答案,不過(guò)是全英文的網(wǎng)站溉躲,需要一定的英文功底。
關(guān)于搜索引擎:英文報(bào)錯(cuò)信息益兄,Google會(huì)好一點(diǎn)锻梳。如果是中文問(wèn)題,百度搜索結(jié)果可能更好一點(diǎn)净捅,一些中文博客都包含在內(nèi)疑枯。但是總體來(lái)說(shuō)Google搜索質(zhì)量高一點(diǎn)
題外話-自我成長(zhǎng)
永遠(yuǎn)不要滿足于自己的現(xiàn)狀,在剛開(kāi)始工作的前兩年蛔六,是你快速成長(zhǎng)的階段荆永,這個(gè)階段你可能會(huì)產(chǎn)生自己已經(jīng)“無(wú)敵”了的錯(cuò)覺(jué),覺(jué)得自己什么都會(huì)了国章,世間的一切盡在掌握中具钥。當(dāng)你有這種錯(cuò)覺(jué)的時(shí)候,說(shuō)明你該吃藥了液兽。
個(gè)人感覺(jué)對(duì)成長(zhǎng)最有幫助的幾個(gè)方法:
-
讀書
不管是什么書都可以讀,當(dāng)然玄幻之類的小說(shuō)就算了。技術(shù)書挣棕、思維能力鍛煉的書要著重讀一下驮樊,好處還是很明顯的。
-
交流柑晒、分享
在技術(shù)這個(gè)領(lǐng)域欧瘪,交流分享絕對(duì)是能讓你快速成長(zhǎng)的一大利器。一個(gè)技術(shù)氛圍很濃的圈子是很重要的匙赞,沒(méi)有的話可以嘗試著去寫博客佛掖,在網(wǎng)絡(luò)上找志同道合的人
-
學(xué)著做筆記
很多問(wèn)題都是會(huì)重復(fù)遇到的妖碉,所以將自己遇到的一些問(wèn)題紀(jì)錄下來(lái)有助于避免重復(fù)踩坑
另外整理學(xué)習(xí)筆記,可以加深記憶苦囱、便于后續(xù)查看嗅绸。推薦兩個(gè)做筆記軟件:印象筆記、OneNote