去項(xiàng)目中成長(zhǎng)吧!程序員
原創(chuàng)在生活這條路上,雖有‘條條大路通羅馬’這一說(shuō),但是總會(huì)在一個(gè)點(diǎn)上交匯,在編程這條路上,我們剛開始過(guò)著前人播種后人收的的路,但是總有一天我們會(huì)有自己的想法,走自己的路,但不可否認(rèn),在有些問題上,我們又交匯在了一起。
雖然我們剛開始選擇了不同的編程語(yǔ)言,后來(lái)出于編程語(yǔ)言的種種微妙的關(guān)聯(lián),我們又走到了同一個(gè)問題上。今天51CTO的記者以***視角為您講述一個(gè)從項(xiàng)目中成長(zhǎng)的Java程序員的故事,作為編程語(yǔ)言排行榜持續(xù)排名***的Java語(yǔ)言,可想而知其開發(fā)者也并不在少數(shù)。
編程的開端
大多數(shù)人***次接觸到編程語(yǔ)言應(yīng)該是在你大學(xué)課程開始的那一刻,我也不例外,當(dāng)年開了兩門課程,一個(gè)是Java、一個(gè)就是PHP,但是Java當(dāng)時(shí)很火,并且使用廣泛,用的人多了查詢問題也就方便了~那時(shí)Java給我的感覺就像是一個(gè)巨人,感覺就相當(dāng)于站在巨人的肩膀上繼續(xù)前進(jìn),于是我的編程道路就這么開始了。
初級(jí)Java工程師
大學(xué)的課程內(nèi)容我基本已經(jīng)記不清了,只是模模糊糊的記得有一搭無(wú)一搭的聽著,哪里感興趣就多聽聽,回去多寫幾次代碼,但有些深入的地方也確實(shí)讓我覺得有點(diǎn)‘不可理喻’,不過(guò)我知道不懂沒關(guān)系,但是起碼基礎(chǔ)知識(shí)要牢固。就這樣,到了畢業(yè)前的實(shí)習(xí)期,我也算是有了一個(gè)初級(jí)Java工程師的名號(hào)。
真正開始接觸新的語(yǔ)言
剛開始工作時(shí),就是人家讓你干什么,就去干什么,也不是很難,有些問題若是沒思路還可以看看別人的解決方法,或是看看以前公司項(xiàng)目中的一些代碼。慢慢的我開始參與了我的***個(gè)項(xiàng)目,這個(gè)項(xiàng)目也是我***次開始認(rèn)認(rèn)真真的接觸一個(gè)新的語(yǔ)言——JavaScript。JS是個(gè)頁(yè)面腳本語(yǔ)言,很多時(shí)候都要用它,我當(dāng)時(shí)的工作內(nèi)容就是用JS 來(lái)美化網(wǎng)頁(yè)布局和客戶端的信息驗(yàn)證。
JS給我的***印象就是他的華麗,并且我可以輕輕松松的用網(wǎng)上的代碼來(lái)實(shí)現(xiàn)我需要的功能。這時(shí)我才真正意識(shí)到一個(gè)編程語(yǔ)言在工作中是不夠用的,每個(gè)編程語(yǔ)言都是工具,每一個(gè)工具都適合用來(lái)解決特定的問題。具體在工作中使用哪一種,大部分情況都是和項(xiàng)目類型有關(guān)。
于是項(xiàng)目結(jié)束后,我就開始思考我未來(lái)的編程語(yǔ)言之路會(huì)是個(gè)什么方向,這時(shí)一個(gè)跟我一樣做Java的同事,剛開始是為了生活為了工作才使用的JAVA,但他一直喜歡游戲,后來(lái)轉(zhuǎn)了 C++ 去開發(fā)游戲了,其中的原因當(dāng)然是自己的興趣愛好了。就在我猶豫不定學(xué)習(xí)什么語(yǔ)言的時(shí)候,另一個(gè)項(xiàng)目悄然而至。
在項(xiàng)目中成長(zhǎng)
這次是一個(gè)基于XP系統(tǒng)的員工管理項(xiàng)目,我的主要職責(zé)是負(fù)責(zé)管理員模塊以及協(xié)助完成主管模塊。功能是根據(jù)員工的不同級(jí)別來(lái)分配其權(quán)限,管理員可對(duì)公司員工的個(gè)人信息進(jìn)行管理,包括員工編號(hào), 員工姓名,員工性別,員工年齡,基本學(xué)歷等資料進(jìn)行相關(guān)操作,可為主管分配下屬員工(運(yùn)用Ajax來(lái)提示員工信息)等內(nèi)容,相關(guān)的技術(shù)用到了存儲(chǔ)過(guò)程,觸發(fā)器,視圖,Struts2 + Hibernate + Spring + Jsp + JavaScript + Ajax。
這次的項(xiàng)目因?yàn)橛钟玫搅薐avaScript,所以我開始格外的重視這個(gè)對(duì)我來(lái)講比較新鮮的語(yǔ)言,這次JS給我的感覺就他是再客戶端執(zhí)行的腳本語(yǔ)言,這樣有些動(dòng)作就不用傳回到服務(wù)器端做,節(jié)省了很大的資源,而且安全方面JS也很不錯(cuò)。此時(shí)我有了一個(gè)新的認(rèn)知,學(xué)習(xí)新的語(yǔ)言肯定是有幫助,如果以后再做其他的項(xiàng)目,就可以直接上手不用再學(xué)習(xí)一遍,這也是一種經(jīng)驗(yàn)。雖然也許只是一個(gè)項(xiàng)目中使用的語(yǔ)言,但是技不壓身。
此時(shí),一個(gè)前輩給我了一些指點(diǎn),讓我有時(shí)間可以從頭看一遍C和C++的書籍,也方便以后向其他語(yǔ)言轉(zhuǎn)向。此刻的我聽到別人的指點(diǎn),毫不猶豫的就開始啃起了C語(yǔ)言,讓我明白的很多底層機(jī)制,了解了基本的程序設(shè)計(jì)思維。期間也跟了兩個(gè)別的項(xiàng)目,在這里也不多說(shuō)了,因?yàn)闆]有什么可以拿出來(lái)值得說(shuō)的地方,只是在機(jī)緣巧合下接觸到了Python和 AR,卻是無(wú)意中在我一個(gè)大項(xiàng)目中發(fā)揮了作用。
一次大型項(xiàng)目
這次的項(xiàng)目是國(guó)內(nèi)某大型保險(xiǎn)公司的服務(wù)管理系統(tǒng)(雖然只是優(yōu)化),這次的內(nèi)容主要是由JAVA和AR(BMC remedy)兩種程序進(jìn)行結(jié)合開發(fā),進(jìn)行系統(tǒng)的主要部分優(yōu)化,以及新需求模塊的開發(fā)與運(yùn)維Bug的修復(fù)。
這次目組一直困擾我們和客戶的問題難點(diǎn)就是用戶數(shù)據(jù)量,并發(fā)量大,導(dǎo)致系統(tǒng)經(jīng)常報(bào)沒有l(wèi)icense的錯(cuò)誤。AR并發(fā)使用***達(dá)到并發(fā)3000以上。Web并發(fā)***5000人以上,所以在解決這個(gè)問題之前唯一的解決方案就是大量的申請(qǐng)臨時(shí)license,記憶中最多申請(qǐng)臨時(shí)license申請(qǐng)了16000個(gè)。***幾乎BMC方面已經(jīng)不提供給我們臨時(shí)license,所以這個(gè)問題已經(jīng)是項(xiàng)目組和客戶使用這個(gè)系統(tǒng)的一個(gè)很大的瓶頸。
也就是這個(gè)項(xiàng)目,讓我意識(shí)到我不知不覺的已經(jīng)成長(zhǎng)了,從以前的看別人的思路去解決問題,到現(xiàn)在有自己獨(dú)立的思維解決方式,并去和別人分享,欣喜若狂的我立刻記錄下了我自認(rèn)為目前為止寫的最滿意的一段代碼,是一個(gè)公用導(dǎo)出Excel方法。(下頁(yè)為當(dāng)時(shí)寫的一個(gè)手冊(cè),附代碼)
#p#
公用類介紹
位于:
JSP頁(yè)面調(diào)用CommonExcelAction.java類中的公用導(dǎo)出方法
--->會(huì)去調(diào)用ExportExcel.java中的導(dǎo)出Excel方法
--->會(huì)去調(diào)用PraseXML.java解析配置文件方法
使用方法3部曲
1準(zhǔn)備好查詢SQL
1. 在進(jìn)行查詢操作時(shí)將sql注入到Session中,一般此語(yǔ)句寫在Action中
- //為導(dǎo)出ExcelSql保存SQL
- request.getSession().setAttribute("excelSql",strb.toString());
注意excelSql此名字不要改變
位置如下圖:
因?yàn)橐赟QL已經(jīng)拼接查詢條件過(guò)后再保存
頁(yè)面引入導(dǎo)出圖標(biāo)
添加JS
- <script type="text/javascript">
- functionExportExcel()
- {
- varcount = document.QueryForm.total.value;
- if(count==0){
- alert("沒有查詢到數(shù)據(jù)");
- }else{
- if(count > 5000)
- {
- alert("查詢結(jié)果的***數(shù)限制為5000條,當(dāng)前查詢結(jié)果為"+count+"條,請(qǐng)精確搜索條件查詢后,再導(dǎo)出Excel表格");
- }
- else
- {
- //導(dǎo)出Excel需要傳入 root此Excel的配置節(jié)點(diǎn)
- document.QueryForm.action = "${ctx }/commonExcelAction.do?method=exportExcelCommon&root=satisfi";
- document.QueryForm.target="_self";
- document.QueryForm.submit();
- document.QueryForm.action = "";
- }
- }
- }
- </script>
PS:每次只需要改變紅色部分satisfi這個(gè)名字和第3步的節(jié)點(diǎn)相對(duì)應(yīng)
XML配置導(dǎo)出信息
- 在WEB-INF/下的exportExcel.xml文件中配置
- <!--自助單滿意度清單查詢導(dǎo)出Excel -->
- <satisfi>
- <!--導(dǎo)出的Excel文件名 -->
- <name>自助單滿意度清單查詢導(dǎo)出</name>
- <!--導(dǎo)出的Excel標(biāo)題 -->
- <title>公司,自助單號(hào),建單人,建單人部門,
- 是否確認(rèn)未解決,未解決說(shuō)明,服務(wù)是否滿意,服務(wù)不滿意說(shuō)明</title>
- <!--導(dǎo)出Excel查詢的SQL字段名 PS:不要換行 -->
- <pro>GONGSI,BASESN,CREATEREN,BUMEN,ISPINGJIA,PINGJIAINFO,
- ISMANYI,BUMANYI</pro>
- </satisfi>
回頭看自己
路都是自己走出來(lái)的,這句話說(shuō)的一點(diǎn)都沒錯(cuò),剛開始我們可以跟著別人走過(guò)的路一步一步的平穩(wěn)前進(jìn),總有一天我們會(huì)覺得前人走過(guò)的路有的未必適合自己,所以我們就會(huì)岔開這條路,開辟一條屬于自己的新路。雖然我們不敢說(shuō)抱著自己的夢(mèng)想在這條路上前進(jìn),但是我們可以帶著想法把這條路走下去。