java想到哪兒寫到哪兒
給公司新員工培訓,和網上的新手做交流,我最先強調的都是基礎。
基礎有什麼用?
1、 節省溝通成本
有天,java群裡來了個新人,上來就提了一個問題:
“我程式碼跑不起來,怎麼辦?”
這一看就是還沒入門,沒辦法提供具體的資訊。
於是有個有耐心的老鳥出來了,開始了一連串提問:異常棧看一下?有編譯期異常嗎?貼出你的main函式看看?
新人收到了問題並且丟擲了 你都在說什麼 異常。
“你還是截圖吧。”老鳥說。
這裡涉及到了 異常棧,編譯期,main函式 等等再基礎不過的知識,有那麼部分毫不客氣的新人就說了,為什麼你不講得通俗易懂點兒呢?
通俗易懂,是需要成本的。
異常 即是程式不期望的異常情況,它處理不了交給程式設計師自己來處理了。 棧 是個再基礎不過的資料結構,出現它就說明棧頂的元素,是最後入棧的。那麼,看到你出錯後控制檯丟擲的那堆文字沒有?貼出來,距離XXXException最近的通常就是最關鍵的資訊。
你看,就算精簡為“控制檯丟擲的那堆文字”,比較起來,是不是“異常棧”更加節約雙方的時間,畢竟以當前IT業界的薪資水準,老鳥可能已經浪費了公司好幾十塊。
更何況,可能有人是連“控制檯”都無法理解的,這就涉及到了作用2。
2、方便他人界定你的水準
我見過一份簡歷,quartz、POI、easyUI、jquery等等,寫了一堆。這人自己可能覺著,這些名詞高階,厲害,可是呢,看看這份技能表:
就暴露出了他的問題,此人並不懂他所說的這些名詞是什麼。
至少,一個有基礎的程式設計師就不會寫上熟悉xml、json、dom4j技術,也不會把“線上支付”和servlet\jsp放在同一欄下面。他無需長篇累述自己的技能樹多麼豐滿,合適的內容,合理的排版,本身就代表了他的水準。
3、解決未知的問題
“有沒有例子可以參考?”
“有沒有影片教程可以看?”
“能不能幫我遠端一下?”
一般來說,捱了這三連懟的老鳥無不火從心起,但凡有例外,要麼脾氣太好要麼姑娘太好看。
合適的解決方案:搜尋關鍵字->檢視文件->閱讀原始碼->詢問老鳥關鍵字->*。
從來沒到過的問題如何解決呢?或者擴充套件一下,我寫的功能,如何適應未來千奇百怪的需求呢?當然,這其實本質還是個碼量和閱讀量的問題,篇幅和精力都不足夠支撐我講好這個問題,但凡我說好了,那等同我也寫完了一本《Effective Java》。
我把學習分為幾個階段:
基礎理解階段 ,你看到一個基礎知識點,開始理解它的含義,看到具體的例項能反應出它所對應的基礎知識。比如看到Animal cat=new Cat()能反應出它體現瞭如下知識點:宣告、例項化、引用、多型。
串聯階段 ,把知識點串聯起來,構建出它本源的樣子,比如上面的例子,結合JVM相關知識,腦海裡出現一張粗略的堆疊圖,就像這幅圖:
這樣的能力不光可以用於向本源推測,也可以主動的把知識點組合,玩味出新的結構,比如,新需求是“根據配置來產生動物”。
那麼,我們分析會有一個根據配置項來產生動物例項的構建工具。程式碼可能長下面的樣子:
Animal animal=AnimalFactory.createAnimal(“貓”);
在createAnimal裡,我們對字串進行if判斷,決定到底是new Cat還是new Dog
事實上,這樣的結構已經有人總結在了GoF裡。誒,GoF是什麼?忘了本段是說什麼的嗎?
進階階段 ,具備串聯知識點的能力之後,就應當有看到未知技術逆推具體實現的能力。比如hibernate,它的功能是什麼?核心在於“實現持久層和資料層的同步”,也就是說,資料表和JavaBean\POJO的對映。那麼,我們來思考,假如從來不存在hibernate類似的ORM框架,要如何實現這個功能呢?
首先,我們要有和資料庫溝通的工具和配置,java可以選用jdbc,資料庫相關配置可以使用xml、json、bean任意方式。我們也可以看到,hibernate底層就是jdbc,也有Configuration這個配置入口。
然後要有種配置方式讓資料表和Bean達成統一。為什麼?因為它們的資訊量不一致,包含的資訊是相交的關係,比如,它們都有類似的資料型別(varchar->String),又有互不相融的內容(索引和約束),得出結論,我們需要一個對映工具,來使相交的部分匹配,並且補充缺失的內容。於是,我們可以推論出,hibernate一定有個對映工具(xml和annotation)。
再後,為了適應多種不同的資料庫,每一條語句可能都有不同的表達,比如Oracle有Number(*,*)這個型別,對於mysql就不適用,我們需要設計一個資料庫的介面卡。在hibernate裡,這個部分叫做方言,Dialect。
經過這樣的分析過程,不管是實現新的需求,還是分析未知的框架,都具備了理論上的基礎。
就我個人的見解,達到這個階段的程式設計師,才能稱之為合格。
小結
道理說多了,來嚐嚐雞湯。
沒有人有義務幫助你。
樂於助人的老鳥只會幫助有價值的新手,不求反哺,至少要有成就感,是吧?
本就該在大學搞定的內容,為什麼要別人花費自己的青春和公司的人工來為你補習?
基礎是看上去艱澀玄乎,卻是能應用在工作裡的東西,切勿忽視。我有個高中老師常把一句話掛在嘴邊“現在你記住就好,以後你會懂。”有時候我想,要是那時候聽了這話,該多好。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31543790/viewspace-2644835/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Java永久代去哪兒了Java
- 位元組遊戲,跳動到哪兒了?遊戲
- vue去哪兒複習Vue
- 去哪兒網裁員!
- Vue—去哪兒筆記Vue筆記
- Flutter 重構去哪兒QTalkFlutterQT
- Golang之變數去哪兒?Golang變數
- python爬取去哪兒出境遊攻略Python
- php自定義函式放哪兒PHP函式
- 資料分析之去哪兒酒店
- 資料告訴你特斯拉都賣到中國哪兒了
- 哪個Scratch少兒程式設計好用?程式設計
- 五一假期,2.3億人都去了哪兒?
- 學習大資料從哪兒下手大資料
- 老程式設計師都去哪兒了?程式設計師
- PySpider爬取去哪兒攻略資料專案IDE
- 靜態代理模式——時間都去哪兒了模式
- 去哪兒網專案學習總結
- pyspider 實戰專案之爬取去哪兒IDE
- Java21虛擬執行緒:我的鎖去哪兒了?Java執行緒
- MySQL 中刪除的資料都去哪兒了?MySql
- 去哪兒黃勇:去哪網資料庫架構發展歷程資料庫架構
- 去哪兒網企業級監控平臺-Watcher
- 爬蟲進階之去哪兒酒店(國內外)爬蟲
- 保單藏哪兒了?API介面幫你“捉”出來!API
- 去哪兒網:國內9成酒店恢復營業
- 萌物分享 | 鏟屎官,下一站去哪兒?
- 去哪兒:2021年端午假期熱門達到城市Top10排行榜
- 去哪兒網領域驅動設計(DDD)實踐之路
- 不同年齡段美國人的時間都去哪兒了?
- Python 爬蟲(六):使用 Scrapy 爬取去哪兒網景區資訊Python爬蟲
- [需求建議]貌似好久沒動靜了,新版本去哪兒?
- “時間”都去哪兒了?效能調優分析方法與案例詳解
- 去哪兒:2021年春運機票均價已降至651.36元
- Vue2.5去哪兒網App開發實戰(一) - 簡介VueAPP
- 離開網際網路大廠的年輕人都去了哪兒?
- 100%客戶推薦率,華為SD-WAN贏在了哪兒
- 深圳哪裡可以買卵子做三代試管嬰兒助孕