學了一年的JAVA了,再來重新總結一下JAVA
歷史
語言特點
- 簡單:相對於C,C++摒棄了難度語法
- 穩定強健:強類型, 內存管理,垃圾收集,異常處理,丟棄指針…
- 跨平臺:解釋型語言(編寫完後爲中間代碼,必須在某個編譯環境編譯解釋才能運行),JAVA程序運行的是時候必須靠虛擬機,虛擬機是運行在操作系統中的(不同JAVA程序通訊難)
- 面向對象:大系統
- 提供分佈式特性:高速系統
概念
- JDK: JAVA開發工具包,編譯,打包,運行,調試,反編譯,大量庫
- JNI:JAVA原生接口,與外部程序與Java交互,比如與C,C++,硬件(增加了風險性)
- JavaSE/JavaEE:社區驅動的“企業軟件標準”
- JRE:JAVA運行環境
- JVM:運行的基本環境,實現跨平臺,虛擬機技術(沙盒形式)
技術點
JAVA編譯
- JAVA編譯器先編譯爲中間碼(可以打包爲Jar/War,之後可以使用容器技術將 JVM包括在內)
- 目標機器上運行時使用JIT技術進行實時編譯
Spring
主要的ioc,衍生出SSH,SSM,Springboot(框架的框架,可以將不同類型的構建整合進來)
- microservices:微服務,將常規的功能設計成內聚的服務,服務與服務之間相互調用,對於服務可以使用一些列手段進行負載均衡等,可以對服務管理服務控制,註冊與發現等(進一步降低耦合,原本兩個模塊需要整合一起,而微服務兩者是分離的,分別跑,只需可以通信)(解耦到功能)
- reactive:異步非阻塞,這種對於吞吐量需求大的有好處
- cloud:springboot演化出來springcloud,可以搭建雲計算系統,十分靈活;microservices加持springcloud使得服務更好地管理
- web apps:就是搭建網頁
- servrless:比microservices更細,甚至可以將方法不以完整的service發佈,完全當成獨立函數的發佈出去(比如一種算法經常要變,那麼只需要更新這個函數,而不是像微服務更新整個服務)(解耦到方法)
- event driven:事假驅動,如何根據不同的時間分配不同的資源
- batch:批處理,大數據的爆發離不開批處理
Spring的一些案例
-
Restful
-
restful web服務監控
-
定時任務
-
maven或者gradle
-
jdbc連數據庫
-
文件上傳(比如前端給文件後端)
-
權限認證
-
消息系統
-
圖數據庫(便於處理多對多關係)
-
input驗證
-
安全認證(spring security)
-
數據處理
-
使用註解的方式來對數據庫事務管理
-
數據持久層的接口
-
連接MongoDB
-
使用springmvc建網
-
使用springboot建網
-
jar包變war包
-
異步方法
-
取得數據直接用對用表示
-
前端配合
-
跨域訪問
-
spring緩存
-
容器技術
-
使用idea
-
服務的註冊與發現
-
配置中心
-
服務的路由與過濾
-
熔斷技術
-
客服端的負載均衡(這個服務端是調用端)
-
MVC層次測試
-
restful生成接口文檔
-
響應式
- 接口協議
-
數據流