恭喜發現寶藏!微信搜索公眾號【TechGuide】關注更多新鮮好文和互聯網大廠的筆經面經,
作者@TechGuide【全網同名】
點贊再看,養成習慣,您動動手指對原創作者意義非凡🤝
文章目錄
- 相識:見客入來,襪刬金釵溜,和羞走,倚門回首,卻把青梅嗅,
- 相遇:有美一人,清揚婉兮,邂逅相遇,適我愿兮,
- 相知:愿我如星君如月,夜夜流光相皎潔,
- 相戀:長相思兮長相憶,短相思兮無窮極,
- 相愛:金風玉露一相逢,便勝卻、人間無數,
- 相守:死生契闊,與子成說,執子之手,與子偕老,
相識:見客入來,襪刬金釵溜,和羞走,倚門回首,卻把青梅嗅,
大家好,我叫番小海,是一名萌新程式員,很多人叫我番哥,七夕節這天,老板開著它新買的法拉利和秘書去海邊度假了,說是去拉投資很辛苦,順便交給我一個加班任務,要鍛煉新人,給我賦能,咱是萌新咱也不懂咱也不敢問,具體任務是給我一周時間做一個男/女盆友自動分發管理系統,七夕上線,眾所周知,我的后端開發知識庫像我的臉一樣干凈,我很煩惱,這幾天,憂愁他總圍繞著我,做不好這個專案,月底的二百五獎金又要泡湯了,于是我打開電腦,百度【程式開發常用語言】

好家伙,各種號稱“全世界最好的語言”的編程開發語言看花了眼,我決定哪個最簡單容易上手就用哪個,而且剛剛白嫖到手的IntellliJ Idea,據說牛逼的不得了,不得拉出來秀秀?OK,就決定是你啦,Java開始整活!
相遇:有美一人,清揚婉兮,邂逅相遇,適我愿兮,
據說Java有非常豐富的類別庫和社區支持,JVM的性能到8之后有了一個質的飛躍,讓我們愉快的開始學習java…誒…等等…不對,老板是要讓我做一個男/女盆友自動分發管理系統(以下簡稱伴侶分發系)給讀者送福利的,這樣鉆到一門語言里去,豈不是要學到猴年馬月?我得看看怎么快速開發一個管理系統,
伴侶分發系得有頁面展示吧,自拍照、身高、體重、三圍等等資訊的展示肯定是必不可少的,那么頁面我該怎么開發呢?于是你百度【前端入門】,然后你就知道了原來有前端三劍客這三個東東,使用 html、javascript、css就可以寫一個靜態頁面出來展示我這個系統需要的所有靜態資訊啦,包括圖片、文字以及各種排版啊等等,
美滋滋,費老大勁寫個靜態網頁找周圍一圈同事炫耀一波,突然發現被人秀了一臉,人家早就用上了各種前端框架,你一個下午的作業量人家直接半小時解決,裝逼指數直接拉滿,聽著同事紛紛吐槽用 js 寫好麻煩啊,原生的JavaScript還有各種瀏覽器兼容性的問題,你寫出來的東西在chrome瀏覽器上能用,在ie瀏覽器上就不能正常顯示了,沒說的,上網百度【前端框架】
蹬蹬蹬蹬,JQuery閃亮登場,基于JQuery的插件真的多呀,用起來一個字爽,兩個字夠輕,很多字就是,DOM選擇器很豐富,常見的樣式與影片操作被封裝的很簡潔,瀏覽器兼容性還不錯,有了JQuery,你感覺自己又行了,但是這次你學聰明了,你決定先使用一上午,看看是不是還存在什么問題,果然,你用的越多,產生的痛點越多,比如這里有個小鮮肉需要身高高點,但是資料和DOM物件沒有系結,每次修改都要主動操作DOM物件,有沒有辦法作到只關心資料修改,而和資料系結的頁面元素可以自動同步呢?這樣多省事!多番打聽,你了解到了啥叫回應式或者叫做雙向系結的概念,并且知道大神們都在用一種叫做VUE的框架,用過的都說效果好極尼奧~沒說的, 直接百度【Vue入門】
這下不得了,你仿佛打開了新世界的大門,各種前端操作信手拈來,隨著了解的深入,你知道了更多諸如node.js、模塊化、js組件化的概念,玩的不亦樂乎,這么好玩,還學個p的后端,直接換作業跑路,轉投前端,于是你百度【前端技術學習路線】,伴侶分發系統就此擱淺,

本來剛剛知道java這個神器,雄心勃勃準備大搞特搞,怎么也要達到我這個月定下的的0.0000025個小目標,這可不行,前端再有意思,達成這個目標之后我在去鼓搗,
相知:愿我如星君如月,夜夜流光相皎潔,
終于!終于!到后端部分了,番哥我很開心,因為做成這個伴侶分發系統之后,番哥作為管理員肯定可以給自己多發幾個老婆學習到知識,然后領到獎金,經過一年的奮斗,終于可以給老板的法拉利換個新輪胎,

