懂架构-有未来!写给未来的java架构师

  • 分析
    对于企业的开发资格要求:
    经验足,项目多,自身条件够硬。
    从技术角度上:
    如果你的建立还只是停留在所谓的SSH技术层次上,那么这类人基本找不到工作。
    当前的就业环境是需要开发人员掌握大量的架构知识。
    如果你先在不懂分布式开发,那么也是没有机会的。
    如果你不具备良好的业务分析能力也是不行的。
    好处:高工资。

  • 对于java学习的几点概念
    基本概念:JDK,JVM、数据类型、方法、数组
    面向对象一定要精通:
    抽象类与接口的使用和设计(不是简单的知道一些概念)
    面向对象里面的每一个细节,例如:子类对象实例化的过程。
    设计模式(工厂、代理、单例模式),也是后期学习Spring的主要理论。

多线程技术:
是否真的清楚多线程是什么?
所谓的高并发指的就是访问人数。
线程池:进行定时调度
同步与死锁:生产者与消费者问题。(设计四个线程,两个线程执行减操作,两个负责加操作)
就会存在分布式锁(可以通过Redis/zookepper实现)
反射机制:能否利用反射进行功能类的设计
类集框架::特点以及实现原理、各个子类的区别
JVM实现原理以及GC的处理流程。

  • 技术开发的架构发展
    2000-2003:掌握了MVC架构,充分理解了反射的设计思想,EJB开发理念。
    2003-2009:SSH1的时代,Struts1+Hibernate+Spring
    2009-2013:SSH2:Struts1+Hibernate+Spring为主
    2013-2015:SpringMVC+Mybatis
    2015-现在:SSM:SpringMVC +Shiro +Mybatis
    全栈工程师:可以精通前端开发(非UI)+业务分析+项目开发
    全能工程师:前可做美工,后可做运维, 上可做业务分析, 下可搞定服务架构,有很强的学习能力。

在2015年之前可以凭借一些简单的开发框架找到一份合适的工作,但是现在行情变了,也就是说如果你需要找到一份合适的工作,需要的不仅仅是一些简单的技术,而是技术的全面领会,以及技术的深入思考。

  • *javaWeb开发
    如果只是做Web开发,java没有什么优势!
    在web开发领域上,PHP、Python、NodeJs、Ruby都比java强,但是这些语言有一个问题,从未听说过在国内有什么特别庞大的所谓的百万级别的项目上用这些开发。
    java之所以可以持续发展,主要也是因为各个公司的支持,
    2003以前,从事java开发会觉得没有意思,整个技术就那么点内容。
    2005年的时候开源风潮兴起。
    2010年Android技术的兴起(Android的就业市场已经百分之99饱和,招聘只招聘有经验的)
    2013年大数据的技术兴起
    2016年微云架构兴起

javaWeb开发重点:
MVC设计模式,这个时候一定要掌握的是前端以及业务层的划分处理。JSP+Servlet+反射+代理设计+工厂设计+Ajax+Jquery+Json
自我检测标准:单表CURD+分页+上传 是需要可以进行重用性设计,要求将面向对象的核心内容全部掌握。

  • 框架开发的兴起
    招聘中可能出现的开源技术列表:
    Struts、Hbiernate、MyBatis/Ibatis、Shiro、Spring
    vue.js、Jquery、Zookeeper、Redis、Nginx、MySql、Tomcat、FastDFS….
    基本上大部分的人会蒙,如果说在2015年之前你可以搞自学就业,在2015年之后你不是校招进入的开发岗位,那么要求是及其变态的。

框架的设计解决了许多设计问题:web的可重用设计,Spring的Bean管理操作以及整合能力,数据层开发的高效问题(MyBatis)

这里写图片描述

在所谓的传统型的技术开发架构领域上,是受限制的。

  • 传统企业架构
    不会过多的考虑高并发的问题;
    不会过多的去考虑垂直拆分和水平拆分,不考虑高性能集群
    不会过多的去考虑所谓的HA的处理机制(很多的互联网公司也不会考虑它)
    对于数据库的数据不会太大,几百万级别的,也不怕随时搞一个多表查询。
    这类的项目往往都出现在内网之中,也就是说单台服务器足以搞定,如果想更安全,再搞VPN

传统项目的架构:如果公司技术部门要求高一些可以搞一些开发框架,也没有太大的进取心,也就随意搞一些asp。
如果你一直只是从事于传统的企业架构,那么在你没有经过进一步的学习的情况下,很难出去找到一份合适你的工资待遇更高的工作。
因为已经进入到了互联网时代。

  • 互联网架构
    你需要更加深入的去理解javaj基础,例如:
    java.util.concurrent开发包
    深入理解集群的产生意义以及实际的应用
    必须拥有良好的Linux使用基础,这个过程里面你可能对于Linux内核以及它的运行机制并不是那么清楚(有多少人清楚windows内核),但是一定要部署出常见的服务。
    充分评估一个项目里面有可能得到的访问量级(云服务降低了成本);
    保证更好的、更安全的处理数据。

分布式、高可用、高性能

  • 常见的架构
    这里写图片描述

Web的高可用牵扯到的问题就是session共享
session数据可以保存在redis之中
这里写图片描述

这里写图片描述

  • 大数据
    从事软件行业的人员如果不搞点大数据,会觉得不够流行。
    规范化的文本时代。
    离线分析:做预测–数据可以不提供实时的统计处理操作,并且可以进行更加详细的划分操作,对于这种离线分析有可能分析的数据越来越大。
    这里写图片描述
    所有的数据都是归总后的处理,而不是简单的处理。
    服务器大,有业务就行

实时分析(流式分析):
商品推荐、路况信息处理。
内存大,处理速度快。

这里写图片描述

  • 微架构时代
    阿里推出了很多RPC(远程过程调用)开发框架:
    dubbo、HSF、
    如果是传统的web开发,涉及到的配置太多了。(SSM、SSH)
    Spring的开发推出了两个热门技术,不会没工作:
    Spring Boot、SpringCloud
    需要非常去感谢Spring推出的了这两个架构,真的解决了很久以来RPC为我们带来的痛苦,基于Rest开发技术的很好的推广

提倡零配置—这是不可能的
Spring Boot技术里面整合了ThymeLeaf,父pom的统一管理,各个服务的整合。
这里写图片描述

结束语:
以上只是说出了结构设计思想以及架构要解决的问题,但是实际开发之中架构远远比我们想象的复杂

未来的发展发向:云服务+大数据。

别整一堆服务器做集群,(分布各个地方)
未来的开发者都一定是架构师。
如果你的学习只是停留在简单的程序开发商,那么未来很可能会被淘汰。

java技术不管未来发展如何,架构思想不变,具有很好的可维护性。

猜你喜欢

转载自blog.csdn.net/qq_19704045/article/details/80659782