阿里Java架构师谈谈架构和如何成为一个Java架构师
架构的定义
我们来看看软件架构的一般定义:
程序和计算系统软件体系结构是指系统的一个或多个结构。 该结构包括软件的构建,构建的外部可见属性以及它们之间的相互关系。
该体系结构不是可操作的软件。 具体来说,这是一个表达式,它使软件工程师能够:
- 分析满足监管要求的设计有效性。
- 在设计更改相对容易的阶段,请考虑架构的可能选项。
- 降低与软件构建相关的风险。
软件架构的重要性
我为什么说软件架构非常重要? 直接编程直接开发,请多看看以下几点?:
- 软件架构可以满足系统的质量
- 体系结构设计允许受益者达成一致的目标
- 架构设计可以支持规划过程
- 架构设计对系统开发的指导性
- 架构设计有效管理复杂性
- 架构设计为复用奠定了基础
- 架构设计降低了维护成本
- 架构设计可以支持冲突分析
什么是好的软件架构
这个问题可能会被大家问到,包括一些IT公司也在问,这个问题的答案可能不仅仅是简单的句子或者定义可以回答,我们来看下面几个图片的例子:
这是什么东西? 乐高玩具,乐高玩具,我们都玩过吗?
它可以作为一个完整的模型出售给您,您也可以将其全部分解并自由地将其从一个模型重新组装到另一个模型,因为每个Lego模块都有一个水平和坚定方向的标准。 界面,这就是我们常说的高内聚和低耦合。
什么是坏架构
我们来看看上面的图片。
一个是清代的八封信,另一个是孔乙己。
记住四种写作方式?
然后,你专门研究了回写单词的四种方式,但你有没有想过我可以将单词转化为单词? 这是一个很好的折扣吗?
要知道最时尚并不一定是最好的
为什么M1A2和Apache直升机中的A8处理器或最新奔腾处理器没有? 实用,测试是最好的!
成功的软件又是怎么样的呢
我们谈论软件架构。 该架构的最终体现是一款软件。 什么是成功的架构? 什么是成功的软件?
我们看上边的图片,这是美国的阿里巴巴级宙斯盾驱逐舰。 右边是印度的“德里级”驱逐舰库里盾,由美国安吉斯自己设计和建造。
两艘军舰有什么区别?
一种是模块化设计,整体线条流畅,模块可随意更换。
一种是拼凑而成的,线条被暴露出来,并且甲板上充满了各种电子设备和天线。 一旦被损坏,维护起来非常困难。
JAVA通用领域的相关技术
当然,我们这里主要讲JAVA。 所以,作为一名JAVA和J2EE架构师,需要什么样的技能才能达到架构师的水平?
上面的图片,我们这样看,它分为三部分:
- 在顶端,我们需要掌握一些技术领域的知识,它可以使我们能够解决诸如电子商务,公司OA,银行保险金融等解决方案和设计其他领域的共同领域。
- 在中间,为了达到这些技术的顶端,我们需要了解一些中间件,数据库,开发框架知识,它是一个支柱。
- 底部,底部? 这是我们的基础,为我们达到中层或上层奠定基石,这就是为什么人们有时会发现我的博客和其他博客有不同的地方,不仅是编程,而且还有“中间”层。也就是说,数据库, 安全和框架建设混杂在一起,因为我不希望每个人都通过阅读我的博客而停留在码,码和螺丝的水平。
架构师的职能
说了这么多架构之后,我们来谈谈架构师。
如果您看到它,架构师的首要责任是集中于:非功能需求,即非功能需求。
许多人仍然不清楚功能需求与非功能需求之间的界限。 这里有两个例子来说明:
功能性需求
页面查询时,这个查询与哪个数据库表关联,因为我的业务是这样的一个需求,在界面A中有一个按钮,然后弹出窗口B,在窗口B中显示什么样的数据,最终的界面 点K结束后,打开界面B时哪个数据发生了变化。
非功能性需求
我们的系统查询速度小于2S,是否考虑使用异步查询,采用团队排队机制,系统需求可容纳1000个并发,这个系统应该做成插件,能够水平扩展,能够遵守XXX协议,此Web服务是否要使用SOAP HEAD和BASIC身份验证,NTLM身份验证或令牌环身份验证?该下拉框可以被输入并且可以被下拉。此身份验证是否可以访问LDAP?
许多面向商业的项目公司认为,架构师在解决问题(即故障排除,故障排除,错误,然后找到架构师)时,将架构师视为消防员。你不会为自己考虑为什么问题架构师已经出现了2秒钟,2分钟或1天半的时间来解决过去几个月无法解决的问题。好?
解决这是人们应该解决的问题,说人类建筑师失败了?是不是我们应该从这个软件和架构的最早框架中找到问题?
建筑师,这不是一个问题解决问题。
在节日之前,我还进行了一些采访。从纯粹的技术角度来看,我选择了建筑师TECH LEADER的候选人。
我仍然发现很多问题。这在中国是一个普遍的问题:我们的程序员经常不做程序,但更多时候他们在做业务逻辑并成为某个领域的商人。
当然,我们的程序员在他们职业生涯的头三年和四年都会为某个领域编写代码。这不是问题,但请务必记住我们是编码,IT和程序员。 ,而不是“业务人员”!
它是什么?什么是程序员?什么是技术领导者?什么是建筑师?
我们必须很好地问自己这个问题。好好想一想。建筑师的要求是什么?
我随便在这里说些什么:我相信这对于一些想要走技术之路的学生很有帮助:
TCP / IP协议,加密和解密,计算机原理(附加补码),JPG代码,MPEG2-3协议,逻辑电子电路,计算机编译原理(堆栈,堆栈,队列),这些东西在工作时总是使用?这些是你一直关注的底层吗?
如果您要采取技术路线,一定要记住“数据库+ ASP / JSP”不是技术。它只比表格制作强大一点。报告作者有点强大。
请记住,技术线主要关注非功能性需求。非功能性需求只是一站式的东西。有了这个基础,任何需求都很清楚。你什么都没有。 “困难”,或者如果你去上学,你可以用不同的方式来做。
我最近一直在采访一些候选人并担任建筑师。我对这个过程深感不安。找到一名程序员来开发和招聘一名建筑师并不困难。这很难......呃,我认为我们需要考虑一下,如果我采用技术路线,我缺少什么,如何补充它,还有什么我应该注意?
科学技术是第一生产力。所谓的六西格玛管理方法论是六西格玛的第一个。 “技术人才是当前企业的第一生产力。”让我们看看哪些公司可以发财。阿里,淘宝,支付宝,GOOGLE,腾讯,互联网,高科技等等,以及其他一些公司,他们依靠的不是业务逻辑,而是真正的技术,这足以解释问题,所以如果你想走技术路线,请注意更多细节和更低层次的东西。
阿里Java架构师谈谈架构和如何成为一个Java架构师的更多相关文章
- 作为Java新手,如何才能快速的看透一个Java项目?
前言 技术学习是一个总结.纠错.触类旁通的过程,而不是单纯重复练习的过程,如果你问一个做过5年以上Java的老码农,他们很多人都会有很强的"搬砖感",这种"搬砖感&quo ...
- 搭建java开发环境、使用eclipse编写第一个java程序
搭建java开发环境.使用eclipse编写第一个java程序 一.Java 开发环境的搭建 1.首先安装java SDK(简称JDK). 点击可执行文件 jdk-6u24-windows-i586. ...
- 一劳永逸Java环境配置,以及编写我的第一个Java程序
Java环境配置,以及编写我的第一个Java程序 配置步骤 1.下载jdk 2.安装步骤 3.配置环境 4.我的第一个Java程序 配置步骤 网上的教程有很多,方法也都不尽相同.今天我就分享一下我的配 ...
- java基础,继承类题目:编写一个Java应用程序,该程序包括3个类:Monkey类、People类和主类 E
21.编写一个Java应用程序,该程序包括3个类:Monkey类.People类和主类 E.要求: (1) Monkey类中有个构造方法:Monkey (String s),并且有个public vo ...
- [学习笔记]java基础Java8SE开发环境搭建、第一个Java Hello World、Java程序的编译与执行
本文作者:sushengmiyan 本文地址:http://blog.csdn.net/sushengmiyan/article/details/25745945 内容简介: ------------ ...
- 一、Java语言概述与开发环境、第一个java程序
目录: 1.1 Java特点 1.2 Java程序运行机制 1.3 安装JDl和配置环境变量 1.4 第一个JAVA程序 1.5 第一个JAVA程序的含义 前言 Java语言历时近二十年,已发展成为人 ...
- Java 学习之路(1)第一个Java程序
Hello World程序 在编程语言的世界里,第一个编程语言估计就是输出Hello World了吧. /** * 编写第一个Java程序,输出Hello World! * @author LJS * ...
- 一个java高级工程师的进阶之路
宏观方面 一. JAVA.要想成为JAVA(高级)工程师肯定要学习JAVA.一般的程序员或许只需知道一些JAVA的语法结构就可以应付了.但要成为JAVA(高级) 工程师,您要对JAVA做比较深入的研究 ...
- 一个java高级工程师的进阶
宏观方面 一. JAVA.要想成为JAVA(高级)工程师肯定要学习JAVA.一般的程序员或许只需知道一些JAVA的语法结构就可以应付了.但要成为JAVA(高级) 工程师,您要对JAVA做比较深入的研究 ...
- 一个java高级工程师的进阶之路【转】
宏观方面 一. JAVA.要想成为JAVA(高级)工程师肯定要学习JAVA.一般的程序员或许只需知道一些JAVA的语法结构就可以应付了.但要成为JAVA(高级) 工程师,您要对JAVA做比较深入的研究 ...
随机推荐
- 7、Libgdx网络操作
(官网:www.libgdx.cn) Libgdx包含了一些跨平台的网络操作类,这些类在Gdx.net中. 特性 跨平台HTTP请求 多平台TCP C/S Socket支持(可配置) TCP C/S优 ...
- (NO.00001)iOS游戏SpeedBoy Lite成形记(二十五)
每次压赌要打开弹出菜单还是让人略觉不爽,下面我们再添加一个随机押注的按钮:自动随机选择选手和下赌金额. 打开spriteBuilder,修改GameInterface.ccb的界面,在Run按钮旁边添 ...
- JVM 类的生命周期、类加载器
类的加载.连接与初始化 • 1. 加载:查找并加载类的二进制数据 • 2. 连接 – 2.1 验证:确保被加载的类的正确性 ...
- OpenCV导向滤波(引导滤波)实现(Guided Filter)代码,以及使用颜色先验算法去雾
论文下载地址:http://research.microsoft.com/en-us/um/people/jiansun/papers/GuidedFilter_ECCV10.pdf 本文主要介绍导向 ...
- 我所理解的Android 启动模式
首先,这是从 一个开源网站转载的,觉得写得不错,对我们之前理解的activity的启动模式是一个新的理解方式,并给出实际的应用场景. 任务栈是什么 任务栈Task,是一种用来放置Activity实例的 ...
- Java-Cookie源码
public class Cookie implements Cloneable { private static final String LSTRING_FILE = "javax.se ...
- Java开发机器上的配置及zookeeper配置
Java开发机器上的配置及zookeeper配置 /etc/profile 文件的后面加入下面的内容: # jdk, zookeeper, kafka, ant, maven export APACH ...
- Android驱动中的Kconfig文件与Makefile文件
内核源码树的目录下都有两个文档Kconfig(2.4版本是Config.in)和Makefile.分布到各目录的Kconfig构成了一个分布式的内核配置数据库,每个Kconfig分别描述了所属目录源文 ...
- ERP-非财务人员的财务培训教(一.二)------财务基础知识
二.基本财务管理知识 第一节 财务管理基础知识(一) 财务与会计的关系 会计的基础知识 (一) 财务与会计的关系 财务与会计的内涵 1.会计 会计工作主要是解决三个环节的问题: 会计凭证 会计账簿 会 ...
- 关于GPL329A添加摄像头驱动需要更改的配置脚本
我今天要添加一个ov2685的驱动进Digogo这部机子,当然要让它开机自动启动,就要想办法让它的.ko在启动文件系统的时候要自动被装载,这样上层打开摄像头才能加载摄像头驱动. 我找到源码工程对应添加 ...