不少工做必定年限的程序員感受本身到了瓶頸不知道怎麼去突破,其實這個時候就要衝破傳說中的架構師。php
架構師是個很神祕人物,那麼架構師的技術通常在什麼程度呢?怎樣才能被稱爲架構師?mysql
技術深度linux
- 有沒有看過JDK源碼,看過的類實現原理是什麼。
- HTTP協議
- TCP協議
- 一致性Hash算法
- JVM如何加載字節碼文件
- 類加載器如何卸載字節碼
- IO和NIO的區別,NIO優勢
- Java線程池的實現原理,keepAliveTime等參數的做用。
- HTTP鏈接池實現原理
- 數據庫鏈接池實現原理
- 數據庫的實現原理
技術框架nginx
- 看過哪些開源框架的源碼
- 爲何要用Redis,Redis有哪些優缺點?Redis如何實現擴容?
- Netty是如何使用線程池的,爲何這麼使用
- 爲何要使用Spring,Spring的優缺點有哪些
- Spring的IOC容器初始化流程
- Spring的IOC容器實現原理,爲何能夠經過byName和ByType找到Bean
- Spring AOP實現原理
- 消息中間件是如何實現的,技術難點有哪些
系統架構程序員
- 如何搭建一個高可用系統
- 哪些設計模式能夠增長系統的可擴展性
- 介紹設計模式,如模板模式,命令模式,策略模式,適配器模式、橋接模式、裝飾模式,觀察者模式,狀態式,訪問者模式。
- 抽象能力,怎麼提升研發效率。
- 什麼是高內聚低耦合,請舉例子如何實現
- 什麼狀況用接口,什麼狀況用消息
- 若是AB兩個系統互相依賴,如何解除依賴
- 如何寫一篇設計文檔,目錄是什麼
- 什麼場景應該拆分系統,什麼場景應該合併系統
- 系統和模塊的區別,分別在什麼場景下使用
分佈式系統web
- 分佈式事務,兩階段提交。
- 如何實現分佈式鎖
- 如何實現分佈式Session
- 如何保證消息的一致性
- 負載均衡
- 正向代理(客戶端代理)和反向代理(服務器端代理)
- CDN實現原理
- 怎麼提高系統的QPS和吞吐量
實戰能力算法
- 有沒有處理過線上問題?出現內存泄露,CPU利用率標高,應用無響應時如何處理的。
- 開發中有沒有遇到什麼技術問題?如何解決的
- 若是有幾十億的白名單,天天白天須要高併發查詢,晚上須要更新一次,如何設計這個功能。
- 新浪微博是如何實現把微博推給訂閱者
- Google是如何在一秒內把搜索結果返回給用戶的。
- 12306網站的訂票系統如何實現,如何保證不會票不被超賣。
- 如何實現一個秒殺系統,保證只有幾位用戶能買到某件商品。
軟能力spring
- 如何學習一項新技術,好比如何學習Java的,重點學習什麼
- 有關注哪些新的技術
- 工做任務很是多很是雜時如何處理
- 項目出現延遲如何處理
- 和同事的設計思路不同怎麼處理
- 如何保證開發質量
- 職業規劃是什麼?短時間,長期目標是什麼
- 團隊的規劃是什麼
- 能介紹下從工做到如今本身的成長在那裏
總結一下:sql
- 表示層:spring mvc 3.1 + annotation
- 控制層:spring 3.1
- 持久層:hibernate 3.6 +jdbcTemplate
- 後臺列表控件:displaytag 1.2
- Ajax框架: DWR 3
- JS框架 : Jquery
- 緩存機制:spring 3.1 cache + ehcache/memcached
- 靜態化機制: Freemarker靜態化/spring mvc僞靜態化
- 頁面技術: EL + JSTL +JSP
- 安全框架 spring security
- 搜索引擎: Lucene
- 中文分詞:IKAnalyzer
- 模板引擎: apache tiles 2.22
- Linux、nginx、php、mysql,幾乎是標配
- 部署視圖所需:
- 數據庫: mysql
- Web 服務器: windows 下用apache, linux 下用ngnix
- 應用服務器: Tomcat Jboss,tomcat,weblogic
想成爲架構師不是懂了一大堆技術就能夠了,這些是解決問題的基礎、是工具,不懂這些怎麼去提解決方案呢?這是成爲架構師的必要條件。數據庫
架構師還要針對業務特色、系統的性能要求提出能解決問題成本最低的設計方案才合格,人家一個幾百人用戶的系統,訪問量不大,數據量小,你給人家上集羣、上分佈式存儲、上高端服務器爲了架構而架構,這是最扯淡的,架構師的做用就是第一知足業務需求,第二最低的硬件網絡成本和技術維護成本。
架構師還要根據業務發展階段,提早預見發展到下一個階段系統架構的解決方案,而且設計當前架構時將架構的升級擴展考慮進去,作到易於升級;不然等系統瓶頸來了,出問題了再去出方案,或現有架構沒法擴展直接扔掉重作,或擴展麻煩問題一大堆,這會對企業形成損失。
成爲架構師須要時間的積累的,不但要知其然還要知其因此然。平時的一點一滴你感受不到特別用處,但某天你會發現全部東西都沒有白學的。
據不徹底統計,截至目前(2017.07)爲止,中國Java程序員的數量已經超過了1000萬。並且,隨着IT培訓業的持續發展和大量的應屆畢業生進入社會,Java程序員面臨的競爭壓力愈來愈大。那麼,做爲一名Java程序員,怎樣努力才能快速成長爲一名高級的程序員或者架構師,或者說一名優秀的高級工程師或架構師應該有怎樣的技術知識體系,這不只是一個剛剛踏入職場的初級程序員,也是工做三五年以後開始迷茫的老程序員,都必需要面對和想明白的問題。爲了幫助你們少走彎路,咱們總結出一個Java程序員的工做2-5年成長路線圖。
![clipboard.png clipboard.png](http://static.javashuo.com/static/loading.gif)
![clipboard.png clipboard.png](http://static.javashuo.com/static/loading.gif)
![clipboard.png clipboard.png](http://static.javashuo.com/static/loading.gif)
![clipboard.png clipboard.png](http://static.javashuo.com/static/loading.gif)
![clipboard.png clipboard.png](http://static.javashuo.com/static/loading.gif)
做爲一名合格的架構師,必須懂各類網絡產品及特性,懂各類中間件,可以知道坑在哪兒,深諳各類技術方案的優缺點,懂整合各類資源並達到最優…瞭解各類技術及應用場景,有足夠的工做經驗解決集成中遇到的各類奇葩問題。
我特地整理了一下,有不少問題不是靠幾句話能講清楚,因此乾脆找朋友錄製了一些視頻,但願能幫助這個階段的Java程序員。不少問題其實答案很簡單,可是背後的思考和邏輯不簡單,要作到知其然還要知其因此然。若是想學習Java工程化、高性能及分佈式、高性能、深刻淺出。性能調優、Spring,MyBatis,Netty源碼分析的朋友能夠加入Java高級互聯網架構:793042903獲取架構進階學習資料。