10年網際網路開發者告訴你自學 Java 怎麼入門?
1、學習的基本路徑
首先建立好開發環境非常重要,工欲善其事,必先利其器。做任何開發,首先就是要把這個環境準備好,之後就可以去做各種嘗試,嘗試過程中就能逐漸建立信心。初學者往往在環境配置中被各種預想不到的問題弄得很沮喪。
建立起來環境了,改變世界就靠你的程式碼了。學習一門程式語言沒有太多的訣竅,你可能可以去找一本比較好的經典的入門書籍,現在網路上也有非常多的資料,圖文或者視訊都可以,根據個人喜好選擇。最重要的練習,熟能生巧,在不斷的練習中去加深自己對程式語言的理解。
接下來你需要了解這三個術語,叫SDK、API跟Lib,分別表示軟體開發套件,應用程式設計介面和庫。這三者之間其實有一定的聯絡,或者是交叉。總體來說,它們都是給我們提供的一些封裝了底層功能的基礎設施。做Java開發的話,這些東西通常體現為我們所經常說的“框架”。事實上要成為一個資深的Java開發者,對各種API和框架的學習,可能是花時間最多的一個地方。
當然你也不可能把所有API或者SDK種的所有內容完全弄懂。在軟體開發中也有二八原則,少數的API能夠勝任開發中的大部分場景。所以你只需要掌握這些關鍵部分,當在新場景下遇到不能解決的新問題時,再去檢視幫助文件。所以幫助文件的閱讀也是技術學習的一個關鍵因素。瞭解了基礎原理之後一般就能上手開發了,幫助文件可以幫助你在實踐中學習。
2、三個神器
三個神器,對於軟體開發者來說非常重要。
第一個Google,雖然因為各種原因的話有時候我們訪問不了,但是這基本上是可以去尋找技術資料最好的方式。
第二個是Github,之前提到過庫的概念,Github就是一個可以找到大量第三方庫的地方,那是別人給我們封裝好的可以複用的程式碼。比方說造一輛汽車的話,我們經常不要自己造輪子,而Github上可以找到很多優質的輪子,這些輪子還是免費(程式碼都是開源的),我們應該儘量利用它們來拼裝自己的汽車。
第三個是StackOverflow網站,在這個問答網站上你遇到的幾乎任何開發問題都能快速找到答案。
3、Java Web全棧開發的推薦學習內容
簡單總結一下,大概包括下面這些內容。每一部分都可以細化成很多知識點,這只是一個粗略的羅列。把它當做技術地圖就好了。
開發環境的建立與專案管理:Eclipse、Maven和Git
Java程式設計基礎:基本語法、物件導向特性、Java8新特性、更高階庫(比如Guava)的使用等
前端開發技術:HTML、CSS、Bootstrap和JavaScript基礎
Spring基礎:依賴注入IoC、面向切面程式設計AOP、SpringBoot
MVC框架:Spring MVC、Struts等,包括URL路由、模板、表單、Session、攔截器等知識
資料訪問:關係型資料庫、JDBC、Spring JDBC、事務、ORM框架(MyBatis,Hibernate、JPA)
成熟應用的關鍵功能實現:郵件傳送、非同步任務、快取、日誌等
應用的測試和部署
下面對每部分的內容詳細介紹一下。
4、JSP/Servlet的相關內容
雖然現在各種成熟的MVC框架已經讓Java Web開發基本很少使用JSP和Servlet的原生功能了,基本都做了一層封裝。但是這部分基礎知識建議初學者還是要認真學習。
Web基礎,HTTP協議
C/S模型,瀏覽器訪問網站過程
URL基礎知識
HTTP訊息——請求和響應
處理HTTP請求的應用程式
Servlet/JSP簡介
Servlet
Servlet容器,Servlet處理機制,Servlet生命週期
部署Servlet
ServletContext, ServletConfig
Filter, Event Listener
JSP
表示式,scriptlet, declaration
在JSP中訪問Java類
JSP內建物件
處理使用者輸入
HTTP方法——GET v.s. POST
讀取表單資料
構建MVC應用
Servlets/JSP存在的問題
MVC設計模式
使用RequestDispatcher
在Servlets和JSP中傳遞資料,EL表示式
使用JSTL作為模板
JSP Tag Lib
Core Tag(if, loop)
Function Tag(string, fmt, utils)
Session
Session&&Cookie基本概念
通過Cookie記錄使用者狀態(類似購物車的例子)
使用Session跟蹤使用者(登入)
5、資料庫相關的內容
掌握了Servlet/JSP技術,我們已經可以建立動態的Web應用了。除了動態的Web介面,一個有價值的Web應用必然需要進行資料儲存,開發上我們一般稱之為資料持久化(Data Persistence)。
從業務功能的角度出發,簡單的應用可以認為就是資料的增刪改查。比如一個產品級的部落格應用,最核心的功能就是對部落格內容的建立、修改、刪除和查詢,而這些功能都離不開Web伺服器背後的資料庫系統。
資料庫基本概念
實體、關係(表)、記錄(行)、列(屬性)
主鍵、外來鍵等
資料庫表設計的基本原則
SQL基礎
MySQL基本使用
SQL中的DDL——create,drop,alter,建立主鍵外來鍵等約束
SQL中的DML——insert, select, delete, update,join
JDBC
資料庫連線,連線池
使用JDBC API訪問資料庫
分頁查詢
事務的基本概念
JDBC程式碼的封裝與資料訪問的三層架構
6、Spring相關的內容
Spring最重要的兩個核心功能是依賴注入(DI,Dependency Injection)和麵向切面程式設計(AOP,Aspect Oriented Programming)。其中DI用於管理Java物件之間的依賴關係,AOP用於解耦業務程式碼和公共服務程式碼(如日誌,安全,事務等)。DI和AOP能夠讓程式碼更加簡單,具有良好的鬆耦合特性和可測試性,極大地簡化開發。理解這兩者是使用Spring框架的基礎。
Spring的核心思想
依賴注入
面向切面程式設計(AOP)
基於POJO的程式設計模型
預置的模板程式碼(如Spring JDBC)
依賴注入的基本原理
依賴注入的優點
依賴注入如何實現
依賴注入的使用
基於XML的裝配,方式
基於Java Configuration的裝配,方式
自動裝配
多種裝配,方式的混用
處理裝配的歧義
如何注入屬性值
Spring Bean的作用域
Singleton
Prototype
Request
Session
Global
AOP
切面、目標物件、切點、通知、織入等基本概念
如何定義切點:定義切點的aspectJ語法
定義通知
前置通知(Before)
後置通知(AfterReturning)
異常通知(AfterThrowing)
最終通知(After)
環繞通知(Around)
如何給切面傳參
7、Spring MVC相關內容
Spring作為Java系的全棧(full-stack)開發框架,當然也對Web開發有著非常好的支援。Spring的 Web MVC框架能夠使開發者非常容易的開發Web應用,同時能夠無縫享受到Spring本身的諸多好處——IoC容器、AOP程式設計等等。
Spring MVC基本原理、配置
DispatcherServlet
WebApplicationContext
處理HTTP請求過程
實現Controller
@Controller, @RequestMapping註解
URL模板模式,@PathVariable
獲取HTTP請求引數,@RequestParam
@RequestMapping方法支援的引數
@RequestMapping方法支援的返回值
檢視解析
處理靜態資源
配置JSP
配置其它模板引擎
重定向、Flash Attribute
表單處理
表單資料繫結
Spring表單標籤
表單驗證
檔案上傳
Flash Attribute
攔截器Interceptors
Spring MVC請求處理流程
HandlerInterceptor介面
配置Interceptor
異常處理
配置錯誤頁面
使用HTTP狀態碼
@ExceptionHandler
ControllerAdvice全域性異常處理
REST API
@ResponseBody和@RequestBody
處理PUT和DELETE請求
8、MyBatis相關內容
MyBatis 是支援定製化 SQL、儲存過程以及高階對映的優秀的持久層框架。MyBatis 避免了幾乎所有的 JDBC 程式碼和手動設定引數以及獲取結果集。MyBatis 可以對配置和原生Map使用簡單的 XML 或標註,將介面和 Java 的 POJOs(Plain Old Java Objects,普通的 Java物件)對映成資料庫中的記錄
MyBatis基礎
ORM的概念
如何定義Mapper介面
如何定義XML Mapper對映
如何使用Mapper
MyBatis的基本使用
SqlSessionFactory
SqlSessionFactoryBuilder
SqlSession
MyBatis-Spring
基於Spring如何配置和使用Mapper
SqlSessionFactoryBean的配置
MyBatis Spring Boot Starter的使用
增刪改查
熟悉Mapper配置檔案
select元素
select的resultType屬性
insert元素
update元素
delete元素
複雜查詢
resultMap元素
association元素
巢狀結果與巢狀查詢
collection元素
discriminator元素
動態SQL
分頁查詢(分頁外掛)
9、JPA
ORM框架的出現使得我們能夠以物件導向的方式來操作關聯式資料庫,但是長久以來實現應用系統中的資料訪問層依然是一件非常繁瑣的事情,簡單的查詢也往往涉及大量重複程式碼。Spring Data JPA在則基於JPA進一步簡化了資料訪問層的實現,它提供了一種類似於宣告式程式設計的方式,開發者只需要編寫資料訪問介面(稱為Repository),Spring Data JPA就能基於介面中的方法命名自動地生成實現。
JPA(Java Persistence API,Java持久化API),定義了物件關係對映(Object Relation Mapping,ORM)以及實體物件持久化的標準介面。 JPA是一套介面規範,JPA的實現主要包括 JBoss 的 Hibernate EntityManager、Oracle 捐獻給 Eclipse 社群的 EclipseLink和Apache 的 OpenJPA 等。
Spring Data JPA的核心概念
Repository
使用Repository的步驟
自定義的Repository介面
Repository介面層次及其方法
定義實體類
自動生成資料庫Schema
@Entity和@Table
@Id和@GeneratedValue
@Basic
@Column
@Transient
@Temporal
@Lob
定義一對一關係
@OneToOn
@JoinColumn
unique屬性
雙向@OneToOne關聯
雙向關聯與cascade
自動對映的命名規則
一對多與多對多關係
@ManyToOne
@OneToMany
@ManyToMany
JoinTable
用@ManyToOne實現多對多
其它
如何通過方法名建立查詢
分頁與排序
@Query標註
事務
10、Java Web應用的部署
War包規範和結構
在IDE中除錯和部署
使用IDE匯出War包
將War包部署到伺服器
基於Spring Boot的部署
11、其它主題
快取:EhCache、Spring Cache Manager、資料層快取、服務層快取、頁面快取
安全:Spring Security(HTTP基本驗證,角色驗證,許可權驗證)
任務排程:Spring任務執行器(Executor)
郵件傳送:SMTP協議、spring-boot-starter-mail
Web Socket:@SubscribeMapping, WebSocketConfig
日誌:SLF4J與Logback、 Spring Boot Logging、 ConsoleAppender/RollingFileAppender 、Sentry、ELK
我之前在學習過程中用到的一些學習資料整理成了文件,以及我自身之前的一個面試文案和知識點補充,有需要的可以加我的扣扣群697888503,這裡也希望大家最終都能夠學有所成,學習程式設計不是一天兩天的功夫,勤能補拙才是硬道理,祝大家最終都能成為一名合適開發攻城獅。
12、設計模式
13、更進一步
分散式、深入Java虛擬機器、針對不同場景的Java技術框架,到這個階段已經不僅僅是Java的學習了,而是大型應用場景的技術積累、架構設計的精進了。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69985551/viewspace-2752723/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- [AI開發]零數學公式告訴你什麼是(卷積)神經網路AI公式卷積神經網路
- 自學 Java 怎麼入門,怎麼從入門到精通?Java
- Java要怎麼入門?初學者要怎麼學?Java
- 18、網際網路協議入門協議
- 神經網路是怎麼“看”東西的?啟用圖告訴你神經網路
- 網際網路職業入門聖經
- 自媒體新手怎麼入門?這些乾貨告訴你新手如何玩轉自媒體
- 怎麼自學精益生產?過來人告訴你
- Web 開發學習筆記——關於網際網路和網際網路應用Web筆記
- 用半勵志的方式告訴你,怎麼學習Python開發Python
- 周朝陽:一件小事告訴你,網際網路免費江湖早已結束了
- 網路賭輸了很多錢,要怎麼回頭自救?上岸者的感悟自訴
- 學Java怎麼入門?Java
- 進入BAT等主流網際網路公司做Java開發需要達到什麼技術水平?BATJava
- 學習java怎麼入門?怎樣學Java?Java
- 2022年為什麼要學習網路安全?三大原因告訴你答案!
- 初入職場|入門網際網路產品經理
- 為什麼整個網際網路行業都缺前端工程師?前端工程師怎麼入門?行業前端工程師
- 網路安全怎麼入門?按照這個學習路線方法,傻子都能學會!
- 學習Java怎麼入門?Java
- java程式設計師入門先學什麼開發者工具Java程式設計師
- 網宿 :2018中國網際網路發展報告
- 網際網路怎樣推廣 網際網路如何推廣
- 網際網路創業怎麼起步?這個文章教你玩轉網際網路創業。創業
- [譯]網路效能入門:2019年初學者指南
- 工業網際網路後臺開發
- mysql網際網路開發視訊教程MySql
- 網際網路通訊雲 PaaS 選型 開發者必備指南
- 讓 CPU 告訴你硬碟和網路到底有多慢硬碟
- 網路安全的發展方向是什麼?網路安全基礎入門
- 廣東省網際網路發展水平報告
- 2017浙江省網際網路發展報告
- 2020浙江省網際網路發展報告
- 美國網際網路使用者行為——你知多少?
- 多年java開發經驗老司機告訴你,0基礎如何學Java?Java
- 網際網路都在講的敏捷開發,這些敏捷開發流程你都知道嗎?敏捷
- 網路不可用怎麼辦?無法訪問網際網路怎麼辦?網路故障原因大起底
- 訪問網際網路時發生了什麼?