本文目錄一覽:
- 1、如何學習java
- 2、Java學習路線
- 3、JAVA如何進階
- 4、想要系統學習java到底要學習哪些知識
如何學習java
可以選擇自學也可以選擇培訓班
自學的話現在網上有很多免費的視頻教程,給你推薦一下我經常看的,高淇的Java300集,講得還不錯,比較容易理解,可以到b站搜一下。
報培訓班的話,可以節省你大量的時間,並且學的會更紮實,有老師有同學,學習氛圍更好,比自學更容易堅持下去。
在學習之前你應該了解Java語言的知識體系。可以幫助你更好的學習
一、JavaSE基礎階段
面向對象編程(基礎)
面向對象編程(進階)
異常機制
Java常用類
數據結構和算法
集合(容器)
IO流
多線程
網絡編程
集合提升訓練
多線程提升訓練
二、數據庫階段
MySQL基礎
MySQL 查詢語句
數據庫對象
JDBC
反射和註解
數據庫建模和UML建模
設計模式
三、WEB前端
JavaScript
jQuery
BootStrap
Vue
四、JavaEE階段 (核心階段)
HTTP/Tomcat
MVC 架構
Servlet
JSP
EL+JSTL+過濾器+監聽器
Ajax和JSON
分頁和文件上傳/下載
五、JavaEE階段(高級框架)
Spring 5.2.2
SpringMVC 5.2.2
RBAC
EasyUI 1.7.0
支付/短訊驗證
六、框架強化
Linux – CentOS 8
Maven
Logback
Quartz
Spring Boot 2.2.2
Shiro
Swagger
Git/GitEE
MyBatis
七、分佈式架構
Zookeeper
RPC
Dubbo
Redis
Solr
RabbitMQ
FastDFS
Nginx
Spring Security
Spring Session
MyBatis Generator
Mycat
八、微服務階段
ElasticSearch
MongoDB
Spring Cloud Netflix Eureka
Spring Cloud Netflix Ribbon
Spring Cloud OpenFeign
Spring Cloud Netflix Hystrix
Spring Cloud Config
Spring Cloud Gateway
Docker
K8S
LCN
祝你成功,程序員的世界歡迎你
Java學習路線
根據個人實際的經歷,結合多種書籍,特別整理出了下面的java學習路線:
一、Java SE部分
1、java基礎:基礎語法;面向對象(重點);集合框架(重點);常見類庫API;
2、java界面編程:AWT;事件機制;Swing;
3、java高級知識:Annotation;IO和NIO、AIO;多線程、線程池;阻塞、非阻塞、異步網絡通信;反射、動態代理;
二、JDBC編程
4、SQL基礎:基礎SQL語句;基本查詢;多表查詢;子查詢;結果集的交、並、差運算;
5、JDBC基礎:常見數據庫用法;JDBC操作常見數據庫;RowSet與離線結果集;數據庫連接池;事務管理、批處理;
6、JDBC進階:存儲過程、函數;觸發器;理解JCBC的不足;掌握ORM工具優勢和設計;
三、DHTML編程
7、HTML基礎:基本HTML標籤;常見表單標籤;DIV+CSS布局;
8、JavaScript知識:javascript基本語法;javascript基本對象特徵;Json語法;深刻理解javascript的動態特徵;
9、Dom和事件機制:DOM操作、編程;常見瀏覽器事件機制;掌握用戶交互技巧;
四、XML編程
10、XML基礎:XML基礎規則;DTD和SCheme;XML和樣式單;
11、XML進階:DOM、SAX和JAXP;dom4j、JDOM等工具;XQuery和XQJ;基於XML的數據交換;
12、Web Service:JAX_WS2、SAAJ規範;WSDL和SOAP協議;CXF框架、攔截器;CXF整合Spring;
五、Java Web編程
13、Web編程基礎:Tomcat服務器;Jsp語法、EL、內置對象;Servlet API;Servlet 3.0註解;Listener和Filter;
14、Web編程進階:自定義標籤庫;MVC和DAO、Servlet、標籤的作用;JSTL、DisplayTag等常見標籤庫用法;
15、Web編程原理:請求/響應、架構;Http協議;深刻理解Jsp運行原理;掌握Web容器底層的線程池、socket通信、調用Servlet的命令模式;
六、Ajax編程:
16、Ajax編程:XML HttpRequest和異步請求;發送請求和處理響應;常見Ajax庫(Prototype、Jquery、ExtJs、DWR)用法;結合Http協議、異步請求深入研究ajax庫的設計;
七、Android開發
17、Android基礎:Android開發調試環境;Android應用結構;界面組件與界面編程;資源管理;四大組件;
18、Android中級:文件IO和SQLite;圖形、圖像與動畫;音頻、視頻的錄製與播放;傳感器編程;GPS應用;
19、Android高級:網絡編程與Web Service;OpenGL_ES 3D開發;整合Google服務;使用NDK開發;java和c相互調試;
八、輕量級Java EE
17、Struts2:MVC與struts體系;Action和Result;國際化和標籤庫;文件上傳、下載;類型轉換和輸入檢驗;攔截器與插件開發;
18、Hibernate:ORM與持久化映射;關係映射、繼承映射;延遲加載、性能調優;HQL查詢、條件查詢、SQL查詢;二級緩存和查詢緩存;
19、Spring:IoC與Bean配置、管理;Bean生命周期;SP、EL;AOP與事務權限控制;S2SH整合開發;Spring整合Jpa;
九、經典Java EE
20、JSF選學:MVC與JSF設計理念;託管Bean與導航模型;JSF流程與事件機制;JSF標籤庫;類型轉換與輸入檢驗;
21、EJB及相關技術:JNPI與RMI;會話Bean及其生命周期;IoC與EJB攔截器;JMS與MDB;會話Bean與Web Service;
22、JPA:ORM框架與JPA規範;JPA註解與常用API;JTA事務與事務管理;JPQL查詢;EJB、JPA整合;
十、Java 拓展、進階:
23、Java EE實踐與架構:Ant+Ivy或Maven;SVN、CVS;深刻理解10種以上設計模式;掌握各種Java EE架構及各自優勢;
24、Workflow:Workflow規範及功能;JBPM等workflow框架;多次重構、反覆思考;大型項目經驗;
25、Java EE進階:掌握各MVC框架運行原理、能開發類似框架;掌握Spring、HiveMind、AspectJ等框架原理、能開發類似工具;掌握Hibernate、iBatis等框架原理,能開發類似工具;深入研究EJB機制、大致了解應用服務器的實現;
希望對您有所幫助!~
JAVA如何進階
1. 基礎階段
基礎階段, 可能需要經歷1-2年吧. 這個時段, 應該多寫一些基礎的小程序(自己動手寫的越多越好). 計算機是一門實踐性很強的學科, 自己動手的東西, 記憶非常深刻, 效果要勝過讀好多書. 當然, 學Java基礎的時候, 書籍的選擇也非常重要, 好的書籍事半功倍, 能讓你打個非常好的基礎. 而差的書籍, 很容易將你帶入歧途, 多走很多彎路. 書籍不在多, 而在乎讀得精(有些書, 你讀十遍都不為過). 我記得我學Java的第一本書是的中文版, 網上有很多人都建議不要把這本書作為第一本的入門教程來看, 太難. 我卻想在此極力推薦它, 這本書確實是本經典之作. 而且書中確實講的也是Java中的一些基礎技術, 沒有什麼太難的東西, 只不過比較厚, 學習周期比較長, 所以很多人中途會選擇放棄. 其實, 這本書是一本難得的入門教程, 對Java一些基礎的東西, 講得很全, 而且也很清晰, 更重要的是, 這本書能讓你養成很多好的編程習慣, 例子也很多. 建議你把大部分的例子自己去實現一遍. 我的親身經歷, 我記得當時認真的看了2遍, 花了大概7個月的時間, 不過真的有很好的效果. 另外一個教程, 就是卷一, 卷二的話可以不必要買. 卷一看完, 自己再鑽研一下, 就已經能達到卷二的高度了:). 到那時, 你就會覺得看卷二沒啥意思, 感覺浪費錢了. 還有一個, 就是張孝祥的Java視頻, 看視頻有個好處, 就是比看書的記憶要深刻, 還有很多你可以跟着視頻的演示同步操作. 張孝祥的Java視頻對初學者來說, 確實很有作用. 總結起來: 看這些資料的時候, 一定要多寫例子, 寫的越多越好!
2. 中級階段
中級階段, 是一個更漫長的時期, 能否突破此階段, 跟個人的努力和天資有着很大的關係. 你不得不承認, 同樣一門新技術, 有些人一個月領悟到的東西, 比你一年的都多. 這就是天資, 程序員是一個需要天才的工作. 我想, 很多人聽說李一男吧, 此君就是這樣的人物, 三個月的時間就能解決好大一幫人幾年解決不了的問題, 給華為某部門帶來了很多的收益. 哦, 這是題外話了, 與此篇的主題無關, 只是本人偶爾的感慨而已:). 這個階段, 就需要研究很多專題性的東西了, 比如: IO的實現原理, 多線程和Java的線程模型, 網絡編程, swing, RMI, reflect, EJB, JDBC等等很多很多的專題技術, 鑽研得越深越好. 為了更好的提高, 研究的更深入, 你需要經常到網絡上搜索資料, 這個時候往往一本書起不來很大的作用. 選一個JDK版本吧, 目前建議選用1.6, 多多研究它, 尤其是源代碼(盡量! 就是盡自己最大的努力, 雖然研究透是不可能滴). 比如說: util, collection, io, nio, concurrent等等包. 可能有人會反對我說, 不是有API文檔嗎, 為什麼還要研究這麼多的源代碼? 錯了, 有API文檔, 你僅僅只是知道怎麼用而已, 而認真仔細的研讀這些大牛的源碼, 你就會深入更高的一個階層, 自己的編碼, 設計都會有很大的提高. 如果有能力和精力, 我建議你把JDK的每一行代碼都熟悉一遍, 絕對只有好處, 沒有壞處! 而且你會有些意外的收穫, 比如, 當你仔細地讀完concurrent包的時候(不多, 好像總共是86個類吧), 你就會對Doug Lea佩服得五體投地. 這個時候最忌碰到難題就去尋找幫助, 去網上找答案! 先把自己的腦袋想破吧, 或者等你的老闆拿着砍刀衝過來要把你殺了, 再去尋求幫助吧. 對於專題的學習, 英文原版的閱讀是非常必要的, 看的越多越好, 多上上IBM的developer, SUN的網站吧, 當然Javaeye也很不錯:), 有很多大牛, 呵呵.
這個時候, 你應該建立自己的代碼庫了, 你應該自己去研究很多有意思的東西了. 從一個200多M的文件中尋找一個字段, 最壞情況(在文件的末尾咯)也只需要1秒左右的時間, 你知道嗎? 這個階段, 有很多很多類似的有趣的東西可以供你去研究, 你需要更多地關注性能, 規範性, 多解決一些疑難問題. 需要學會所有的調試技術, 運用各種性能工具, 還有JDK附帶的很多工具, 這些你都要熟練得跟屠夫操刀一樣. 也可以看看, 這本書總結的也不錯, 對寫高效穩定的Java程序有些幫助. 也可以看看模式方面的東西, 但是我建議模式不要濫用, 非得要用的時候才用, 模式往往會把問題搞複雜:). 總結起來: 這個階段是一個由點延伸到面的過程, 經過不斷的學習, 演變成全面的深入! Java技術中你沒什麼盲點了, 還能解決很多性能問題和疑難問題, 你就成了一個合格的程序員了! [要想成為優秀程序員, 還得對數據庫和操作系統很精通.]
3. 高級階段
高級階段, 我就不敢妄言了. 呵呵, 我感覺自己也是處於中級階段吧. 也是根據自己的一些經驗, 談談自己的理解吧:
想要系統學習java到底要學習哪些知識
一、java基礎
學習任何一門編程語言,首先要學習的是基礎語法,開啟Java學習的第一步,當然就是深入掌握計算機基礎、編程基礎語法,面向對象,集合、IO流、線程、並發、異常及網絡編程,這些我們稱之為JavaSE基礎。當你掌握了這些內容之後,你就可以做出諸如:電腦上安裝的迅雷下載軟件、QQ聊天客戶端、考勤管理系統等桌面端軟件。
JavaSE基礎是Java中級程序員的起點,是幫助你從小白到懂得編程的必經之路。
在Java基礎板塊中有6個子模塊的學習:
基礎語法,可幫助你建立基本的編程邏輯思維;
面向對象,以對象方式去編寫優美的Java程序;
集合,後期開發中存儲數據必備技術;
IO,對磁盤文件進行讀取和寫入基礎操作;
多線程與並發,提高程序效率;
異常,編寫代碼邏輯更加健全;
網絡編程,應用服務器學習基礎,完成數據的遠程傳輸。
學習該階段,可以完成一些簡單的管理系統、坦克大戰遊戲、QQ通信等。
技術樹
二、數據庫
互聯網最具價值的是數據,任何編程語言都需要解決數據存儲問題,而數據存儲的關鍵技術是數據庫。MySQL和Oracle都是廣受企業歡迎的數據庫管理系統。Java程序和數據庫通信的最常見技術是JDBC,Druid和C3P0。學習這些數據庫技術後,可以掌握數據庫運維技術、複雜業務表結構設計規範、工作中常見的SQL操作、軟件數據存儲等。
數據庫不僅僅是Java開發工程師的必學課程,也是其他語言都需要掌握的技能。用於對交互過程中客戶的數據進行存儲。
該板塊包括關係型數據庫和非關係型數據庫。
例如:MySQL、oracle、redis、MongoDB等。數據庫學習完畢後,可以將數據存儲到數據庫中,也可以通過SQL語句從數據庫中查詢數據,結合Java項目可以實現動態站點的數據的保存。
技術樹
三、前端技術
瀏覽器展示給用戶看到的網頁就是前端,前端有三大基礎技術分別為Html、CSS、JavaScript,這些學完後,為了做出更好、更炫的交互式體驗效果,我們還需要學習jQuery、ElementUI、Vue、Ajax,以及打包工具webpack。學完這些技術後,我們可以開發微信小程序、響應式網站、移動端網站、開發類似京東一樣的B2B2C商城、管理後台等。
Javaweb階段包括前端、數據庫和動態網頁。Javaweb是互聯網項目的入門課程,是學習後面高進階課程的基礎。
首先,我們先看一下前端板塊。該板塊主要包括如下幾個模塊:
HTML5,網頁製作標記語言;
CSS,對HTML製作網頁進行美化;
JavaScript,嵌入在頁面中的腳本語言,具備邏輯性;
Vue,前端框架,簡化了與服務器端交互的操作,用戶良好的交互體驗是必不可少的。
學習前端技術後,可以完成類似京東、淘寶的前端工程的編寫。
技術樹
四、動態網頁
掌握前端技術只能做靜態網站,但它頁面數據一成不變,而動態網站可以根據數據庫中變更的數據實現不同的內容展示,應用更廣泛,因此程序員必須要學會做動態網站。使用Java做動態網站,我們需要學習Servlet、Filter、Session、Cookie、JSP、EL表達式、JSTL等做動態網站的完整知識體系,學完可研發出OA系統、內容網站、BBS等。
動態網頁是中級程序員服務器端編程的基礎,是高級框架學習的必備課程,後期學習的框架、服務底層都是基於動態網頁技術之上的。
該板塊包括Javaweb核心技術、包括Servlet、Request、Response、Cookie和Session等,通過這些技術的學習可以完成動態站點開發,可更好的完成服務器端與客戶的交互,讓頁面的數據「動」起來,做出小型的應用系統。
技術樹
五、編程強化
前面學了JavaSE基礎,但它在企業級應用中程序處理業務的效率並不高、擴展差,編程強化是對JavaSE基礎的加強,將針對性的提高程序處理業務的執行效率、增強程序擴展性。編程強化將加強多線程高級學習,涉及線程內存、線程通信等技術。學完以後,能增加一個中級程序員的知識儲備,無論在面試過程中還是將來技術的深入打一個良好的基礎。
編程強化是對解決實際問題方面做一個深入的了解和應用,是對JavaSE基礎的加強,對後期自動以框架和對一些服務框架的底層理解做支撐。
編程強化板塊主要包括如下幾個模塊:多線程高級、涉及線程內存、線程通信等;JVM優化,對JVM底層進行調優來提高項目執行效率;NIO,同步非阻塞IO來提高效率。
學習該階段,可以對原有項目進行優化從而使程序更快更穩定。
技術樹
六、軟件項目管理
公司開發都是團隊協同開發,為更好的掌握實際開發,我們還需要學習常用的項目管理平台、版本控制器、項目構建工具以及自動化部署工具。項目開發一定是有版本升級的,管理好項目進度和版本需要Git、Maven、Sonar這樣的系統平台。學習完軟件項目管理後,將掌握整個項目實際開發過程以及整個項目開發過程中所使用協同開發工具。
JavaSE基礎是Java中級程序員的起點,是幫助你從小白到懂得編程的必經之路。
在Java基礎板塊中有6個子模塊的學習:基礎語法,可幫助你建立基本的編程邏輯思維;面向對象,以對象方式去編寫優美的Java程序;集合,後期開發中存儲數據必備技術;IO,對磁盤文件進行讀取和寫入基礎操作;多線程與並發,提高程序效率;異常,編寫代碼邏輯更加健全;網絡編程,應用服務器學習基礎,完成數據的遠程傳輸。
學習該階段,可以完成一些簡單的管理系統、坦克大戰遊戲、QQ通信等。
技術樹
七、熱門技術框架
Javaweb掌握後,已經具備企業中實際項目的開發能力了,但它開發效率低,代碼量大,開發周期長、開發成本高。企業中廣泛使用一些優秀的框架技術來解決上述問題,因此我們還需要學習框架技術,項目開發中主流的Java框架技術有SpringMVC、Spring、MyBatis、MyBatis Plus、SpringData等。這些框架技術都是一個優秀程序員所必備的技能。
使用Javaweb進行企業級開發是完全可以的,但是開發效率比較低,所以對常用的邏輯操作進行封裝就形成了框架,因此框架是企業開發的入門技能。
熱門框架板塊主流框架有如下幾個:Spring框架,佔據統治地位,其生態系統涉及各個方面解決方案;MyBatis框架,使用ORM思想對數據庫進行操作。
該板塊學習後,就可以進行真實企業級項目開發了,做出的項目也會更加符合企業要求。
技術樹
八、分佈式架構
需要用到分佈式微服務的技術。學習完該階段課程,可以具備大型SOA架構和微服務架構能力,能掌握大型微服務項目必備技術和實際經驗。企業發展過程中,業務量和用戶量逐漸增加,為了保證系統的可用性,系統越做越複雜,研發人員增多,大家很難共同維護一個複雜的系統,往往修改部分內容,導致牽一髮而動全身,所以我們需要升級系統架構,
隨着互聯網的發展,業務的複雜性和用戶的體驗性都需要提高,所以分佈式架構出現了。該板塊主要講解的是分佈式架構的相關解決方案。
主要包括如下模塊:Dubbo,高性能的 RPC 服務發佈和調用框架;SpringBoot,簡化Spring應用的初始搭建以及開發過程;Spring Cloud,一系列框架的有序集合,如服務發現註冊、配置中心、負載均衡、斷路器、數據監控等。
該板塊的學習,可以具備大型互聯網項目開發的必備技術和實際經驗,為進入BATJ打下基礎
技術樹
九、服務器中間件
在分佈式系統架構中,服務與服務之間的異步通信,是非常常見的需求之一,消息中間件的誕生正是為了解決這類問題。目前市面上的主流消息中間件有RabbitMQ、RocketMQ、Kafka,我們將學習這3個消息中間件,實現分佈式項目中的異步通信。學習完這些後,可以實現分佈式項目的異步通信、分佈式應用日誌收集、分佈式事務等。
中間件板塊是大型互聯網項目中必備的。服務中間件可以幫助各子模塊間實現互相訪問,消息共享或統一訪問等功能。其包括遠程服務框架中間件,例如阿里(Apache)的RPC框架Dubbo等;消息隊列中間件,例如:阿里巴巴開源分佈式中間件RocketMQ、高吞吐量消息發佈和流處理服務Kafka等。
學習服務中間件是中級JavaEE工程師必要技術,也是JavaEE架構師必須精通的技術。
技術樹
十、服務器技術
程序開發完成後,我們把它們打包部署到服務器中運行,所以我們需要學習常見的服務器技術,常見的服務器有Linux和Window server,Linux性能高,是當前主流。我們寫好的項目需要用一個軟件運行起來,這個軟件叫web容器,我們需要在服務器上安裝web容器來發佈項目,當前主流的web容器有tomcat、jetty、nginx、undertow。
不管是使用原生Javaweb進行開發,還是使用框架進行開發,項目最終需要對外發佈才能供全世界的人訪問到,而服務器板塊就可以解決這個問題,所以服務器是項目發佈的必要技術。該板塊包括虛擬化和web應用服務器的學習,主要包括如下幾個模塊:Vmware,虛擬機軟件;Linux,專門用於服務器的系統;Nginx,集群部署時反向代理服務器;Tomcat,項目發佈時主要使用的服務器。
該板塊學習後,我們就可以把開發好的項目發佈到服務器中,然後供你的小夥伴遠程訪問了,超酷!
技術樹
十一、容器技術
具備了服務器操作系統及web容器,我們就可以部署單機的站點,在分佈式系統中,幾十上百的服務,如果使用單機這種部署方式,會投入很高的人力,同時出錯的幾率也大。所以服務器虛擬化技術Docker也稱為如今的必備技術了,Docker可以幫助運維人員實行快速部署,批量維護.使用Kubernetes實現自動化部署、大規模可伸縮、應用容器管理。
容器化技術是近兩年超級火的一個專題,通過容器化技術可以對環境進行打包,方便移植,大大提高了開發效率。該板塊包括容器化技術Docker和其平台管理引擎Kubernetes,其中,Docker 是一個開源的應用容器引擎,可以打包應用以及依賴包到一個可移植的鏡像中,然後發佈到任何流行的Linux或Windows 機器上,也可以實現虛擬化。而Kubernetes是一個開源的,用於管理雲平台中多個主機上的容器化的應用,Kubernetes的目標是讓部署容器化的應用簡單並且高效。通過該板塊的學習,你可以通過上述技術快速搭建環境,節省開發時間,提高開發效率。
技術樹
十二、業務解決方案
企業開發中會遇到一些通用的業務場景,諸如:搜索引擎、緩存、定時任務、工作流、報表導出、日誌管理、系統監控等,那麼這些通用的解決方案也有現成優秀的免費開源中間件,可供使用。諸如:ElasticSearch、Lucene、Solr、redis、MongoDB、slf4J、ECharts、Quartz、POI等。業務解決方案課程的業務方案和技術難點,解決了企業開發中90%以上的痛點和難點。
雖然我們已經具備了基礎技術和高階技術,但是要想與企業開發相接軌,還需要對實際項目的業務解決方案進行探究。而此版塊就是在實際業務場景中的真實解決方案集合,常用的業務解決方案有如下:搜索業務場景解決方案、日誌收集與分析場景解決方案、工作流引擎場景解決方案、任務調度場景解決方案、地圖開發平台場景解決方案、支付開放平台場景解決方案、圖表可視化場景解決方案。通過分析實際業務來學習這個解決方案技術集,完全可以達到中級甚至高級工程師水平。
技術樹
java學習路線大陸傳送門
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/187900.html