阿里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做比较深入的研究 ...
随机推荐
- EBS 可拓展的外部信用风险导入
DECLARE l_msg_count NUMBER; l_msg_data VARCHAR2(2000); l_return_status VARCHAR2(30); l_cc_hold_comme ...
- [Redis]处理定时任务的2种思路
用redis完成类似 at 命令的功能,例如订单24小时后没有支付自动关闭,定时发邮件,主要说下任务生成之后怎么触发消费. 使用 有序集合 思路: 使用sorted Sets的自动排序, key 为任 ...
- 一个优化极点的ViewHolder
代码中有注释: 使用方法: 1.可以在listview,gridview,stageView直接继承LazyAdapter使用 2.下面有Demo 代码 ViewHolder代码: import an ...
- Ubuntu下编译SHTOOLS
SHTOOLS是使用Fortran语言写的一个专门用于处理球谐函数的一个开源库,更多的介绍请猛戳这里,关于这个库的安装和使用,都在官网上有详细的说明,虽然很详细,但是编译的时候还是比较费劲,下面将我在 ...
- 《java入门第一季》之二维数组
/* 格式2: 数据类型[][] 数组名 = new 数据类型[m][]; m:表示这个二维数组有多少个一维数组. 列数没有给出,可以动态的给.这一次是一个变化的列数. */ class Array2 ...
- SpriteBuilder实际操作中如何确定合适Breaking force的值
确定Breaking force合适的值同样很单调,但是按照下面的方法也并不是完全不可能: 输入一个随意的值,比如说100 检查实际场景中关节是否能承受住物理物体,在完美的情况下物理物体将保持静止. ...
- iOS中关于UIApplication的详细介绍
UIApplication 什么是UIApplication? UIApplication对象是应用程序的象征.每一个应用都有自己的UIApplication对象,这个对象是系统自动帮我们创建的, 它 ...
- LeetCode之“树”:Sum Root to Leaf Numbers
题目链接 题目要求: Given a binary tree containing digits from 0-9 only, each root-to-leaf path could represe ...
- 俺的新书《Sencha Touch实战》终于出版了
内容简介:Sencha框架是第一个基于HTML 5的移动也能给予框架,可以让Web应用看起来像网络应用.美丽的用户 界面 组件和丰富的数据管理,全部基于最新的HTML 5和CSS 3的Web标准,全部 ...
- Linux常用命令(第二版) --压缩解压缩命令
压缩解压缩命令: ----------.gz---------- 1.压缩 gzip[GNU zip]: /bin/gzip 格式: gzip 选项 [文件] #压缩文件,压缩后扩展名为.gz,Lin ...