作為一個用java十幾年的老程序員來說幾句。學java對新人來說確實有點難,但是如果新人知道了正確學習方法,學習效果就會好得多。接下來我就嘗總結一下。
Java內容太多,要避開那些“沒有用知識”
確實,Java 的知識體系繁冗復雜,比較“全家桶”不是白叫的。但是這其中很多知識點不建議學,因為這些知識工作中很少用到,相關崗位很少,面試很少問到。例如下面這些:
- Java 的桌面 GUI 相關技術,包括:AWT、Swing、SWT/JFACE、JavaFx、JavaFx2
- Java 的 XML 相關 API
- Java 的安全相關
- Java 的國際化
- Java 的 native 方法
- Struts 和 Hibernate
Java技術棧說實在的知識點非常多,絕不僅僅是學一門語言和一個數據庫那么簡單。
要讓我們的程序運行在流量洪峰下還能保證結果正確,我們需要處理好 並發問題。
實際生產環境中我們的應用一定是 分布式的,我們還需要用到各種框架(rpc服務框架、消息中間件、除了關系型數據庫還可能用到nosql、newsql),還需要掌握分布式設計知識。
當程序遇到內存飆高的問題我們排查的時候需要 掌握JVM知識。
在面對復雜業務場景為了寫出優雅、可維護性強的代碼我們需要掌握 設計模式以及DDD(領域驅動設計)。
部分大數據場景我們還需要用到 實時計算框架flink或spark
那么現在就來帶大家認識認識語言基礎
- 集合:list、map、set等。
- 反射
- 並發:synchronized、volatile、final關鍵字。
- IO:基本IO的體系包括有InputStream , OutputStream, Reader/Writer,文件讀取,各種流讀取等。
NIO、AIO的區別和使用場景。- 異常
常用開發框架-spring
spring是一個輕量級java開發框架,最早由Rod Johnson,目的是解決企業級應用開發的業務邏輯層和其他各層的耦合問題。其最根本的使命是解決企業級應用開發的復雜性。
spring的核心:控制反轉(IOC)和面向切面編程(AOP)。
spring的優點:
- 解耦,簡化開發。開發者可以將所有對象創建和依賴關系維護,交給spring管理。
- AOP編程的支持。可以方便的實現對程序進行權限攔截、監控等功能。
- 非常方便集成各種優秀框架。如mybatis、hibernate。
- 降低javaee api的使用難度,進行了比較好的封裝。
spring模塊組成
Spring Core:Spring核心模塊,包含控制反轉(IOC)和依賴注入(DI)。
spring-beans 模塊:提供了BeanFactory工廠模式的一個經典實現(Spring將管理對象稱為Bean)
Spring Context:訪問定義和配置對象的媒介。
Spring AOP:面向切面編程AOP實現,以動態代理技術為基礎,允許定義各種攔截器,方便解耦。
Spring JDBC:提供了JDBC的抽象層,消除了JDBC編碼的繁瑣工作和不同數據庫廠商的處理邏輯,簡化JDBC。
Spring JMS:JAVA消息發送和接收服務。
Spring ORM:ORM框架支持,集成了hibernate、jpa和jdo用於資源管理、dao的實現和事務。
Spring Web:為創建Web應用程序提供支持。
Spring Test:提供了對 JUnit 和 TestNG 測試的支持、
Spring Aspects:該模塊為與AspectJ的集成提供支持。
Spring Web:Spring框架支持與Struts集成,為基於web的應用程序提供了上下文。
https://www.bilibili.com/video/BV1qL411u7eE?from=search&seid=13107708879599959691&spm_id_from=333.337.0.0