更新時間:2019-10-25 11:19:12 來源:動力節(jié)點(diǎn) 瀏覽2913次
大道至簡,所以扎實(shí)有用的方法,其實(shí)都是很簡單的,難在踏踏實(shí)實(shí)的執(zhí)行過程。今天為大家介紹的就是Java學(xué)習(xí)的8個看起來非常簡單的方法,快學(xué)起來吧。
為什么要學(xué)習(xí)Java?
Java是目前最流行的編程語言,主流公司框架基本上都離不開Java的影子,未來還會火很多年。Java應(yīng)用范圍極其廣泛,無論在客戶端還是在服務(wù)端都有。
學(xué)習(xí)一門語言
語言有很多選擇,我已經(jīng)將它們分成幾類,以便更容易做出決定。對于剛開始進(jìn)入后端開發(fā)的初學(xué)者,我建議你選擇任何腳本語言,因?yàn)樗鼈冇泻芏喙δ埽梢宰屇憧焖倨鸩?。如果你有一些前端知識,你可能會發(fā)現(xiàn)Node.js更容易(還有一個很大的就業(yè)市場)。
如果你已經(jīng)是后端開發(fā)并了解一些腳本語言,我建議不要選擇其他腳本語言,而是從「函數(shù)式(Functional)」或「多范式(Multiparadigm)」中選擇。例如,如果你已經(jīng)在使用PHP或Node.js,請不要使用Python或Ruby,而應(yīng)該嘗試使用Erlang或Golang。它一定會幫助你延伸思維,并將你的思想帶到新的視野。
練習(xí)你學(xué)到的東西
沒有比實(shí)踐更好的學(xué)習(xí)方式了。一旦你選擇了語言,并且對這些概念有了基本的了解,就可以使用它們,盡你所能制作盡可能多的小應(yīng)用。下面是一些讓你開始的Idea:
在bash中實(shí)現(xiàn)一些你自己使用的命令,比如嘗試實(shí)現(xiàn)ls;
編寫一個獲取和保存reddit上/r/programming文章的命令,并保存為JSON;
編寫一個以JSON格式列出目錄結(jié)構(gòu)的命令,例如jsonifydir-name返回一個帶有dir-name內(nèi)部結(jié)構(gòu)的JSON文件;
編寫一個讀取從上面的步驟得到的JSON的命令,并創(chuàng)建目錄結(jié)構(gòu);
考慮將每天做的一些任務(wù),并嘗試將其自動化。
學(xué)習(xí)軟件包管理器
了解該語言的基礎(chǔ)知識并制作了一些示例應(yīng)用之后,需要了解如何使用該語言的軟件包管理器,包管理器可幫助在應(yīng)用程序中使用外部庫,并分發(fā)你自己的庫供其他人使用。
如果你選擇了PHP,你將學(xué)習(xí)的是Composer,Node.js有NPM或Yarn,Python有Pip,Ruby有RubyGems。無論選擇什么,請繼續(xù)學(xué)習(xí)如何使用其包管理器。
標(biāo)準(zhǔn)和最佳實(shí)踐
每種語言都有自己的標(biāo)準(zhǔn)和開發(fā)的最佳實(shí)踐,例如PHP有PHP-FIG和PSR,使用Node.js有許多不同的社區(qū)驅(qū)動指南,其他語言也有相同的指導(dǎo)。
安全
請務(wù)必閱讀有關(guān)安全的最佳實(shí)踐,閱讀OWASP指南并了解不同的安全問題以及如何以選擇的語言避免它們。
實(shí)踐
你已經(jīng)掌握了語言、標(biāo)準(zhǔn)和最佳實(shí)踐的基礎(chǔ)知識,安全性以及如何使用軟件包管理器。現(xiàn)在開始創(chuàng)建一個包并分發(fā)給其他人使用,并確保遵循迄今為止學(xué)到的標(biāo)準(zhǔn)和最佳實(shí)踐。例如,如果您選擇了PHP,那么可以在Packagist上發(fā)布,如果選擇了Node.js,那么可以在Npm上發(fā)布,等等。
如果完成了,在Github上搜索一些項(xiàng)目,并在某些項(xiàng)目中提一些PR。下面是一些Idea:
重構(gòu)并實(shí)現(xiàn)學(xué)到的最佳實(shí)踐
查看未解決的issue并嘗試解決
添加任何附加功能
了解測試
了解如何在應(yīng)用程序中編寫單元測試和集成測試,另外,了解不同的測試術(shù)語,如mocks,stubs等
練習(xí)
為目前為止所做的實(shí)際任務(wù)編寫單元測試,尤其是步驟6中所做的練習(xí)。還要學(xué)習(xí)和計(jì)算編寫的測試的覆蓋率。
了解關(guān)系數(shù)據(jù)庫
了解如何將數(shù)據(jù)保存在關(guān)系數(shù)據(jù)庫中。在選擇要學(xué)習(xí)的工具之前,請先了解不同的數(shù)據(jù)庫術(shù)語,例如鍵,索引,規(guī)范化,元組等。
這里有幾個選項(xiàng),但如果你學(xué)習(xí)一個,其的應(yīng)該也是相當(dāng)容易去學(xué)。你想學(xué)習(xí)的應(yīng)該是MySQL,MariaDB和PostgreSQL。可以選擇MySQL。
PracticalTime
現(xiàn)在是時候把學(xué)到的東西拿來用了,使用迄今為止學(xué)到的所有內(nèi)容創(chuàng)建一個簡單的應(yīng)用程序。選擇任何一個idea,可以是創(chuàng)建一個簡單的博客,并實(shí)現(xiàn)其中的以下功能:
用戶帳戶——注冊和登錄
注冊用戶可以創(chuàng)建博客文章
用戶應(yīng)該能夠查看他創(chuàng)建的所有博客文章
用戶應(yīng)該能夠刪除他們的博客文章
確保用戶只能看到他的個人博客文章(而不能看其他人的)
編寫單元/集成測試
應(yīng)該為查詢應(yīng)用索引,分析查詢以確保索引有作用。
學(xué)習(xí)框架
根據(jù)選擇的項(xiàng)目和語言,可能需要也可能不需要框架。每種語言都有幾個不同的選項(xiàng),繼續(xù)看看選擇的語言有哪些選項(xiàng)可供選擇,然后選擇一個。
如果選擇了PHP,我會建議使用Laravel或Symfony以及微架構(gòu)(Lumen或Slim),如果你選擇Node.js,有幾種不同的選擇,但突出的是Express.js。
PracticalTime
將step10中創(chuàng)建的應(yīng)用程序轉(zhuǎn)換為使用選擇的框架,還要確保移植包括測試在內(nèi)的所有內(nèi)容。
學(xué)習(xí)NoSQL數(shù)據(jù)庫
首先了解它們是什么,它們與關(guān)系數(shù)據(jù)庫有什么不同以及為什么需要它們。有幾種不同的選擇,稍微研究下看看,并比較它們的特點(diǎn)和差異。可以選擇的一些常用選項(xiàng)有MongoDB,Cassandra,RethinkDB和Couchbase,如果必須選擇一個,請使用MongoDB。
緩存
了解如何在應(yīng)用程序中實(shí)現(xiàn)應(yīng)用程序級緩存,了解如何使用Redis或Memcached,并在step12中創(chuàng)建的應(yīng)用程序中使用緩存。
創(chuàng)建RESTfulAPI
了解REST并學(xué)習(xí)如何制作RESTfulAPI,在RoyFielding的文章中閱讀關(guān)于REST的部分,如果他們說REST只適用于HTTPAPI,那么確保你能夠與他人爭論。
了解不同的認(rèn)證方法
了解不同的認(rèn)證和認(rèn)證方法,你應(yīng)該知道他們是什么,有什么不同以及什么時候使用偏好。
OAuth—OpenAuthentication
BasicAuthentication
TokenAuthentication
JWT—JSONWebTokens
OpenID
消息代理
了解消息代理并了解何時以及為何使用它們。同樣有多種選擇,但突出的是RabbitMQ和Kafka,如果你想選擇一個的話,可以先從RabbitMQ開始。
搜索引擎
隨著應(yīng)用程序的增長,關(guān)系數(shù)據(jù)庫或NoSQL數(shù)據(jù)庫的簡單查詢不能夠滿足要求,而不得不求助于搜索引擎。
了解如何使用Docker
無論是在復(fù)制與生產(chǎn)環(huán)境相同的環(huán)境,保持操作系統(tǒng)清潔或加快編碼、測試或部署,Docker可以在開發(fā)過程中大大方便工作,學(xué)習(xí)如何使用Docker。
Web服務(wù)器知識
如果你已經(jīng)走到這么遠(yuǎn)了,你可能已經(jīng)在前面的步驟中使用了服務(wù)器,這一步主要是找出不同Web服務(wù)器之間的差異,了解限制和不同的可用配置選項(xiàng),以及如何最好地利用這些限制編寫應(yīng)用程序。
了解如何使用WebScoket
雖然不是必需的,但在工具帶中有這些知識是有益的,學(xué)習(xí)如何使用web-sockets編寫實(shí)時Web應(yīng)用程序并使用它創(chuàng)建一些示例應(yīng)用程序。可以在上面制作的博客應(yīng)用程序中使用它來實(shí)現(xiàn)博客文章列表中的實(shí)時更新。
學(xué)習(xí)GraphQL
學(xué)習(xí)如何使用GraphQL制作API,了解它與REST的不同之處,以及它為什么被稱為REST2.0。
看看圖數(shù)據(jù)庫
圖模型代表了一種非常靈活的處理數(shù)據(jù)關(guān)系的方式,圖數(shù)據(jù)庫為其提供了快速高效的存儲、檢索和查詢方式,學(xué)習(xí)如何使用Neo4j或OrientDB。
繼續(xù)探索
一旦你開始學(xué)習(xí)和練習(xí),你一定會遇到我們在這個路線圖中沒有涉及的東西,只要保持開放的心態(tài)和對新事物的渴望就好。
關(guān)鍵是要盡可能多地練習(xí),起初你可能會覺得你并沒有抓住任何東西,但這是正常的,隨著時間的推移,你會覺得越來越好。
那如何學(xué)習(xí)才能快速入門并精通呢?
當(dāng)真正開始學(xué)習(xí)的時候難免不知道從哪入手,導(dǎo)致效率低下影響繼續(xù)學(xué)習(xí)的信心。
但最重要的是不知道哪些技術(shù)需要重點(diǎn)掌握,學(xué)習(xí)時頻繁踩坑,最終浪費(fèi)大量時間,所以有一套實(shí)用的視頻課程用來跟著學(xué)習(xí)是非常有必要的。
為了讓學(xué)習(xí)變得輕松、高效,今天給大家免費(fèi)分享一套阿里架構(gòu)師傳授的一套教學(xué)資源。幫助大家在成為架構(gòu)師的道路上披荊斬棘。
想要領(lǐng)取資源的同學(xué),可以到動力節(jié)點(diǎn)官網(wǎng)咨詢在線老師即可。
相關(guān)閱讀
初級 202925
初級 203221
初級 202629
初級 203743