如何才能成为java架构师?我为大家来分析一下?

JAVA架构


本人10年开发培训经验,期间经历了Java Web,Android,H5,大数据,PHP等多个不同的方向的开发,也做过软件培训公司的金牌讲师,很有兴趣回答你这个问题。

可能每一个做开发的程序员,都有一个架构师的梦,虽然最后能够成为架构师的也就是1%不到。

但是咱们既然有梦想了,该如何实现呢?

架构师作为一个走技术路线的工种,首先就得提升自己的技术能力,提高自己项目架构的能力,提高自己的业务水平。

1.业务能力

不管如何,程序员最起码得解决自己项目中的业务问题,那作为架构师,你架构的项目,最起码得面向自己的项目业务吧,脱离业务的架构,我觉得都是有点耍流氓。

2.技术能力

既然要成为Java架构师,那么对Java中主流技术中,所有的主流技术应该都熟悉,知道该怎么选择技术才能更匹配自己的项目需求;

3.学习能力

新技术层出不穷,作为一个架构师,肯定要不停的学习,掌握最新的架构技巧,学习最新的架构经验。


如果想学习开发,这是Java学习视频,关注我免费领取。

我从事互联网开发10年,主要的研究方向集中在Java web微服务架构领域,Android移动端研发,HTML5前端方向,我会陆续写一些关于互联网技术方面的文章,感兴趣的朋友可以关注我,相信你一定会有所收获。

如果有Java,Android,H5等开发方面的问题,或者是开发求职方面的问题,都可以在评论区留言,或者私信我。


一一哥Sun


作为一名从业多年的程序员,也出版过Java编程书籍,所以我来回答一下这个问题。

Java架构师是不少Java程序员的发展方向之一,也是从应用级程序员成长为研发级程序员所需要经历的重要阶段,所以了解Java架构师所需要的知识结构是比较重要的。

通常所说的编程语言架构师都是从应用角度出发的,也就是说,Java架构师带领的开发团队多以应用级开发为主,工作的主要内容是基于平台进行的具体业务开发,比如采用Hadoop平台进行大数据应用开发,采用Spring框架进行Web开发等等。

Java架构师主要的知识结构包括以下三个大的方面:

第一:对于Java整体解决方案有全面的认知。Java架构师一个重要的工作内容是进行技术选型,技术选型要考虑三个核心因素,其一开发团队的技术能力;其二是否满足项目的性能要求;其三是否能够满足开发周期的要求。所以,Java架构师通常需要具备丰富的技术方案积累,能够了解不同的技术方案存在的优缺点。

第二:搭建项目的整体架构。Java架构师与平台架构师一个重要的区别是,Java架构师往往需要自己完成技术验证,同时需要根据项目需求完成整体框架的搭建,具体到代码上就是进行模块化划分和接口定义。由于Java语言的抽象程度比较高,所以在接口定义的时候是比较考验架构师设计能力的。

第三:行业认知能力。Java架构师对于行业的认知能力是比较重要的,不同行业具有不同的特点,需要根据行业的特点进行技术选型和架构设计。有的行业对于实时性要求比较高,有的行业对于并发性要求比较高,有的行业对于安全性要求比较高等等,行业特点如果把握不清楚往往会严重影响项目开发周期。

我从事互联网行业多年,目前也在带计算机专业的研究生,主要的研究方向集中在大数据和人工智能领域,我会陆续写一些关于互联网技术方面的文章,感兴趣的朋友可以关注我,相信一定会有所收获。

如果有互联网、大数据、人工智能等方面的问题,或者是考研方面的问题,都可以在评论区留言!


IT人刘俊明


首先呢,我觉得工作3年左右开始考虑这个事儿是正常的,写了一定的功能,接触了一些框架了,可能遇到了不少坑,也加了不少班,但是忽然想起来做的东西零零散散,找不到精深的方法。

这个问题不是你一个人的问题,也不是做程序才会遇到的问题,只不过软件工程是实践科学,基本都是反着来的,先做了,然后找资料再学原理,基于此,如果说你想利用空闲时间正向地梳理这些东西的话,还是先从基础出发(以java web系来说,我最熟悉的):

1、java core,基础,集合,多线程,jvm的基础

2、框架方面:spring、springmvc(restful的请求原理)、spring boot(这里只是配置和使用,不用急于求成,spring的东西很多)

3、数据库方面(1、mysql、oracle;2、常用连接池:druid、hikari等)

4、rpc:httpclient,dubbo,thrift,grpc(使用没啥难度、主要是学习这几种典型rpc的架构和使用场景)

