日韩黑丝制服一区视频播放|日韩欧美人妻丝袜视频在线观看|九九影院一级蜜桃|亚洲中文在线导航|青草草视频在线观看|婷婷五月色伊人网站|日本一区二区在线|国产AV一二三四区毛片|正在播放久草视频|亚洲色图精品一区

分享

服務端工程師入門與進階 Java 版

 zhangxiansen 2016-08-06

前言

歡迎加入我們。這是一份針對實習生/畢業(yè)生的服務端開發(fā)入門與進階指南。遇到問題及時問你的 mentor 或者直接問我。 建議:

  • 盡量用google查找技術資料。
  • 有問題在stackoverflow找找,大部分都已經(jīng)有人回答。
  • 多看官方的技術文檔。
  • ibm developerworkers的文章質量整體上有保障。
  • 平時花一些時間在github上閱讀優(yōu)秀項目源碼。

入門(1-2 個月)

  1. 目標:參與簡單的項目開發(fā)。
  2. 技能:
    • 掌握 Java。經(jīng)典的《Java 核心技術:卷1 基礎知識》(或者《Java 編程思想》)必看,跳過其中的圖形和 applet 章節(jié)。習慣通過 Java API Doc。為了保證代碼的質量,《Effective Java》、《Clean Code》和《重構》也需要至少通讀一遍。
    • 熟悉 Linux 開發(fā)環(huán)境和 bash shell。Linux 是我們的開發(fā)和部署環(huán)境,你最好盡快熟練它。Linux 的基本使用可以通過《鳥哥的Linux私房菜:基礎學習篇(第三版)》學習,開發(fā) bash shell 腳本可以參考《Linux Shell腳本攻略》。
    • 掌握開發(fā)工具
      • 熟練使用一種 IDE。Intellij IDEA或者 Eclipse 都可以,推薦使用前者。至少熟悉常用的快捷鍵,會 debug(包括遠程 debug)項目。
      • 熟悉一種編輯器。比如 Vim/Emacs,至少學會搜索/替換/代碼補全。
    • 掌握 JDK 以外的常用類庫和工具包。JDK 原生 API 在很多場景下使用并不方便。你需要掌握社區(qū)貢獻的優(yōu)秀類庫和工具包,比如 apache commons、google guava 等,具體可以翻閱《技術選型手冊》的Utility 篇。
    • 掌握 Web 開發(fā)框架。我們使用 Spring(或Rose) + Ibatis(或Jade) 開發(fā) web 服務,你需要熟練掌握它們。
    • 學習代碼規(guī)范。我們大致上遵循 oracle 的 Java 語言編碼規(guī)范,你可以先閱讀并熟悉它。Code Formatting 文件在 git@git.n.xiaomi.com:xiaomi-commons/coding-standard.git,在編寫代碼之前,請把它導入到 IDE 中。另外,確認 IDE 已經(jīng)安裝 Findbugs 和 CheckStyle 插件。
    • 熟悉開發(fā)流程。我們的開發(fā)流程大致如下:功能開發(fā)->單元測試->功能測試->Code Review->集成測試->發(fā)布。確保你熟悉其中的每個環(huán)節(jié)。
    • 其他。需要熟練使用版本控制工具 Git(閱讀:《Git 權威指南》),以及項目構建工具 Maven(閱讀:《Maven實戰(zhàn)》)。另外,在這個階段可以嘗試 TDD 開發(fā)。

進階(2-6 個月)

  • 目標:獨立負責某個服務端項目。
  • 技能:
    • 掌握 web 開發(fā)最佳實踐,掌握 Restful API 設計,理解 Spring 原理。推薦閱讀《Spring 揭秘》。掌握項目分層、子模塊劃分。推薦閱讀:《J2EE 核心模式》。
    • 掌握 web 架構設計。包括 Http 反向代理,數(shù)據(jù)緩存,負載均衡,水平擴展和垂直擴展。推薦閱讀:《分布式Java應用:基礎與實踐》。
    • 掌握關系型數(shù)據(jù)庫。包括設計 MySQL 表結構,根據(jù)業(yè)務特點分表分庫,基于執(zhí)行計劃的 SQL 分析優(yōu)化,以及數(shù)據(jù)庫容量規(guī)劃。推薦閱讀:《MySQL 必知必會》、《高性能 MySQL》。
    • 了解 NoSQL。我們大規(guī)模使用 Hadoop、HBase、Hive,同時部分項目使用 Redis、Storm。你需要學會這些工具最基本的使用。
    • 學習 web 安全知識。了解 web 前端安全問題。設計安全 web 服務,包括加解密、防偽造、防重放攻擊等。
    • 掌握 Http(推薦閱讀:《圖解 Http》、《Http 權威指南》)、Thrift 等協(xié)議。
    • 掌握服務容量規(guī)劃,性能調優(yōu),可靠性保證,以及故障處理。學習容量規(guī)劃和性能調優(yōu)知識,梳理業(yè)務監(jiān)控點,熟練使用我們的監(jiān)控報警系統(tǒng)。推薦閱讀:《深入理解 Java 虛擬機》。
    • 其他。設計模式:從項目中學習,有時間可以看看《深入淺出設計模式》、《JDK 里的設計模式》。學習Java Socket 編程與多線程知識,可以看看《Java 并發(fā)編程實戰(zhàn)》,并翻翻并發(fā)編程網(wǎng)的文章。

深入(6 個月-)

  • 目標:分布式系統(tǒng)和中間件開發(fā)。
  • 構建知識體系:《大型網(wǎng)站系統(tǒng)與 Java 中間件實踐》、《大型網(wǎng)站技術架構:核心原理與案例分析》。
  • 原理與設計:《大規(guī)模存儲式系統(tǒng)》、《UNIX 網(wǎng)絡編程 卷1:套接字聯(lián)網(wǎng) API》、《How Tomcat Works》。
  • 學習開源項目:Apache Thrift、Zipkin、Netty、Rose、Jade、淘寶 RPC 系統(tǒng) Dubbo 等。分析項目中的設計思路。比如,同樣是RPC框架,F(xiàn)inagle 和 Dubbo 有什么異同。
  • 其他。根據(jù)參與的項目加深學習吧。比如,如果需要寫 DSL,可以讀一下《領域特定語言》,對 Redis 感興趣推薦讀一下:《Redis 設計與實現(xiàn)》。有兩本書,無論做什么項目,都推薦讀:《Unix 編程藝術》、《UNIX 環(huán)境高級編程(第3版)》。

    本站是提供個人知識管理的網(wǎng)絡存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權內(nèi)容,請點擊一鍵舉報。
    轉藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多