范式中舉 自學(xué)java應(yīng)該怎么樣才能學(xué)得比較好?
自學(xué)java應(yīng)該怎么樣才能學(xué)得比較好?首先,我們要知道Java是什么,它在哪里使用Java是一種面向?qū)ο蟮木幊陶Z(yǔ)言,它吸收了C語(yǔ)言的各種優(yōu)點(diǎn),拋棄了C語(yǔ)言,Lido繼承和指針的概念功能強(qiáng)大,簡(jiǎn)單易用。
自學(xué)java應(yīng)該怎么樣才能學(xué)得比較好?
首先,我們要知道Java是什么,它在哪里使用
Java是一種面向?qū)ο蟮木幊陶Z(yǔ)言,它吸收了C語(yǔ)言的各種優(yōu)點(diǎn),拋棄了C語(yǔ)言,Lido繼承和指針的概念功能強(qiáng)大,簡(jiǎn)單易用。與C相比,它的入門難度要小得多。它還具有分布式、健壯性、安全性、平臺(tái)無(wú)關(guān)性和可移植性、多線程等優(yōu)良特性。這就是為什么古老的Java語(yǔ)言經(jīng)久不衰的原因。
Java可以開(kāi)發(fā)桌面應(yīng)用、web應(yīng)用、分布式系統(tǒng)和嵌入式系統(tǒng),可以說(shuō)應(yīng)用非常廣泛。
現(xiàn)在在一個(gè)大的互聯(lián)網(wǎng)時(shí)代,Java更多地用于Web程序,所以接下來(lái)我將給出Java Web學(xué)習(xí)方向。
首先,學(xué)習(xí)Java的語(yǔ)法基礎(chǔ),弄清楚一些數(shù)據(jù)類型、循環(huán),以及如何編寫條件語(yǔ)句等
接下來(lái),我們需要了解一些難點(diǎn),比如什么是接口?什么是序列化?什么是線?集合、地圖和列表有什么區(qū)別?如何處理錯(cuò)誤?
然后學(xué)習(xí)JAVA內(nèi)存和JVM,弄清楚內(nèi)存分配機(jī)制、內(nèi)存泄漏和監(jiān)控等,這是面試中經(jīng)常問(wèn)的問(wèn)題。
然后您可以學(xué)習(xí)一些與數(shù)據(jù)結(jié)構(gòu)相關(guān)的知識(shí)和設(shè)計(jì)模式。如果你有基本的計(jì)算機(jī)知識(shí),你可以跳過(guò)它。最后一個(gè)基礎(chǔ)是數(shù)據(jù)庫(kù),這是比較容易學(xué)習(xí)的。
然后您可以開(kāi)始學(xué)習(xí)一些應(yīng)用程序知識(shí),例如服務(wù)器和容器(Tomcat)-前端(JSP、HTML、JS等)-Java Web的三個(gè)組件(servlet、listener、filter)-Java的三個(gè)框架(spring、Struts2、hibernate)。
應(yīng)用的東西可以學(xué)習(xí)后開(kāi)發(fā),盡量做一個(gè)大網(wǎng)站。
最后,學(xué)習(xí)高級(jí)點(diǎn)、套接字、線程和并發(fā)、通信協(xié)議等。
如果您想徹底了解Java,建議您學(xué)習(xí)一些基本的計(jì)算機(jī)知識(shí)。去十大基礎(chǔ)課程(數(shù)據(jù)結(jié)構(gòu)、編譯、匯編、操作系統(tǒng)、數(shù)字邏輯等)的書上學(xué)習(xí)這些計(jì)算機(jī)基礎(chǔ)知識(shí)對(duì)你理解計(jì)算機(jī)和發(fā)展有很大的幫助,將來(lái)學(xué)習(xí)其他語(yǔ)言會(huì)事半功倍。
有人說(shuō)設(shè)計(jì)模式是為了彌補(bǔ)Java語(yǔ)言的缺陷,你覺(jué)得是這樣嗎?
如果你從語(yǔ)言的角度來(lái)看設(shè)計(jì)模式,那是對(duì)的。一些設(shè)計(jì)模式彌補(bǔ)了Java語(yǔ)言的不足,其中最明顯的是singleton模式。
Java本身不提供單例對(duì)象創(chuàng)建,需要通過(guò)單例模式實(shí)現(xiàn)。什么樣的餓、懶、多線程都要注意DCL、易變關(guān)鍵字等,導(dǎo)致面試題很多。
在現(xiàn)代語(yǔ)言中,許多提供了創(chuàng)建單例對(duì)象的語(yǔ)法,例如scala和kotlin的對(duì)象關(guān)鍵字。
從架構(gòu)的角度來(lái)看,設(shè)計(jì)模式將組件關(guān)系解耦。
假設(shè)我們要實(shí)現(xiàn)一個(gè)帶有上載服務(wù)的文件服務(wù)器來(lái)上載文件。我們可以調(diào)用convertservice來(lái)轉(zhuǎn)換文件。Uploadservice屬于核心模塊upload module,convertservice屬于非核心模塊conversion module。
如果uploadservice直接調(diào)用convertservice來(lái)執(zhí)行轉(zhuǎn)換,則核心模塊依賴于非核心模塊。如下圖所示:
非核心模塊相對(duì)不穩(wěn)定,核心模塊相對(duì)穩(wěn)定。核心模塊對(duì)非核心模塊的依賴將導(dǎo)致核心模塊的不穩(wěn)定性。所以可以使用策略模式來(lái)解耦:
看箭頭方向,現(xiàn)在轉(zhuǎn)換模塊依賴于上傳模塊,轉(zhuǎn)換模塊的變化不會(huì)影響上傳模塊。依賴的方向改變了。這就是傳說(shuō)中的“依賴倒置”!