1. 零基礎應該選擇學習 java、php、前端 還是 python
這三門當中,首推Java。真的,Python當然是好,但是對於一個新入門的人,最重要的是先找到工作不是嗎?而找工作的話,Java無疑是最容易的。相比較PHP與Python而言,Java程序員的崗位需求要大的很多,對於跨行業的人而言,最困難的其實是第一步,那就是如何進入這個行業。如果你連進都進不來,第一份工作遲遲無法開始,那麼好好努力,補上數據結構,設計模式,演算法設計這些差距就根本無從說起,不是嗎?
接著,我來談談具體的規劃。
1.
了解Java的運行環境。搞清楚path和classpath是干什麼的,怎麼在命令行進行編譯,執行。知道IDE的各個按鈕後面真正發生了什麼事情。
2.
掌握Java的語法。搞清楚包,介面,類,繼承這些基本概念。掌握多態,overwrite,死背下IO的介面,包括InputStream/OutputStream和Writer/Reader,死背下網路編程和GUI編程的介面,背JDBC介面。這一步,推薦的書是《
瘋狂Java講義》。
3.
掌握多線程編程。弄明白ConcurrencyHashMap是怎麼實現的,搞清楚synchronized是怎麼回事,弄明白為什麼要有Runnable介面。
在第二步和第三步掌握到80%的時候,你就可以考慮找工作了。
4. 在工作中體會一下設計模式。推薦《輕量級Java
EE企業應用實戰》這本書。看完裡面的Decorator,IO介面你再也不會去死記硬背了。用的時候,根據Adaptor和Decorator的命名規則,自己臨時推都推得出來。
5. 惡補數據結構。 搞清楚 LinkedList和
ArrayList的實現機制,了解它們的每一個介面的時間復雜度。同樣的還有其他容器,Map啊,Set啊,都是一樣的。棧,隊列,二叉樹,圖貫穿編程始終,如果這一步你邁不過去,那就只能在低階程序員里打轉。
6.
如果有可能,最好對一些演算法設計也有所涉獵。比如動態規則的思路,貪心演算法,諸如KMP這種奇妙的演算法等。這一步沒有數據結構那麼重要,學得好當然好,學不好也不用太挫敗。
到了這一步,你和科班程序員之間的差距就不大了。可以在工作中獨立承擔開發任務了。
瘋狂軟體教育中心專注於Java培訓,瘋狂軟體Java培訓可以有效的幫助你提升相關技能。名師講解Java設計和編程、Web前端開發、JavaEE進階、大數據核心知識等,讓你在5個半月內快速獲得理論和實踐的雙重提升。
7.
進階,這時候就可以有自己的思考了。Java發展到現在,被用在各種各樣的情景之中,說它是應用最廣泛的編程語言並不過分。你在打好基礎以後,就可以考慮應該向哪個方向發展了。比如服務端的架構,最好能學習一下JavaEE。JEE一直以來,都是讓人覺得門檻太高。這個其實可以從Spring入手,搞清楚反射,控制反轉,依賴注射都是什麼鬼(這些神叨叨的名詞其實都是為了解決Java本身不夠動態這個缺陷而出現的,這里不展開,我只想提醒的是,這些概念沒有什麼大不了的東西,不要被愛裝逼的傢伙嚇住了)。還有消息這個東西,還有ORM這個東西,都去搞搞清楚。想一下它們要解決什麼問題,再猜一下他們是怎麼實現的。我面試的時候發現,其實大多數優秀的開發者,即使以前沒思考過這個問題,讓他現場設計一下Hibernate,都能設計得差不多。這說明,這些框架性的東沒有什麼大不了的。有了基礎,你也能設計出來。關鍵是要去動腦筋想。以上是以服務端開發舉例,那麼對於客戶端,你就去思考事件響應機制是如何工作的(這個我不熟悉,就不再多說了)。還可以深入研究一下JVM的源代碼,以及其實現機制,了解一下垃圾回收演算法等等。
到了這一步,你就可以應聘Java高級開發了。如果運氣好,年薪30萬是有可能的。保底也要20萬了。
8.
架構。到了這一步,你就算是登堂入室,真正邁入高級開發人員了。這一步,你要思考更多的東西,比如,如何處理高並發,如何應對分布式系統,如何提供更健壯的數據服務。到了這一步,那就沒有什麼可以參考的,現成的東西了。全靠自己的悟性了。那最後能達到什麼高度,就不是我這個層次能點評的了。
編程的世界永遠向所有熱愛編程的人開放,這是一個自由,平等,共享的世界,我始終是這樣堅信的。
2. python和php和java的區別
一、python虛擬機沒有java強,java虛擬機是java的核心,python的核心是可以很方便地使用c語言函數或c++庫。
二、python是全動態性的,可以在運行時自己修改自己的代碼,java只能通過變通方法實現。python的變數是動態的,而java的變數是靜態的,需要事先聲明,所以java ide的代碼提示功能優於python ide。
三,python的產生幾十年了,幾十年前面向過程是主流,所以用python有好多程序用的是面向過程設計方法,很多概念從c語言過來的,class在python中是後加入的,而java是為了實現沒有指針的c++(當年com組件用的引用記數,java用的虛擬機),主要採用面向對象的設計方法,很多概念是oop的概念。面向過程,相對簡潔直觀,但容易設計出面條程序,面向對象,相對抽象優雅,但容易過度抽象。
四,在實際使用的python入門簡單,但要學會用python幹活,需要再學習python各種庫,pyhton的強大在於庫,為什麼python的庫強大,原因是python的庫可以用python,c語言,c++等設計,再提供給python使用,所以無論gpu運行,神經網路,智能演算法,數據分析,圖像處理,科學計算,各式各樣的庫在等著你用。而java沒有python那麼多的開源庫,很多庫是商業公司內部使用,或發布出來只是一個jar包,看不到原始代碼。python虛擬機因為編譯性沒有java的支持的好(或者說故意這么設計的),一般直接使用源碼(linux),或源碼簡單打個包(如pyexe)。
五、python有很多虛擬機實現,如cython,Pyston,pypy,jython, IronPython等等,適合用於業務語言,或插件語言,或面向領域語言,而java因為虛擬機巨大,很少用於插件語言,發布也不方便。
六、java主要用於商業邏輯強的領域,如商城系統,erp,oa,金融,保險等傳統資料庫事務領域,通過類似ssh框架事務代碼,對商業資料庫,如oralce,db2,sql server等支持較好,軟體工程理念較強,適合軟體工程式的多人開發模式。python主要用於web數據分析,科學計算,金融分析,信號分析,圖像演算法,數學計算,統計分析,演算法建模,伺服器運維,自動化操作,快速開發理念強,適合快速開發團隊或個人敏捷模式。
七、java的商業化公司支持多,如sap,oracle,ibm等,有商業化的容器,中間件,企業框架ejb。python的開源組織支持多,如qt,linux,google,很多開源程序都支持python, 如pyqt,redis,spark等。
八、python用途最多的是腳本,java用途最多的是web,pyhotn是膠水,可以把各類不相關的東西粘在一起用,java是基佬,可以通過軟體工程組成幾百個人的團隊和你pk,商業化氣息重。不過我認為還是python強大,因為可以方便調用c或c++的庫,但軟體工程和商業化運作沒有java好,適合快捷開發。
3. JAVA,PHPPython區別
從學習難度上來講,Python比Java要簡單得多,尤其適合非計算機專業的學生適合。當然,Python更容易入門並不僅僅是首選的理由,主要的理由如下:
1.python在應用方面來講更多,由於歷史原因,Java的應用更多地體現在網路編程方面,而近年來Python在數據分析和機器學習方面得到的應用更廣泛,對於非計算機專業的學生來說,學習python更可能是為了解決本專業的問題,而不是編寫專業的網路程序或者安卓應用程序。因此,用Python以及相應的庫,可以解決讀寫Office文檔,數據處理與分析,簡單的機器學習等問題,對各個專業學生來說應用都更加廣泛。可以替代Matlab等專業程序。
2.python的支持更全面。單純從第三方庫的角度來看,Python相比Java可能不具有明顯優勢,但是從第三方庫的分布來看就完全不一樣好扒了,正如同應用的領域不一樣,python的第三方庫更多地在一些「更接地氣」的方面,而這些更接地氣的第三方庫可以讓你的開發變得簡潔而有效。不重復造輪子,是其中最明顯的優勢。
3.python也可以實現大型的程序。Python容易上手,並不代表著其不能完成大型的應用,事實上,python完全可以搭建非常復雜輪攔的大型程序。同時,由於Python存在不同的發型版本,在應用上而言也可以根據不同的需要進行選擇,比如科學計算的話選擇Anaconda和Ipython,而需要提高效率的話則盡量使用CPython,此外還有和微軟.net結合的Ironpython或者和Java結合的Jython,這都是Java無法比擬的。
最後,在編程效率方面Python遠高於其他主流語言,當然,其多線程鎖和運行效率也是一直為人詬病的,但這些缺陷正在不停的得到解決,而臘襪胡且,隨著計算機硬體水平的提高,編程快顯然比運行速度快更重要。