現在,我已經是個會寫簡單頁面的大人了,但是新的問題是,我怎么把資料給前端頁面,總不能全寫死在前端吧,比如石原里美注冊了會員,想要上傳一張自己的寫真照,新的資料(照片)總要有個地方保存吧,在前端需要的時候再拿出來展示,比如番小海,也就是區區在下想要鑒賞一下的時候,所以,這個保存資料的地方,就是資料庫啦!于是你再次打開網頁,搜索了更多新垣結衣的照片…你是來學習的…好嗎?給我百度【資料庫入門】
這樣你就知道了原來有這么多關系型資料庫呀,什么MySQL、Oracle、SQL Server等等,但是他們都有一個共通點,就是基于SQL語言操作的,所以你決定快速學習一下,什么select、insert、delete、update陳述句,你憑藉著聰明的小腦袋瓜子,很快就掌握了簡單的資料庫的增刪改查,但是問題的關鍵是,廣大帥氣的男同胞們來用你的系統是為了看圖找物件的,你這樣只會sql讓他們很為難呀,總不至于看個劉亦菲的高清斬訓非要找你這個sql boy吧,這肯定涉及到前后端互動的,也就是說你必須要將資料庫的增刪改查的控制權轉移到java手里,由java完成這部分作業,那么怎么完成編程語言(Java)和資料庫(DataBase)的連接(Connection)呢?沒錯,就是JDBC啦!于是你再次暴露你好學的本質,百度【JDBC學習】
很快,你就掌握了jdbc的連接和簡單操作,現在你可以直接用java去操作資料庫而不依賴任何的資料庫客戶端或者是原生sql陳述句了,這就意味著,你在某種程度上,拜托了不熟悉 sql 對你的限制,你可以自如的通過java去查詢資料庫里劉亦菲的高清照片啦夾帶私貨哈哈哈哈哈哈哈哈哈哈,

回到剛剛的問題,后端怎么把資料給到前端頁面?我們剛剛做的jdbc相關的作業實際還是在后端范圍內的,前后端互動這塊還沒有涉及到,當螢屏前的這位帥比(試問覺得干貨滿滿點個贊的xdm誰不帥呢?)想要獲取后端資料庫里的某位幸運女嘉賓的相關資訊時,應該怎么辦呢?換個問題就是,前端頁面怎么向后端發送請求呢?于是好學且帥氣的你,再次百度【前后端互動】
于是,你搜到了 Ajax,前端頁面可以通過它向后端介面請求資料并且展示潛在伴侶的相關資訊在分發系統上,在這個程序中,你知道了一種應用層通信協議,叫HTTP,get、post都是這塊內容,你還知道了一種資料結構,JSON 格式,前后端接收到的訊息都是這個格式的,
現在回過頭看,短短幾天你已經掌握了很多東西啦,你知道了前端如何展示頁面,如何發送Ajax請求到后端,java是怎么操作資料庫的,以及資料庫如何存盤資料,但是還差一點點,就是目前為止,前端的請求是過來了,但是后端沒有介面可以接收這個請求,之后按照指示進行提取資料的動作,就像是李云龍在二戰轉折點平安格勒戰役中的意呆利炮,如果沒有開炮手接收團長的 “開炮” 的指示,再完成 “發射” 的動作,那不是亂打一氣嗎?現在就相當于開炮指示是有了(也就是 Ajax 請求),但是開炮手沒有呀,這玩個毛呀,

于是你再次百度【后端介面學習】,你了解到了現在后端很多都是基于HTTP介面接收請求的,首先你需要開發一個稱作servlet的后端小工具,將其放在Tomcat這個服務器里,這樣 servlet 就會老老實實的接受請求,“合理開炮,指哪打哪” 了,就這樣,你通過五天的學習,終于掌握了從前端頁面展示,到前后端互動(http),再到后端操作(jdbc)資料庫的全程序鏈路,翻譯成人話就是,你作為一個帥比用戶,使用咱們的伴侶分發系統,根據劉亦菲的基本資訊匹配提交請求到后端,后端操作資料庫查詢到相關照片和視頻再回傳給前端展示,呈現給你啦,驚不驚喜?意不意外?
相戀:長相思兮長相憶,短相思兮無窮極,
關于伴侶分發系統,如果看完上面一部分,只是完成了簡單的查詢展示功能,你就滿足了的話,那你就只能停留在入門的階段啦!

這樣的系統隨著開發進度的推進,你越來越覺得太麻煩了,你每天都在吐槽:首先,jdbc操作資料庫實在是太繁瑣了吧,每次連接都得open connection,重復寫了很多DAO資料層的代碼,你堅信,你的痛一定有人能懂,沒錯,MyBatis早就解放了這部分勞動力,只是你一直不知道而已,時間不多,于是你趕緊百度【MyBatis入門】
臥槽!臥槽!臥槽!臥槽三連,以示尊重,這也太香了吧!極大的簡化了JDBC操作,還有豐富的ORM映射和貼心的二級快取優化性能,甚至直接用在組態檔中一行SQL陳述句就行,再也不用撰寫冗余繁雜的dao層代碼了,我可真是太謝謝寧啦!

