{eval=Array;=+count(Array);}
要回答這個(gè)問(wèn)題首先要了解Java開(kāi)發(fā)都用在哪些領(lǐng)域,只有清楚了Java語(yǔ)言的應(yīng)用領(lǐng)域才知道需要掌握哪些技術(shù)。
目前Java開(kāi)發(fā)主要應(yīng)用在Web開(kāi)發(fā)領(lǐng)域,以及大數(shù)據(jù)、移動(dòng)互聯(lián)網(wǎng)開(kāi)發(fā)等領(lǐng)域。作為目前使用范圍最廣泛的開(kāi)發(fā)語(yǔ)言之一,Java的適用范圍還是比較廣泛的,很多工具類軟件也使用Java進(jìn)行開(kāi)發(fā),比如Oracle的很多產(chǎn)品就是使用Java開(kāi)發(fā)的。
先看一下Web開(kāi)發(fā)都涉及到哪些技術(shù),我們看一下基于Java的三層開(kāi)發(fā)體系結(jié)構(gòu)。
這個(gè)結(jié)構(gòu)是基于MVC的Model2模式,其中使用Servlet作為控制端,使用JSP作為視圖端,使用JavaBean作為模型端。其中與模型端(Model)關(guān)聯(lián)的就是數(shù)據(jù)庫(kù),所以對(duì)數(shù)據(jù)庫(kù)的操作是Java程序員不可避免的一個(gè)重要的開(kāi)發(fā)環(huán)節(jié)。
Java操作數(shù)據(jù)庫(kù)的API是JDBC,通過(guò)JDBC提供的類和接口完成對(duì)數(shù)據(jù)庫(kù)的各種操作,最為常見(jiàn)的操作就是向數(shù)據(jù)庫(kù)發(fā)送sql語(yǔ)句并在容器中執(zhí)行。
當(dāng)然還需要使用DAO對(duì)數(shù)據(jù)操作進(jìn)行面向?qū)ο筠D(zhuǎn)換,簡(jiǎn)單的說(shuō)就是把面向?qū)ο蟮腏ava操作映射到面向關(guān)系的數(shù)據(jù)庫(kù)系統(tǒng)中。
所以說(shuō),掌握數(shù)據(jù)庫(kù)的使用是Java程序員的基本要求。雖然大部分團(tuán)隊(duì)都會(huì)配備DBA,但是深入學(xué)習(xí)一下數(shù)據(jù)庫(kù)對(duì)Java程序員來(lái)說(shuō)還是很有必要的,如何優(yōu)化查詢語(yǔ)句就是個(gè)重要的內(nèi)容。推薦深入學(xué)習(xí)一下Mysql和Oracle數(shù)據(jù)庫(kù),這兩個(gè)數(shù)據(jù)庫(kù)在Java開(kāi)發(fā)中應(yīng)用比較廣泛。
目前大部分Web服務(wù)器都采用了Linux系列操作系統(tǒng),Linux操作系統(tǒng)在安全性的表現(xiàn)上要明顯好于Windows和Unix,所以目前大量的Web服務(wù)器都采用了Linux,比如CentOS、Ubuntu、Red Hat等。
上圖中的Web Container通常都部署在Linux服務(wù)器中。也有一部分開(kāi)發(fā)人員直接在Linux系統(tǒng)下進(jìn)行Web開(kāi)發(fā),所以掌握Linux的使用對(duì)Web開(kāi)發(fā)來(lái)說(shuō)還是很有必要的。
做為Web開(kāi)發(fā)的Java程序員來(lái)說(shuō),也可以使用Windows平臺(tái)進(jìn)行開(kāi)發(fā),所以從開(kāi)發(fā)的角度來(lái)說(shuō)并沒(méi)有必要深入學(xué)習(xí)Linux系統(tǒng)。
但是如果使用Java從事大數(shù)據(jù)開(kāi)發(fā),則另當(dāng)別論了。目前大數(shù)據(jù)平臺(tái)幾乎都搭建在Linux系統(tǒng)上,此時(shí)對(duì)Java開(kāi)發(fā)人員來(lái)說(shuō)掌握Linux系統(tǒng)是十分必要的。
作為Java程序員來(lái)說(shuō)通常做的都是后端開(kāi)發(fā)的工作,對(duì)前端的要求并沒(méi)有那么高,通常開(kāi)發(fā)團(tuán)隊(duì)都會(huì)配備專業(yè)的前端開(kāi)發(fā)人員。但是很多Java程序員都有過(guò)開(kāi)發(fā)前端的經(jīng)歷,因?yàn)楹芏囹?yàn)證性實(shí)驗(yàn)需要自己完成,所以掌握一定的前端開(kāi)發(fā)知識(shí)還是很有必要的。
很多做Android開(kāi)發(fā)的Java程序員都對(duì)HTML5比較熟悉,因?yàn)楹芏嗍謾C(jī)端開(kāi)發(fā)需要使用HTML5來(lái)呈現(xiàn),所以對(duì)開(kāi)發(fā)Android的Java程序員來(lái)說(shuō),掌握前端開(kāi)發(fā)還是很有必要的。
總之,作為Java程序員來(lái)說(shuō),掌握數(shù)據(jù)庫(kù)、Linux都是很有必要的,前端開(kāi)發(fā)可以根據(jù)實(shí)際情況一邊使用一邊學(xué)習(xí)通常就夠用了。
我從事Java開(kāi)發(fā)也有10多年的時(shí)間了,如果大家有關(guān)于Java方面的問(wèn)題可以跟我交流。
java不是javascript。java語(yǔ)言,本身屬于后端服務(wù)語(yǔ)言,個(gè)人建議沒(méi)有必要去深入前端。只要懂就可以,沒(méi)必要深入
除非你要做全棧工程師。
但吾生有崖,學(xué)無(wú)涯!
你是java程序員,更多的學(xué)習(xí)后端服務(wù)吧。數(shù)據(jù)庫(kù),linux
百度的:
ucloud的:
ucloud:
除非你要做全棧工程師。否則,別深入前端了,了解就可以。后端無(wú)止盡,夠?qū)W的了
我是小鳥,深坑互聯(lián)網(wǎng),歡迎關(guān)注暢聊。
謝邀~
為了避免誤人子弟,在講建議之前,我還是先說(shuō)說(shuō)我的工作背景。
我一直從事企業(yè)級(jí)應(yīng)用的開(kāi)發(fā),也就是我做的系統(tǒng)都是公司內(nèi)部的員工在使用,而不是面向互聯(lián)網(wǎng)用戶。
開(kāi)發(fā)環(huán)境都在windows,測(cè)試和生產(chǎn)環(huán)境都是Linux,我會(huì)做項(xiàng)目的發(fā)布和調(diào)優(yōu)的工作。
我們大多數(shù)項(xiàng)目,都沒(méi)有做分庫(kù)分表,也就是單庫(kù);會(huì)用到Redis和MongoDB。
所以我認(rèn)為需要深入學(xué)習(xí)的:數(shù)據(jù)庫(kù)>linux>前端。
我發(fā)現(xiàn)很多程序員在工作的前幾年,很愛(ài)做一件事兒,包括我自己:什么技術(shù)都想學(xué),但什么都沒(méi)有深入地學(xué)。
我在第一家單位工作的時(shí)候,周末就喜歡去西單圖書大廈看書買書(別笑,那時(shí)候互聯(lián)網(wǎng)購(gòu)物沒(méi)那么發(fā)達(dá)),我買過(guò)的書有:Deliph、MFC、PhotoShop、C++;前端方面的有CSS、JavaScript、H5、JQuery、DWR...也算“博覽群書”了,但是現(xiàn)在還記得的,已經(jīng)寥寥無(wú)幾。
我們常說(shuō)要追求技術(shù)的廣度,其實(shí)也不是毫無(wú)目的;我一個(gè)做Java的去買Deliph方面的書,不是說(shuō)Deliph不好,只是對(duì)我本身的工作提升有限。
數(shù)據(jù)庫(kù):數(shù)據(jù)庫(kù)一定要深入的學(xué)習(xí),包括關(guān)系型數(shù)據(jù)庫(kù)和非關(guān)系型數(shù)據(jù)庫(kù)。其中關(guān)系型數(shù)據(jù)庫(kù),我用過(guò)Oracle、DB2、Mysql,基本上在開(kāi)發(fā)這個(gè)層面上,每一種數(shù)據(jù)庫(kù)用的都很溜,一些底層的知識(shí)也有接觸;對(duì)于非關(guān)系型數(shù)據(jù)庫(kù),我主要研究Redis和MongDB,這兩個(gè)都是現(xiàn)在的主流技術(shù)。
linux:在使用層面上沒(méi)有問(wèn)題,至少環(huán)境的發(fā)布、日常運(yùn)維、性能監(jiān)控方面的命令都很熟悉;而且都是從實(shí)際工作出發(fā)去學(xué)習(xí),需要什么就學(xué)什么,時(shí)間長(zhǎng)了也就熟練了。
前端:我已經(jīng)放棄很久了,現(xiàn)在我們項(xiàng)目普遍采用前后端分離的框架,老系統(tǒng)前端都用JQuery,新項(xiàng)目都會(huì)用bootstrap、vue,而且新項(xiàng)目一般都會(huì)有專業(yè)的前端進(jìn)行開(kāi)發(fā)。
這是我自己的一些看法,大家可以參考,不過(guò)還是要根據(jù)自己的實(shí)際情況出發(fā);比如我就想研究一下Linux內(nèi)核,或者我想開(kāi)發(fā)一款產(chǎn)品,需要研究一下前端技術(shù)。
我覺(jué)得必須分個(gè)第一第二的話,那就是數(shù)據(jù)庫(kù),因?yàn)樗械南到y(tǒng)都離不開(kāi)數(shù)據(jù)庫(kù)。
優(yōu)秀的程序員應(yīng)該全部都掌握,因?yàn)槿珬9こ處煵攀亲顡屖值?,把一個(gè)人用出多個(gè)人的感覺(jué),才是資本主義的最高價(jià)值觀。
但是如果一定要在前端,數(shù)據(jù)庫(kù)與Linux中做選擇的話,我的排序是數(shù)據(jù)庫(kù)>LINUX>前端。
我們倒著說(shuō),為什么把前端放在最后。
當(dāng)前后端分離的大趨勢(shì)下,前后端的耦合越來(lái)越弱,以我目前工作的平臺(tái)服務(wù)來(lái)說(shuō),前后端僅僅通過(guò)api接口通信,這就意味著,作為Java開(kāi)發(fā)工程師的我,只需要負(fù)責(zé)提供一個(gè)穩(wěn)定的API接口就夠了,我無(wú)須過(guò)問(wèn)前端工程師如何渲染前端頁(yè)面,這是PM和FE應(yīng)該操心的事情。因此,如果我不想往全棧發(fā)展的話,根本不用理會(huì)前端。
還是以我目前工作的平臺(tái)舉例,我們的Tomcat布置在Linux環(huán)境中。
最最基本的,我們至少要知道如何打包上傳,部署并啟動(dòng)服務(wù)器,redis,es,MySQL,切換Nginx等等。進(jìn)階一點(diǎn),我們需要學(xué)會(huì)如何利用Linux強(qiáng)大的grep命令去篩選日志,排查問(wèn)題。而如果遇到了突發(fā)情況,比如Tomcat掛掉,頻繁發(fā)生OOM或者其他重啟無(wú)法解決的問(wèn)題,而且從代碼上也分析不出來(lái)問(wèn)題所在,就要學(xué)會(huì)用dump,top等等語(yǔ)句來(lái)分析現(xiàn)場(chǎng),定位問(wèn)題。這種能力雖然不是每天都要用,但是一旦用到,就會(huì)派上大用處,不夸張,那時(shí)候的你就是同事眼中的超級(jí)英雄。
此處不局限于MySQL,也包括了ElasticSearch等所有數(shù)據(jù)持久層。
上面說(shuō)到Linux的酷炫使用并非每天都會(huì)遇到,但是數(shù)據(jù)持久層如果出現(xiàn)問(wèn)題,那么將會(huì)猶如禿子頭上的虱子一樣顯著。繼續(xù)舉例,我們?cè)?jīng)工作的平臺(tái),最初數(shù)據(jù)持久層用的是MySQL,但是隨著數(shù)據(jù)量的增大,其反應(yīng)速度越來(lái)越慢,導(dǎo)致頻頻收到用戶的反饋,極大影響了用戶體驗(yàn)與產(chǎn)品口碑。
后來(lái),我們想到的辦法是首先引入MySQL主從架構(gòu),緩解對(duì)單MySQL節(jié)點(diǎn)的訪問(wèn)壓力,其次引入了ES做數(shù)據(jù)持久層,利用了ES對(duì)大數(shù)據(jù)的快速查找能力,最終解決了這個(gè)問(wèn)題。
從以上我說(shuō)的例子中,我想大家應(yīng)該就能感受到詳細(xì)了解數(shù)據(jù)庫(kù)相關(guān)知識(shí),對(duì)提高JAVA工程的性能有更大的幫助,因此我的建議是大家將更多的精力花在了解數(shù)據(jù)持久層上。
以上是我的淺見(jiàn),歡迎大家在下方留言與我交流。
我是蘇蘇思量,來(lái)自BAT的Java開(kāi)發(fā)程序員,每天分享科技類見(jiàn)聞,歡迎各位關(guān)注我,與我共同進(jìn)步。
我是一名計(jì)算機(jī)專業(yè)的學(xué)生,目前從事java的開(kāi)發(fā),就這個(gè)問(wèn)題而言,我覺(jué)得很多人會(huì)傾向于深入學(xué)習(xí)數(shù)據(jù)庫(kù),linix,當(dāng)然我也不例外,因?yàn)楝F(xiàn)在的開(kāi)發(fā)都是前端后端分離,對(duì)于前端的東西,你只需要了解一些就可以了,而沒(méi)有深入學(xué)習(xí)的必要,而現(xiàn)在又有一個(gè)稱謂叫全棧工程師,意思是前端后端都會(huì),但是一個(gè)人沒(méi)有那么多精力去深入學(xué)習(xí)那么多東西,你看上去似乎都會(huì),其實(shí)你都沒(méi)有深入。
對(duì)于后端人員,深入學(xué)習(xí)數(shù)據(jù)庫(kù)和linux是很有必要的,這會(huì)影響到你以后是否能成功向DBA,運(yùn)維轉(zhuǎn)型,程序員遲早要轉(zhuǎn)型的,如果你深入學(xué)習(xí)了數(shù)據(jù)庫(kù),將轉(zhuǎn)型為DBA應(yīng)該不成問(wèn)題,深入學(xué)習(xí)linux,將來(lái)轉(zhuǎn)為運(yùn)維人員是很有希望的。
總的來(lái)說(shuō),后端人員還是應(yīng)該深入學(xué)習(xí)數(shù)據(jù)庫(kù)和linux系統(tǒng),前端的東西對(duì)以后的提升幫助沒(méi)有那么大。
1、我不認(rèn)為一個(gè)Java程序員需要花費(fèi)精力去深入學(xué)習(xí)前端?,F(xiàn)在多是前后端分離,術(shù)業(yè)有專攻,專業(yè)的事交給專業(yè)的人去做。
2、Java程序員屬于后端開(kāi)發(fā),而圍繞后端開(kāi)發(fā)的東西太多了。比如JVM的底層原理,各種常用框架的原理,微服務(wù)框架,緩存,調(diào)優(yōu)等。這些東西都搞明白了,我認(rèn)為已經(jīng)很牛逼了。
3、數(shù)據(jù)庫(kù)是Java開(kāi)發(fā)中必不可少的一環(huán),sql語(yǔ)句大家都會(huì)寫,關(guān)鍵是誰(shuí)寫的效率高,面對(duì)大量數(shù)據(jù)、并發(fā)等情況下,你寫的sql語(yǔ)句還能瞬間執(zhí)行完嗎?如何對(duì)sql進(jìn)行優(yōu)化,只要提高了執(zhí)行效率,你就很厲害。而這需要對(duì)數(shù)據(jù)庫(kù)的執(zhí)行的整個(gè)過(guò)程原理需要深入研究。當(dāng)然了現(xiàn)在的數(shù)據(jù)庫(kù)還涉及到nosql以及各種緩存。
4、后端程序員肯定會(huì)和linux服務(wù)器打交道,無(wú)論是項(xiàng)目的部署還是線上問(wèn)題的排查或者線上調(diào)優(yōu)等,都離不開(kāi)linux。但對(duì)于非專業(yè)的運(yùn)維人員來(lái)說(shuō),做到一般的命令會(huì)熟練使用就可以了。
5、一個(gè)人的精力是有限的,不排除很牛逼的全棧工程師。對(duì)于一般的開(kāi)發(fā)者來(lái)說(shuō),能做到一點(diǎn)深入研究并有成功結(jié)果,都已經(jīng)很厲害了。
希望對(duì)你有幫助。
作為Java程序員,應(yīng)該深入哪方面的學(xué)習(xí)?其實(shí)這跟應(yīng)不應(yīng)該沒(méi)啥關(guān)系,而是看你的發(fā)展規(guī)劃或未來(lái)定位。
如果認(rèn)為就是做個(gè)一般程序員,再搞搞其它副業(yè),也未嘗不可,程序員可作為職業(yè)養(yǎng)活自己甚或家庭,有可以搞點(diǎn)或發(fā)展個(gè)人愛(ài)好。
如果認(rèn)定了在IT技術(shù)領(lǐng)域發(fā)展,那就可以進(jìn)行程序員進(jìn)階貯備,包括提升技術(shù)能力等級(jí),通曉架構(gòu),然后是大數(shù)據(jù)人工智能等。
這過(guò)程你數(shù)據(jù)庫(kù)、操作系統(tǒng)(如Linux)肯定要掌握的,如果不做管理員,能熟練應(yīng)用就可以了。關(guān)鍵還是技術(shù)與解決問(wèn)題的能力。
其實(shí),在技術(shù)上,你要能深耕一塊,又能有一定的適應(yīng)力,就夠你玩的了。
就說(shuō)這些吧。
java往前端學(xué)習(xí)的話,就是全棧發(fā)開(kāi)了,但是我覺(jué)得沒(méi)有往深的學(xué)習(xí)工資高。
java的架構(gòu)師工資還是很可觀的,年薪都是30w-60w這樣居多,所以我覺(jué)得你往深的學(xué)習(xí)會(huì)比較好。
java學(xué)習(xí)數(shù)據(jù)庫(kù)>linux>前端
首建議數(shù)據(jù)庫(kù),次建議Linux,末建議前端。
1,程序員前后臺(tái)開(kāi)發(fā)分離
稍微有點(diǎn)規(guī)模的企業(yè),程序開(kāi)發(fā)是前后臺(tái)分離的,除非是幾個(gè)人的創(chuàng)業(yè)公司,人力資源緊張,可能會(huì)出現(xiàn)一個(gè)人既做前臺(tái),又做后臺(tái),所以,你要對(duì)自己有個(gè)定位,根據(jù)你個(gè)人的興趣愛(ài)好、工作職責(zé)劃分等等,選擇是前臺(tái)開(kāi)發(fā),還是后臺(tái)開(kāi)發(fā),選其一深耕。
2,IT分運(yùn)維和開(kāi)發(fā)
大家知道,IT行業(yè)有開(kāi)發(fā)、售后實(shí)施、售前銷售等很多崗位,尤其是大公司,可能職責(zé)劃分的更多更細(xì)。如果你是從事一些運(yùn)維工作,那重心就要放在網(wǎng)絡(luò)、操作系統(tǒng)、中間件、常用命令等方面,知識(shí)面要廣,但不要求深。
3,前端開(kāi)發(fā)需要掌握的技術(shù)
前段開(kāi)發(fā)相比后臺(tái)開(kāi)發(fā),技術(shù)框架更新更快,這就要求開(kāi)發(fā)人員具備很強(qiáng)的自學(xué)能力,要緊跟時(shí)代潮流,才能設(shè)計(jì)出最符合用戶口味的產(chǎn)品,目前最常用的技術(shù)有:
4,后臺(tái)開(kāi)發(fā)需要掌握的技術(shù)
很多人喜歡后臺(tái)開(kāi)發(fā),后臺(tái)開(kāi)發(fā)需要掌握很多技術(shù)框架,比前端涉及的技術(shù)面更廣,常用的有。
還有很多就不一一列舉,有太多東西需要掌握。工作中雖然職責(zé)劃分很多,但我們除了要做好本職工作,還要對(duì)其他方面也要適當(dāng)學(xué)習(xí),不能只會(huì)敲代碼,對(duì)Linux 最常用命令一無(wú)所知。
0
回答10
回答10
回答0
回答1
回答0
回答0
回答0
回答3
回答0
回答