關於spring,mybatis,mvc等等框架?
越學習越覺得框架的搭建,等等沒有思想,只是相當於搭建了開發工具,然後按照它的流程來組裝使用,沒有很深的東西,是不是我還沒有掌握到很深的東西?
還是說java這東西本身就是調用各種api,框架就是配置文件方便業務開發。相比c++深度差好多…請大家指教一下
有一個開發任務,請你做一個登錄功能。你需要思考以下問題:1. 驗證賬戶密碼,如何防止注入攻擊。原理是什麼。2. 載入用戶許可權樹,如何提高程序執行效率。優化方向是什麼。
3. 大量的登錄並發請求,如何進行限流。
4. 如何監控登錄功,平均響應時間,成功率,出現異常之後如何告警。以上是臨時想的,並不是某個真實的業務需求。現在不少人把開發語言,框架當成一種簡單工具,就像電焊工人的焊槍,覺得掌握操做手冊就夠了。實際上需要掌握的是思想和實現原理,框架是用來簡化大量的開發工作,提升工作效率的通用工具。但實際上在不同的產品研發過程中遇到的具體問題並不是簡單引入工具就可以解決的,你需要掌握工具的原理,用好工具或者做一些訂製功能改造工具。就像一個登錄功能,你真的知道如何開發登錄功能嗎?微信 支付寶 滴滴的登錄功能功能如果讓你來實現你怎麼設計?嗯,既然你都已經這麼覺得了,你在邀請我回答什麼問題呢?
我知道當今開發屆主流是死套框架,這不僅僅是java的問題,同時也是其它所有語言的問題
其它語言也有各種框架,我本人也反對死套框架,因為人都變蠢了
當然從某種意義上說,讓笨蛋也能從事這個行業是時代的進步
這就是摩登時代,你看過政治書上說的卓別林演的電影吧?
技術發展到一定程度,它必然會把作坊式的作業改造成流水線式的體力勞動
java發展到jee階段之後,這一系列框架的目的就是將程序員改造成流水線上的工人
死套框架,無腦搬磚填代碼,認真看看,無非如此嘛
但是這是不是將來呢?
我認為不是
從現在流水線的發展可以看出來,隨著人工成本的上漲
這種無腦搬磚填代碼的方式會逐步被現代工業所淘汰
或者說轉移到更不發達的地區去,那發達國家和地區就必然要做一次產業升級
那你已經看到了傳統java,j2ee,spring這些東西的問題
那將來會腫么發展呢?我告訴你,看vert.x
看我的專欄:白木城全棧
看我們如何拋棄j2ee,spring那些東西,用最輕量級的封裝搞出各種有意思的東東來
我說的有意思,可遠不僅僅是什麼web server或者web service那麼簡單
我們連遊戲都搞,將來能否做成,我不知道,但是我們反對死套框架
講究讓程序員明白它在做什麼,為什麼這麼做,然後有沒有更好的選擇
絕對不會讓你覺得boring,我們什麼都搞
當然你也需要明白,現在社會上的主流是死套框架,對此我們也無力改變,這是別人家的事
輪不到我們來管,但是如果你覺得那些東西無聊
可以關注一下我們,搞點有意思的東西哈
當然也不用講那麼遠,先從vert.x開始,一個並發就有很深的文章
其實這些東西遠不是vert.x的東西,其它語言也有,所以vert.x是垮語言的存在
它支持7種語言,是不是很有趣啊?
第一個答主,不要誤導新人啊。 如果只是搭建框架,是沒有什麼思想,關鍵在於使用,在於學習,spring的ioc,aop都是很優秀的思想,spring bean factory 提供了對bean 創建,屬性編輯,生命周期管理,aop 提供了對bean在應用中進行管理的一種工具。spring在ioc和aop之上提供了jdbc,事務管理,mvc,jms,等各種高級應用,為開發大型應用提供了堅實的基礎,框架不只簡化了開發,讓更多的普通程序員可以快速開發,也提高整體開發的生產力,為開發高級應用提供了堅實基礎,不需要任何東西從零開始。java廣闊的第三方生態,本來就是java的優點啊。
上面很多人說的很清楚啦,不要糾結框架里的條條框框,讓你這麼干你就這麼干。java世界有句話很常見,叫做約定優於配置,這裡其實也可以改成,套路優於裝逼。裝逼不是貶義詞,是想說明你自己造輪子當然顯得高檔,但是自己造的輪子,bug多不多?性能優不優?架構好不好?學習成本高不高?時間就是金錢,軟體開發這檔子事,早就不是實驗室里的技術,是要給公司創造價值的技術,不管你怎麼開發,符合客戶需求,符合用戶需求,能給公司賺錢的就是好技術,其他的一律都是垃圾得堅決取締。如此激烈競爭環境下,主流成熟的框架,幾乎是唯一選項啦。我們不生成代碼,我們是代碼的搬運工。哦哈哈遁了。
首先有沒有深度和賺不賺錢、和有沒追求、和人生沒有直接關係。這三個框架做的是兼顧開發效率和性能,C++這種既想要過程式編程的優點,又想要面向對象有點的東西,被大家吐槽多久了,再牛逼的程序也要吃飯,也要考慮開發速度和避免埋坑。讓你用c寫個句法分析的程序出來,我敢保證你寫一周沒寫完。為什麼,自然語言處理全部是字元串處理的邏輯,你要自己寫字元串拼接,字元串操作各種函數,c語言牛逼啊,各種操作內存,各種指針啊,卧槽,你的內存爆了,上司叫你提交,你還沒寫完,各種bug。好了,你知道是內存泄漏了,然後自己寫個內存池,各種調bug,各種指針越界,花了一周好不容易寫好了,發現內存沒有泄漏了,然後開始自己實現各種數據結構,自己寫個hashmap,自己寫演算法,哎呀,卧槽,這個hashmap有問題,哎呀這個map性能有點低啊,然後又花了一周寫這個優化這個hashmap…
不管是Java還是你說到的技術框架都是隨著社會的前進的產物,在社會進步過程中我們會碰到很多的問題,如何將工具轉化為生產力常常容易被碼農忽視的。回到問題並不是說java就是調調api寫寫簡單的curd業務,其實Java作為經久不衰的語言必有其因,你所提到的幾個框架也可以嘗試挑某一個點(如spring的事務部分的源碼)深入了解。看看別人是怎麼寫介面定義類和方法的,同時異常處理又是怎麼做的(新手容易不try catch或者到處濫用)?日誌輸出又是如何打的(定位問題就看這個了)?很多東西別看不起眼老司機寫出的代碼優雅且不容易出bug很大程度就是他們已深諳其道。
比方說你要裝一台電腦,買好所有配件,然後把cpu固定在介面上,內存插進插槽,風扇擰好螺絲,固定好硬碟,連接好電源線數據線,ok開機可以用了。簡單不簡單?但是計算機本身並不是這麼簡單的東西。
同理,框架就是幫你搭好了腳手架,你可以只關注把業務邏輯填進去的事,以進行快速開發。但是這並不意味框架簡單。從框架本身來說,為了保證魯棒性和可拓展性,它的實現是很複雜的,有很多值得深入學習的地方。而從使用上來說,你可以用20%的功能滿足80%的需要,剩下的80%的功能就需要進一步的深入學習。這一部分包括自定義的拓展,性能優化,和其他系統進行整合等等。要用到這些的話,你會發現不得不去仔細研究研究。所以框架這東西到底能有多複雜,取決於你打算怎麼用它。至於和cpp的對比,這倒真的是因為java本身加了許多限制,沒法像cpp那樣玩出花我覺得嘛,你應該把jee整套丟掉
那些標準吃棗藥丸
把core java整熟練點,越熟練越好
別整那些沒用的api,那些東西你套上去也沒有用,性能還是上不去
你把非同步給解釋清楚才是王道
也別整那些什麼排序演算法,丟給你一個東西你能分析出複雜度才是王道
也別整什麼主從,那解決不了多少問題
cap想清楚,做好取捨,問題就自然解決了
工作流,集群,其實這些都沒啥用,反正我都不用
集群我用dns來搞,他們說這個叫做服務發現,好吧java入門不難,看幾個視頻教程,有公司願意要你。
就像啪啪啪,看點兒島國愛情動作教育片,有妹子跟你約。
但是java作為互聯網後端編程主要語言,擴展性極強。主要在兩方面:基礎 和 框架的原理。至少,你要了解下分散式緩存,消息,負載均衡這些高大上的中間件吧!
就像啪啪啪,我們的追求應該是:更 石更 更 長,最少你要懂得幾種不同的姿勢吧!
你可以加入開源項目去寫框架嘛
它既然叫框架,就是隱式的組織好了一套基本框架體系,並且把你限制在框架內,然後自己填空就行了。不然叫什麼框架?Java 的框架大多都是做代碼填空的。
如果你要深入,兩個方面:
- 了解框架底層的工作原理,這個足夠你學到很多的東西了,主要是深度的知識。
- 把不同的框架、中間件技術組合起來使用,參考一些大公司的系統架構模型。如何分模塊、如何分層、如何實現三高的複雜系統架構。這也會讓你學到很多,主要是是廣度知識。
另外要全面的了解一個框架也沒那麼容易和迅速的,往往很多人了解的只是其中一個面而已。如果你真的覺得某個框架沒必要繼續學習了,那我建議你看看它官方的文檔,你先完整的把文檔目錄看完,是否每一個方面你都用過或者了解(了解的意思是至少知道它是幹嘛的)。
另外,從你提問來看你肯定是遠遠沒做到的,因為 MVC 不是框架。
瀉藥
不是搭框架簡單,本人感覺還是樓主想簡單了吧?
沒人告訴你使用框架就是搭建起來使用吧?這就像蘋果給你一部手機你按照說明裝上卡就開始使用,能告訴我難度在哪嗎?思想在哪呢?
框架就是封裝一些複雜邏輯僅此而已,就好像你註冊一家公司,可以找中介(框架),也可以自己跑。但是找中介都是流程定義好的,如果你想要做一些個性化的事情最後還是要自己跑。(修改框架或者自己寫框架)。
別說搭建了,就是框架的選擇都是一門技術很深的項目。
人家框架都是開源的,也有可以討論的社區,想學有技術含量的可以去參與了解。而且我相信你做的項目裡面肯定也是有很多技術含量的,總不會是搭完框架項目就完事了?腳踏實地先把手頭的工作做好吧,別自己的工作都還沒整明白就吵著要學有技術含量的東西。說java開發沒有技術含量,你用的這些框架也是java寫的。
完全可以手寫各種模塊啊,但別人三天幹完的活你三個星期還沒幹完,你說老闆要你這樣的員工幹嘛。。。你說搞研發?清華博士還等著研究組的offer呢
什麼心態?就算你是01編程,你也還是不懂電子云。電子云都不懂,在上帝之手上搬磚而已,人都變傻了。
推薦閱讀:
※如何理解 ssh 三大框架?
※Github上有沒有關於springmvc框架的項目?
※如何用最簡單的方式解釋依賴注入?依賴注入是如何實現解耦的?
TAG:Solr | Spring | ZooKeeper | MyBatis | SpringMVC框架 |