提高了持久層開發的效率之后,你又開始思考是不是servlet配置和開發也能簡單點,每次都得重寫方法,然后對每一個servlet都要在XML組態檔里詳細說明相關資訊,而且回傳的JSON資料也是拼接起來,一點都不優雅,時間一長,你覺得這樣不行,得想想法子提高下效率,沒錯,你終于!終于!終于!察覺到了Spring的存在!這種神器一直都有聽說他的威名,他到底神氣在哪里?你決定見識見識,遂百度【Spring入門】
用了這種神器之后,就像用了 IDEA 就再也沒辦法回到 Eclipse 了一樣,Spring再也不用你沒事就NEW一個物件了,導致后面實體管理亂七八糟,他直接給你提供了一個容器,你需要的實體都幫你準備好,隨取隨用,你只需要關心怎么用就行了,至于實體的生命周期管理就全部交給spring容器就好啦!是不是究極貼心,而且spring還能夠將例如事務、安全、日志這些功能模塊化,哪里需要插哪里,業務模塊就只用寫好自己的業務代碼就好啦,完全不用操心這些功能,沒錯,以上這兩個就是 Spring 著名的 IOC 和 AOP 功能啦,

除此之外,你還了解到一個 Spring MVC 的框架,從展示到后端一條龍服務,輕松代替 servlet、tomcat 那一套,效率輕松提升十倍都不止,哈哈哈哈哈哈哈哈哈哈,你覺得自己這么久的堅持終于達到一個新的高度啦,開心!等等,Spring、Spring MVC 和 MyBatis 不就是著名的 SSM 框架嗎? 學到這里,你第一次有了一種一切都有安排,只要努力,早晚水到渠成的快感和一絲感悟,
相愛:金風玉露一相逢,便勝卻、人間無數,
隨著一周的鼓搗,你終于在老板度假回來之前,順利開發了一個伴侶分發系統,系統剛一上線,好評如潮,你識訓了很多來自老板的雞湯和大餅,雖然你消化能力不好,但是能拿到那250快獎金你還是非常開心的,很多網友都順利領到了一個老婆,奔走相告,用戶數量劇增,你的資料庫有點扛不住啦,現在 tomcat 和 mysql 放在同一臺服務器部署,實在是太慢啦,沒辦法,為了廣大網友的福利,你決定分開部署在兩臺服務器上,這樣暫時解決了一部分問題,系統又運轉起來啦!你非常開心,為了表揚自己,請自己吃了老板經常光顧的五星級大酒店旁邊的六塊錢麻辣燙,

好景不長,越來越多的人反映你的系統太卡了,看個迪麗熱巴的高清照片,加載的時候總是卡在奇怪的位置上,于是你再次挑燈夜戰,沒錯,你用 redis 加了個快取,這樣不是用戶的所有請求都要訪問資料庫了,減輕資料庫訪問壓力的同時,還減少了用戶操作的回應時間,這下圖片加載一點都不卡頓了,用戶好感直接拉滿,老板的收入又增加啦,
但是單身狗實在是太多了,你這個伴侶分發系統實在是太火爆,在市場上著實供不應求,有的時候,單身狗們急起來紛紛比起手速,你這后臺的請求就像雨點一樣打過來了,就算加了快取,還是很吃力,沒辦法,你只有再次將資料庫分庫分表了,男生、女生分一分,年齡、長相、籍貫分一分,你甚至動用了讀寫分離,因為你聽說大家都是這么用的,反正自己百度來的各種優化性能的方法你全都使上了,終于功夫不負苦心人,系統再次高效運轉起來,并且這一次你為了后續用戶激增,你甚至申請了幾臺備用服務器,還引進了一些降級限流的策略,自信如你,終于我也成長為一名資深的程式員了!
程式員世界 Bug 永遠不斷,你還是發現了新的問題,因為有用戶覺得自己太帥,想要更多的資源,于是你開發了會員功能滿足這部分需求;還有些用戶手頭比較拮據,你又開發了優惠券功能,還有其他各種打折促銷、資訊推薦的功能越來越多,你發現模塊管理也是一個新的問題,很多重復的功能不僅占用資源,而且不方便管理,于是你了解到了微服務的概念,開始了大刀闊斧的系統重構…
相守:死生契闊,與子成說,執子之手,與子偕老,
不開玩笑啦,到了這里,常規的后臺系統已經初具雛形,足夠應付秋招、畢設之流,但是隨著對自己的要求不斷提高,互聯網時代的資訊爆炸,高并發、高流量的場景層出不窮,不斷有著新的挑戰等待著你,微服務、容器化、云原生等等等等,
作為一名程式員必須時刻擁抱變化、不忘初心,
始終記得自己若干年前為之奮斗的那0.0000025個小目標和老板去的某個海邊,
恭喜發現寶藏!微信搜索公眾號【TechGuide】關注更多新鮮好文和互聯網大廠的筆經面經,
作者@TechGuide【全網同名】
點贊再看,養成習慣,您動動手指對原創作者意義非凡🤝
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/293890.html
標籤:其他
上一篇:程式員情人節防止割韭菜