5、nosql:redis、mongodb、cassandra、memcache(使用场景、集群方式、常见的数据结构、使用场景、缺点很重要)

6、业务工具(1、POI:用来导入、出excel和word,功能强大~;2、javax mail发送邮件;等等)

7、总结一下常用的算法、不一定是面试常考的,基础排序和查找算法、链表的操作、图相关的操作等,实践中可能遇到的少,但是思维要有

8、如果是后端工程师,建议适当做一些前端开发了解一些前端的技术,是你未来更好的架构和理解前端和协作打下基础,这里包括常见的前端框架(angular、vue、react)、打包工具(webpack、gulp等)、原生js的dom操作

9、了解一些大型架构的细节也是学习和成长的方式。

。。。

其他的东西还有很多,其实你自己列一列这些细节,再有几年,就会有自己的体系了。


柳州北漂小马锅



Java程序员架构栈


如何成为Java架构师?学呀。不然无师自通吗?

底层原理很重要。底层原理很重要。底层原理很重要。重要的说三遍。

如果你是Java小白,就先不要考虑如果成为Java架构师了,先把基础打牢吧。如果是有一定开发经验的话,主要是7个方面的技术进阶。

①应用框架

spring5,mybatis,springboot2源码

热门框架,源码你都要会。

②工程化管理

devops工具,提高工作效率。

③微服务

springcloud+docker容器化,K8S..,

④高并发分布式

这个不用说了,划重点。

⑤性能优化

另一种高手成就。

⑥搜索引擎

elasticsearch,solr

⑦项目实战

要成为架构师,肯定是要有实战经验的。就算对于技术你都零散的学会了,但还是会缺乏一个系统的整体。所以项目经验是必备。

如果是需要Java架构师详细的技能提升内容的话,可以关注私信我。


lee哥说架构


作为IT行业的多年开发人员,个人可以提点建议仅供参考。

Java架构师是应用级软件开发中的高精尖人才,市场上对于这部分人才一般都是高价聘请。

Java架构师一般都可以同产品经理对市场的需求做个透彻的分析,根据自己的想法从无到有去搭建出一个高质量、高水准的软件产品。

搭建高质量高水准的软件产品,需要自身具备足够的项目、产品经验,知道项目搭建过程中的重难点如何处理。了解整个产品的实现方案,可以对产品进行拆解,分配任务。把控任务的完成度。最后对各个代码块实现整合。创造出一个产品。

搭建高质量高水准的软件产品,需要自身对行业背景足够了解。不是说做技术就可以两耳不闻窗外事,高技术人才一般都了解行业的走势,可以精准的预测行业的痛点,分析出解决这种痛点的方案。同时每个行业对于软件产品都有不同的要求,有的行业重视体验,有的行业重视流畅,这些重难点都需要架构师了如指掌。

搭建高质量高水准的软件产品,需要自身的技术深度达到一定的深度。Java架构师往往需要自己完成技术验证,同时需要根据项目需求完成整体框架的搭建,具体到代码上就是进行模块化划分和接口定义。对于一些孤僻的问题,可以根据其原理实现问题的解决。可以根据自身的技术水平提出相关高难度问题的解决方案。

其实Java架构师最重要的方面一个就是技术面。技术的深度。另一个是人事面。有经验、会与人交流。

“九章算术”有相关Java架构师的视频以及学习资料。可以根据自身经济情况购买学习。

希望回答对您有所帮助。

我本人从事多年互联网Java开发,感兴趣的朋友可以关注私聊,共同努力,共同进步。

谢谢!


凯腾凯


一: 编程基础

不管是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,微服务


成都朗沃教育


你该如何去做?我觉得可以从以下几个步骤开始:

1: 扎实的JAVA 基础,Think in java上介绍的内容都能理解,做到这一步恭喜成为了程序员。

2:熟练使用主流框架,如:mybatis,spring 等。

3:研究过至少一种以web框架的源码,如spring mvc ,struts 等。

4:架构过或者参与过高并发系统设计,知道如何应对突发情况。

5:对自己所处的业务能够根据自己的知识维度,提出优化建议或者预测其风险点。

其实能否成为架构师跟机遇有很大关系,比如一个程序员,以上都做到了,但是公司并没有给他这个机会去做,一个真正架构的机会。因为之前的架构师不离职他就没有机会,这就是现实!


Java架构师CAT


1 首先是一个合格的程序员。

2 真正懂软件,懂软件工程,而不知是考试做题。可以独立完成一个产品,并服务客户产生收益。

3 需要伯乐,给你一个超出一个人完成的项目,你兢兢业业险些在deadline前完成了产品。

4 不断有新的挑战。


jacins3


在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。


分享到:


相關文章: