怎樣學(xué)習(xí)Java?

一、Java基礎(chǔ)學(xué)習(xí)

包括Java 開發(fā)環(huán)境的搭建、Java語言基礎(chǔ),流程控制,字符串,數(shù)組,面向?qū)ο缶幊袒A(chǔ)、面向?qū)ο蠛诵募夹g(shù),包裝類,數(shù)字處理類,接口、繼承與多態(tài),類的高級特性,異常處理,lambda 表達式,集合類,I/O(輸入/輸出),反射,枚舉類型與泛型,多線程,網(wǎng)絡(luò)通信,數(shù)據(jù)庫操作。

二、Java基礎(chǔ)框架學(xué)習(xí)

Spring 框架

Spring MVC

Spring MVC 是一個模型 - 視圖 - 控制器(MVC)的Web框架建立在中央前端控制器servlet(DispatcherServlet),它負責(zé)發(fā)送每個請求到合適的處理程序,使用視圖來最終返回響應(yīng)結(jié)果的概念。Spring MVC 是 Spring 產(chǎn)品組合的一部分,它享有 Spring IoC容器緊密結(jié)合Spring松耦合等特點,因此它有Spring的所有優(yōu)點。

Spring Boot

Spring Boot是由Pivotal團隊提供的全新框架,其設(shè)計目的是用來簡化新Spring應(yīng)用的初始搭建以及開發(fā)過程。該框架使用了特定的方式來進行配置,從而使開發(fā)人員不再需要定義樣板化的配置。

SpringBoot所具備的特征有:

(1)可以創(chuàng)建獨立的Spring應(yīng)用程序,并且基于其Maven或Gradle插件,可以創(chuàng)建可執(zhí)行的JARs和WARs;

(2)內(nèi)嵌Tomcat或Jetty等Servlet容器;

(3)提供自動配置的“starter”項目對象模型(POMS)以簡化Maven配置;

(4)盡可能自動配置Spring容器;

(5)提供準(zhǔn)備好的特性,如指標(biāo)、健康檢查和外部化配置;

(6)絕對沒有代碼生成,不需要XML配置。

數(shù)據(jù)庫映射框架

Hibernate(開放源代碼的對象關(guān)系映射框架)

Hibernate是一個開放源代碼的對象關(guān)系映射框架,它對JDBC進行了非常輕量級的對象封裝,它將POJO與數(shù)據(jù)庫表建立映射關(guān)系,是一個全自動的orm框架,hibernate可以自動生成SQL語句,自動執(zhí)行,使得Java程序員可以隨心所欲的使用對象編程思維來操縱數(shù)據(jù)庫。Hibernate的API一共有6個,分別為:Session、SessionFactory、Transaction、Query、Criteria和Configuration。通過這些接口,可以對持久化對象進行存取、事務(wù)控制。

MyBatis

MyBatis 是一款優(yōu)秀的持久層框架,它支持定制化 SQL、存儲過程以及高級映射。MyBatis 避免了幾乎所有的 JDBC 代碼和手動設(shè)置參數(shù)以及獲取結(jié)果集。MyBatis 可以使用簡單的 XML 或注解來配置和映射原生信息,將接口和 Java 的 POJOs(Plain Ordinary Java Object,普通的 Java對象)映射成數(shù)據(jù)庫中的記錄。

MyBatis 是支持普通 SQL查詢,存儲過程和高級映射的優(yōu)秀持久層框架。MyBatis 消除了幾乎所有的JDBC代碼和參數(shù)的手工設(shè)置以及結(jié)果集的檢索。MyBatis 使用簡單的 XML或注解用于配置和原始映射,將接口和 Java 的POJOs(Plain Ordinary Java Objects,普通的 Java對象)映射成數(shù)據(jù)庫中的記錄。

每個MyBatis應(yīng)用程序主要都是使用SqlSessionFactory實例的,一個SqlSessionFactory實例可以通過SqlSessionFactoryBuilder獲得。SqlSessionFactoryBuilder可以從一個xml配置文件或者一個預(yù)定義的配置類的實例獲得。

用xml文件構(gòu)建SqlSessionFactory實例是非常簡單的事情。推薦在這個配置中使用類路徑資源(classpath resource),但你可以使用任何Reader實例,包括用文件路徑或file://開頭的url創(chuàng)建的實例。MyBatis有一個實用類----Resources,它有很多方法,可以方便地從類路徑及其它位置加載資源。

三、Web前端基礎(chǔ)知識學(xué)習(xí)

大前端:

HTML、CSS、JavaScript、工具、后端、性能、測試、開發(fā)守則、用戶體驗。

HTML:

HTML語義化、HTML5、DOCTYPE、SEO、Wap、SVG/VML

