我聽說程式語言,常使用的是其中20%的技術。在Java這門語言中,這20%包括哪些內容?參加訓練兩個月了,還有兩個月的時間,要 想在兩個月後,找到一份Java初級程式設計師的工作,有哪些是必須掌握的,有哪些是可以現學現賣的?一個完整的Javaweb項目,有哪些具體模組,每個模 塊用到的技術是哪些?
常用api(String,StringBuffer/StringBuilder等)
1.集合類,線程類
2.Servlet(很少用純粹的servlet寫,但你要懂,因為很多框架都是基於servlet封裝的)
3.json,xml讀寫
4.資料庫存取(CRUD,事務,連線池)
5.http請求(HttpClient)
6其他,包括常用框架,設計模式,物件導向
初級程式設計師會這些就可以寫專案了。後期遇到的問題就會複雜得多,而且要靠各種經驗和知識的累積。
除了要掌握的20%以外還要掌握些什麼知識才能游刃有餘。下面說說我接觸(使用)過、的東西吧。
java以分散式應用豐富的生態聞名,在分散式系統中逃不過CAP的抉擇。早早了解一些分散式一致性協定paxos、raft等。學習zookeeper的原理和使用場景(metadata、分散式鎖、leaderEletion… etc)
RPC框架在SOA架構中起著重要的作用,好好探究終是有好處的,在這裡推薦阿里巴巴的dubbo框架,同時會netty、mina等網路庫
Hadoop系列Storm Spark 等離線即時運算框架
ElasticSearchSolrCloud 分散式搜尋ELK 日誌相關的東西對這些比較敏感,當然在更多的場景使用ES也是有很多的
訊息佇列kafkaMetaQ RabbitMQ 恩,昨天ZeroMQ(不完全算作MQ)的作者選擇安樂死了,願天堂沒有痛苦
然後就是各種基礎知識,程式語言、網路方面、資料庫、資料結構和演算法。不要覺得任何一項都精通了,敢說精通的知乎能有幾個。
程序小白15年7月入職,成長中,可能不準確,僅分享下到目前的成長歷程
2015年五月小白(有C基礎),因為對自己大學專業不敢興趣,遂臨時抱佛腳學一個多月java,入職javaWEB開發至今,也算跟過兩個大項目,自己獨立開發了n個功能(大牛們憋笑話我),暫時沒聽過題主提到的20%的說法。
1.學會使用eclipse,svn等IDE和工具(不用說了吧,主要是看你工作的地方,比如大家用eclipse你想用IntelliJ IDEA也可以,但是剛工作肯定很多不懂,這時候暫時還不要標新立異的好,出了問題好問。 ide大神請無視)
2. 剛入職還接觸不到核心工作,就讓我先改改頁面什麼的,作為web開發html、css、和javascript不用精通,至少需要了解用法和語法吧,雖然有前端工程師,但這個肯定也是要了解的(自己公司小專案組,各個都被逼成全端了)。 javascript其實還是很強大的,但是剛開始不用寫的很深,很多輪子可以用,比如easyui,正如@王大胖所說的會查閱官方文檔,知道用法往網頁裡嵌,然後後台按格式把數據傳到前台就好。
3. 然後開始逐步往後台寫了,熟悉下設計模式,如果太多太難理解可以先理解工廠模式,寫一個接口再用一個或若干個實現類實現這個接口,需要用的時候在根據需要來決定用哪個實作類別。 (一開始不懂這麼做這麼繁瑣有什麼用,但是自從上次專案的資料庫從oracle換成mysql就知道這麼做其實大有用處)一般專案開發都會用到設計模式,不了解可能會摸不清楚整個專案的架構,無從下手。
4.不同公司用的框架不一樣,但struts,spring還是用的比較多的,所以這兩個東西還是比較熟悉的好,不然你可能連整個專案的架構都不清楚,不要說自己寫,連改都很難下手。例如專案的跳轉是怎麼配的,哪個設定檔代表了什麼。 (一開始我把專案本地跑起來以後我連主頁在哪是哪個文件怎麼進去的都不清楚T.T,一直在找index.jsp然後才知道項目用freemarker做的,是一個ftl文件)
5.web專案要操作資料庫的工作是少不了的了,自己跟的專案沒用hibernate,主要用的是StringBuffer拼接sql,如果從事web開發,sql還是要比較熟的。照帶我的小哥說,sql這麼厲害,就沒有sql完成不了的事。
6. 自己感覺做web項目設計高深算法的可能做的比較深才會遇到,更多的是對字符串和數值格式的操作,例如後台從資料庫抽出來到前台怎麼展示,使用者輸入的資料怎麼存到資料庫裡,所以最好熟悉下字串的操作,分割呀合併呀,String轉float、int什麼的,日期格式呀什麼的。
如果公司有專業運維,伺服器部署什麼的交給他們就好了,如果沒有就最好還是了解下,遠端連接呀,linux的一些簡單的命令呀,tomcat呀什麼的
首先題主說的20%我不知道從哪方面去理解。接下來我會將自己多年來工作中會經常使用到的技術列出來。
1.html、css
2.java工作原理(jvm)
3.多語法、資料結構與演算法
4.java語言特性(封裝、繼承、java語法、資料結構與演算法
4.java語言特性(封裝、繼承、java語法、抽象) 5.java設計模式(在開發上會常用)
6.java反射機制(常用框架都會用到反射機制)
http://7.io(檔案讀寫)
8.多執行緒
9.網路程式設計
10.javascript
11.jquery
12.資料庫(oracle、mysql等)
13.servlet
14.JDBC15.層架構
17.前後台互動
18.ajax
19.過濾器及過濾器原理
20.常用框架(Struts、hibernate、spring、springMVC、i/mybat20.常用框架(Struts、hibernate、spring、springMVC、i/mybatis)
22.工作流程(流程引擎工作機制)
23.xml、properties、json
24.常用頁面以及後台插件(tree、時間、poi等等)
25.nosql資料庫以及應用場景(mongoDB)
26.快取資料庫以及機制(redis、memcached)
27.第三方介面呼叫
28.SDK
29.web應用伺服器(tomcat、weblogic)
30.lin 32.資料庫連接池
33.maven
34.svn
35.建模工具(powerdesiner、axure)使用
36.TCP/IP