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