之前寫過一篇Java后端的學習路線,講的比較基礎。那如果想要提高怎么辦,需要學習到那些技術呢?其實后端開發還是一個比較雜的職位,什么都要學,這就導致學習的技術體系十分龐大。而且很多技術比較高深,筆者也沒有接觸過,所以主要以分享為主。歡迎大家批評指正。
數據庫
如果你是一個合格的搬磚工,那么crud足以應付日常需求。如果你不甘於每天重復而沒有意義的工作,那么你需要學習的還有很多。如下:
關系型數據庫:MySQL/PostgresSQL/Oracle/SQLserve
數據庫框架:Hibrenate(國外)/MyBatis(國內)
NOSQL:MongoDB/Redis(緩存)
數據庫版本控制:flyway/liquidbase(類似git)
NoSQL數據庫
除了關系型數據庫外,一般會使用Redis進行緩存,來提高存取的速度。而文檔型數據庫MongoDB的興起,大有取代關系型數據庫的噱頭,是一門非常值得學習的新技術。
NoSQL,淺談redis與mongoDB的區別
https://www.zhihu.com/question/20059632
數據庫優化
雖然你不是DBA,但是寫的SQL也不能太拉跨了,不然不是對不起自己高級Java開發工程師的稱號。
Java項目常用的開源解決方法
一些場景下,我們需要整合第三方的技術,成熟的Java開發一定要有十八般武藝,來應付各類煩人的需求。
安全框架
JWT/shiro/Spring Security/oauth2
JWT是原理;oauth2是第三方登錄驗證,例如微信登錄;shiro是第三方安全框架;Spring Security是Spring整合的官方安全框架。一般會選擇oauth2 + shiro/Spring Security的組合。
https://blog.csdn.net/qq_16946803/article/details/108408170
https://www.zhihu.com/question/403895467/answer/1313015205
作業
Quartz/XXLjob
日志
Log4J/LogBack/SLF4J
WEB服務器
- Nginx
Nginx是什么 ? 能干嘛 ?
【Nginx】什么是Nginx?為什么使用Nginx? - Netty
ngnix+tomcat的替代方案
消息中間件 rabbitmq/kafka
消息中間件(一)MQ詳解及四大MQ比較
我為什么要選擇RabbitMQ ,各種MQ選型對比
RabbitMQ和kafka的區別
RabbitMQ和Kafka到底怎么選?
全文檢索 slor集群
solr是什么?Solr集群環境的系統架構有
Lucene、solr以及elasticsearch之間的區別和聯系
https://cloud.tencent.com/developer/article/1184361
微服務
SpringCloud
在學會了Springboot后,緊接着就是Spring全家桶。然后進階的就是SpringCould里面的一些東西了。這里推薦一個非常好的文章。同時SpringCloud有自己的組件來應對各個場景,是上文所描述的常用的開源解決方法的簡單集合。
SpringCloud到底是什么
簡單來說,Spring Cloud是一個微服務框架的規范,注意,只是規范,他不是任何具體的框架。而它的內容里面有很多組件提供使用。
這里還有一個很重要的概念就是SOA。
如何通俗易懂地解釋什么是SOA?什么是SOA
Github點贊接近 70k 的Spring Cloud學習教程+實戰項目推薦!牛批!
再附上一篇很好的文章。
Spring Cloud簡述及簡單入門實例
Dubbo+zookeeper
Dubbo也是一種微服務框架,通常需要配合zookeeper使用,但是目前的流行程度不如SpringCloud。有興趣的可以了解一下。
Dubbo和Spring Cloud並不是完全的競爭關系,兩者所解決的問題域不一樣:Dubbo的定位始終是一款RPC框架,而Spring Cloud的目的是微服務架構下的一站式解決方案。
高並發
這就又是一門新的技術了,先挖一個坑,日后有機會再填。
運維
Linux
在后端開發過程中,往往會把一些數據庫安裝在Linux系統中,所以常用的Linux指令還是要會的。在自己電腦要安裝一個虛擬機,如果是Mac使用的是Unix。
推薦一本書——《鳥哥的Linux私房菜》
雲服務
AWS/AZURE/騰訊雲/阿里雲
http://www.1024sky.cn/blog/article/5425
Linux容器虛擬技術
Docker/k8s
Docker 是一個開源的應用容器引擎,讓開發者可以打包他們的應用以及依賴包到一個可移植的鏡像中,然后發布到任何流行的Linux或Windows機器上,也可以實現虛擬化。容器是完全使用沙箱機制,相互之間不會有任何接口。
k8s
PAAS/SAAS/IAAS
https://zhuanlan.zhihu.com/p/53260098
CI/CD
https://zhuanlan.zhihu.com/p/67805669
https://linux.cn/article-9926-1.html
代碼管理
Github/Gitee/Gitlab
前端
國外ReactJS,AngularJS,國內Vue。不懂前端的后端不是好的架構師!學就完事了。
Java后端技術,越到后面分支越多,越細,也越難,而且更新迭代十分迅速。所以我們作為一面程序員,能做到的就是不斷地去學習,同時基礎才是最重要的,工具會一代一代更新,