回覆列表
  • 1 # 成都朗沃教育

    一: 程式設計基礎

    不管是C還是C++,不管是Java還是PHP,想成為一名合格的程式設計師,基本的資料結構和演算法基礎還是要有的。下面幾篇文章從思想到實現,為你梳理出常用的資料結構和經典演算法。

    1-1 常用資料結構

    陣列、連結串列、堆、棧、佇列、Hash表、二叉樹等

    1-2 演算法思想

    演算法時間複雜度和空間複雜度的分析計算

    演算法思想:遞推、遞迴、窮舉、貪心、分治、動態規劃、迭代、分枝界限

    1-3 經典演算法

    經典排序:插入排序、氣泡排序、快排(分劃交換排序)、直接選擇排序、堆排序、合併排序

    經典查詢:順序查詢、二分查詢、二叉排序樹查詢

    1-4 高階資料結構

    B+/B-數、紅黑樹、圖等

    1-5 高階演算法

    圖的深度優先搜尋、圖的廣度優先搜尋、拓撲排序、Dijkstra演算法(單源最短路徑)、霍夫曼編碼、輾轉相除法、最小生成樹等

    二:Java語言基礎

    誕生不過二十餘年的Java語言憑藉其跨平臺、面向物件、適合於分散式計算的特性,廣泛應用於Web網站、移動裝置、桌面應用中,並且已經連續多年穩居TOBIE程式語言排行榜前列,最近更是登上冠軍寶座。Java有哪些優秀而又與眾不同的地方首先一定要清楚。

    2-1 基礎語法

    Java語法格式,常量和變數,變數的作用域,方法和方法的過載,運算子,程式流程控制,各種基本資料型別及包裝類

    2-2 重要:集合類

    Collection以及各種List、Set、Queue、Map的實現以及整合關係,實現原理

    Collections和Arrays

    2-3 其他JavaAPI

    String和StringBuffer,System和Runtime類,Date和DateFomat類

    java.lang包

    java.util包(集合類體系、規則表示式、zip,以及時間、隨機數、屬性、資源和Timer等)

    java.math包

    java.net包

    java.text包(各種格式化類等)

    java.security包

    2-4 面向物件、面向介面

    物件的三大特性:封裝、繼承和多型,優缺點

    如何設計類,類的設計原則

    this關鍵字,final關鍵字,static關鍵字

    物件的例項化過程

    方法的重寫和過載;方法和方法的引數傳遞過程

    建構函式

    內部類,抽象類,介面

    物件的多型性(子類和父類之間的轉換、父類紙箱子類的引用),抽象類和介面在多型中的應用

    2-5 JVM記憶體模型、垃圾回收

    2-6 關於異常

    Throwable/Error/Exception,Checked Exception vs. Unchecked Exception,異常的捕捉和丟擲,異常捕捉的原則,finally的使用

    2-7 多執行緒

    執行緒和程序的概念

    如何在程式中建立多執行緒,執行緒安全問題,執行緒之間的通訊

    執行緒的同步

    死鎖問題的剖析

    執行緒池

    2-8 IO

    java.io包,理解IO體系的基於管道模型的設計思路以及常用IO類的特性和使用場合。

    File及相關類,位元組流InputStream和OutputStream,字元流Reader和Writer,以及相應緩衝流和管道流,位元組和字元的轉化流,包裝流,以及常用包裝類使用

    分析IO效能

    2-9XML

    熟悉SAX、DOM以及JDOM的優缺點並且能夠使用其中的一種完成XML的解析及內容處理;這幾種解析方法的原理

    2-10 一些高階特性

    反射、代理、泛型、列舉、Java正則表示式

    2-11 網路程式設計

    網路通訊協議原理及適用場景,Socket程式設計,WEB伺服器的工作原理

    2-11 JDK1.5、JDK1.6、JDK1.7、JDK1.8每個版本都比前面一個版本添加了哪些新特性,進行了哪些提升

    三:資料庫相關

    前面說到了資料結構,資料庫簡單來說就像是電子化的檔案櫃,是按照一定的資料結構來組織、儲存和管理資料的倉庫。

    3-1理論基礎

    資料庫設計原則和正規化

    事務(ACID、工作原理、事務的隔離級別、鎖、事務的傳播機制)

    3-2 各種資料庫優缺點、使用場景分析

    MySQL/SQLServer/Oracle以及各種NoSQL(Redis、MongoDB、Memcached、HBase、CouchDB等)

    3-2 SQL語句

    資料庫建立,許可權分配,表的建立,增刪改查,連線,子查詢

    觸發器、儲存過程、事務控制

    3-3 最佳化

    索引原理及適用,大表查詢最佳化,多表連線查詢最佳化,子查詢最佳化等

    3-4 分庫、分表、備份、遷移

    匯入、匯出,分庫、分表,冷備熱備,主從備份、雙機熱備、縱向擴充套件、橫向擴充套件

    3-5 JDBC

    JDBC Connection、Statement、PreparedStatement、CallableStatement、ResultSet等不同類的使用

    連線池(配置使用、實現原理)

    ORM,DAO

    四:JavaWeb核心技術(包括部分前端)

    Html5/Css/JS原生/jQuery

    Ajax(跨域等)

    JSP/JavaBean/Servlet/EL/JSTL/TabLib

    JSF

    JSON

    EJB

    序列化和反序列化

    規則引擎

    搜尋引擎

    模板引擎

    快取

    身份認證

    測試

    叢集

    持久化

    生成靜態頁技術

    高效能

    安全

    事務JTA

    其他需要了解的,如:管理JMX、安全JCCA/JAAS、整合JCA、通訊JNDI/JMS/JavaMain/JAF、SSI技術

    五、主流框架及工具

    Struts1/Struts2

    Spring(IoC、AOP等),SpringMVC

    持久化:Hibernate/MyBatis

    日誌:Log4j

    單元測試:JUnit

    訊息佇列:ActiveMQ、RabbitMQ等

    負載均衡:Nginx/HaProxy

    Web伺服器:Tomcat、JBoss、Jetty、Resin、WebLogic、WebSphere等

    通訊:WebService(cxf的soap、restful協議)

    快取:Redis、Memcached

    工作流:Activity、JBPM

    搜尋引擎:lucene,基於lucene封裝的solr

    模板引擎:Velocity、FreeMaker

    大資料:Hadoop(HDFS和MapReduce)

    構建工具:Ant/Maven

    六、JavaWeb系統設計與架構

    Java設計模式

    JAVA與UML建模

    面向服務架構:SOA/SCA/ESB/OSGI/EAI,微服務

  • 2 # jacins3

    1 首先是一個合格的程式設計師。

    2 真正懂軟體,懂軟體工程,而不知是考試做題。可以獨立完成一個產品,並服務客戶產生收益。

    3 需要伯樂,給你一個超出一個人完成的專案,你兢兢業業險些在deadline前完成了產品。

    4 不斷有新的挑戰。

  • 3 # mikechen的網際網路架構

    網站架構涉及許多技術,Java程式設計師想要學習進階成為架構師,需具備與架構師相匹配的技術能力,這是前提和基礎。本篇列舉了架構師的必備技術能力,文末隨附詳細的架構師專題資料。

    一、計算機基礎

    作業系統(推薦現代作業系統)編譯原理計算機網路網際網路協議TCP/IP(推薦《TCP/IP協議族》)HTTP1.1/2.0HTTPSOAauth 2.0REST

    二、集合框架(原始碼)

    ListArrayListLinkedListSet:HashSet、TreeSetMap:TreeMap、ConcurrentHashMapQueue:ConcurrentLinkedQueueStackCollection的synchronized等方法

    三、工具類

    Google guava(推薦)Apache common lang/BeanUtils/Collctions/IOJSONfastjsongsonjackson

    四、框架

    Spring:IOC、AOP、常用註解SpringMVCMybatisShiroNetty

    五、遠端呼叫(RPC)

    rmiThriftDubbo(Dubbox)伺服器治理,也可以作為微服務gRPC

    六、構建

    Maven:推薦《Maven實戰》Gradle

    七、安全

    單項雜湊演算法:MD5、SHA對稱加密:DES非對稱加密:RSA、HTTPS

    八、JVM

    Java虛擬機器(Hotspot實現)類載入機制記憶體模型GC:回收演算法、垃圾收集器調優工具:jstack、jmap、jconsole

    九、併發程式設計

    Executor框架Fork/joinhappen-before資料結構:ConcurrentHashMap執行緒池:引數設定、原理、拒絕策略執行緒狀態Lock/synchronized原子操作類併發工具類:CountDownLatch、Semaphore、CyclicBarrier、ExchangerIO、BIO、AIO、NIO

    十、資料

    NoSQL:MongoDB

    分散式快取:Memcached、Redis(推薦)

    關係資料庫

    MySQL引擎InnoDB(支援事務)分庫分表CobarMycat

    十一、SQL最佳化

    索引主鍵索引組合索引explain儲存過程

    SQL注入:使用#而不使用$

    十二、事務隔離級別(ACID)

    原子性一致性隔離性永續性

    十三、鎖

    表鎖行鎖悲觀鎖

    資料庫設計

    十四、正規化

    第一正規化第二正規化第三正規化E-R圖

    十五、搜尋引擎

    Luecene

    Solr

    ElasticSearch

    十六、大資料

    HadoopHbaseSparkStorm/JStorm

    十七、演算法與資料結構

    陣列連結串列棧佇列樹二叉樹B Tree/B+ Tree紅黑樹雜湊

    十八、排序

    內部排序插入排序直接插入排序希爾排序選擇排序簡單選擇排序堆排序交換排序氣泡排序快速排序歸併排序基數排序桶排序外部排序

    十九、分散式系統

    從集中到分散式分散式Session:Session複製、Session繫結、Session伺服器(靠譜)分散式快取:Redis、一致性Hash演算法資料庫:讀寫分離、主從熱備、分庫分表、一致性分散式事務、CAP、BASE、2PC/3PC分散式鎖Redisson負載均衡、硬體、F5、軟體、LVS、Nginx訊息佇列:RabbitMQ、ZeroMQ、ActiveMQ、Kafka(推薦)服務化:服務註冊與發現、Zookeeper架構微服務Spring BootDubboRPCSOA虛擬化Docker

    以上,是架構師必備的技術能力,以下,是架構師進階專題(已更新至80期),將關鍵詞【架構】私信給優知學院,全部秒收~

  • 4 # Java清風

    不邀自來,對於java工程師成為一名架構師如何進階學習及掌握應有的技能體系在這做出一些建議!Java架構師主要需要做哪些工作呢?負責設計和搭建軟體系統架構(平臺、資料庫、介面和應用架構等),解決開發中各種系統架構問題。最佳化現有系統的效能,解決軟體系統平臺關鍵技術問題攻關、核心功能模組設計、核心程式碼開發。在專案需求不斷細化的工程中校正整體的架構設計,以及詳細模組拆分設計。營造技術學習氛圍,帶領團隊不斷完善開發開發方法及流程,提升開發效率與質量,加強技術標準及規範。帶領團隊攻克例如大資料量、高併發、高穩定性等帶來的各種挑戰及技術難關。責任心強,有團隊合作精神,工作認真負責高效並具有一定抗壓能力。參與討論公司產品發展方向,完整的規劃和把握產品研發架構。Java架構師要學習哪些知識呢?

    希望以下的學習路線能對你有幫助

    併發程式設計

    JAVA記憶體模型(JMM)

    java當中的執行緒通訊和訊息傳遞什麼是重排序和順序一致性?Happens-Before?As-If-Serial?

    Synchronized的概念和分析

    同步、重量級鎖以及Synchronized的原理分析自旋鎖、偏向鎖、輕量級鎖、重量級鎖的概念、使用以及如何來最佳化他們

    Volatile和DCL的知識

    Volatile的使用場景和Volatile實現機制、記憶體語義、記憶體模型DCL的單例模式,什麼是DCL?如何來解決DCL的問題

    併發基礎之AQS的深度分析

    AbstractAueuedSynchronizer同步器的概念、CLH同步佇列是什麼?同步狀態的獲取和釋放、執行緒阻塞和喚醒

    Lock和併發常用工具類

    java當中的Lock、ReentrantLock、ReentrantReadWriteLock、Conditionjava當中的併發工具類CyclicBarrier、CountDownLatch、Semphorejava當中的併發集合類ConcurrentHashMap、ConcurrentLinkedQueue

    原子操作常用知識講解

    基本型別的原子操作比如經典的AtomicBoolean、AtomicLnteger、AtomicLong陣列型別的原子操作代表幾個類AtomicIntegerArray、AtomicLongArray、AtomicReferenceArray引用型別的原子操作的典型AtomicReference、AtomicReferenceFieldUpdater......CAS的概念和知識、Compare And Swap 以及他的缺陷

    執行緒池和併發並行

    Executor、ThreadPoolExecutor、Callable &Future、ScheduledExecutorServiceThreadLocal、Fork & Join?什麼是並行?執行緒池如何保證核心執行緒不被銷燬?框架和原始碼應用

    mybatis應用和原始碼解析

    mybatis優缺點、spring 與mybatis 整合Config、Sql配置、Mapper配置、有幾種註冊mapper的方法,優先順序如何?mybaits的一級快取、二級快取、mybatis的二級快取為什麼是雞肋?通用mapper的實現、mybaits編寫sql語句的三種方式@MapperScan的原始碼分析?mapperScan如何生效的?mybatis如何擴充套件spring的掃描器的、mybatis掃描完之後如何利用FactoryBean的?mybaits底層如何把一個代理物件放到spring容器中?用到了spring的哪些知識?mybaits和spring的核心介面ImportBeanDefinitionRegistrar之間千絲萬縷的關係從原來來說明mybaits的一級快取為什麼會失效?spring為什麼把他失效?有沒有辦法解決?從mybatis來分析mybatis的執行流程、mybaits的sql什麼時候快取的?快取在哪裡?mybaits當中的方法名為什麼需要和mapper當中的id一致?從原始碼來說明

    tomcat原始碼解析

    tomat的總體概述和tomcat的啟動流程原始碼分析tomcat當中web請求的原始碼分析?一個http如何請求到tomcat的?tomcat如何處理的?tomcat的協議分析,從原始碼來分析tomcat當中的各種詳細配置的意義tomcat和apache、nginx等等主流靜態伺服器的搭配使用tomcat的效能調優?生成環境上如何讓你的tomcat容器的效能達到最高

    spring原始碼分析

    spring的基本應用和spring原始碼的編譯java 混亂的日誌系統,Jul、jcl、log4j、slf4j.....spring4和spring在日誌方面的原始碼對比AspectJ和springAop,aspectj的靜態織入JDK動態代理的原始碼分析,JDK是如何操作位元組碼spring透過cglib完成AOP,cglib如果完成方法攔截AnnotationAwareAspectJAutoProxyCreator如何完成代理織入的BeanDefinition是什麼東西,sping當中的各種BeanDefinition的作用BeanDefinition有什麼作用?如果來改變一個bean的行為BeanDefinitionRegistry的作用,原始碼分析BeanNameGenerator如何改變beanName的生成策略BeanPostProcessor如何插手bean的例項化過程、經典的應用場景有哪些?spring內部哪裡用到了這個介面BeanFactoryPostProcessor和BeanPostProcessor的區別、經典應用場景、spring內部如何把他應用起來的BeanDefinitionRegistryPostProcessor和BeanFactoryPostProcessor的關係已經區別,spring底層如何呼叫他們ConfigurationClassPostProcessor這個類如何完成bean的掃描,如何完成@Bean的掃描、如何完成對@Import的解析@Imoprt的三種類型,普通類、配置類、ImportSelector如何利用ImportSelector來完成對spring的擴充套件?@Configuration這注解為什麼可以不加?加了和不加的區別,底層為什麼使用cglib@Bean的方法是如何保證單例的?如果不需要單例需要這麼配置?為什麼需要這麼配置springFacoryBean和BeanFacory的區別,有哪些經典應用場景?spring的factoryMethod的經典應用場景?ImportBeanDefinitionRegistrar這個介面的作用,其他主流框架如何利用這個類來完成和spring的結合的?spring是什麼時候來執行後置處理器的?有哪些重要的後置處理器,比如CommonAnnotationBeanPostProcessorCommonAnnotationBeanPostProcessor如何來完成spring初始化方法的回撥。spring內部的各種Procesor的作用分別是什麼spring和springBoot當中的各種@Enablexxxx的原理是什麼?如何自己實現一個?比如動態開啟某某些自定義功能spring如何來完成bean的迴圈依賴並且例項化的,什麼是spring的IOC容器,怎麼透過原始碼來理解?其他,比如Bean的例項化過程,原始碼中的兩次gegetSingleton的不同和相比如SpringMvc的原始碼分析等等微服務

    Spring Cloud

    Eureka的原始碼分析服務註冊和服務發現以及心跳機制和保護機制,對比eureka與zookeeper,什麼是CAP原則?Ribbon原始碼分析和客服端負載均衡,客戶端負載均衡?服務端負載均衡? Ribbon核心元件IRule以及重寫IRuleFegin原始碼分析和宣告式服務呼叫,Fegin負載均衡,Fegin如何與Hystrix結合使用? 有什麼問題?Hystrix實現服務限流、降級,大型分散式專案服務雪崩如何解決? 服務熔斷到底是什麼?一線公司的解決方案HystrixDoashboard如何實現自定義介面降級、監控資料、資料聚合等等Zuul統一閘道器詳解、服務路由、過濾器使用等,從源頭來攔截掉一些不良請求分散式配置中心Config詳解,如何與github或是其他自定義的git平臺結合、比如gitlab分散式鏈路跟蹤詳解,串聯呼叫鏈,,讓Bug無處可藏,如何釐清微服務之間的依賴關係?如何跟蹤業務流的處理順序?

    Spring Boot

    Spring Boot的原始碼分析和基本應用、利用springmvc的知識模擬和手寫一個springbootspringmvc的零配置如何實現的?利用servelt3.0的哪些新知識?在springmvc中如何內嵌一個tomcat,如何把web.xml去掉springboot當中的監聽器和設計模式中觀察者模式的關係、模擬java當中的事件驅動程式設計模型springboot的啟動流程分析、springboot如何初始化spring的context?如何初始化DispacterServlet的、如何啟動tomcat的springboot的配置檔案型別、配置檔案的語法、配置檔案的載入順序、模擬springboot的自動配置springboot的日誌系統、springboot如何設計他的日誌系統的,有什麼優勢?如何做到統一日誌的?

    Docker

    什麼是Docker、為什麼要使用他、和開發有什麼關係?能否帶來便捷、Docker簡介、入門,Docker的架構是怎樣的?Docker的三大核心概念:映象(Images)、容器(Containers)、倉庫服務註冊器(Registry)他們分別是什麼?Docker的基礎用法以及Docker映象的基本操作容器技術入門、Docker容器基本操作、容器虛擬化網路概述以及Docker的容器網路是怎樣的?程式設計師如何利用Dockerfile格式、Dockerfile命令以及docker build構建映象Compose和Dockerfile的區別是什麼?Compose的配置檔案以及使用Compose執行容器、Docker的實戰應用效能調優

    mysql效能調優

    mysql中為什麼不使用其他資料結構而就用B+樹作為索引的資料結構mysql執行計劃詳解&mysql查詢最佳化器詳解mysql索引最佳化實戰,包括普通查詢、group by、order by

    JVM效能調優

    java記憶體模型總體概述、類載入過程和classloader、執行時資料區當中的總體內容、編譯原理記憶體區域與記憶體溢位異常、虛擬機器物件、程式計數器、java棧、本地方法棧、運算元、方法區、堆記憶體和元資料等等Classloader的知識詳細、預設全盤負責機制、從JDK原始碼來理解雙親委派模式、如何打破雙親委派?為什麼需要打破?虛擬機器效能監控與故障處理、jvm基本命令,jinfo命令的使用jmap命令使用、jstak命令的使用、使用jvisualvm分析垃圾收集器與記憶體分配策略、垃圾回收演算法與基礎、串型收集器、並行收集器、記憶體分配與回收策略。程式編譯與程式碼最佳化、執行期最佳化、編譯期最佳化、JVM調優的本質是什麼?什麼是輕gc?什麼是Full gc?如何調優JVM執行子系統、類檔案結構、類載入機制、位元組碼執行引擎、位元組碼編譯模式、如何改變位元組碼編譯模式?java資料結構演算法hash演算法詳解、java當中hashmap原始碼解析、手寫一個hashmap從原始碼理解hashmapJDK7和JDK8的變化、為什麼有這樣的變化,Java8新特性順序儲存、雙向連結串列、單向連結串列、java當中linkedList的原始碼分析java當中線性結構、樹形結構以及圖形結構分析以及應用場景和經典使用大數字運算和經典排序、二叉樹紅黑樹排序、查詢網際網路工程

    Maven

    整體認知maven的體系結構maven核心命令maven的pom配置體系搭建Nexus私服

    Git

    動手搭建Git客戶端與服務端Git的核心命令Git企業應用git的原理,git底層指標介紹

    Linux

    Linux原理、啟動、目錄介紹Linux運維常用命令、Linux使用者與許可權介紹shell指令碼編寫分散式

    分散式協調框架(Zookeeper)

    什麼是分散式系統?分散式系統有何挑戰?Zookeeper快速入門&叢集搭建基本使用Zookeeper有哪些常用命令以及注意事項、zkclient客戶端與curator框架有什麼功能以及如何使用手寫Zookeeper常見應用場景:分散式配置中心、分散式鎖、分散式定時任務Zookeeper核心概念znode、watch機制、序列化、持久化機制講解及其原始碼解析Zookeeper怎麼解決分散式中的一致性問題?領導選舉流程講解及其原始碼解析

    RPC服務框架(Dubbo)

    手寫RPC框架以及為什麼要使用Dubbo? 傳統應用系統如何演變成分散式系統詳解Dubbo的六大特性是什麼?對企業級開發有何好處?Dubbo的作用簡要說明、快速演示Dubbo呼叫示例Dubbo中協議、註冊中心、動態代理機制是怎麼達到可擴充套件的?Dubbo的擴充套件機制原始碼解析Dubbo從服務提供者到註冊中心到消費者呼叫服務中間的流程原始碼解析Dubbo的監控中心以及管理平臺的使用,方便企業級開發與管理

    分散式資料快取(Redis)

    關係型資料庫瓶頸與最佳化、ehcache和redis的對比?nosql的使用場景Redis基本資料型別、比如map的使用場景?有什麼優缺點?什麼時候用map等等Redis高階特性、如何來理解redis的單執行緒但是高效能?如何理解redis和epollRedis持久化、什麼情況下需要持久化?方案是什麼?有什麼優缺點?如何優雅的選擇持久化方案Redis專案中應用、reids的高階命令mget、scan?為什麼有scan這條命令,如何理解redis的遊標?單機版redis的安裝以及redis生產環境啟動方案redis持久化機對於生產環境中的災難恢復的意義redis主從架構下如何才能做到99.99%的高可用性在專案中重新搭建一套主從複製+高可用+多master的redis cluster叢集redis在實踐中的一些常見問題以及最佳化思路(包含linux核心引數最佳化)redis的RDB持久化配置以及資料恢復實驗redis的RDB和AOF兩種持久化機制的優劣勢對比

    分散式資料儲存(mycat)

    分庫分表場景介紹Mycat原理解析分庫分表實戰

    分散式Rabbitmq

    RabbitMQ環境安裝&RabbitMQ整體架構與訊息流轉&交換機詳解訊息如何保障 100% 的投遞成功方案&企業訊息冪等性概念及業界主流解決方案Confirm確認訊息詳解&Return返回訊息詳解&消費端的限流策略&消費端ACK與重回佇列機制SpringAMQP使用者管理元件-RabbitAdmin應用&SpringAMQP訊息模板元件-RabbitTemplate實戰SpringAMQP訊息容器-SimpleMessageListenerContainer詳解&SpringAMQP訊息介面卡-MessageListenerAdapter使用RabbitMQ與SpringBoot2.0整合實戰&RabbitMQ與Spring Cloud Stream整合實戰RabbitMQ叢集架構模式&RabbitMQ叢集映象佇列構建實現可靠性儲存&RabbitMQ叢集整合負載均衡基礎元件HaProxy專案實戰大型網際網路電商專案面試題詳解,offer選擇簡歷技術最佳化、專案最佳化面試問題剖析職業生涯規劃總結

    不管是學什麼技術,最終都需要你進行歸納、整理,才能把所學的東西變為自己的。工作為什麼要寫日誌,平時學習為什麼要寫部落格,其實就是在構建自己的知識體系。在學習的過程中多做筆記,多做總結,習慣一旦形成,久而久之,便會印在你的腦海裡,你下次再被問到這一問題時,你就可以用自己之前總結過的內容來回答。

  • 5 # 千鋒青島

    在Java程式設計師行業中,有不少Java開發人員的理想是成為一名優秀的Java架構師,Java架構師的主要任務不是從事具體的軟體程式的編寫,而是從事更高層次的開發構架工作。他必須對開發技術非常瞭解,並且需要有良好的組織管理能力。可以這樣說,一個Java架構師工作的好壞決定了整個軟體開發專案的成敗。那麼Java架構師需要掌握哪些知識點呢?

    1、框架原始碼分析

    設計模式:Singleton單例模式,Factory工廠模式,Proxy代理模式,Template模板模式,Prototype原型模式等

    Spring5:Spring提醒結構,IOC注入原理,AOP設計原理,Spring事務處理機制,SpringMVC,Spring原始碼分析。

    Mybatis:Mybatis體系結構,Mybatis核心應用與配置,Mybatis關聯查詢,與Spring整合,Mybatis原始碼分析。

    2、效能最佳化

    JVM效能最佳化:剖析JVM整體結構,詳解垃圾回收機制GC,JVM效能調優與工具排查

    Nginx調優:Nginx專案架構,Nginx核心配置,Nginx負載演算法配置

    Tomcat調優:Tomcat執行機制及框架,Tomcat執行緒模型,Tomcat效能調優

    MySQL效能最佳化:SQL執行計劃,AQL最佳化,索引最佳化。

    3、掌握池技術

    物件池,連線池,執行緒池,Java反射技術,寫框架必備的技術,但是有嚴重的效能問題,替代方案Java位元組碼技術。

    4、掌握nio,值得注意的是“直接記憶體”的特點,使用場景。

    5、掌握Java多執行緒同步非同步。

    6、掌握Java各種集合物件的實現原理,瞭解這些可以讓你在解決問題時選擇合適的資料結構,高效的解決問題。

    7、熟練使用各種資料結構和演算法,陣列、雜湊、連結串列、排序樹……就是一句話要麼是時間換空間要麼是空間換時間。

    8、熟悉tcp協議,建立連線三次握手和斷開連線四次握手的整個過程,不瞭解的話,無法對高併發網路應用做最佳化。

    9、熟悉http協議,尤其是http頭,我發現好多工作五年以上的都弄不清session和cookie的生命週期以及它們之間的關聯。

    10、熟悉系統叢集、負載均衡、反向代理、動靜分離,網站靜態化。

    11、掌握分散式。

    Java併發程式設計和網路程式設計:Java執行緒狀態,執行緒池,執行緒通訊,執行緒安全,Netty高效能原理

    分散式開發框架:分散式系統口呼叫技術:RPC,Apache分散式系統Zookeeper原理與應用,阿里Dubbo設計思想與應用

    分散式中介軟體:分散式伺服器治理,分散式訊息通訊,分散式資料快取,MongoDB企業叢集解決方案

    12、掌握資料庫的設計能力,對它基本的引數最佳化,慢查詢日誌分析,主從複製的配置,至少要成為半個mysqldba。

  • 中秋節和大豐收的關聯?
  • 想學IT,想問問各位大神有什麼好的機構或者好的辦法和建議嗎?(我是一名小白)?