先從第一點來說:怎么樣才算真正學好了Java呢?
其實這要看你所要解決的具體問題。解決的問題復雜度越高,相應的學好自然越難。在網絡上對各個層次的Java程序員有相關的技能匹配規則如下:
初級:1、掌握java基礎,熟悉常用類庫。理解java web中的servlet,jsp,并了解常用的框架對java web的封裝原理,能夠借助框架完成增刪改查功能。理解數據庫在web開發中的地位。
2、理解java中較為高級的特性,如反射,動態代理,JVM,內存模型,多線程等等。熟練使用框架,對框架中遇到的bug,能夠借助日志和搜索引擎分析出問題的原因。在團隊中,能夠獨立完成普通后臺業務功能的開發。了解數據庫的高級特性,如索引,存儲引擎等等。
3、理解java分布式架構,微服務架構,了解其與集中式架構的區別,并能保證分布式代碼質量。熟練使用各個中間件如redis,mq,zookeeper等等,并了解其工作原理和使用場景。能夠在中級或高級程序員的帶領之下,完成非核心功能的研發。能夠關注開源,并且具有閱讀源碼的能力。
中級:具備一定的項目開發經驗(3年之上一線互聯網產品研發經驗),擁有線上bug的處理能力,JVM調優能力,以及完成核心業務功能的開發。并且帶領團隊的新人,能夠按能力分配任務。
高級:團隊的核心人物,把控整個項目的質量,包括代碼漏洞和規范問題。具有5年以上項目開發經驗,2年以上架構搭建的經驗,能夠根據業務選擇不同的架構類型;根據團隊組成,分配不同的任務。具有將自己的知識分享出去的能力,帶領初級程序員走向中級,中級程序員走向高級的能力。
根據你的層次對號入座找到具象的標準那么第一個問題就解決了。
再說下第二點Java后端的技術體系是什么樣的?
我們的大 Java從1995年開始誕生以來一路發展短短幾年就發展成最受歡迎的編程語言。擁有龐大的技術社區以及豐富的群眾基礎。Java的體系不可謂不龐大:
MVC框架
SpringMVC
Jersey
JFinal(國人開發)
WebX(阿里)
IoC框架:
Spring
緩存框架:
Redis(可使用Spring的RedisTemplate),
Memcached
性能檢測框架:
Jwebap
數據庫:
關系型數據庫(MySQL, PostgreSQL)
NoSQL(MongoDB, HBase, 其中HBase用于大數據庫領域的列數據庫,受限于查詢性能, 一般不用于做業務數據庫)
數據庫中間件:
Cobar(阿里)
Atlas(360)
DDB(網易)
MyCat
Kindshard
MySQL Proxy(支持Lua, 性能較差)
ORM框架:
MyBatis
Spring ORM提供的JdbcTemplate
TDDL(阿里)
Sharding-JDBC(當當)
搜索引擎:
Solr
Elasticsearch
文件存儲:
底層采用傳統的RAID, 上層HDFS
單點登錄系統:
耶魯大學開源的CAS (?https://github.com/apereo/cas/tree/master/cas-server-webapp?)
統一認證中心:
用戶注冊/登錄認證/token鑒權
內部信息系統用戶的管理和登錄鑒權
APP的管理,包括APP secret生成, APP信息的驗證(如驗證接口簽名)
統一配置中心:
Zookeeper
Disconf(百度)
統一調度中心(定時任務):
Linux Cron
Java Quartz
Oozie(Azkaban&Yahoo)
Spring Quartz+Zookeeper
elastic-job(當當)
消息隊列:
Kafka(LinkedIn)
RabbitMQ
服務治理框架(http/RESTful/RPC):
RMI
Hessian
Thrift, Dubbo
Dubbox(當當)
統一日志服務:
Log4j
LogBack
收集方案:
Scribe
Chukwa
Kafka(LinkedIn)
Flume
傳輸方案:
Kafka(LinkedIn)
數據庫與數據倉庫同步:
Sqoop(Apache)
Canal(阿里)
離線數據分析:
Hadoop
Spark
Tip 數據傾斜: Region數據分布不均, 造成有些節點負載很低, 而有些卻負載很高, 從而影響整體性能
實時數據分析:
Storm
Spark Streaming(批量計算, 高延遲)
Flink
實時+離線數據分析:
Lambda
數據即席分析:
Presto
Impala
Hive
自己搭建內部HUE
故障監控:
系統監控:
Nagios
Cacti
Ganglia(分布式服務集群)
OpenFalcon(小米)
業務監控:
ELK(Elasticsearch+Logstash+Kibana)
Mercury(唯品會)
鷹眼(阿里)
WatchMan(新浪)
Zipkin(Twitter)
HTrace(Apache)
Spring Cloud Sleuth(如果使用Spring Cloud)
上面列出來的都是,涉及到的知識點真的是浩如煙海。如果說真的要把這些知識點都做到精通難度可想而知,所以我們在學的時候必須得選中一個方向。這也就是要說的第三點“怎么學好Java后端?”
其實旦凡是技術學習都是一個熟能生巧的過程。而熟的過程就是練習的過程!
好說到這里問題來了:怎么練?
下面我們看第三個問題:怎么學好Java后端?
1、設想一個應用場景,然后根據應用場景自己動手搭一個項目
這是最好的一個方法,因為這個項目是出自于你的想法、也不用著急忙慌的趕著上線,所以你對待它的態度和你對待工作中的項目是兩種不同的態度。更多的你可能會把它當成是你的孩子一樣對待。希望它盡可能地優秀。這是你樂于去做的。
2、看項目,抄項目
這個方法最好是結合第一個方法一起使用。
有條件的話盡可能多找一些項目來看,熟悉它們的項目結構和配置等等方面的內容,看得多了了再自己動手仿建一個項目(這才是重中之重)。你要知道紙上得來終覺淺覺知此事要躬行。
3、記錄技術點的同時擴大技術影響力。
這點很重要、尤其是對于那些不以終生當程序員為目標的朋友更是如此。現在是網絡時代,信息傳播的速度是以往我們從來都不敢想象的。也正因為我們處在這樣一個年代,所以我們才能有更多的機會在競爭激烈的職場中脫穎而出。而這時你需要的不僅僅是精湛的編程技術、你更需要的是影響力。
4.鍛煉身體獲得更好的精神狀態。
從事開發工作的各位朋友、不管你現在的身體狀況怎么樣,請記住一定要鍛煉身體相信我只要你停止鍛煉,你會在不久的將來感覺到你身體的變化。保持好的精神狀態可以讓你更有戰斗力、思維更清晰敏捷。
手機瀏覽
全國
19974831731