CSS:

CSS2(布局方式、CSS權(quán)威指南、通用樣式)

CSS3(new selector、new CSS style)

IE通用Bug(雙倍邊距、…)

IE hack方式(條件注釋、CSS hack)

圖片(IE png8透明、css font icon、css spirite、圖片格式與壓縮率的關(guān)系、預(yù)設(shè)值width/height提升性能)

JavaScript:

安全相關(guān)(跨站腳本攻擊)、基礎(chǔ)知識(DOM、兼容性bug、BOM、跨域相關(guān))、Good parts、NodeJS、設(shè)計模式、熟悉一門框架(jQuery/YUI/MoonTool)

新技術(shù)(WebWorker、WebSocket、localStorage、Canvas、Audio/Video、SVG、ECMAScript 5、History api、File api、Geolocation API、Drag&Drop、Messaging、Offline cache、其他)

DOM:DOM Traversal、事件、其他、Rang api

BOM:XMLHttpRequest、CSS Object Model、其他

工具:

開發(fā)工具(編輯器、firebug/Web developer、chrome默認工具、fiddler/其他代理工具、jslint/jsdev)

構(gòu)建工具(G-build、Google、YUI compressor、uglifyjs)

測試工具

學(xué)習(xí)工具(信息記錄[workflowy.com、EverNote、zootool]、信息獲取[RSS(google reader)、Twitter、新浪微博])

版本管理工具(SVN、git、hg)

四、Java高級技術(shù)

微服務(wù)治理框架

Spring Cloud

Spring Cloud是一系列框架的有序集合。它利用Spring Boot的開發(fā)便利性巧妙地簡化了分布式系統(tǒng)基礎(chǔ)設(shè)施的開發(fā),如服務(wù)發(fā)現(xiàn)注冊、配置中心、消息總線、負載均衡、斷路器、數(shù)據(jù)監(jiān)控等,都可以用Spring Boot的開發(fā)風(fēng)格做到一鍵啟動和部署。

Dubbo

Dubbo是阿里巴巴公司開源的一個高性能優(yōu)秀的服務(wù)框架,使得應(yīng)用可通過高性能的 RPC 實現(xiàn)服務(wù)的輸出和輸入功能,可以和Spring框架無縫集成。

Dubbo是一款高性能、輕量級的開源Java RPC框架,它提供了三大核心能力:面向接口的遠程方法調(diào)用,智能容錯和負載均衡,以及服務(wù)自動注冊和發(fā)現(xiàn)。

主要核心部件編輯

Remoting: 網(wǎng)絡(luò)通信框架,實現(xiàn)了 sync-over-async 和request-response 消息機制。

RPC: 一個遠程過程調(diào)用的抽象,支持負載均衡、容災(zāi)和集群功能

Registry: 服務(wù)目錄框架用于服務(wù)的注冊和服務(wù)事件發(fā)布和訂閱

數(shù)據(jù)庫

MySQL

MySQL 是最流行的關(guān)系型數(shù)據(jù)庫管理系統(tǒng)之一,在WEB應(yīng)用方面,MySQL是最好的 RDBMS應(yīng)用軟件之一。PostgreSQL

PostgreSQL是一個功能非常強大的、源代碼開放的客戶/服務(wù)器關(guān)系型數(shù)據(jù)庫管理系統(tǒng)(RDBMS)。

緩存

Redis

redis是一個key-value存儲系統(tǒng)。和Memcached類似,它支持存儲的value類型相對更多,包括string(字符串)、list(鏈表)、set(集合)、zset(sorted set --有序集合)和hash(哈希類型)。這些數(shù)據(jù)類型都支持push/pop、add/remove及取交集并集和差集及更豐富的操作,而且這些操作都是原子性的。在此基礎(chǔ)上,redis支持各種不同方式的排序。與memcached一樣,為了保證效率,數(shù)據(jù)都是緩存在內(nèi)存中。區(qū)別的是redis會周期性的把更新的數(shù)據(jù)寫入磁盤或者把修改操作寫入追加的記錄文件,并且在此基礎(chǔ)上實現(xiàn)了master-slave(主從)同步。

消息中間件

Kafka

Kafka是一種高吞吐量的分布式發(fā)布訂閱消息系統(tǒng),它可以處理消費者在網(wǎng)站中的所有動作流數(shù)據(jù)。

AcitveMQ

ActiveMQ是一種開源的基于JMS(Java Message Servie)規(guī)范的一種消息中間件的實現(xiàn),ActiveMQ的設(shè)計目標(biāo)是提供標(biāo)準(zhǔn)的,面向消息的,能夠跨越多語言和多系統(tǒng)的應(yīng)用集成消息通信中間件。